<?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>235204</bug_id>
          
          <creation_ts>2022-01-13 14:21:36 -0800</creation_ts>
          <short_desc>AX: Move methods that are unnecessarily in AccessibilityRenderObject to AccessibilityNodeObject (part 1 / n)</short_desc>
          <delta_ts>2022-01-14 09:07:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</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="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</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>1830716</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-13 14:21:36 -0800</bug_when>
    <thetext>Many methods in AccessibilityRenderObject don&apos;t actually do anything renderer-specific, and thus should be in the base class AccessibilityNodeObject. This will help improve our support for AX objects that normally have renderers, but don&apos;t because of CSS or ARIA markup (e.g. display: contents).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830718</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-13 14:21:48 -0800</bug_when>
    <thetext>&lt;rdar://problem/87570504&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830720</commentid>
    <comment_count>2</comment_count>
      <attachid>449111</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-13 14:27:17 -0800</bug_when>
    <thetext>Created attachment 449111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830725</commentid>
    <comment_count>3</comment_count>
      <attachid>449111</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-01-13 14:34:27 -0800</bug_when>
    <thetext>Comment on attachment 449111
Patch

can we add a test here that fixes some aspect of display: contents</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830728</commentid>
    <comment_count>4</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-13 14:42:53 -0800</bug_when>
    <thetext>Not with this patch. display: contents elements currently have no representation in the tree, so there is no element to test against. I have a WIP patch that makes them part of the tree, but it would require a fair amount more work before becoming something coherent and landable.

What the above patch does is prepare us for when display: contents nodes are part of the tree by moving node-only functionality to AccessibilityNodeObject, as display contents elements won’t have renderers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830751</commentid>
    <comment_count>5</comment_count>
      <attachid>449121</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-13 15:36:26 -0800</bug_when>
    <thetext>Created attachment 449121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830924</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-14 08:41:41 -0800</bug_when>
    <thetext>Committed r288018 (246044@main): &lt;https://commits.webkit.org/246044@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449121.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449111</attachid>
            <date>2022-01-13 14:27:17 -0800</date>
            <delta_ts>2022-01-13 15:36:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235204-20220113162716.patch</filename>
            <type>text/plain</type>
            <size>17618</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVjMmNiODY5ZWY4MTU2
OTg4NjZkZmJmMjZlZTRhYTljODQ0MTlhOS4uY2U2ZjQ5NTdkNGQxZWM2Njc3ZjUwNmZmYjNjNDQ2
MGViMDRlM2Y1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIyLTAxLTEzICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IE1vdmUgbWV0aG9k
cyB0aGF0IGFyZSB1bm5lY2Vzc2FyaWx5IGluIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgdG8g
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QgKHBhcnQgMSBvZiBuKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MjA0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFueSBtZXRob2RzIGluIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QgZG9uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcgcmVuZGVyZXItc3BlY2lm
aWMsCisgICAgICAgIGFuZCB0aHVzIHNob3VsZCBiZSBpbiB0aGUgYmFzZSBjbGFzcyBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdC4gVGhpcyB3aWxsIGhlbHAgaW1wcm92ZSBvdXIgc3VwcG9ydAorICAg
ICAgICBmb3IgQVggb2JqZWN0cyB0aGF0IG5vcm1hbGx5IGhhdmUgcmVuZGVyZXJzLCBidXQgZG9u
J3QgYmVjYXVzZSBvZiBDU1Mgb3IgQVJJQSBtYXJrdXAgKGUuZy4gZGlzcGxheTogY29udGVudHMp
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNGaWxlVXBsb2Fk
QnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
Ojpjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y29ycmVzcG9uZGluZ0xhYmVsRm9yQ29u
dHJvbEVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVP
YmplY3Q6OmxhYmVsRWxlbWVudENvbnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6ZXhwb3Nlc1RpdGxlVUlFbGVtZW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoYXNUZXh0QWx0ZXJuYXRp
dmUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3QuaDoKKyAgICAgICAgQWRkIGFsbCBvZiB0aGUgYWJvdmUgbWV0aG9kcyBmcm9tIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6ZGV0ZXJtaW5lRHJvcEVmZmVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNGaWxlVXBsb2FkQnV0dG9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmxhYmVsRWxlbWVudENv
bnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpoYXNUZXh0QWx0ZXJuYXRpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6ZXhwb3Nlc1RpdGxlVUlFbGVtZW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvcnJlc3BvbmRpbmdDb250
cm9sRm9yTGFiZWxFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50IGNvbnN0
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoK
KyAgICAgICAgTW92ZSBhbGwgb2YgdGhlIGFib3ZlIG1ldGhvZHMgdG8gQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QuCisKIDIwMjItMDEtMTMgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4K
IAogICAgICAgICBDbGVhbiB1cCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHAKaW5kZXggMjI4ZjE4ZTJhOTM2MjU3ZjBlM2FjNmI5YTUzNTEwYTJiN2I5ODVl
Ny4uZTZiMTdkZmJiNTUyZWQyODYwMjJhOWZhNzBlN2E5NjNjMzMwMTAyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBWExvZ2dlci5oIgogI2luY2x1ZGUg
IkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgi
CisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxhYmVsLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eUxpc3QuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TGlzdEJveC5oIgogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlTcGluQnV0dG9uLmgiCkBAIC01NjIsNiArNTYzLDEzIEBAIGJvb2wgQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudUl0ZW0oKSBjb25zdAogICAgIH0KIH0KIAorYm9vbCBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3QKK3sKKyAg
ICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSgpKSkKKyAgICAgICAgcmV0dXJuIGRvd25j
YXN0PEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUoKSktPmlzRmlsZVVwbG9hZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKwogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNOYXRpdmVDaGVj
a2JveE9yUmFkaW8oKSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CkBA
IC0xMTc0LDYgKzExODIsMzcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNHZW5l
cmljRm9jdXNhYmxlRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0FjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpjb3JyZXNwb25kaW5nQ29u
dHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0Cit7CisgICAgYXV0byogbGFiZWxFbGVtZW50ID0g
bGFiZWxFbGVtZW50Q29udGFpbmVyKCk7CisgICAgaWYgKCFsYWJlbEVsZW1lbnQpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgYXV0byBjb3JyZXNwb25kaW5nQ29udHJvbCA9IGxhYmVs
RWxlbWVudC0+Y29udHJvbCgpOworICAgIGlmICghY29ycmVzcG9uZGluZ0NvbnRyb2wpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gTWFrZSBzdXJlIHRoZSBjb3JyZXNwb25kaW5n
IGNvbnRyb2wgaXNuJ3QgYSBkZXNjZW5kYW50IG9mIHRoaXMgbGFiZWwgdGhhdCdzIGluIHRoZSBt
aWRkbGUgb2YgYmVpbmcgZGVzdHJveWVkLgorICAgIGlmIChjb3JyZXNwb25kaW5nQ29udHJvbC0+
cmVuZGVyZXIoKSAmJiAhY29ycmVzcG9uZGluZ0NvbnRyb2wtPnJlbmRlcmVyKCktPnBhcmVudCgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBheE9iamVjdENhY2hlKCkt
PmdldE9yQ3JlYXRlKGNvcnJlc3BvbmRpbmdDb250cm9sLmdldCgpKTsKK30KKworQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNvcnJlc3BvbmRpbmdMYWJlbEZv
ckNvbnRyb2xFbGVtZW50KCkgY29uc3QKK3sKKyAgICAvLyBBUklBOiBzZWN0aW9uIDJBLCBidWxs
ZXQgIzMgc2F5cyBpZiBhcmlhLWxhYmVsZWRieSBvciBhcmlhLWxhYmVsIGFwcGVhcnMsIGl0IHNo
b3VsZAorICAgIC8vIG92ZXJyaWRlIHRoZSAibGFiZWwiIGVsZW1lbnQgYXNzb2NpYXRpb24uCisg
ICAgaWYgKGhhc1RleHRBbHRlcm5hdGl2ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIGlmIChpczxIVE1MRWxlbWVudD4obm9kZSgpKSkgeworICAgICAgICBpZiAoSFRNTExhYmVs
RWxlbWVudCogbGFiZWwgPSBsYWJlbEZvckVsZW1lbnQoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG5v
ZGUoKSkpKQorICAgICAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUo
bGFiZWwpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogSFRNTExhYmVsRWxlbWVu
dCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmxhYmVsRm9yRWxlbWVudChFbGVtZW50KiBlbGVt
ZW50KSBjb25zdAogewogICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KCplbGVtZW50KSB8fCAhZG93
bmNhc3Q8SFRNTEVsZW1lbnQ+KCplbGVtZW50KS5pc0xhYmVsYWJsZSgpKQpAQCAtMTMwOSw3ICsx
MzQ4LDIxIEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dEZvckxhYmVsRWxl
bWVudChFbGVtZW50KiBlbGVtZW50KSBjb25zdAogICAgIAogICAgIHJldHVybiAhcmVzdWx0Lmlz
RW1wdHkoKSA/IHJlc3VsdCA6IGFjY2Vzc2libGVOYW1lRm9yTm9kZShsYWJlbCk7CiB9Ci0gICAg
CisKK0hUTUxMYWJlbEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpsYWJlbEVsZW1l
bnRDb250YWluZXIoKSBjb25zdAoreworICAgIC8vIFRoZSBjb250cm9sIGVsZW1lbnQgc2hvdWxk
IG5vdCBiZSBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIGxhYmVsLgorICAgIGlmIChpc0NvbnRyb2wo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBGaW5kIGFuIGFuY2VzdG9yIGxh
YmVsIGVsZW1lbnQuCisgICAgZm9yIChhdXRvKiBwYXJlbnROb2RlID0gbm9kZSgpOyBwYXJlbnRO
b2RlOyBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIGlm
IChpczxIVE1MTGFiZWxFbGVtZW50PigqcGFyZW50Tm9kZSkpCisgICAgICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8SFRNTExhYmVsRWxlbWVudD4ocGFyZW50Tm9kZSk7CisgICAgfQorICAgIHJldHVy
biBudWxscHRyOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0aXRsZUVsZW1l
bnRUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mIHRleHRPcmRlcikgY29uc3QKIHsKICAg
ICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOwpAQCAtMTMzMyw2ICsxMzg2LDQ3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRpdGxlRWxlbWVudFRleHQoVmVjdG9yPEFjY2Vzc2li
aWxpdHlUZXh0PiYgdGV4dE9yCiAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0
eVRleHQoU3RyaW5nKCksIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpMYWJlbEJ5RWxlbWVudCkp
OwogfQogCitib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpleHBvc2VzVGl0bGVVSUVsZW1l
bnQoKSBjb25zdAoreworICAgIGlmICghaXNDb250cm9sKCkgJiYgIWlzRmlndXJlRWxlbWVudCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBJZiB0aGlzIGNvbnRyb2wgaXMgaWdu
b3JlZCAoYmVjYXVzZSBpdCdzIGludmlzaWJsZSksCisgICAgLy8gdGhlbiB0aGUgbGFiZWwgbmVl
ZHMgdG8gYmUgZXhwb3NlZCBzbyBpdCBjYW4gYmUgdmlzaWJsZSB0byBhY2Nlc3NpYmlsaXR5Lgor
ICAgIGlmIChhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgLy8gV2hlbiBjb250cm9scyBoYXZlIHRoZWlyIG93biBkZXNjcmlwdGlvbnMsIHRoZSB0
aXRsZSBlbGVtZW50IHNob3VsZCBiZSBpZ25vcmVkLgorICAgIGlmIChoYXNUZXh0QWx0ZXJuYXRp
dmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gV2hlbiA8bGFiZWw+IGVsZW1l
bnQgaGFzIGFyaWEtbGFiZWwgb3IgYXJpYS1sYWJlbGxlZGJ5IG9uIGl0LCB3ZSBzaG91bGRuJ3Qg
ZXhwb3NlIGl0IGFzIHRoZQorICAgIC8vIHRpdGxlVUlFbGVtZW50LCBvdGhlcndpc2UgaXRzIGlu
bmVyIHRleHQgd2lsbCBiZSBhbm5vdW5jZWQgYnkgYSBzY3JlZW5yZWFkZXIuCisgICAgaWYgKGlz
TGFiZWxhYmxlKCkpIHsKKyAgICAgICAgaWYgKEhUTUxMYWJlbEVsZW1lbnQqIGxhYmVsID0gbGFi
ZWxGb3JFbGVtZW50KGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUoKSkpKSB7CisgICAgICAgICAgICBp
ZiAoIWxhYmVsLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfbGFiZWxBdHRy
KS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
aWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGxhYmVsT2JqZWN0ID0gYXhPYmplY3RDYWNoZSgpLT5n
ZXRPckNyZWF0ZShsYWJlbCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWxhYmVsT2JqZWN0LT5h
cmlhTGFiZWxlZEJ5QXR0cmlidXRlKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgLy8gVG8gc2ltcGxpZnkgaW5zdGFuY2VzIHdo
ZXJlIHRoZSBsYWJlbGluZyBlbGVtZW50IGluY2x1ZGVzIHdpZGdldCBkZXNjZW5kYW50cworICAg
ICAgICAgICAgICAgIC8vIHdoaWNoIGl0IGRvZXMgbm90IGxhYmVsLgorICAgICAgICAgICAgICAg
IGlmIChpczxBY2Nlc3NpYmlsaXR5TGFiZWw+KCpsYWJlbE9iamVjdCkKKyAgICAgICAgICAgICAg
ICAgICAgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eUxhYmVsPigqbGFiZWxPYmplY3QpLmNvbnRh
aW5zVW5yZWxhdGVkQ29udHJvbHMoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
Citib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoYXNUZXh0QWx0ZXJuYXRpdmUoKSBjb25z
dAoreworICAgIC8vIEFSSUE6IHNlY3Rpb24gMkEsIGJ1bGxldCAjMyBzYXlzIGlmIGFyaWEtbGFi
ZWxlZGJ5IG9yIGFyaWEtbGFiZWwgYXBwZWFycywgaXQgc2hvdWxkCisgICAgLy8gb3ZlcnJpZGUg
dGhlICJsYWJlbCIgZWxlbWVudCBhc3NvY2lhdGlvbi4KKyAgICByZXR1cm4gYXJpYUFjY2Vzc2li
aWxpdHlEZXNjcmlwdGlvbigpLmxlbmd0aCgpOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0OjphbHRlcm5hdGl2ZVRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dE9y
ZGVyKSBjb25zdAogewogICAgIGlmIChpc1dlYkFyZWEoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCmluZGV4IGI0
YzMzYTcwZjZjN2Q1ODllNDgzN2Q5YTkxMTRlZjA2MzUzYzA0MDAuLjA2OWMzNWRjNjc1NmFhNWNk
ZDQxN2NkYTIyMDMyNzRmYzBmZjVhOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKQEAgLTY2LDYgKzY2LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaXNNZW51QnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9v
bCBpc01lbnVJdGVtKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc01lbnVSZWxhdGVkKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdCBvdmVy
cmlkZTsKICAgICBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBib29sIGlzTmF0aXZlQ2hlY2tib3hPclJhZGlvKCkgY29uc3Q7CiAgICAgYm9vbCBp
c05hdGl2ZUltYWdlKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xNjQsOSArMTY1LDE0IEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGNoYW5nZVZhbHVlQnlTdGVwKGJvb2wgaW5jcmVhc2UpOwogICAgIC8v
IFRoaXMgcmV0dXJucyB0cnVlIGlmIGl0J3MgZm9jdXNhYmxlIGJ1dCBpdCdzIG5vdCBjb250ZW50
IGVkaXRhYmxlIGFuZCBpdCdzIG5vdCBhIGNvbnRyb2wgb3IgQVJJQSBjb250cm9sLgogICAgIGJv
b2wgaXNHZW5lcmljRm9jdXNhYmxlRWxlbWVudCgpIGNvbnN0OworCiAgICAgYm9vbCBpc0xhYmVs
YWJsZSgpIGNvbnN0OworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcnJlc3BvbmRpbmdDb250
cm9sRm9yTGFiZWxFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogY29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBIVE1MTGFiZWxFbGVtZW50KiBsYWJlbEZvckVsZW1lbnQoRWxlbWVudCopIGNvbnN0
OwogICAgIFN0cmluZyB0ZXh0Rm9yTGFiZWxFbGVtZW50KEVsZW1lbnQqKSBjb25zdDsKKyAgICBI
VE1MTGFiZWxFbGVtZW50KiBsYWJlbEVsZW1lbnRDb250YWluZXIoKSBjb25zdDsKKwogICAgIFN0
cmluZyBhcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBhcmlh
TGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMpIGNvbnN0OwogICAg
IFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25Gb3JFbGVtZW50cyhWZWN0b3I8RWxlbWVu
dCo+ICZlbGVtZW50cykgY29uc3Q7CkBAIC0xNzgsNiArMTg0LDcgQEAgcHJvdGVjdGVkOgogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIG1lbnVCdXR0b25Gb3JNZW51KCkgY29uc3Q7CiAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogY2FwdGlvbkZvckZpZ3VyZSgpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCB0aXRsZUVsZW1lbnRUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKSBjb25zdDsK
KyAgICBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2
YXRlOgogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KQEAgLTE5MSw2ICsxOTgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcG9z
dEtleWJvYXJkS2V5c0ZvclZhbHVlQ2hhbmdlKGJvb2wgaW5jcmVhc2UpOwogICAgIHZvaWQgc2V0
Tm9kZVZhbHVlKGJvb2wgaW5jcmVhc2UsIGZsb2F0IHZhbHVlKTsKICAgICBib29sIHBlcmZvcm1E
aXNtaXNzQWN0aW9uKCkgZmluYWw7CisgICAgYm9vbCBoYXNUZXh0QWx0ZXJuYXRpdmUoKSBjb25z
dDsKICAgICAKICAgICBOb2RlKiBtX25vZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXgg
ZmRlZTY0YWQ0YjViNTY1NWY0MGNmNDQzMTVkYTQ0OGYzOTQ4Y2UwZC4uYzYxN2ExMDc2ZGNjY2Y5
OTI3NjkzNWEzMDgxYWJiZWQxMDY4N2E2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0zMiw3
ICszMiw2IEBACiAjaW5jbHVkZSAiQVhMb2dnZXIuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oIgotI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlMYWJlbC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0Qm94LmgiCiAj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
U3BpbkJ1dHRvbi5oIgpAQCAtNTQ3LDE2ICs1NDYsNiBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmlzQXR0YWNobWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzV2lkZ2V0ICYmIGFy
aWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiB9CiAKLWJv
b2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3QK
LXsKLSAgICBpZiAobV9yZW5kZXJlciAmJiBpczxIVE1MSW5wdXRFbGVtZW50PihtX3JlbmRlcmVy
LT5ub2RlKCkpKSB7Ci0gICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8
SFRNTElucHV0RWxlbWVudD4oKm1fcmVuZGVyZXItPm5vZGUoKSk7Ci0gICAgICAgIHJldHVybiBp
bnB1dC5pc0ZpbGVVcGxvYWQoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotfQot
CiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzT2ZmU2NyZWVuKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fcmVuZGVyZXIpCkBAIC04MTcsMjQgKzgwNiw2IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6Y2FuSGF2ZVBsYWluVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGlz
QVJJQVN0YXRpY1RleHQoKSB8fCBpczxSZW5kZXJUZXh0PigqbV9yZW5kZXJlcikgfHwgaXNUZXh0
Q29udHJvbCgpOwogfQogCi1IVE1MTGFiZWxFbGVtZW50KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpsYWJlbEVsZW1lbnRDb250YWluZXIoKSBjb25zdAotewotICAgIGlmICghbV9yZW5kZXJl
cikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyB0aGUgY29udHJvbCBlbGVtZW50
IHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBsYWJlbAotICAgIGlmIChpc0Nv
bnRyb2woKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgLy8gZmluZCBpZiB0
aGlzIGhhcyBhIHBhcmVudCB0aGF0IGlzIGEgbGFiZWwKLSAgICBmb3IgKE5vZGUqIHBhcmVudE5v
ZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7IHBhcmVudE5vZGU7IHBhcmVudE5vZGUgPSBwYXJlbnRO
b2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKGlzPEhUTUxMYWJlbEVsZW1lbnQ+KCpw
YXJlbnROb2RlKSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MTGFiZWxFbGVtZW50
PihwYXJlbnROb2RlKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIC8v
IFRoZSBib3VuZGluZ0JveCBmb3IgZWxlbWVudHMgd2l0aGluIHRoZSByZW1vdGUgU1ZHIGVsZW1l
bnQgbmVlZHMgdG8gYmUgb2Zmc2V0IGJ5IGl0cyBwb3NpdGlvbgogLy8gd2l0aGluIHRoZSBwYXJl
bnQgcGFnZSwgb3RoZXJ3aXNlIHRoZXkgYXJlIGluIHJlbGF0aXZlIGNvb3JkaW5hdGVzIG9ubHku
CiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om9mZnNldEJvdW5kaW5nQm94Rm9yUmVt
b3RlU1ZHRWxlbWVudChMYXlvdXRSZWN0JiByZWN0KSBjb25zdApAQCAtMTEwMCwxMyArMTA3MSw2
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bGlua2VkVUlFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGxpCiAgICAgICAgIGFkZFJhZGlvQnV0dG9uR3JvdXBN
ZW1iZXJzKGxpbmtlZFVJRWxlbWVudHMpOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6Omhhc1RleHRBbHRlcm5hdGl2ZSgpIGNvbnN0Ci17Ci0gICAgLy8gQVJJQTogc2VjdGlv
biAyQSwgYnVsbGV0ICMzIHNheXMgaWYgYXJpYS1sYWJlbGVkYnkgb3IgYXJpYS1sYWJlbCBhcHBl
YXJzLCBpdCBzaG91bGQKLSAgICAvLyBvdmVycmlkZSB0aGUgImxhYmVsIiBlbGVtZW50IGFzc29j
aWF0aW9uLgotICAgIHJldHVybiBhcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkubGVuZ3Ro
KCk7Ci19Ci0KIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFzUG9wdXAoKSBjb25z
dAogewogICAgIC8vIFJldHVybiB0cnVlIGlmIHRoaXMgaGFzIHRoZSBhcmlhLWhhc3BvcHVwIGF0
dHJpYnV0ZSwgb3IgaWYgaXQgaGFzIGFuIGFuY2VzdG9yIG9mIHR5cGUgbGluayB3aXRoIHRoZSBh
cmlhLWhhc3BvcHVwIGF0dHJpYnV0ZS4KQEAgLTExNTcsNDEgKzExMjEsNiBAQCBWZWN0b3I8U3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVEcm9wRWZmZWN0cygpIGNv
bnN0CiAgICAgCiAgICAgcmV0dXJuIHsgfTsKIH0KLSAgICAKLWJvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6ZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkgY29uc3QKLXsKLSAgICBpZiAoIWlz
Q29udHJvbCgpICYmICFpc0ZpZ3VyZUVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgLy8gSWYgdGhpcyBjb250cm9sIGlzIGlnbm9yZWQgKGJlY2F1c2UgaXQncyBpbnZpc2li
bGUpLCAKLSAgICAvLyB0aGVuIHRoZSBsYWJlbCBuZWVkcyB0byBiZSBleHBvc2VkIHNvIGl0IGNh
biBiZSB2aXNpYmxlIHRvIGFjY2Vzc2liaWxpdHkuCi0gICAgaWYgKGFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCi0gICAgLy8gV2hlbiBjb250cm9s
cyBoYXZlIHRoZWlyIG93biBkZXNjcmlwdGlvbnMsIHRoZSB0aXRsZSBlbGVtZW50IHNob3VsZCBi
ZSBpZ25vcmVkLgotICAgIGlmIChoYXNUZXh0QWx0ZXJuYXRpdmUoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIAotICAgIC8vIFdoZW4gPGxhYmVsPiBlbGVtZW50IGhhcyBhcmlhLWxhYmVs
IG9yIGFyaWEtbGFiZWxsZWRieSBvbiBpdCwgd2Ugc2hvdWxkbid0IGV4cG9zZSBpdCBhcyB0aGUK
LSAgICAvLyB0aXRsZVVJRWxlbWVudCwgb3RoZXJ3aXNlIGl0cyBpbm5lciB0ZXh0IHdpbGwgYmUg
YW5ub3VuY2VkIGJ5IGEgc2NyZWVucmVhZGVyLgotICAgIGlmIChpc0xhYmVsYWJsZSgpKSB7Ci0g
ICAgICAgIGlmIChIVE1MTGFiZWxFbGVtZW50KiBsYWJlbCA9IGxhYmVsRm9yRWxlbWVudChkb3du
Y2FzdDxFbGVtZW50Pihub2RlKCkpKSkgewotICAgICAgICAgICAgaWYgKCFsYWJlbC0+YXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2xhYmVsQXR0cikuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBsYWJlbE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUobGFiZWwp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFsYWJlbE9iamVjdC0+YXJpYUxhYmVsZWRCeUF0dHJp
YnV0ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgIC8vIFRvIHNpbXBsaWZ5IGluc3RhbmNlcyB3aGVyZSB0aGUgbGFiZWxpbmcg
ZWxlbWVudCBpbmNsdWRlcyB3aWRnZXQgZGVzY2VuZGFudHMKLSAgICAgICAgICAgICAgICAvLyB3
aGljaCBpdCBkb2VzIG5vdCBsYWJlbC4KLSAgICAgICAgICAgICAgICBpZiAoaXM8QWNjZXNzaWJp
bGl0eUxhYmVsPigqbGFiZWxPYmplY3QpCi0gICAgICAgICAgICAgICAgICAgICYmIGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlMYWJlbD4oKmxhYmVsT2JqZWN0KS5jb250YWluc1VucmVsYXRlZENvbnRy
b2xzKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KIAogI2lmIEVOQUJM
RShBUFBMRV9QQVkpCiBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXBwbGVQYXlC
dXR0b25EZXNjcmlwdGlvbigpIGNvbnN0CkBAIC0yODIxLDQyICsyNzUwLDYgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgpCiAg
ICAgfQogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojpjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0Ci17Ci0gICAgSFRN
TExhYmVsRWxlbWVudCogbGFiZWxFbGVtZW50ID0gbGFiZWxFbGVtZW50Q29udGFpbmVyKCk7Ci0g
ICAgaWYgKCFsYWJlbEVsZW1lbnQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAg
IGF1dG8gY29ycmVzcG9uZGluZ0NvbnRyb2wgPSBsYWJlbEVsZW1lbnQtPmNvbnRyb2woKTsKLSAg
ICBpZiAoIWNvcnJlc3BvbmRpbmdDb250cm9sKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29ycmVzcG9uZGluZyBjb250cm9sIGlzbid0IGEgZGVzY2Vu
ZGFudCBvZiB0aGlzIGxhYmVsIHRoYXQncyBpbiB0aGUgbWlkZGxlIG9mIGJlaW5nIGRlc3Ryb3ll
ZC4KLSAgICBpZiAoY29ycmVzcG9uZGluZ0NvbnRyb2wtPnJlbmRlcmVyKCkgJiYgIWNvcnJlc3Bv
bmRpbmdDb250cm9sLT5yZW5kZXJlcigpLT5wYXJlbnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgCi0gICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoY29ycmVz
cG9uZGluZ0NvbnRyb2wuZ2V0KCkpOwotfQotCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojpjb3JyZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgp
IGNvbnN0Ci17Ci0gICAgaWYgKCFtX3JlbmRlcmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIC8vIEFSSUE6IHNlY3Rpb24gMkEsIGJ1bGxldCAjMyBzYXlzIGlmIGFyaWEtbGFiZWxl
ZGJ5IG9yIGFyaWEtbGFiZWwgYXBwZWFycywgaXQgc2hvdWxkCi0gICAgLy8gb3ZlcnJpZGUgdGhl
ICJsYWJlbCIgZWxlbWVudCBhc3NvY2lhdGlvbi4KLSAgICBpZiAoaGFzVGV4dEFsdGVybmF0aXZl
KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgTm9kZSogbm9kZSA9IG1fcmVuZGVy
ZXItPm5vZGUoKTsKLSAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KG5vZGUpKSB7Ci0gICAgICAgIGlm
IChIVE1MTGFiZWxFbGVtZW50KiBsYWJlbCA9IGxhYmVsRm9yRWxlbWVudChkb3duY2FzdDxIVE1M
RWxlbWVudD4obm9kZSkpKQotICAgICAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0
T3JDcmVhdGUobGFiZWwpOwotICAgIH0KLQotICAgIHJldHVybiBudWxscHRyOwotfQotCiBib29s
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbmRlck9iamVjdElzT2JzZXJ2YWJsZShSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyKSBjb25zdAogewogICAgIC8vIEFYIGNsaWVudHMgd2lsbCBsaXN0
ZW4gZm9yIEFYVmFsdWVDaGFuZ2Ugb24gYSB0ZXh0IGNvbnRyb2wuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCmlu
ZGV4IDdiOTRiNjM0MWE4ODBiYjVkMjgyMDFiNzdiODUxYmU1ZDQyYWNjOTcuLjU5NWYwYTZkMzg3
MGFjYzliMWFhODc5MjdjZTQyZjI4ZDdlODVjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCkBAIC01OSw4
ICs1OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXQoKSBvdmVycmlkZTsKICAgICAKICAgICBi
b29sIGlzQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNGaWxlVXBsb2Fk
QnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICBib29sIGlzU2VsZWN0ZWQoKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wg
aXNMb2FkZWQoKSBjb25zdCBvdmVycmlkZTsKQEAgLTk2LDggKzk0LDYgQEAgcHVibGljOgogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9ic2VydmFibGVPYmplY3QoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGxpbmtlZFVJRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGl0bGVVSUVsZW1lbnQo
KSBjb25zdCBvdmVycmlkZTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JyZXNwb25kaW5n
Q29udHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBib29sIHN1cHBvcnRzQVJJQU93bnMoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBib29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUoKSBjb25zdCBvdmVycmlkZTsK
QEAgLTEyMSw3ICsxMTcsNiBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJWaWV3KiB0b3BSZW5kZXJl
cigpIGNvbnN0OwogICAgIFJlbmRlclRleHRDb250cm9sKiB0ZXh0Q29udHJvbCgpIGNvbnN0Owot
ICAgIEhUTUxMYWJlbEVsZW1lbnQqIGxhYmVsRWxlbWVudENvbnRhaW5lcigpIGNvbnN0OwogICAg
IAogICAgIFVSTCB1cmwoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGFpblRleHRSYW5nZSBzZWxl
Y3RlZFRleHRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMjExLDggKzIwNiw2IEBAIHByb3Rl
Y3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgp
IG92ZXJyaWRlOwogICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25z
dCBvdmVycmlkZTsKIAotICAgIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGU7Ci0KICNpZiBFTkFCTEUoTUFUSE1MKQogICAgIHZpcnR1YWwgYm9vbCBpc0lnbm9yZWRF
bGVtZW50V2l0aGluTWF0aFRyZWUoKSBjb25zdDsKICNlbmRpZgpAQCAtMjI0LDcgKzIxNyw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBhcmlhTGlzdGJveFNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJik7CiAgICAgdm9pZCBhcmlhTGlzdGJveFZpc2libGVDaGlsZHJl
bihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICBib29sIGlzQWxsb3dlZENoaWxk
T2ZUcmVlKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNUZXh0QWx0ZXJuYXRpdmUoKSBjb25zdDsKICAg
ICBTdHJpbmcgcG9zaXRpb25hbERlc2NyaXB0aW9uRm9yTVNBQSgpIGNvbnN0OwogICAgIFBsYWlu
VGV4dFJhbmdlIGRvY3VtZW50QmFzZWRTZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0OwogICAgIEVs
ZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnRGb3JQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYpIGNv
bnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449121</attachid>
            <date>2022-01-13 15:36:26 -0800</date>
            <delta_ts>2022-01-14 09:07:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235204-20220113173625.patch</filename>
            <type>text/plain</type>
            <size>17618</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVjMmNiODY5ZWY4MTU2
OTg4NjZkZmJmMjZlZTRhYTljODQ0MTlhOS4uNzIxNDU2OWY5MzBkZjY2MDY4NDM4MjNkZmY3YzJl
NjRkMTRlMDc3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIyLTAxLTEzICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IE1vdmUgbWV0aG9k
cyB0aGF0IGFyZSB1bm5lY2Vzc2FyaWx5IGluIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgdG8g
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QgKHBhcnQgMSBvZiBuKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MjA0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQ2hyaXMgRmxlaXphY2guCisKKyAgICAgICAgTWFueSBtZXRob2RzIGluIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QgZG9uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcgcmVuZGVyZXItc3BlY2lm
aWMsCisgICAgICAgIGFuZCB0aHVzIHNob3VsZCBiZSBpbiB0aGUgYmFzZSBjbGFzcyBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdC4gVGhpcyB3aWxsIGhlbHAgaW1wcm92ZSBvdXIgc3VwcG9ydAorICAg
ICAgICBmb3IgQVggb2JqZWN0cyB0aGF0IG5vcm1hbGx5IGhhdmUgcmVuZGVyZXJzLCBidXQgZG9u
J3QgYmVjYXVzZSBvZiBDU1Mgb3IgQVJJQSBtYXJrdXAgKGUuZy4gZGlzcGxheTogY29udGVudHMp
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNGaWxlVXBsb2Fk
QnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
Ojpjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y29ycmVzcG9uZGluZ0xhYmVsRm9yQ29u
dHJvbEVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVP
YmplY3Q6OmxhYmVsRWxlbWVudENvbnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6ZXhwb3Nlc1RpdGxlVUlFbGVtZW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoYXNUZXh0QWx0ZXJuYXRp
dmUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3QuaDoKKyAgICAgICAgQWRkIGFsbCBvZiB0aGUgYWJvdmUgbWV0aG9kcyBmcm9tIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6ZGV0ZXJtaW5lRHJvcEVmZmVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNGaWxlVXBsb2FkQnV0dG9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmxhYmVsRWxlbWVudENv
bnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpoYXNUZXh0QWx0ZXJuYXRpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6ZXhwb3Nlc1RpdGxlVUlFbGVtZW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvcnJlc3BvbmRpbmdDb250
cm9sRm9yTGFiZWxFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50IGNvbnN0
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoK
KyAgICAgICAgTW92ZSBhbGwgb2YgdGhlIGFib3ZlIG1ldGhvZHMgdG8gQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QuCisKIDIwMjItMDEtMTMgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4K
IAogICAgICAgICBDbGVhbiB1cCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHAKaW5kZXggMjI4ZjE4ZTJhOTM2MjU3ZjBlM2FjNmI5YTUzNTEwYTJiN2I5ODVl
Ny4uYTQwOTlkNjY3NjQ3NzNjMGJlZWQ2OGY1NGU1OWQ4NDMwZThkZTZjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBWExvZ2dlci5oIgogI2luY2x1ZGUg
IkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgi
CisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxhYmVsLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eUxpc3QuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TGlzdEJveC5oIgogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlTcGluQnV0dG9uLmgiCkBAIC01NjIsNiArNTYzLDEzIEBAIGJvb2wgQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudUl0ZW0oKSBjb25zdAogICAgIH0KIH0KIAorYm9vbCBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3QKK3sKKyAg
ICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4obV9ub2RlKSkKKyAgICAgICAgcmV0dXJuIGRvd25j
YXN0PEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9kZSktPmlzRmlsZVVwbG9hZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKwogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNOYXRpdmVDaGVj
a2JveE9yUmFkaW8oKSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CkBA
IC0xMTc0LDYgKzExODIsMzcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNHZW5l
cmljRm9jdXNhYmxlRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0FjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpjb3JyZXNwb25kaW5nQ29u
dHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0Cit7CisgICAgYXV0byogbGFiZWxFbGVtZW50ID0g
bGFiZWxFbGVtZW50Q29udGFpbmVyKCk7CisgICAgaWYgKCFsYWJlbEVsZW1lbnQpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgYXV0byBjb3JyZXNwb25kaW5nQ29udHJvbCA9IGxhYmVs
RWxlbWVudC0+Y29udHJvbCgpOworICAgIGlmICghY29ycmVzcG9uZGluZ0NvbnRyb2wpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gTWFrZSBzdXJlIHRoZSBjb3JyZXNwb25kaW5n
IGNvbnRyb2wgaXNuJ3QgYSBkZXNjZW5kYW50IG9mIHRoaXMgbGFiZWwgdGhhdCdzIGluIHRoZSBt
aWRkbGUgb2YgYmVpbmcgZGVzdHJveWVkLgorICAgIGlmIChjb3JyZXNwb25kaW5nQ29udHJvbC0+
cmVuZGVyZXIoKSAmJiAhY29ycmVzcG9uZGluZ0NvbnRyb2wtPnJlbmRlcmVyKCktPnBhcmVudCgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBheE9iamVjdENhY2hlKCkt
PmdldE9yQ3JlYXRlKGNvcnJlc3BvbmRpbmdDb250cm9sLmdldCgpKTsKK30KKworQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNvcnJlc3BvbmRpbmdMYWJlbEZv
ckNvbnRyb2xFbGVtZW50KCkgY29uc3QKK3sKKyAgICAvLyBBUklBOiBzZWN0aW9uIDJBLCBidWxs
ZXQgIzMgc2F5cyBpZiBhcmlhLWxhYmVsZWRieSBvciBhcmlhLWxhYmVsIGFwcGVhcnMsIGl0IHNo
b3VsZAorICAgIC8vIG92ZXJyaWRlIHRoZSAibGFiZWwiIGVsZW1lbnQgYXNzb2NpYXRpb24uCisg
ICAgaWYgKGhhc1RleHRBbHRlcm5hdGl2ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIGlmIChpczxIVE1MRWxlbWVudD4obV9ub2RlKSkgeworICAgICAgICBpZiAoSFRNTExhYmVs
RWxlbWVudCogbGFiZWwgPSBsYWJlbEZvckVsZW1lbnQoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG1f
bm9kZSkpKQorICAgICAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUo
bGFiZWwpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogSFRNTExhYmVsRWxlbWVu
dCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmxhYmVsRm9yRWxlbWVudChFbGVtZW50KiBlbGVt
ZW50KSBjb25zdAogewogICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KCplbGVtZW50KSB8fCAhZG93
bmNhc3Q8SFRNTEVsZW1lbnQ+KCplbGVtZW50KS5pc0xhYmVsYWJsZSgpKQpAQCAtMTMwOSw3ICsx
MzQ4LDIxIEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dEZvckxhYmVsRWxl
bWVudChFbGVtZW50KiBlbGVtZW50KSBjb25zdAogICAgIAogICAgIHJldHVybiAhcmVzdWx0Lmlz
RW1wdHkoKSA/IHJlc3VsdCA6IGFjY2Vzc2libGVOYW1lRm9yTm9kZShsYWJlbCk7CiB9Ci0gICAg
CisKK0hUTUxMYWJlbEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpsYWJlbEVsZW1l
bnRDb250YWluZXIoKSBjb25zdAoreworICAgIC8vIFRoZSBjb250cm9sIGVsZW1lbnQgc2hvdWxk
IG5vdCBiZSBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIGxhYmVsLgorICAgIGlmIChpc0NvbnRyb2wo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBGaW5kIGFuIGFuY2VzdG9yIGxh
YmVsIGVsZW1lbnQuCisgICAgZm9yIChhdXRvKiBwYXJlbnROb2RlID0gbV9ub2RlOyBwYXJlbnRO
b2RlOyBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIGlm
IChpczxIVE1MTGFiZWxFbGVtZW50PigqcGFyZW50Tm9kZSkpCisgICAgICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8SFRNTExhYmVsRWxlbWVudD4ocGFyZW50Tm9kZSk7CisgICAgfQorICAgIHJldHVy
biBudWxscHRyOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0aXRsZUVsZW1l
bnRUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mIHRleHRPcmRlcikgY29uc3QKIHsKICAg
ICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOwpAQCAtMTMzMyw2ICsxMzg2LDQ3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRpdGxlRWxlbWVudFRleHQoVmVjdG9yPEFjY2Vzc2li
aWxpdHlUZXh0PiYgdGV4dE9yCiAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0
eVRleHQoU3RyaW5nKCksIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpMYWJlbEJ5RWxlbWVudCkp
OwogfQogCitib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpleHBvc2VzVGl0bGVVSUVsZW1l
bnQoKSBjb25zdAoreworICAgIGlmICghaXNDb250cm9sKCkgJiYgIWlzRmlndXJlRWxlbWVudCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBJZiB0aGlzIGNvbnRyb2wgaXMgaWdu
b3JlZCAoYmVjYXVzZSBpdCdzIGludmlzaWJsZSksCisgICAgLy8gdGhlbiB0aGUgbGFiZWwgbmVl
ZHMgdG8gYmUgZXhwb3NlZCBzbyBpdCBjYW4gYmUgdmlzaWJsZSB0byBhY2Nlc3NpYmlsaXR5Lgor
ICAgIGlmIChhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgLy8gV2hlbiBjb250cm9scyBoYXZlIHRoZWlyIG93biBkZXNjcmlwdGlvbnMsIHRoZSB0
aXRsZSBlbGVtZW50IHNob3VsZCBiZSBpZ25vcmVkLgorICAgIGlmIChoYXNUZXh0QWx0ZXJuYXRp
dmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gV2hlbiA8bGFiZWw+IGVsZW1l
bnQgaGFzIGFyaWEtbGFiZWwgb3IgYXJpYS1sYWJlbGxlZGJ5IG9uIGl0LCB3ZSBzaG91bGRuJ3Qg
ZXhwb3NlIGl0IGFzIHRoZQorICAgIC8vIHRpdGxlVUlFbGVtZW50LCBvdGhlcndpc2UgaXRzIGlu
bmVyIHRleHQgd2lsbCBiZSBhbm5vdW5jZWQgYnkgYSBzY3JlZW5yZWFkZXIuCisgICAgaWYgKGlz
TGFiZWxhYmxlKCkpIHsKKyAgICAgICAgaWYgKEhUTUxMYWJlbEVsZW1lbnQqIGxhYmVsID0gbGFi
ZWxGb3JFbGVtZW50KGRvd25jYXN0PEVsZW1lbnQ+KG1fbm9kZSkpKSB7CisgICAgICAgICAgICBp
ZiAoIWxhYmVsLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfbGFiZWxBdHRy
KS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
aWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGxhYmVsT2JqZWN0ID0gYXhPYmplY3RDYWNoZSgpLT5n
ZXRPckNyZWF0ZShsYWJlbCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWxhYmVsT2JqZWN0LT5h
cmlhTGFiZWxlZEJ5QXR0cmlidXRlKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgLy8gVG8gc2ltcGxpZnkgaW5zdGFuY2VzIHdo
ZXJlIHRoZSBsYWJlbGluZyBlbGVtZW50IGluY2x1ZGVzIHdpZGdldCBkZXNjZW5kYW50cworICAg
ICAgICAgICAgICAgIC8vIHdoaWNoIGl0IGRvZXMgbm90IGxhYmVsLgorICAgICAgICAgICAgICAg
IGlmIChpczxBY2Nlc3NpYmlsaXR5TGFiZWw+KCpsYWJlbE9iamVjdCkKKyAgICAgICAgICAgICAg
ICAgICAgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eUxhYmVsPigqbGFiZWxPYmplY3QpLmNvbnRh
aW5zVW5yZWxhdGVkQ29udHJvbHMoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
Citib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoYXNUZXh0QWx0ZXJuYXRpdmUoKSBjb25z
dAoreworICAgIC8vIEFSSUE6IHNlY3Rpb24gMkEsIGJ1bGxldCAjMyBzYXlzIGlmIGFyaWEtbGFi
ZWxlZGJ5IG9yIGFyaWEtbGFiZWwgYXBwZWFycywgaXQgc2hvdWxkCisgICAgLy8gb3ZlcnJpZGUg
dGhlICJsYWJlbCIgZWxlbWVudCBhc3NvY2lhdGlvbi4KKyAgICByZXR1cm4gYXJpYUFjY2Vzc2li
aWxpdHlEZXNjcmlwdGlvbigpLmxlbmd0aCgpOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0OjphbHRlcm5hdGl2ZVRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dE9y
ZGVyKSBjb25zdAogewogICAgIGlmIChpc1dlYkFyZWEoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCmluZGV4IGI0
YzMzYTcwZjZjN2Q1ODllNDgzN2Q5YTkxMTRlZjA2MzUzYzA0MDAuLjA2OWMzNWRjNjc1NmFhNWNk
ZDQxN2NkYTIyMDMyNzRmYzBmZjVhOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKQEAgLTY2LDYgKzY2LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaXNNZW51QnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9v
bCBpc01lbnVJdGVtKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc01lbnVSZWxhdGVkKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdCBvdmVy
cmlkZTsKICAgICBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBib29sIGlzTmF0aXZlQ2hlY2tib3hPclJhZGlvKCkgY29uc3Q7CiAgICAgYm9vbCBp
c05hdGl2ZUltYWdlKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xNjQsOSArMTY1LDE0IEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGNoYW5nZVZhbHVlQnlTdGVwKGJvb2wgaW5jcmVhc2UpOwogICAgIC8v
IFRoaXMgcmV0dXJucyB0cnVlIGlmIGl0J3MgZm9jdXNhYmxlIGJ1dCBpdCdzIG5vdCBjb250ZW50
IGVkaXRhYmxlIGFuZCBpdCdzIG5vdCBhIGNvbnRyb2wgb3IgQVJJQSBjb250cm9sLgogICAgIGJv
b2wgaXNHZW5lcmljRm9jdXNhYmxlRWxlbWVudCgpIGNvbnN0OworCiAgICAgYm9vbCBpc0xhYmVs
YWJsZSgpIGNvbnN0OworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcnJlc3BvbmRpbmdDb250
cm9sRm9yTGFiZWxFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogY29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBIVE1MTGFiZWxFbGVtZW50KiBsYWJlbEZvckVsZW1lbnQoRWxlbWVudCopIGNvbnN0
OwogICAgIFN0cmluZyB0ZXh0Rm9yTGFiZWxFbGVtZW50KEVsZW1lbnQqKSBjb25zdDsKKyAgICBI
VE1MTGFiZWxFbGVtZW50KiBsYWJlbEVsZW1lbnRDb250YWluZXIoKSBjb25zdDsKKwogICAgIFN0
cmluZyBhcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBhcmlh
TGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMpIGNvbnN0OwogICAg
IFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25Gb3JFbGVtZW50cyhWZWN0b3I8RWxlbWVu
dCo+ICZlbGVtZW50cykgY29uc3Q7CkBAIC0xNzgsNiArMTg0LDcgQEAgcHJvdGVjdGVkOgogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIG1lbnVCdXR0b25Gb3JNZW51KCkgY29uc3Q7CiAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogY2FwdGlvbkZvckZpZ3VyZSgpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCB0aXRsZUVsZW1lbnRUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKSBjb25zdDsK
KyAgICBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2
YXRlOgogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KQEAgLTE5MSw2ICsxOTgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcG9z
dEtleWJvYXJkS2V5c0ZvclZhbHVlQ2hhbmdlKGJvb2wgaW5jcmVhc2UpOwogICAgIHZvaWQgc2V0
Tm9kZVZhbHVlKGJvb2wgaW5jcmVhc2UsIGZsb2F0IHZhbHVlKTsKICAgICBib29sIHBlcmZvcm1E
aXNtaXNzQWN0aW9uKCkgZmluYWw7CisgICAgYm9vbCBoYXNUZXh0QWx0ZXJuYXRpdmUoKSBjb25z
dDsKICAgICAKICAgICBOb2RlKiBtX25vZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXgg
ZmRlZTY0YWQ0YjViNTY1NWY0MGNmNDQzMTVkYTQ0OGYzOTQ4Y2UwZC4uYzYxN2ExMDc2ZGNjY2Y5
OTI3NjkzNWEzMDgxYWJiZWQxMDY4N2E2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0zMiw3
ICszMiw2IEBACiAjaW5jbHVkZSAiQVhMb2dnZXIuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oIgotI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlMYWJlbC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0Qm94LmgiCiAj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
U3BpbkJ1dHRvbi5oIgpAQCAtNTQ3LDE2ICs1NDYsNiBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmlzQXR0YWNobWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzV2lkZ2V0ICYmIGFy
aWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiB9CiAKLWJv
b2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3QK
LXsKLSAgICBpZiAobV9yZW5kZXJlciAmJiBpczxIVE1MSW5wdXRFbGVtZW50PihtX3JlbmRlcmVy
LT5ub2RlKCkpKSB7Ci0gICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8
SFRNTElucHV0RWxlbWVudD4oKm1fcmVuZGVyZXItPm5vZGUoKSk7Ci0gICAgICAgIHJldHVybiBp
bnB1dC5pc0ZpbGVVcGxvYWQoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotfQot
CiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzT2ZmU2NyZWVuKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fcmVuZGVyZXIpCkBAIC04MTcsMjQgKzgwNiw2IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6Y2FuSGF2ZVBsYWluVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGlz
QVJJQVN0YXRpY1RleHQoKSB8fCBpczxSZW5kZXJUZXh0PigqbV9yZW5kZXJlcikgfHwgaXNUZXh0
Q29udHJvbCgpOwogfQogCi1IVE1MTGFiZWxFbGVtZW50KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpsYWJlbEVsZW1lbnRDb250YWluZXIoKSBjb25zdAotewotICAgIGlmICghbV9yZW5kZXJl
cikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyB0aGUgY29udHJvbCBlbGVtZW50
IHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBsYWJlbAotICAgIGlmIChpc0Nv
bnRyb2woKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgLy8gZmluZCBpZiB0
aGlzIGhhcyBhIHBhcmVudCB0aGF0IGlzIGEgbGFiZWwKLSAgICBmb3IgKE5vZGUqIHBhcmVudE5v
ZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7IHBhcmVudE5vZGU7IHBhcmVudE5vZGUgPSBwYXJlbnRO
b2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKGlzPEhUTUxMYWJlbEVsZW1lbnQ+KCpw
YXJlbnROb2RlKSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MTGFiZWxFbGVtZW50
PihwYXJlbnROb2RlKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIC8v
IFRoZSBib3VuZGluZ0JveCBmb3IgZWxlbWVudHMgd2l0aGluIHRoZSByZW1vdGUgU1ZHIGVsZW1l
bnQgbmVlZHMgdG8gYmUgb2Zmc2V0IGJ5IGl0cyBwb3NpdGlvbgogLy8gd2l0aGluIHRoZSBwYXJl
bnQgcGFnZSwgb3RoZXJ3aXNlIHRoZXkgYXJlIGluIHJlbGF0aXZlIGNvb3JkaW5hdGVzIG9ubHku
CiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om9mZnNldEJvdW5kaW5nQm94Rm9yUmVt
b3RlU1ZHRWxlbWVudChMYXlvdXRSZWN0JiByZWN0KSBjb25zdApAQCAtMTEwMCwxMyArMTA3MSw2
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bGlua2VkVUlFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGxpCiAgICAgICAgIGFkZFJhZGlvQnV0dG9uR3JvdXBN
ZW1iZXJzKGxpbmtlZFVJRWxlbWVudHMpOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6Omhhc1RleHRBbHRlcm5hdGl2ZSgpIGNvbnN0Ci17Ci0gICAgLy8gQVJJQTogc2VjdGlv
biAyQSwgYnVsbGV0ICMzIHNheXMgaWYgYXJpYS1sYWJlbGVkYnkgb3IgYXJpYS1sYWJlbCBhcHBl
YXJzLCBpdCBzaG91bGQKLSAgICAvLyBvdmVycmlkZSB0aGUgImxhYmVsIiBlbGVtZW50IGFzc29j
aWF0aW9uLgotICAgIHJldHVybiBhcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkubGVuZ3Ro
KCk7Ci19Ci0KIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFzUG9wdXAoKSBjb25z
dAogewogICAgIC8vIFJldHVybiB0cnVlIGlmIHRoaXMgaGFzIHRoZSBhcmlhLWhhc3BvcHVwIGF0
dHJpYnV0ZSwgb3IgaWYgaXQgaGFzIGFuIGFuY2VzdG9yIG9mIHR5cGUgbGluayB3aXRoIHRoZSBh
cmlhLWhhc3BvcHVwIGF0dHJpYnV0ZS4KQEAgLTExNTcsNDEgKzExMjEsNiBAQCBWZWN0b3I8U3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVEcm9wRWZmZWN0cygpIGNv
bnN0CiAgICAgCiAgICAgcmV0dXJuIHsgfTsKIH0KLSAgICAKLWJvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6ZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkgY29uc3QKLXsKLSAgICBpZiAoIWlz
Q29udHJvbCgpICYmICFpc0ZpZ3VyZUVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgLy8gSWYgdGhpcyBjb250cm9sIGlzIGlnbm9yZWQgKGJlY2F1c2UgaXQncyBpbnZpc2li
bGUpLCAKLSAgICAvLyB0aGVuIHRoZSBsYWJlbCBuZWVkcyB0byBiZSBleHBvc2VkIHNvIGl0IGNh
biBiZSB2aXNpYmxlIHRvIGFjY2Vzc2liaWxpdHkuCi0gICAgaWYgKGFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCi0gICAgLy8gV2hlbiBjb250cm9s
cyBoYXZlIHRoZWlyIG93biBkZXNjcmlwdGlvbnMsIHRoZSB0aXRsZSBlbGVtZW50IHNob3VsZCBi
ZSBpZ25vcmVkLgotICAgIGlmIChoYXNUZXh0QWx0ZXJuYXRpdmUoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIAotICAgIC8vIFdoZW4gPGxhYmVsPiBlbGVtZW50IGhhcyBhcmlhLWxhYmVs
IG9yIGFyaWEtbGFiZWxsZWRieSBvbiBpdCwgd2Ugc2hvdWxkbid0IGV4cG9zZSBpdCBhcyB0aGUK
LSAgICAvLyB0aXRsZVVJRWxlbWVudCwgb3RoZXJ3aXNlIGl0cyBpbm5lciB0ZXh0IHdpbGwgYmUg
YW5ub3VuY2VkIGJ5IGEgc2NyZWVucmVhZGVyLgotICAgIGlmIChpc0xhYmVsYWJsZSgpKSB7Ci0g
ICAgICAgIGlmIChIVE1MTGFiZWxFbGVtZW50KiBsYWJlbCA9IGxhYmVsRm9yRWxlbWVudChkb3du
Y2FzdDxFbGVtZW50Pihub2RlKCkpKSkgewotICAgICAgICAgICAgaWYgKCFsYWJlbC0+YXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2xhYmVsQXR0cikuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBsYWJlbE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUobGFiZWwp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFsYWJlbE9iamVjdC0+YXJpYUxhYmVsZWRCeUF0dHJp
YnV0ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgIC8vIFRvIHNpbXBsaWZ5IGluc3RhbmNlcyB3aGVyZSB0aGUgbGFiZWxpbmcg
ZWxlbWVudCBpbmNsdWRlcyB3aWRnZXQgZGVzY2VuZGFudHMKLSAgICAgICAgICAgICAgICAvLyB3
aGljaCBpdCBkb2VzIG5vdCBsYWJlbC4KLSAgICAgICAgICAgICAgICBpZiAoaXM8QWNjZXNzaWJp
bGl0eUxhYmVsPigqbGFiZWxPYmplY3QpCi0gICAgICAgICAgICAgICAgICAgICYmIGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlMYWJlbD4oKmxhYmVsT2JqZWN0KS5jb250YWluc1VucmVsYXRlZENvbnRy
b2xzKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KIAogI2lmIEVOQUJM
RShBUFBMRV9QQVkpCiBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXBwbGVQYXlC
dXR0b25EZXNjcmlwdGlvbigpIGNvbnN0CkBAIC0yODIxLDQyICsyNzUwLDYgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgpCiAg
ICAgfQogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojpjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0Ci17Ci0gICAgSFRN
TExhYmVsRWxlbWVudCogbGFiZWxFbGVtZW50ID0gbGFiZWxFbGVtZW50Q29udGFpbmVyKCk7Ci0g
ICAgaWYgKCFsYWJlbEVsZW1lbnQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAg
IGF1dG8gY29ycmVzcG9uZGluZ0NvbnRyb2wgPSBsYWJlbEVsZW1lbnQtPmNvbnRyb2woKTsKLSAg
ICBpZiAoIWNvcnJlc3BvbmRpbmdDb250cm9sKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29ycmVzcG9uZGluZyBjb250cm9sIGlzbid0IGEgZGVzY2Vu
ZGFudCBvZiB0aGlzIGxhYmVsIHRoYXQncyBpbiB0aGUgbWlkZGxlIG9mIGJlaW5nIGRlc3Ryb3ll
ZC4KLSAgICBpZiAoY29ycmVzcG9uZGluZ0NvbnRyb2wtPnJlbmRlcmVyKCkgJiYgIWNvcnJlc3Bv
bmRpbmdDb250cm9sLT5yZW5kZXJlcigpLT5wYXJlbnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgCi0gICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoY29ycmVz
cG9uZGluZ0NvbnRyb2wuZ2V0KCkpOwotfQotCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojpjb3JyZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgp
IGNvbnN0Ci17Ci0gICAgaWYgKCFtX3JlbmRlcmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIC8vIEFSSUE6IHNlY3Rpb24gMkEsIGJ1bGxldCAjMyBzYXlzIGlmIGFyaWEtbGFiZWxl
ZGJ5IG9yIGFyaWEtbGFiZWwgYXBwZWFycywgaXQgc2hvdWxkCi0gICAgLy8gb3ZlcnJpZGUgdGhl
ICJsYWJlbCIgZWxlbWVudCBhc3NvY2lhdGlvbi4KLSAgICBpZiAoaGFzVGV4dEFsdGVybmF0aXZl
KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgTm9kZSogbm9kZSA9IG1fcmVuZGVy
ZXItPm5vZGUoKTsKLSAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KG5vZGUpKSB7Ci0gICAgICAgIGlm
IChIVE1MTGFiZWxFbGVtZW50KiBsYWJlbCA9IGxhYmVsRm9yRWxlbWVudChkb3duY2FzdDxIVE1M
RWxlbWVudD4obm9kZSkpKQotICAgICAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0
T3JDcmVhdGUobGFiZWwpOwotICAgIH0KLQotICAgIHJldHVybiBudWxscHRyOwotfQotCiBib29s
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbmRlck9iamVjdElzT2JzZXJ2YWJsZShSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyKSBjb25zdAogewogICAgIC8vIEFYIGNsaWVudHMgd2lsbCBsaXN0
ZW4gZm9yIEFYVmFsdWVDaGFuZ2Ugb24gYSB0ZXh0IGNvbnRyb2wuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCmlu
ZGV4IDdiOTRiNjM0MWE4ODBiYjVkMjgyMDFiNzdiODUxYmU1ZDQyYWNjOTcuLjU5NWYwYTZkMzg3
MGFjYzliMWFhODc5MjdjZTQyZjI4ZDdlODVjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCkBAIC01OSw4
ICs1OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXQoKSBvdmVycmlkZTsKICAgICAKICAgICBi
b29sIGlzQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNGaWxlVXBsb2Fk
QnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICBib29sIGlzU2VsZWN0ZWQoKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wg
aXNMb2FkZWQoKSBjb25zdCBvdmVycmlkZTsKQEAgLTk2LDggKzk0LDYgQEAgcHVibGljOgogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9ic2VydmFibGVPYmplY3QoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGxpbmtlZFVJRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGl0bGVVSUVsZW1lbnQo
KSBjb25zdCBvdmVycmlkZTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JyZXNwb25kaW5n
Q29udHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBib29sIHN1cHBvcnRzQVJJQU93bnMoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBib29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUoKSBjb25zdCBvdmVycmlkZTsK
QEAgLTEyMSw3ICsxMTcsNiBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJWaWV3KiB0b3BSZW5kZXJl
cigpIGNvbnN0OwogICAgIFJlbmRlclRleHRDb250cm9sKiB0ZXh0Q29udHJvbCgpIGNvbnN0Owot
ICAgIEhUTUxMYWJlbEVsZW1lbnQqIGxhYmVsRWxlbWVudENvbnRhaW5lcigpIGNvbnN0OwogICAg
IAogICAgIFVSTCB1cmwoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGFpblRleHRSYW5nZSBzZWxl
Y3RlZFRleHRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMjExLDggKzIwNiw2IEBAIHByb3Rl
Y3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgp
IG92ZXJyaWRlOwogICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25z
dCBvdmVycmlkZTsKIAotICAgIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGU7Ci0KICNpZiBFTkFCTEUoTUFUSE1MKQogICAgIHZpcnR1YWwgYm9vbCBpc0lnbm9yZWRF
bGVtZW50V2l0aGluTWF0aFRyZWUoKSBjb25zdDsKICNlbmRpZgpAQCAtMjI0LDcgKzIxNyw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBhcmlhTGlzdGJveFNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJik7CiAgICAgdm9pZCBhcmlhTGlzdGJveFZpc2libGVDaGlsZHJl
bihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICBib29sIGlzQWxsb3dlZENoaWxk
T2ZUcmVlKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNUZXh0QWx0ZXJuYXRpdmUoKSBjb25zdDsKICAg
ICBTdHJpbmcgcG9zaXRpb25hbERlc2NyaXB0aW9uRm9yTVNBQSgpIGNvbnN0OwogICAgIFBsYWlu
VGV4dFJhbmdlIGRvY3VtZW50QmFzZWRTZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0OwogICAgIEVs
ZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnRGb3JQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYpIGNv
bnN0Owo=
</data>
<flag name="commit-queue"
          id="475183"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>