<?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>231160</bug_id>
          
          <creation_ts>2021-10-04 02:38:30 -0700</creation_ts>
          <short_desc>Add an alternate style for form controls, and implement it for checkboxes and radio buttons</short_desc>
          <delta_ts>2021-10-05 11:18:17 -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="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1800001</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-10-04 02:38:30 -0700</bug_when>
    <thetext>Add an alternate filled style for form controls on iOS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800002</commentid>
    <comment_count>1</comment_count>
      <attachid>440043</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-10-04 02:39:03 -0700</bug_when>
    <thetext>Created attachment 440043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800101</commentid>
    <comment_count>2</comment_count>
      <attachid>440043</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-10-04 10:11:47 -0700</bug_when>
    <thetext>Comment on attachment 440043
Patch

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

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:2094
&gt; +        return nil;

`nullptr`?

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:2123
&gt; +    context.setFillGradient(*checkboxRadioBackgroundGradient(roundedRect.rect(), states));

This will result in a null deference in the pressed state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800104</commentid>
    <comment_count>3</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-10-04 10:15:49 -0700</bug_when>
    <thetext>(In reply to Aditya Keerthi from comment #2)
&gt; Comment on attachment 440043 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=440043&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderThemeIOS.mm:2094
&gt; &gt; +        return nil;
&gt; 
&gt; `nullptr`?
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderThemeIOS.mm:2123
&gt; &gt; +    context.setFillGradient(*checkboxRadioBackgroundGradient(roundedRect.rect(), states));
&gt; 
&gt; This will result in a null deference in the pressed state.

s/deference/dereference/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800260</commentid>
    <comment_count>4</comment_count>
      <attachid>440115</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-10-04 15:45:54 -0700</bug_when>
    <thetext>Created attachment 440115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800276</commentid>
    <comment_count>5</comment_count>
      <attachid>440115</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-10-04 16:16:16 -0700</bug_when>
    <thetext>Comment on attachment 440115
Patch

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

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:2120
&gt; +    Path path;

Move inside the `if` directly below, since it&apos;s not used otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800280</commentid>
    <comment_count>6</comment_count>
      <attachid>440119</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-10-04 16:24:18 -0700</bug_when>
    <thetext>Created attachment 440119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800304</commentid>
    <comment_count>7</comment_count>
      <attachid>440119</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-10-04 17:09:42 -0700</bug_when>
    <thetext>Comment on attachment 440119
Patch

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

&gt; Source/WebCore/rendering/RenderThemeIOS.h:117
&gt;  #if ENABLE(IOS_FORM_CONTROL_REFRESH)

Got to rename / remove this soon? Just as soon as we rename &quot;modern-media-controls&quot; right?

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:2070
&gt; +        // FIXME: The disabled state for the alternate appearance is currently unspecified; this is just a guess.

Please make sure this has a bug.

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:2099
&gt; +    gradient-&gt;addColorStop({ 1.0f, DisplayP3&lt;float&gt; { 0, 0, 0, 0 }});

Using DisplayP3 for these seem unnecessary (especially for the one that can use Color::transparentBlack), but you do you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800305</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-10-04 17:14:06 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #7)
&gt; Comment on attachment 440119 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=440119&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderThemeIOS.h:117
&gt; &gt;  #if ENABLE(IOS_FORM_CONTROL_REFRESH)
&gt; 
&gt; Got to rename / remove this soon? Just as soon as we rename
&gt; &quot;modern-media-controls&quot; right?

Aditya and I are talking about that; we think both the setting and the ifdef can just go away now.

&gt; &gt; Source/WebCore/rendering/RenderThemeIOS.mm:2070
&gt; &gt; +        // FIXME: The disabled state for the alternate appearance is currently unspecified; this is just a guess.
&gt; 
&gt; Please make sure this has a bug.

Yep, will file a few.

&gt; &gt; Source/WebCore/rendering/RenderThemeIOS.mm:2099
&gt; &gt; +    gradient-&gt;addColorStop({ 1.0f, DisplayP3&lt;float&gt; { 0, 0, 0, 0 }});
&gt; 
&gt; Using DisplayP3 for these seem unnecessary (especially for the one that can
&gt; use Color::transparentBlack), but you do you.

True, I was just typing them all straight from a color picker from a P3-space document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800657</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-10-05 11:17:57 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/283560/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800658</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-05 11:18:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/83895320&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440043</attachid>
            <date>2021-10-04 02:39:03 -0700</date>
            <delta_ts>2021-10-04 15:45:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231160-20211004023902.patch</filename>
            <type>text/plain</type>
            <size>15898</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDYxMWNlMGMyZTVmOGVjOTYzZWE4MmI3
MTE1N2Y3ZjVlZjE0MzgyMmUuLjI5MjMzNzQ3YzQzMjEwNGFlMDY2MjExOThmMTA5ZmMxN2Y3Njdh
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTAtMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIGFsdGVybmF0ZSBzdHlsZSBmb3Ig
Zm9ybSBjb250cm9scywgYW5kIGltcGxlbWVudCBpdCBmb3IgY2hlY2tib3hlcyBhbmQgcmFkaW8g
YnV0dG9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMxMTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjEtMDktMjkg
IEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtDU1MgQ2FzY2Fk
ZSBMYXllcnNdIEVuYWJsZSBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI5YzI3NmMzNmY2OTJi
MWI1ZTc0OWU0ZmRmMzhjYmYwMzMwMWZmNy4uMTczODZjNGIwZmMzMDYyNjQwNTljMzcyNWU2NzUw
M2Q5ZjBkNDc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTEwLTA0ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBhbHRl
cm5hdGUgc3R5bGUgZm9yIGZvcm0gY29udHJvbHMsIGFuZCBpbXBsZW1lbnQgaXQgZm9yIGNoZWNr
Ym94ZXMgYW5kIHJhZGlvIGJ1dHRvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMTE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVJT1M6OmNoZWNrYm94UmFkaW9CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICBBZGQgYWx0ZXJu
YXRlIGJhY2tncm91bmQgY29sb3JzLiBDdXJyZW50bHkgdGhlc2UgYXJlIG5vdCBzcGVjaWZpZWQg
YXMKKyAgICAgICAgc2VtYW50aWMgY29sb3JzLCBzbyB3ZSBpbmxpbmUgdGhlIHZhbHVlcy4KKwor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OmNoZWNrYm94UmFkaW9CYWNrZ3JvdW5k
R3JhZGllbnQpOgorICAgICAgICBBZGQgYSBncmFkaWVudCBmaWxsIGZvciBjaGVja2JveCBhbmQg
cmFkaW8gYnV0dG9uIGJhY2tncm91bmRzLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRDaGVja2JveFJhZGlvSW5uZXJTaGFkb3cpOgorICAgICAgICBBZGQgdHdvIGlu
bmVyIHNoYWRvd3MgKHJlYWxseSwgYSBzaGFkb3cgYW5kIGEgZ2xvdykgdG8gdGhlIGNoZWNrYm94
IGFuZCByYWRpbyBidXR0b24uCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpw
YWludENoZWNrYm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFJh
ZGlvKToKKyAgICAgICAgRHJvcCB0aGUgYm9yZGVyIGFuZCB1c2UgYSBmaWxsZWQgYmFja2dyb3Vu
ZCBhbmQgaW5uZXIgc2hhZG93cyBpbnN0ZWFkLAorICAgICAgICB3aGVuIHRoZSBzZXR0aW5nIGlz
IGVuYWJsZWQuCisKIDIwMjEtMDktMjkgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBjYW52YXMuY2FwdHVyZVN0cmVhbSgpIGZhaWxz
IGZvciBXZWJHTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAxY2JmYTQ2YmNlYmViODUyZmI4M2IxZDc5ZDJkODY3YWFi
OGZiZTU3Li5iNzBjNTMwYTBkNjY2NDIzZDJiMThkNmNhMjM5MzkzNGZmMTk5ZTY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEwLTA0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBhbHRlcm5hdGUgc3R5bGUgZm9yIGZvcm0g
Y29udHJvbHMsIGFuZCBpbXBsZW1lbnQgaXQgZm9yIGNoZWNrYm94ZXMgYW5kIHJhZGlvIGJ1dHRv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTE2
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hh
cmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmRl
ZmF1bHRBbHRlcm5hdGVGb3JtQ29udHJvbERlc2lnbkVuYWJsZWQpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaDoKKwogMjAyMS0wOS0yOSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZC10aW1lIG9wdGltaXphdGlv
bjogZm9yd2FyZCBkZWNsYXJlIG1vcmUgdGhpbmdzIGluIE1lZGlhUGxheWVyLmggYW5kIEhUTUxN
ZWRpYUVsZW1lbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2Vz
L1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2Vi
UHJlZmVyZW5jZXMueWFtbAppbmRleCAyY2VhYzQyMDBhZmRkMTE5ODZhODg0OTkyNTIyODhkYzVh
ZDYzMDAzLi4yNTE4ZmQ1MTJhMGIyODFkMTllNWFlZGExMzVjMTc3Y2M3ZWYzYjU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbAor
KysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbApA
QCAtMjMyLDYgKzIzMiwxNyBAQCBBbGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjazoK
ICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogdHJ1ZQogCitBbHRlcm5hdGVGb3JtQ29udHJv
bERlc2lnbkVuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgY29uZGl0aW9uOiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICBkZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVs
dDogZmFsc2UKKyAgICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiBXZWJLaXQ6OmRlZmF1bHRBbHRl
cm5hdGVGb3JtQ29udHJvbERlc2lnbkVuYWJsZWQoKQorICAgIFdlYkNvcmU6CisgICAgICBkZWZh
dWx0OiBmYWxzZQorCiBBbHdheXNVc2VBY2NlbGVyYXRlZE92ZXJmbG93U2Nyb2xsOgogICB0eXBl
OiBib29sCiAgIGRlZmF1bHRWYWx1ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLmgKaW5kZXggNDgyOWNmOWM5NjZkYTBiN2YxZTI4YTM1ZWI5MzljMzQ3MzA4M2JiNS4u
NGIxMDFiMzhiNWM4ZTE0ZDBhNjc3ZjUwNzQzZDFkNjdiNDUxMzE0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKQEAgLTExNiwxMiArMTE2LDE1IEBAIHByaXZh
dGU6CiAKICNpZiBFTkFCTEUoSU9TX0ZPUk1fQ09OVFJPTF9SRUZSRVNIKQogICAgIENvbG9yIGNo
ZWNrYm94UmFkaW9Cb3JkZXJDb2xvcihPcHRpb25TZXQ8Q29udHJvbFN0YXRlczo6U3RhdGVzPiwg
T3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+KTsKLSAgICBDb2xvciBjaGVja2JveFJhZGlv
QmFja2dyb3VuZENvbG9yKE9wdGlvblNldDxDb250cm9sU3RhdGVzOjpTdGF0ZXM+LCBPcHRpb25T
ZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4pOworICAgIENvbG9yIGNoZWNrYm94UmFkaW9CYWNrZ3Jv
dW5kQ29sb3IoYm9vbCB1c2VBbHRlcm5hdGVEZXNpZ24sIE9wdGlvblNldDxDb250cm9sU3RhdGVz
OjpTdGF0ZXM+LCBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4pOworICAgIFJlZlB0cjxH
cmFkaWVudD4gY2hlY2tib3hSYWRpb0JhY2tncm91bmRHcmFkaWVudChjb25zdCBGbG9hdFJlY3Qm
LCBPcHRpb25TZXQ8Q29udHJvbFN0YXRlczo6U3RhdGVzPik7CiAgICAgQ29sb3IgY2hlY2tib3hS
YWRpb0luZGljYXRvckNvbG9yKE9wdGlvblNldDxDb250cm9sU3RhdGVzOjpTdGF0ZXM+LCBPcHRp
b25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4pOwogCiAgICAgYm9vbCBwYWludENoZWNrYm94KGNv
bnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92
ZXJyaWRlOwogICAgIGJvb2wgcGFpbnRSYWRpbyhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAorICAgIHZvaWQgcGFpbnRD
aGVja2JveFJhZGlvSW5uZXJTaGFkb3coY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYsIE9wdGlvblNldDxDb250cm9sU3RhdGVzOjpTdGF0ZXM+KTsKKwogICAgIFNlY29u
ZHMgYW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJQcm9n
cmVzcyYpIGNvbnN0IGZpbmFsOwogCiAgICAgYm9vbCBzdXBwb3J0c01ldGVyKENvbnRyb2xQYXJ0
LCBjb25zdCBIVE1MTWV0ZXJFbGVtZW50JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNDgyNzUxN2Q0ZWZkNDExYjg0ODNhZDk3
ZDBmZmY2YjFiMmZjNmVmZi4uMjJhNmMzMWMxOGJiMTgwNDdlNGQxYzFhNzQ0OGE4NGVkOTVjOWE4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMjA2
MCwyMCArMjA2MCw0NiBAQCBDb2xvciBSZW5kZXJUaGVtZUlPUzo6Y2hlY2tib3hSYWRpb0JvcmRl
ckNvbG9yKE9wdGlvblNldDxDb250cm9sU3RhdGVzOjpTdGF0ZXM+CiAgICAgcmV0dXJuIGRlZmF1
bHRCb3JkZXJDb2xvcjsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVJT1M6OmNoZWNrYm94UmFkaW9C
YWNrZ3JvdW5kQ29sb3IoT3B0aW9uU2V0PENvbnRyb2xTdGF0ZXM6OlN0YXRlcz4gc3RhdGVzLCBP
cHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMpCitDb2xvciBS
ZW5kZXJUaGVtZUlPUzo6Y2hlY2tib3hSYWRpb0JhY2tncm91bmRDb2xvcihib29sIHVzZUFsdGVy
bmF0ZURlc2lnbiwgT3B0aW9uU2V0PENvbnRyb2xTdGF0ZXM6OlN0YXRlcz4gc3RhdGVzLCBPcHRp
b25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMpCiB7Ci0gICAgYm9v
bCBlbXB0eSA9ICFzdGF0ZXMuY29udGFpbnNBbnkoeyBDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkNo
ZWNrZWQsIENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6SW5kZXRlcm1pbmF0ZSB9KTsKKyAgICBib29s
IGlzRW1wdHkgPSAhc3RhdGVzLmNvbnRhaW5zQW55KHsgQ29udHJvbFN0YXRlczo6U3RhdGVzOjpD
aGVja2VkLCBDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkluZGV0ZXJtaW5hdGUgfSk7CisgICAgYm9v
bCBpc0VuYWJsZWQgPSBzdGF0ZXMuY29udGFpbnMoQ29udHJvbFN0YXRlczo6U3RhdGVzOjpFbmFi
bGVkKTsKKyAgICBib29sIGlzUHJlc3NlZCA9IHN0YXRlcy5jb250YWlucyhDb250cm9sU3RhdGVz
OjpTdGF0ZXM6OlByZXNzZWQpOwogCi0gICAgaWYgKCFzdGF0ZXMuY29udGFpbnMoQ29udHJvbFN0
YXRlczo6U3RhdGVzOjpFbmFibGVkKSkKLSAgICAgICAgcmV0dXJuIHN5c3RlbUNvbG9yKGVtcHR5
ID8gQ1NTVmFsdWVXZWJraXRDb250cm9sQmFja2dyb3VuZCA6IENTU1ZhbHVlQXBwbGVTeXN0ZW1P
cGFxdWVUZXJ0aWFyeUZpbGwsIHN0eWxlQ29sb3JPcHRpb25zKTsKKyAgICBpZiAodXNlQWx0ZXJu
YXRlRGVzaWduKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGUgZGlzYWJsZWQgc3RhdGUgZm9yIHRo
ZSBhbHRlcm5hdGUgYXBwZWFyYW5jZSBpcyBjdXJyZW50bHkgdW5zcGVjaWZpZWQ7IHRoaXMgaXMg
anVzdCBhIGd1ZXNzLgorICAgICAgICBpZiAoIWlzRW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVy
biBzeXN0ZW1Db2xvcihpc0VtcHR5ID8gQ1NTVmFsdWVXZWJraXRDb250cm9sQmFja2dyb3VuZCA6
IENTU1ZhbHVlQXBwbGVTeXN0ZW1PcGFxdWVUZXJ0aWFyeUZpbGwsIHN0eWxlQ29sb3JPcHRpb25z
KTsKIAotICAgIGF1dG8gZW5hYmxlZEJhY2tncm91bmRDb2xvciA9IHN5c3RlbUNvbG9yKGVtcHR5
ID8gQ1NTVmFsdWVXZWJraXRDb250cm9sQmFja2dyb3VuZCA6IENTU1ZhbHVlQXBwbGVTeXN0ZW1C
bHVlLCBzdHlsZUNvbG9yT3B0aW9ucyk7Ci0gICAgaWYgKHN0YXRlcy5jb250YWlucyhDb250cm9s
U3RhdGVzOjpTdGF0ZXM6OlByZXNzZWQpKQorICAgICAgICBpZiAoaXNQcmVzc2VkKQorICAgICAg
ICAgICAgcmV0dXJuIGlzRW1wdHkgPyBDb2xvcihEaXNwbGF5UDM8ZmxvYXQ+IHsgMC43NzMsIDAu
NzczLCAwLjc3MyB9KSA6IENvbG9yKERpc3BsYXlQMzxmbG9hdD4geyAwLjA2NywgMC4zOCwgMC45
NTMgfSk7CisKKyAgICAgICAgcmV0dXJuIGlzRW1wdHkgPyBDb2xvcihEaXNwbGF5UDM8ZmxvYXQ+
IHsgMC44MzUsIDAuODM1LCAwLjgzNSB9KSA6IENvbG9yKERpc3BsYXlQMzxmbG9hdD4geyAwLjIw
MywgMC40NywgMC45NjQgfSk7CisgICAgfQorCisgICAgaWYgKCFpc0VuYWJsZWQpCisgICAgICAg
IHJldHVybiBzeXN0ZW1Db2xvcihpc0VtcHR5ID8gQ1NTVmFsdWVXZWJraXRDb250cm9sQmFja2dy
b3VuZCA6IENTU1ZhbHVlQXBwbGVTeXN0ZW1PcGFxdWVUZXJ0aWFyeUZpbGwsIHN0eWxlQ29sb3JP
cHRpb25zKTsKKworICAgIGF1dG8gZW5hYmxlZEJhY2tncm91bmRDb2xvciA9IHN5c3RlbUNvbG9y
KGlzRW1wdHkgPyBDU1NWYWx1ZVdlYmtpdENvbnRyb2xCYWNrZ3JvdW5kIDogQ1NTVmFsdWVBcHBs
ZVN5c3RlbUJsdWUsIHN0eWxlQ29sb3JPcHRpb25zKTsKKyAgICBpZiAoaXNQcmVzc2VkKQogICAg
ICAgICByZXR1cm4gZW5hYmxlZEJhY2tncm91bmRDb2xvci5jb2xvcldpdGhBbHBoYU11bHRpcGxp
ZWRCeShwcmVzc2VkU3RhdGVPcGFjaXR5KTsKIAogICAgIHJldHVybiBlbmFibGVkQmFja2dyb3Vu
ZENvbG9yOwogfQogCitSZWZQdHI8R3JhZGllbnQ+IFJlbmRlclRoZW1lSU9TOjpjaGVja2JveFJh
ZGlvQmFja2dyb3VuZEdyYWRpZW50KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgT3B0aW9uU2V0PENv
bnRyb2xTdGF0ZXM6OlN0YXRlcz4gc3RhdGVzKQoreworICAgIGJvb2wgaXNQcmVzc2VkID0gc3Rh
dGVzLmNvbnRhaW5zKENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6UHJlc3NlZCk7CisgICAgaWYgKGlz
UHJlc3NlZCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGJvb2wgaXNFbXB0eSA9ICFzdGF0
ZXMuY29udGFpbnNBbnkoeyBDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkNoZWNrZWQsIENvbnRyb2xT
dGF0ZXM6OlN0YXRlczo6SW5kZXRlcm1pbmF0ZSB9KTsKKyAgICBhdXRvIGdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IHJlY3QubWluWE1pbllDb3JuZXIo
KSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpIH0pOworICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
eyAwLjBmLCBEaXNwbGF5UDM8ZmxvYXQ+IHsgMCwgMCwgMCwgaXNFbXB0eSA/IDAuMDVmIDogMC4x
MjVmIH19KTsKKyAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMS4wZiwgRGlzcGxheVAzPGZs
b2F0PiB7IDAsIDAsIDAsIDAgfX0pOworICAgIHJldHVybiBncmFkaWVudDsKK30KKwogQ29sb3Ig
UmVuZGVyVGhlbWVJT1M6OmNoZWNrYm94UmFkaW9JbmRpY2F0b3JDb2xvcihPcHRpb25TZXQ8Q29u
dHJvbFN0YXRlczo6U3RhdGVzPiBzdGF0ZXMsIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25z
PiBzdHlsZUNvbG9yT3B0aW9ucykKIHsKICAgICBpZiAoIXN0YXRlcy5jb250YWlucyhDb250cm9s
U3RhdGVzOjpTdGF0ZXM6OkVuYWJsZWQpKQpAQCAtMjA4NiwxMSArMjExMiw1MSBAQCBDb2xvciBS
ZW5kZXJUaGVtZUlPUzo6Y2hlY2tib3hSYWRpb0luZGljYXRvckNvbG9yKE9wdGlvblNldDxDb250
cm9sU3RhdGVzOjpTdGF0ZQogICAgIHJldHVybiBlbmFibGVkSW5kaWNhdG9yQ29sb3I7CiB9CiAK
K3ZvaWQgUmVuZGVyVGhlbWVJT1M6OnBhaW50Q2hlY2tib3hSYWRpb0lubmVyU2hhZG93KGNvbnN0
IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVj
dCwgT3B0aW9uU2V0PENvbnRyb2xTdGF0ZXM6OlN0YXRlcz4gc3RhdGVzKQoreworICAgIGF1dG8m
IGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlciB7IGNvbnRleHQgfTsKKworICAgIFBhdGggcGF0aDsKKyAgICBwYXRo
LmFkZFJvdW5kZWRSZWN0KHJvdW5kZWRSZWN0KTsKKworICAgIGNvbnRleHQuc2V0RmlsbEdyYWRp
ZW50KCpjaGVja2JveFJhZGlvQmFja2dyb3VuZEdyYWRpZW50KHJvdW5kZWRSZWN0LnJlY3QoKSwg
c3RhdGVzKSk7CisgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKKworICAgIGNvbnN0IEZsb2F0
U2l6ZSBpbm5lclNoYWRvd09mZnNldCB7IDIsIDIgfTsKKyAgICBjb25zdGV4cHIgYXV0byBpbm5l
clNoYWRvd0JsdXIgPSAzLjBmOworCisgICAgYm9vbCBpc0VtcHR5ID0gIXN0YXRlcy5jb250YWlu
c0FueSh7IENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6Q2hlY2tlZCwgQ29udHJvbFN0YXRlczo6U3Rh
dGVzOjpJbmRldGVybWluYXRlIH0pOworICAgIGF1dG8gZmlyc3RTaGFkb3dDb2xvciA9IERpc3Bs
YXlQMzxmbG9hdD4geyAwLCAwLCAwLCBpc0VtcHR5ID8gMC4wNWYgOiAwLjFmIH07CisgICAgY29u
dGV4dC5zZXRTaGFkb3coaW5uZXJTaGFkb3dPZmZzZXQsIGlubmVyU2hhZG93Qmx1ciwgZmlyc3RT
aGFkb3dDb2xvcik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKKwor
ICAgIFBhdGggaW5uZXJTaGFkb3dQYXRoOworICAgIEZsb2F0UmVjdCBpbm5lclNoYWRvd1JlY3Qg
PSByb3VuZGVkUmVjdC5yZWN0KCk7CisgICAgaW5uZXJTaGFkb3dSZWN0LmluZmxhdGUoc3RkOjpt
YXg8ZmxvYXQ+KGlubmVyU2hhZG93T2Zmc2V0LndpZHRoKCksIGlubmVyU2hhZG93T2Zmc2V0Lmhl
aWdodCgpKSArIGlubmVyU2hhZG93Qmx1cik7CisgICAgaW5uZXJTaGFkb3dQYXRoLmFkZFJlY3Qo
aW5uZXJTaGFkb3dSZWN0KTsKKworICAgIEZsb2F0Um91bmRlZFJlY3QgaW5uZXJTaGFkb3dIb2xl
UmVjdCA9IHJvdW5kZWRSZWN0OworICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBmcm9tIHRoZSBz
cGVjOyBidXQgd2l0aG91dCBpdCB3ZSBnZXQgYW50aWFsaWFzaW5nIGZyaW5nZSBmcm9tIHRoZSBm
aWxsOyB3ZSBuZWVkIGEgYmV0dGVyIHNvbHV0aW9uLgorICAgIGlubmVyU2hhZG93SG9sZVJlY3Qu
aW5mbGF0ZSgwLjUpOworICAgIGlubmVyU2hhZG93UGF0aC5hZGRSb3VuZGVkUmVjdChpbm5lclNo
YWRvd0hvbGVSZWN0KTsKKworICAgIGNvbnRleHQuc2V0RmlsbFJ1bGUoV2luZFJ1bGU6OkV2ZW5P
ZGQpOworICAgIGNvbnRleHQuZmlsbFBhdGgoaW5uZXJTaGFkb3dQYXRoKTsKKworICAgIGNvbnN0
ZXhwciBhdXRvIHNlY29uZFNoYWRvd0NvbG9yID0gRGlzcGxheVAzPGZsb2F0PiB7IDEsIDEsIDEs
IDAuNWYgfTsKKyAgICBjb250ZXh0LnNldFNoYWRvdyhGbG9hdFNpemUgeyAwLCAwIH0sIDEsIHNl
Y29uZFNoYWRvd0NvbG9yKTsKKworICAgIGNvbnRleHQuZmlsbFBhdGgoaW5uZXJTaGFkb3dQYXRo
KTsKK30KKwogYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRDaGVja2JveChjb25zdCBSZW5kZXJP
YmplY3QmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKIHsKICAgICBpZiAoIWJveC5zZXR0aW5ncygpLmlPU0Zvcm1Db250cm9sUmVmcmVzaEVu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBib29sIHVzZUFsdGVybmF0ZURl
c2lnbiA9IGJveC5zZXR0aW5ncygpLmFsdGVybmF0ZUZvcm1Db250cm9sRGVzaWduRW5hYmxlZCgp
OworCiAgICAgYXV0byYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyIHsgY29udGV4dCB9OwogCkBAIC0yMTAyLDcg
KzIxNjgsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94KGNvbnN0IFJlbmRl
ck9iamVjdCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaQogICAgIGF1dG8gY29udHJvbFN0YXRl
cyA9IGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoYm94KTsKICAgICBhdXRvIHN0eWxl
Q29sb3JPcHRpb25zID0gYm94LnN0eWxlQ29sb3JPcHRpb25zKCk7CiAKLSAgICBhdXRvIGJhY2tn
cm91bmRDb2xvciA9IGNoZWNrYm94UmFkaW9CYWNrZ3JvdW5kQ29sb3IoY29udHJvbFN0YXRlcywg
c3R5bGVDb2xvck9wdGlvbnMpOworICAgIGF1dG8gYmFja2dyb3VuZENvbG9yID0gY2hlY2tib3hS
YWRpb0JhY2tncm91bmRDb2xvcih1c2VBbHRlcm5hdGVEZXNpZ24sIGNvbnRyb2xTdGF0ZXMsIHN0
eWxlQ29sb3JPcHRpb25zKTsKIAogICAgIGJvb2wgY2hlY2tlZCA9IGNvbnRyb2xTdGF0ZXMuY29u
dGFpbnMoQ29udHJvbFN0YXRlczo6U3RhdGVzOjpDaGVja2VkKTsKICAgICBib29sIGluZGV0ZXJt
aW5hdGUgPSBjb250cm9sU3RhdGVzLmNvbnRhaW5zKENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6SW5k
ZXRlcm1pbmF0ZSk7CkBAIC0yMTExLDE3ICsyMTc3LDI5IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6
OnBhaW50Q2hlY2tib3goY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYg
cGFpCiAgICAgaWYgKGVtcHR5KSB7CiAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgcGF0aC5h
ZGRSb3VuZGVkUmVjdChjaGVja2JveFJlY3QpOwotICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNv
bG9yKGNoZWNrYm94UmFkaW9Cb3JkZXJDb2xvcihjb250cm9sU3RhdGVzLCBzdHlsZUNvbG9yT3B0
aW9ucykpOwotICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhjaGVja2JveFJhZGlv
Qm9yZGVyV2lkdGggKiAyKTsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0
cm9rZSk7CisgICAgICAgIGlmICghdXNlQWx0ZXJuYXRlRGVzaWduKSB7CisgICAgICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKGNoZWNrYm94UmFkaW9Cb3JkZXJDb2xvcihjb250cm9sU3Rh
dGVzLCBzdHlsZUNvbG9yT3B0aW9ucykpOworICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VU
aGlja25lc3MoY2hlY2tib3hSYWRpb0JvcmRlcldpZHRoICogMik7CisgICAgICAgICAgICBjb250
ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICAgICAgfQorICAgICAgICAgICAg
CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGJhY2tncm91bmRDb2xvcik7CiAgICAgICAg
IGNvbnRleHQuY2xpcFBhdGgocGF0aCk7CiAgICAgICAgIGNvbnRleHQuZHJhd1BhdGgocGF0aCk7
CisKKyAgICAgICAgaWYgKHVzZUFsdGVybmF0ZURlc2lnbikKKyAgICAgICAgICAgIHBhaW50Q2hl
Y2tib3hSYWRpb0lubmVyU2hhZG93KHBhaW50SW5mbywgY2hlY2tib3hSZWN0LCBjb250cm9sU3Rh
dGVzKTsKKwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29udGV4dC5maWxs
Um91bmRlZFJlY3QoY2hlY2tib3hSZWN0LCBiYWNrZ3JvdW5kQ29sb3IpOwogCisgICAgaWYgKHVz
ZUFsdGVybmF0ZURlc2lnbikgeworICAgICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVjdChjaGVj
a2JveFJlY3QpOworICAgICAgICBwYWludENoZWNrYm94UmFkaW9Jbm5lclNoYWRvdyhwYWludElu
Zm8sIGNoZWNrYm94UmVjdCwgY29udHJvbFN0YXRlcyk7CisgICAgfQorCiAgICAgUGF0aCBwYXRo
OwogICAgIGlmIChjaGVja2VkKSB7CiAgICAgICAgIHBhdGgubW92ZVRvKHsgMjguMTc0ZiwgNjgu
NjUyZiB9KTsKQEAgLTIxNjUsMTggKzIyNDMsMjcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFp
bnRSYWRpbyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEkK
ICAgICBpZiAoIWJveC5zZXR0aW5ncygpLmlPU0Zvcm1Db250cm9sUmVmcmVzaEVuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBib29sIHVzZUFsdGVybmF0ZURlc2lnbiA9IGJv
eC5zZXR0aW5ncygpLmFsdGVybmF0ZUZvcm1Db250cm9sRGVzaWduRW5hYmxlZCgpOworCiAgICAg
YXV0byYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogCiAgICAgYXV0byBjb250cm9sU3RhdGVz
ID0gZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihib3gpOwogICAgIGF1dG8gc3R5bGVD
b2xvck9wdGlvbnMgPSBib3guc3R5bGVDb2xvck9wdGlvbnMoKTsKIAotICAgIGF1dG8gYmFja2dy
b3VuZENvbG9yID0gY2hlY2tib3hSYWRpb0JhY2tncm91bmRDb2xvcihjb250cm9sU3RhdGVzLCBz
dHlsZUNvbG9yT3B0aW9ucyk7CisgICAgYXV0byBiYWNrZ3JvdW5kQ29sb3IgPSBjaGVja2JveFJh
ZGlvQmFja2dyb3VuZENvbG9yKHVzZUFsdGVybmF0ZURlc2lnbiwgY29udHJvbFN0YXRlcywgc3R5
bGVDb2xvck9wdGlvbnMpOworCisgICAgRmxvYXRSb3VuZGVkUmVjdCByYWRpb1JlY3QgeyByZWN0
LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaShyZWN0LndpZHRoKCkgLyAyLCByZWN0LmhlaWdodCgp
IC8gMikgfTsKIAogICAgIGlmIChjb250cm9sU3RhdGVzLmNvbnRhaW5zKENvbnRyb2xTdGF0ZXM6
OlN0YXRlczo6Q2hlY2tlZCkpIHsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoYmFja2dy
b3VuZENvbG9yKTsKICAgICAgICAgY29udGV4dC5maWxsRWxsaXBzZShyZWN0KTsKIAorICAgICAg
ICBpZiAodXNlQWx0ZXJuYXRlRGVzaWduKSB7CisgICAgICAgICAgICBjb250ZXh0LmNsaXBSb3Vu
ZGVkUmVjdChyYWRpb1JlY3QpOworICAgICAgICAgICAgcGFpbnRDaGVja2JveFJhZGlvSW5uZXJT
aGFkb3cocGFpbnRJbmZvLCByYWRpb1JlY3QsIGNvbnRyb2xTdGF0ZXMpOworICAgICAgICB9CisK
ICAgICAgICAgLy8gVGhlIGlubmVyIGNpcmNsZSBpcyA2IC8gMTQgdGhlIHNpemUgb2YgdGhlIHN1
cnJvdW5kaW5nIGNpcmNsZSwKICAgICAgICAgLy8gbGVhdmluZyA4IC8gMTQgYXJvdW5kIGl0LiAo
OCAvIDE0KSAvIDIgPSAyIC8gNy4KICAgICAgICAgY29uc3RleHByIGZsb2F0IGlubmVySW52ZXJz
ZVJhdGlvID0gMiAvIDcuMGY7CkBAIC0yMTkwLDEyICsyMjc3LDE3IEBAIGJvb2wgUmVuZGVyVGhl
bWVJT1M6OnBhaW50UmFkaW8oY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJCiAgICAgfSBlbHNlIHsKICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICBwYXRo
LmFkZEVsbGlwc2UocmVjdCk7Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoY2hlY2ti
b3hSYWRpb0JvcmRlckNvbG9yKGNvbnRyb2xTdGF0ZXMsIHN0eWxlQ29sb3JPcHRpb25zKSk7Ci0g
ICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGNoZWNrYm94UmFkaW9Cb3JkZXJXaWR0
aCAqIDIpOwotICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAg
ICAgICAgaWYgKCF1c2VBbHRlcm5hdGVEZXNpZ24pIHsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0
U3Ryb2tlQ29sb3IoY2hlY2tib3hSYWRpb0JvcmRlckNvbG9yKGNvbnRyb2xTdGF0ZXMsIHN0eWxl
Q29sb3JPcHRpb25zKSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhj
aGVja2JveFJhZGlvQm9yZGVyV2lkdGggKiAyKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ry
b2tlU3R5bGUoU29saWRTdHJva2UpOworICAgICAgICB9CiAgICAgICAgIGNvbnRleHQuc2V0Rmls
bENvbG9yKGJhY2tncm91bmRDb2xvcik7CiAgICAgICAgIGNvbnRleHQuY2xpcFBhdGgocGF0aCk7
CiAgICAgICAgIGNvbnRleHQuZHJhd1BhdGgocGF0aCk7CisKKyAgICAgICAgaWYgKHVzZUFsdGVy
bmF0ZURlc2lnbikKKyAgICAgICAgICAgIHBhaW50Q2hlY2tib3hSYWRpb0lubmVyU2hhZG93KHBh
aW50SW5mbywgcmFkaW9SZWN0LCBjb250cm9sU3RhdGVzKTsKICAgICB9CiAKICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0Rl
ZmF1bHRWYWx1ZXMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZh
dWx0VmFsdWVzLmNwcAppbmRleCBmNmZhMTJlODYxZmY0ZjBhZTYxNDViNzM3YWE5NjI1ODA2NTc5
MTk1Li44NWEzN2Y4NjZlZTc3ZGIxZDNkMTgzN2U0NDM2MzMxZjE1NTQ0N2I1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5jcHAK
QEAgLTYyLDYgKzYyLDEzIEBAIGJvb2wgZGVmYXVsdENTU09NVmlld1Njcm9sbGluZ0FQSUVuYWJs
ZWQoKQogICAgIHJldHVybiAhcmVzdWx0OwogfQogCisjaWYgIVVTRShBUFBMRV9JTlRFUk5BTF9T
REspCitib29sIGRlZmF1bHRBbHRlcm5hdGVGb3JtQ29udHJvbERlc2lnbkVuYWJsZWQoKQorewor
ICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1B
QykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVs
dFZhbHVlcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFs
dWVzLmgKaW5kZXggZTRlMjExMjhiODlhMzU5Yzc5ZGQxMmUxNDFlN2QzM2E4ZDg5MzNiNC4uMTkx
M2Y2YWNkYjM0NjIwYjg5ODZmMzI3OWQ2OGVjZDRlZTRkMWY0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKQEAgLTQwLDYgKzQw
LDcgQEAgYm9vbCBpc0ZlYXR1cmVGbGFnRW5hYmxlZChjb25zdCBjaGFyKiwgYm9vbCBkZWZhdWx0
VmFsdWUgPSBmYWxzZSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgZGVmYXVsdFBh
c3NpdmVUb3VjaExpc3RlbmVyc0FzRGVmYXVsdE9uRG9jdW1lbnQoKTsKIGJvb2wgZGVmYXVsdENT
U09NVmlld1Njcm9sbGluZ0FQSUVuYWJsZWQoKTsKK2Jvb2wgZGVmYXVsdEFsdGVybmF0ZUZvcm1D
b250cm9sRGVzaWduRW5hYmxlZCgpOwogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiBib29s
IGRlZmF1bHRUZXh0QXV0b3NpemluZ1VzZXNJZGVtcG90ZW50TW9kZSgpOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440115</attachid>
            <date>2021-10-04 15:45:54 -0700</date>
            <delta_ts>2021-10-04 16:24:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231160-20211004154553.patch</filename>
            <type>text/plain</type>
            <size>15954</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDYxMWNlMGMyZTVmOGVjOTYzZWE4MmI3
MTE1N2Y3ZjVlZjE0MzgyMmUuLjI5MjMzNzQ3YzQzMjEwNGFlMDY2MjExOThmMTA5ZmMxN2Y3Njdh
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTAtMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIGFsdGVybmF0ZSBzdHlsZSBmb3Ig
Zm9ybSBjb250cm9scywgYW5kIGltcGxlbWVudCBpdCBmb3IgY2hlY2tib3hlcyBhbmQgcmFkaW8g
YnV0dG9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMxMTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjEtMDktMjkg
IEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtDU1MgQ2FzY2Fk
ZSBMYXllcnNdIEVuYWJsZSBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI5YzI3NmMzNmY2OTJi
MWI1ZTc0OWU0ZmRmMzhjYmYwMzMwMWZmNy4uMTczODZjNGIwZmMzMDYyNjQwNTljMzcyNWU2NzUw
M2Q5ZjBkNDc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTEwLTA0ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBhbHRl
cm5hdGUgc3R5bGUgZm9yIGZvcm0gY29udHJvbHMsIGFuZCBpbXBsZW1lbnQgaXQgZm9yIGNoZWNr
Ym94ZXMgYW5kIHJhZGlvIGJ1dHRvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMTE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVJT1M6OmNoZWNrYm94UmFkaW9CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICBBZGQgYWx0ZXJu
YXRlIGJhY2tncm91bmQgY29sb3JzLiBDdXJyZW50bHkgdGhlc2UgYXJlIG5vdCBzcGVjaWZpZWQg
YXMKKyAgICAgICAgc2VtYW50aWMgY29sb3JzLCBzbyB3ZSBpbmxpbmUgdGhlIHZhbHVlcy4KKwor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OmNoZWNrYm94UmFkaW9CYWNrZ3JvdW5k
R3JhZGllbnQpOgorICAgICAgICBBZGQgYSBncmFkaWVudCBmaWxsIGZvciBjaGVja2JveCBhbmQg
cmFkaW8gYnV0dG9uIGJhY2tncm91bmRzLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRDaGVja2JveFJhZGlvSW5uZXJTaGFkb3cpOgorICAgICAgICBBZGQgdHdvIGlu
bmVyIHNoYWRvd3MgKHJlYWxseSwgYSBzaGFkb3cgYW5kIGEgZ2xvdykgdG8gdGhlIGNoZWNrYm94
IGFuZCByYWRpbyBidXR0b24uCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpw
YWludENoZWNrYm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFJh
ZGlvKToKKyAgICAgICAgRHJvcCB0aGUgYm9yZGVyIGFuZCB1c2UgYSBmaWxsZWQgYmFja2dyb3Vu
ZCBhbmQgaW5uZXIgc2hhZG93cyBpbnN0ZWFkLAorICAgICAgICB3aGVuIHRoZSBzZXR0aW5nIGlz
IGVuYWJsZWQuCisKIDIwMjEtMDktMjkgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBjYW52YXMuY2FwdHVyZVN0cmVhbSgpIGZhaWxz
IGZvciBXZWJHTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAxY2JmYTQ2YmNlYmViODUyZmI4M2IxZDc5ZDJkODY3YWFi
OGZiZTU3Li5iNzBjNTMwYTBkNjY2NDIzZDJiMThkNmNhMjM5MzkzNGZmMTk5ZTY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEwLTA0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBhbHRlcm5hdGUgc3R5bGUgZm9yIGZvcm0g
Y29udHJvbHMsIGFuZCBpbXBsZW1lbnQgaXQgZm9yIGNoZWNrYm94ZXMgYW5kIHJhZGlvIGJ1dHRv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTE2
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hh
cmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmRl
ZmF1bHRBbHRlcm5hdGVGb3JtQ29udHJvbERlc2lnbkVuYWJsZWQpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaDoKKwogMjAyMS0wOS0yOSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZC10aW1lIG9wdGltaXphdGlv
bjogZm9yd2FyZCBkZWNsYXJlIG1vcmUgdGhpbmdzIGluIE1lZGlhUGxheWVyLmggYW5kIEhUTUxN
ZWRpYUVsZW1lbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2Vz
L1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2Vi
UHJlZmVyZW5jZXMueWFtbAppbmRleCAyY2VhYzQyMDBhZmRkMTE5ODZhODg0OTkyNTIyODhkYzVh
ZDYzMDAzLi4yNTE4ZmQ1MTJhMGIyODFkMTllNWFlZGExMzVjMTc3Y2M3ZWYzYjU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbAor
KysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbApA
QCAtMjMyLDYgKzIzMiwxNyBAQCBBbGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjazoK
ICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogdHJ1ZQogCitBbHRlcm5hdGVGb3JtQ29udHJv
bERlc2lnbkVuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgY29uZGl0aW9uOiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICBkZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVs
dDogZmFsc2UKKyAgICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiBXZWJLaXQ6OmRlZmF1bHRBbHRl
cm5hdGVGb3JtQ29udHJvbERlc2lnbkVuYWJsZWQoKQorICAgIFdlYkNvcmU6CisgICAgICBkZWZh
dWx0OiBmYWxzZQorCiBBbHdheXNVc2VBY2NlbGVyYXRlZE92ZXJmbG93U2Nyb2xsOgogICB0eXBl
OiBib29sCiAgIGRlZmF1bHRWYWx1ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLmgKaW5kZXggNDgyOWNmOWM5NjZkYTBiN2YxZTI4YTM1ZWI5MzljMzQ3MzA4M2JiNS4u
NGIxMDFiMzhiNWM4ZTE0ZDBhNjc3ZjUwNzQzZDFkNjdiNDUxMzE0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKQEAgLTExNiwxMiArMTE2LDE1IEBAIHByaXZh
dGU6CiAKICNpZiBFTkFCTEUoSU9TX0ZPUk1fQ09OVFJPTF9SRUZSRVNIKQogICAgIENvbG9yIGNo
ZWNrYm94UmFkaW9Cb3JkZXJDb2xvcihPcHRpb25TZXQ8Q29udHJvbFN0YXRlczo6U3RhdGVzPiwg
T3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+KTsKLSAgICBDb2xvciBjaGVja2JveFJhZGlv
QmFja2dyb3VuZENvbG9yKE9wdGlvblNldDxDb250cm9sU3RhdGVzOjpTdGF0ZXM+LCBPcHRpb25T
ZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4pOworICAgIENvbG9yIGNoZWNrYm94UmFkaW9CYWNrZ3Jv
dW5kQ29sb3IoYm9vbCB1c2VBbHRlcm5hdGVEZXNpZ24sIE9wdGlvblNldDxDb250cm9sU3RhdGVz
OjpTdGF0ZXM+LCBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4pOworICAgIFJlZlB0cjxH
cmFkaWVudD4gY2hlY2tib3hSYWRpb0JhY2tncm91bmRHcmFkaWVudChjb25zdCBGbG9hdFJlY3Qm
LCBPcHRpb25TZXQ8Q29udHJvbFN0YXRlczo6U3RhdGVzPik7CiAgICAgQ29sb3IgY2hlY2tib3hS
YWRpb0luZGljYXRvckNvbG9yKE9wdGlvblNldDxDb250cm9sU3RhdGVzOjpTdGF0ZXM+LCBPcHRp
b25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4pOwogCiAgICAgYm9vbCBwYWludENoZWNrYm94KGNv
bnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92
ZXJyaWRlOwogICAgIGJvb2wgcGFpbnRSYWRpbyhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAorICAgIHZvaWQgcGFpbnRD
aGVja2JveFJhZGlvSW5uZXJTaGFkb3coY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYsIE9wdGlvblNldDxDb250cm9sU3RhdGVzOjpTdGF0ZXM+KTsKKwogICAgIFNlY29u
ZHMgYW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJQcm9n
cmVzcyYpIGNvbnN0IGZpbmFsOwogCiAgICAgYm9vbCBzdXBwb3J0c01ldGVyKENvbnRyb2xQYXJ0
LCBjb25zdCBIVE1MTWV0ZXJFbGVtZW50JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNDgyNzUxN2Q0ZWZkNDExYjg0ODNhZDk3
ZDBmZmY2YjFiMmZjNmVmZi4uYzRmN2JjYzZlNjdkYWZlMmI0MzdlYTkxYTBmMGIyMTJkOTgzMDQy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMjA2
MCwyMCArMjA2MCw0NiBAQCBDb2xvciBSZW5kZXJUaGVtZUlPUzo6Y2hlY2tib3hSYWRpb0JvcmRl
ckNvbG9yKE9wdGlvblNldDxDb250cm9sU3RhdGVzOjpTdGF0ZXM+CiAgICAgcmV0dXJuIGRlZmF1
bHRCb3JkZXJDb2xvcjsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVJT1M6OmNoZWNrYm94UmFkaW9C
YWNrZ3JvdW5kQ29sb3IoT3B0aW9uU2V0PENvbnRyb2xTdGF0ZXM6OlN0YXRlcz4gc3RhdGVzLCBP
cHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMpCitDb2xvciBS
ZW5kZXJUaGVtZUlPUzo6Y2hlY2tib3hSYWRpb0JhY2tncm91bmRDb2xvcihib29sIHVzZUFsdGVy
bmF0ZURlc2lnbiwgT3B0aW9uU2V0PENvbnRyb2xTdGF0ZXM6OlN0YXRlcz4gc3RhdGVzLCBPcHRp
b25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMpCiB7Ci0gICAgYm9v
bCBlbXB0eSA9ICFzdGF0ZXMuY29udGFpbnNBbnkoeyBDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkNo
ZWNrZWQsIENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6SW5kZXRlcm1pbmF0ZSB9KTsKKyAgICBib29s
IGlzRW1wdHkgPSAhc3RhdGVzLmNvbnRhaW5zQW55KHsgQ29udHJvbFN0YXRlczo6U3RhdGVzOjpD
aGVja2VkLCBDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkluZGV0ZXJtaW5hdGUgfSk7CisgICAgYm9v
bCBpc0VuYWJsZWQgPSBzdGF0ZXMuY29udGFpbnMoQ29udHJvbFN0YXRlczo6U3RhdGVzOjpFbmFi
bGVkKTsKKyAgICBib29sIGlzUHJlc3NlZCA9IHN0YXRlcy5jb250YWlucyhDb250cm9sU3RhdGVz
OjpTdGF0ZXM6OlByZXNzZWQpOwogCi0gICAgaWYgKCFzdGF0ZXMuY29udGFpbnMoQ29udHJvbFN0
YXRlczo6U3RhdGVzOjpFbmFibGVkKSkKLSAgICAgICAgcmV0dXJuIHN5c3RlbUNvbG9yKGVtcHR5
ID8gQ1NTVmFsdWVXZWJraXRDb250cm9sQmFja2dyb3VuZCA6IENTU1ZhbHVlQXBwbGVTeXN0ZW1P
cGFxdWVUZXJ0aWFyeUZpbGwsIHN0eWxlQ29sb3JPcHRpb25zKTsKKyAgICBpZiAodXNlQWx0ZXJu
YXRlRGVzaWduKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGUgZGlzYWJsZWQgc3RhdGUgZm9yIHRo
ZSBhbHRlcm5hdGUgYXBwZWFyYW5jZSBpcyBjdXJyZW50bHkgdW5zcGVjaWZpZWQ7IHRoaXMgaXMg
anVzdCBhIGd1ZXNzLgorICAgICAgICBpZiAoIWlzRW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVy
biBzeXN0ZW1Db2xvcihpc0VtcHR5ID8gQ1NTVmFsdWVXZWJraXRDb250cm9sQmFja2dyb3VuZCA6
IENTU1ZhbHVlQXBwbGVTeXN0ZW1PcGFxdWVUZXJ0aWFyeUZpbGwsIHN0eWxlQ29sb3JPcHRpb25z
KTsKIAotICAgIGF1dG8gZW5hYmxlZEJhY2tncm91bmRDb2xvciA9IHN5c3RlbUNvbG9yKGVtcHR5
ID8gQ1NTVmFsdWVXZWJraXRDb250cm9sQmFja2dyb3VuZCA6IENTU1ZhbHVlQXBwbGVTeXN0ZW1C
bHVlLCBzdHlsZUNvbG9yT3B0aW9ucyk7Ci0gICAgaWYgKHN0YXRlcy5jb250YWlucyhDb250cm9s
U3RhdGVzOjpTdGF0ZXM6OlByZXNzZWQpKQorICAgICAgICBpZiAoaXNQcmVzc2VkKQorICAgICAg
ICAgICAgcmV0dXJuIGlzRW1wdHkgPyBDb2xvcihEaXNwbGF5UDM8ZmxvYXQ+IHsgMC43NzMsIDAu
NzczLCAwLjc3MyB9KSA6IENvbG9yKERpc3BsYXlQMzxmbG9hdD4geyAwLjA2NywgMC4zOCwgMC45
NTMgfSk7CisKKyAgICAgICAgcmV0dXJuIGlzRW1wdHkgPyBDb2xvcihEaXNwbGF5UDM8ZmxvYXQ+
IHsgMC44MzUsIDAuODM1LCAwLjgzNSB9KSA6IENvbG9yKERpc3BsYXlQMzxmbG9hdD4geyAwLjIw
MywgMC40NywgMC45NjQgfSk7CisgICAgfQorCisgICAgaWYgKCFpc0VuYWJsZWQpCisgICAgICAg
IHJldHVybiBzeXN0ZW1Db2xvcihpc0VtcHR5ID8gQ1NTVmFsdWVXZWJraXRDb250cm9sQmFja2dy
b3VuZCA6IENTU1ZhbHVlQXBwbGVTeXN0ZW1PcGFxdWVUZXJ0aWFyeUZpbGwsIHN0eWxlQ29sb3JP
cHRpb25zKTsKKworICAgIGF1dG8gZW5hYmxlZEJhY2tncm91bmRDb2xvciA9IHN5c3RlbUNvbG9y
KGlzRW1wdHkgPyBDU1NWYWx1ZVdlYmtpdENvbnRyb2xCYWNrZ3JvdW5kIDogQ1NTVmFsdWVBcHBs
ZVN5c3RlbUJsdWUsIHN0eWxlQ29sb3JPcHRpb25zKTsKKyAgICBpZiAoaXNQcmVzc2VkKQogICAg
ICAgICByZXR1cm4gZW5hYmxlZEJhY2tncm91bmRDb2xvci5jb2xvcldpdGhBbHBoYU11bHRpcGxp
ZWRCeShwcmVzc2VkU3RhdGVPcGFjaXR5KTsKIAogICAgIHJldHVybiBlbmFibGVkQmFja2dyb3Vu
ZENvbG9yOwogfQogCitSZWZQdHI8R3JhZGllbnQ+IFJlbmRlclRoZW1lSU9TOjpjaGVja2JveFJh
ZGlvQmFja2dyb3VuZEdyYWRpZW50KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgT3B0aW9uU2V0PENv
bnRyb2xTdGF0ZXM6OlN0YXRlcz4gc3RhdGVzKQoreworICAgIGJvb2wgaXNQcmVzc2VkID0gc3Rh
dGVzLmNvbnRhaW5zKENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6UHJlc3NlZCk7CisgICAgaWYgKGlz
UHJlc3NlZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBib29sIGlzRW1wdHkgPSAh
c3RhdGVzLmNvbnRhaW5zQW55KHsgQ29udHJvbFN0YXRlczo6U3RhdGVzOjpDaGVja2VkLCBDb250
cm9sU3RhdGVzOjpTdGF0ZXM6OkluZGV0ZXJtaW5hdGUgfSk7CisgICAgYXV0byBncmFkaWVudCA9
IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyByZWN0Lm1pblhNaW5ZQ29y
bmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSB9KTsKKyAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4wZiwgRGlzcGxheVAzPGZsb2F0PiB7IDAsIDAsIDAsIGlzRW1wdHkgPyAwLjA1ZiA6
IDAuMTI1ZiB9fSk7CisgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEuMGYsIERpc3BsYXlQ
MzxmbG9hdD4geyAwLCAwLCAwLCAwIH19KTsKKyAgICByZXR1cm4gZ3JhZGllbnQ7Cit9CisKIENv
bG9yIFJlbmRlclRoZW1lSU9TOjpjaGVja2JveFJhZGlvSW5kaWNhdG9yQ29sb3IoT3B0aW9uU2V0
PENvbnRyb2xTdGF0ZXM6OlN0YXRlcz4gc3RhdGVzLCBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0
aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMpCiB7CiAgICAgaWYgKCFzdGF0ZXMuY29udGFpbnMoQ29u
dHJvbFN0YXRlczo6U3RhdGVzOjpFbmFibGVkKSkKQEAgLTIwODYsMTEgKzIxMTIsNTMgQEAgQ29s
b3IgUmVuZGVyVGhlbWVJT1M6OmNoZWNrYm94UmFkaW9JbmRpY2F0b3JDb2xvcihPcHRpb25TZXQ8
Q29udHJvbFN0YXRlczo6U3RhdGUKICAgICByZXR1cm4gZW5hYmxlZEluZGljYXRvckNvbG9yOwog
fQogCit2b2lkIFJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94UmFkaW9Jbm5lclNoYWRvdyhj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRl
ZFJlY3QsIE9wdGlvblNldDxDb250cm9sU3RhdGVzOjpTdGF0ZXM+IHN0YXRlcykKK3sKKyAgICBh
dXRvJiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIgeyBjb250ZXh0IH07CisKKyAgICBQYXRoIHBhdGg7CisgICAg
cGF0aC5hZGRSb3VuZGVkUmVjdChyb3VuZGVkUmVjdCk7CisKKyAgICBpZiAoYXV0byBncmFkaWVu
dCA9IGNoZWNrYm94UmFkaW9CYWNrZ3JvdW5kR3JhZGllbnQocm91bmRlZFJlY3QucmVjdCgpLCBz
dGF0ZXMpKSB7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KCpncmFkaWVudCk7Cisg
ICAgICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCk7CisgICAgfQorCisgICAgY29uc3QgRmxvYXRT
aXplIGlubmVyU2hhZG93T2Zmc2V0IHsgMiwgMiB9OworICAgIGNvbnN0ZXhwciBhdXRvIGlubmVy
U2hhZG93Qmx1ciA9IDMuMGY7CisKKyAgICBib29sIGlzRW1wdHkgPSAhc3RhdGVzLmNvbnRhaW5z
QW55KHsgQ29udHJvbFN0YXRlczo6U3RhdGVzOjpDaGVja2VkLCBDb250cm9sU3RhdGVzOjpTdGF0
ZXM6OkluZGV0ZXJtaW5hdGUgfSk7CisgICAgYXV0byBmaXJzdFNoYWRvd0NvbG9yID0gRGlzcGxh
eVAzPGZsb2F0PiB7IDAsIDAsIDAsIGlzRW1wdHkgPyAwLjA1ZiA6IDAuMWYgfTsKKyAgICBjb250
ZXh0LnNldFNoYWRvdyhpbm5lclNoYWRvd09mZnNldCwgaW5uZXJTaGFkb3dCbHVyLCBmaXJzdFNo
YWRvd0NvbG9yKTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOworCisg
ICAgUGF0aCBpbm5lclNoYWRvd1BhdGg7CisgICAgRmxvYXRSZWN0IGlubmVyU2hhZG93UmVjdCA9
IHJvdW5kZWRSZWN0LnJlY3QoKTsKKyAgICBpbm5lclNoYWRvd1JlY3QuaW5mbGF0ZShzdGQ6Om1h
eDxmbG9hdD4oaW5uZXJTaGFkb3dPZmZzZXQud2lkdGgoKSwgaW5uZXJTaGFkb3dPZmZzZXQuaGVp
Z2h0KCkpICsgaW5uZXJTaGFkb3dCbHVyKTsKKyAgICBpbm5lclNoYWRvd1BhdGguYWRkUmVjdChp
bm5lclNoYWRvd1JlY3QpOworCisgICAgRmxvYXRSb3VuZGVkUmVjdCBpbm5lclNoYWRvd0hvbGVS
ZWN0ID0gcm91bmRlZFJlY3Q7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGZyb20gdGhlIHNw
ZWM7IGJ1dCB3aXRob3V0IGl0IHdlIGdldCBhbnRpYWxpYXNpbmcgZnJpbmdlIGZyb20gdGhlIGZp
bGw7IHdlIG5lZWQgYSBiZXR0ZXIgc29sdXRpb24uCisgICAgaW5uZXJTaGFkb3dIb2xlUmVjdC5p
bmZsYXRlKDAuNSk7CisgICAgaW5uZXJTaGFkb3dQYXRoLmFkZFJvdW5kZWRSZWN0KGlubmVyU2hh
ZG93SG9sZVJlY3QpOworCisgICAgY29udGV4dC5zZXRGaWxsUnVsZShXaW5kUnVsZTo6RXZlbk9k
ZCk7CisgICAgY29udGV4dC5maWxsUGF0aChpbm5lclNoYWRvd1BhdGgpOworCisgICAgY29uc3Rl
eHByIGF1dG8gc2Vjb25kU2hhZG93Q29sb3IgPSBEaXNwbGF5UDM8ZmxvYXQ+IHsgMSwgMSwgMSwg
MC41ZiB9OworICAgIGNvbnRleHQuc2V0U2hhZG93KEZsb2F0U2l6ZSB7IDAsIDAgfSwgMSwgc2Vj
b25kU2hhZG93Q29sb3IpOworCisgICAgY29udGV4dC5maWxsUGF0aChpbm5lclNoYWRvd1BhdGgp
OworfQorCiBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94KGNvbnN0IFJlbmRlck9i
amVjdCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogewogICAgIGlmICghYm94LnNldHRpbmdzKCkuaU9TRm9ybUNvbnRyb2xSZWZyZXNoRW5h
YmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIGJvb2wgdXNlQWx0ZXJuYXRlRGVz
aWduID0gYm94LnNldHRpbmdzKCkuYWx0ZXJuYXRlRm9ybUNvbnRyb2xEZXNpZ25FbmFibGVkKCk7
CisKICAgICBhdXRvJiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIgeyBjb250ZXh0IH07CiAKQEAgLTIxMDIsNyAr
MjE3MCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50Q2hlY2tib3goY29uc3QgUmVuZGVy
T2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpCiAgICAgYXV0byBjb250cm9sU3RhdGVz
ID0gZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihib3gpOwogICAgIGF1dG8gc3R5bGVD
b2xvck9wdGlvbnMgPSBib3guc3R5bGVDb2xvck9wdGlvbnMoKTsKIAotICAgIGF1dG8gYmFja2dy
b3VuZENvbG9yID0gY2hlY2tib3hSYWRpb0JhY2tncm91bmRDb2xvcihjb250cm9sU3RhdGVzLCBz
dHlsZUNvbG9yT3B0aW9ucyk7CisgICAgYXV0byBiYWNrZ3JvdW5kQ29sb3IgPSBjaGVja2JveFJh
ZGlvQmFja2dyb3VuZENvbG9yKHVzZUFsdGVybmF0ZURlc2lnbiwgY29udHJvbFN0YXRlcywgc3R5
bGVDb2xvck9wdGlvbnMpOwogCiAgICAgYm9vbCBjaGVja2VkID0gY29udHJvbFN0YXRlcy5jb250
YWlucyhDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkNoZWNrZWQpOwogICAgIGJvb2wgaW5kZXRlcm1p
bmF0ZSA9IGNvbnRyb2xTdGF0ZXMuY29udGFpbnMoQ29udHJvbFN0YXRlczo6U3RhdGVzOjpJbmRl
dGVybWluYXRlKTsKQEAgLTIxMTEsMTcgKzIxNzksMjkgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6
cGFpbnRDaGVja2JveChjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBw
YWkKICAgICBpZiAoZW1wdHkpIHsKICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICBwYXRoLmFk
ZFJvdW5kZWRSZWN0KGNoZWNrYm94UmVjdCk7Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29s
b3IoY2hlY2tib3hSYWRpb0JvcmRlckNvbG9yKGNvbnRyb2xTdGF0ZXMsIHN0eWxlQ29sb3JPcHRp
b25zKSk7Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGNoZWNrYm94UmFkaW9C
b3JkZXJXaWR0aCAqIDIpOwotICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ry
b2tlKTsKKyAgICAgICAgaWYgKCF1c2VBbHRlcm5hdGVEZXNpZ24pIHsKKyAgICAgICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlQ29sb3IoY2hlY2tib3hSYWRpb0JvcmRlckNvbG9yKGNvbnRyb2xTdGF0
ZXMsIHN0eWxlQ29sb3JPcHRpb25zKSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRo
aWNrbmVzcyhjaGVja2JveFJhZGlvQm9yZGVyV2lkdGggKiAyKTsKKyAgICAgICAgICAgIGNvbnRl
eHQuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOworICAgICAgICB9CisgICAgICAgICAgICAK
ICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENvbG9yKTsKICAgICAgICAg
Y29udGV4dC5jbGlwUGF0aChwYXRoKTsKICAgICAgICAgY29udGV4dC5kcmF3UGF0aChwYXRoKTsK
KworICAgICAgICBpZiAodXNlQWx0ZXJuYXRlRGVzaWduKQorICAgICAgICAgICAgcGFpbnRDaGVj
a2JveFJhZGlvSW5uZXJTaGFkb3cocGFpbnRJbmZvLCBjaGVja2JveFJlY3QsIGNvbnRyb2xTdGF0
ZXMpOworCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBjb250ZXh0LmZpbGxS
b3VuZGVkUmVjdChjaGVja2JveFJlY3QsIGJhY2tncm91bmRDb2xvcik7CiAKKyAgICBpZiAodXNl
QWx0ZXJuYXRlRGVzaWduKSB7CisgICAgICAgIGNvbnRleHQuY2xpcFJvdW5kZWRSZWN0KGNoZWNr
Ym94UmVjdCk7CisgICAgICAgIHBhaW50Q2hlY2tib3hSYWRpb0lubmVyU2hhZG93KHBhaW50SW5m
bywgY2hlY2tib3hSZWN0LCBjb250cm9sU3RhdGVzKTsKKyAgICB9CisKICAgICBQYXRoIHBhdGg7
CiAgICAgaWYgKGNoZWNrZWQpIHsKICAgICAgICAgcGF0aC5tb3ZlVG8oeyAyOC4xNzRmLCA2OC42
NTJmIH0pOwpAQCAtMjE2NSwxOCArMjI0NSwyNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWlu
dFJhZGlvKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SQog
ICAgIGlmICghYm94LnNldHRpbmdzKCkuaU9TRm9ybUNvbnRyb2xSZWZyZXNoRW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIGJvb2wgdXNlQWx0ZXJuYXRlRGVzaWduID0gYm94
LnNldHRpbmdzKCkuYWx0ZXJuYXRlRm9ybUNvbnRyb2xEZXNpZ25FbmFibGVkKCk7CisKICAgICBh
dXRvJiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKICAgICBhdXRvIGNvbnRyb2xTdGF0ZXMg
PSBleHRyYWN0Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGJveCk7CiAgICAgYXV0byBzdHlsZUNv
bG9yT3B0aW9ucyA9IGJveC5zdHlsZUNvbG9yT3B0aW9ucygpOwogCi0gICAgYXV0byBiYWNrZ3Jv
dW5kQ29sb3IgPSBjaGVja2JveFJhZGlvQmFja2dyb3VuZENvbG9yKGNvbnRyb2xTdGF0ZXMsIHN0
eWxlQ29sb3JPcHRpb25zKTsKKyAgICBhdXRvIGJhY2tncm91bmRDb2xvciA9IGNoZWNrYm94UmFk
aW9CYWNrZ3JvdW5kQ29sb3IodXNlQWx0ZXJuYXRlRGVzaWduLCBjb250cm9sU3RhdGVzLCBzdHls
ZUNvbG9yT3B0aW9ucyk7CisKKyAgICBGbG9hdFJvdW5kZWRSZWN0IHJhZGlvUmVjdCB7IHJlY3Qs
IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpKHJlY3Qud2lkdGgoKSAvIDIsIHJlY3QuaGVpZ2h0KCkg
LyAyKSB9OwogCiAgICAgaWYgKGNvbnRyb2xTdGF0ZXMuY29udGFpbnMoQ29udHJvbFN0YXRlczo6
U3RhdGVzOjpDaGVja2VkKSkgewogICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihiYWNrZ3Jv
dW5kQ29sb3IpOwogICAgICAgICBjb250ZXh0LmZpbGxFbGxpcHNlKHJlY3QpOwogCisgICAgICAg
IGlmICh1c2VBbHRlcm5hdGVEZXNpZ24pIHsKKyAgICAgICAgICAgIGNvbnRleHQuY2xpcFJvdW5k
ZWRSZWN0KHJhZGlvUmVjdCk7CisgICAgICAgICAgICBwYWludENoZWNrYm94UmFkaW9Jbm5lclNo
YWRvdyhwYWludEluZm8sIHJhZGlvUmVjdCwgY29udHJvbFN0YXRlcyk7CisgICAgICAgIH0KKwog
ICAgICAgICAvLyBUaGUgaW5uZXIgY2lyY2xlIGlzIDYgLyAxNCB0aGUgc2l6ZSBvZiB0aGUgc3Vy
cm91bmRpbmcgY2lyY2xlLAogICAgICAgICAvLyBsZWF2aW5nIDggLyAxNCBhcm91bmQgaXQuICg4
IC8gMTQpIC8gMiA9IDIgLyA3LgogICAgICAgICBjb25zdGV4cHIgZmxvYXQgaW5uZXJJbnZlcnNl
UmF0aW8gPSAyIC8gNy4wZjsKQEAgLTIxOTAsMTIgKzIyNzksMTcgQEAgYm9vbCBSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRSYWRpbyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJbmZv
JiBwYWludEkKICAgICB9IGVsc2UgewogICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgIHBhdGgu
YWRkRWxsaXBzZShyZWN0KTsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihjaGVja2Jv
eFJhZGlvQm9yZGVyQ29sb3IoY29udHJvbFN0YXRlcywgc3R5bGVDb2xvck9wdGlvbnMpKTsKLSAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoY2hlY2tib3hSYWRpb0JvcmRlcldpZHRo
ICogMik7Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOworICAg
ICAgICBpZiAoIXVzZUFsdGVybmF0ZURlc2lnbikgeworICAgICAgICAgICAgY29udGV4dC5zZXRT
dHJva2VDb2xvcihjaGVja2JveFJhZGlvQm9yZGVyQ29sb3IoY29udHJvbFN0YXRlcywgc3R5bGVD
b2xvck9wdGlvbnMpKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGNo
ZWNrYm94UmFkaW9Cb3JkZXJXaWR0aCAqIDIpOworICAgICAgICAgICAgY29udGV4dC5zZXRTdHJv
a2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgICAgIH0KICAgICAgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoYmFja2dyb3VuZENvbG9yKTsKICAgICAgICAgY29udGV4dC5jbGlwUGF0aChwYXRoKTsK
ICAgICAgICAgY29udGV4dC5kcmF3UGF0aChwYXRoKTsKKworICAgICAgICBpZiAodXNlQWx0ZXJu
YXRlRGVzaWduKQorICAgICAgICAgICAgcGFpbnRDaGVja2JveFJhZGlvSW5uZXJTaGFkb3cocGFp
bnRJbmZvLCByYWRpb1JlY3QsIGNvbnRyb2xTdGF0ZXMpOwogICAgIH0KIAogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVm
YXVsdFZhbHVlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1
bHRWYWx1ZXMuY3BwCmluZGV4IGY2ZmExMmU4NjFmZjRmMGFlNjE0NWI3MzdhYTk2MjU4MDY1Nzkx
OTUuLjg1YTM3Zjg2NmVlNzdkYjFkM2QxODM3ZTQ0MzYzMzFmMTU1NDQ3YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNwcApA
QCAtNjIsNiArNjIsMTMgQEAgYm9vbCBkZWZhdWx0Q1NTT01WaWV3U2Nyb2xsaW5nQVBJRW5hYmxl
ZCgpCiAgICAgcmV0dXJuICFyZXN1bHQ7CiB9CiAKKyNpZiAhVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKK2Jvb2wgZGVmYXVsdEFsdGVybmF0ZUZvcm1Db250cm9sRGVzaWduRW5hYmxlZCgpCit7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0
VmFsdWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1
ZXMuaAppbmRleCBlNGUyMTEyOGI4OWEzNTljNzlkZDEyZTE0MWU3ZDMzYThkODkzM2I0Li4xOTEz
ZjZhY2RiMzQ2MjBiODk4NmYzMjc5ZDY4ZWNkNGVlNGQxZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaApAQCAtNDAsNiArNDAs
NyBAQCBib29sIGlzRmVhdHVyZUZsYWdFbmFibGVkKGNvbnN0IGNoYXIqLCBib29sIGRlZmF1bHRW
YWx1ZSA9IGZhbHNlKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogYm9vbCBkZWZhdWx0UGFz
c2l2ZVRvdWNoTGlzdGVuZXJzQXNEZWZhdWx0T25Eb2N1bWVudCgpOwogYm9vbCBkZWZhdWx0Q1NT
T01WaWV3U2Nyb2xsaW5nQVBJRW5hYmxlZCgpOworYm9vbCBkZWZhdWx0QWx0ZXJuYXRlRm9ybUNv
bnRyb2xEZXNpZ25FbmFibGVkKCk7CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKIGJvb2wg
ZGVmYXVsdFRleHRBdXRvc2l6aW5nVXNlc0lkZW1wb3RlbnRNb2RlKCk7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440119</attachid>
            <date>2021-10-04 16:24:18 -0700</date>
            <delta_ts>2021-10-04 17:09:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231160-20211004162417.patch</filename>
            <type>text/plain</type>
            <size>15962</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDYxMWNlMGMyZTVmOGVjOTYzZWE4MmI3
MTE1N2Y3ZjVlZjE0MzgyMmUuLjI5MjMzNzQ3YzQzMjEwNGFlMDY2MjExOThmMTA5ZmMxN2Y3Njdh
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTAtMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIGFsdGVybmF0ZSBzdHlsZSBmb3Ig
Zm9ybSBjb250cm9scywgYW5kIGltcGxlbWVudCBpdCBmb3IgY2hlY2tib3hlcyBhbmQgcmFkaW8g
YnV0dG9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMxMTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjEtMDktMjkg
IEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtDU1MgQ2FzY2Fk
ZSBMYXllcnNdIEVuYWJsZSBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI5YzI3NmMzNmY2OTJi
MWI1ZTc0OWU0ZmRmMzhjYmYwMzMwMWZmNy4uMTczODZjNGIwZmMzMDYyNjQwNTljMzcyNWU2NzUw
M2Q5ZjBkNDc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTEwLTA0ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBhbHRl
cm5hdGUgc3R5bGUgZm9yIGZvcm0gY29udHJvbHMsIGFuZCBpbXBsZW1lbnQgaXQgZm9yIGNoZWNr
Ym94ZXMgYW5kIHJhZGlvIGJ1dHRvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMTE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVJT1M6OmNoZWNrYm94UmFkaW9CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICBBZGQgYWx0ZXJu
YXRlIGJhY2tncm91bmQgY29sb3JzLiBDdXJyZW50bHkgdGhlc2UgYXJlIG5vdCBzcGVjaWZpZWQg
YXMKKyAgICAgICAgc2VtYW50aWMgY29sb3JzLCBzbyB3ZSBpbmxpbmUgdGhlIHZhbHVlcy4KKwor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OmNoZWNrYm94UmFkaW9CYWNrZ3JvdW5k
R3JhZGllbnQpOgorICAgICAgICBBZGQgYSBncmFkaWVudCBmaWxsIGZvciBjaGVja2JveCBhbmQg
cmFkaW8gYnV0dG9uIGJhY2tncm91bmRzLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRDaGVja2JveFJhZGlvSW5uZXJTaGFkb3cpOgorICAgICAgICBBZGQgdHdvIGlu
bmVyIHNoYWRvd3MgKHJlYWxseSwgYSBzaGFkb3cgYW5kIGEgZ2xvdykgdG8gdGhlIGNoZWNrYm94
IGFuZCByYWRpbyBidXR0b24uCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpw
YWludENoZWNrYm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFJh
ZGlvKToKKyAgICAgICAgRHJvcCB0aGUgYm9yZGVyIGFuZCB1c2UgYSBmaWxsZWQgYmFja2dyb3Vu
ZCBhbmQgaW5uZXIgc2hhZG93cyBpbnN0ZWFkLAorICAgICAgICB3aGVuIHRoZSBzZXR0aW5nIGlz
IGVuYWJsZWQuCisKIDIwMjEtMDktMjkgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBjYW52YXMuY2FwdHVyZVN0cmVhbSgpIGZhaWxz
IGZvciBXZWJHTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAxY2JmYTQ2YmNlYmViODUyZmI4M2IxZDc5ZDJkODY3YWFi
OGZiZTU3Li5iNzBjNTMwYTBkNjY2NDIzZDJiMThkNmNhMjM5MzkzNGZmMTk5ZTY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEwLTA0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBhbHRlcm5hdGUgc3R5bGUgZm9yIGZvcm0g
Y29udHJvbHMsIGFuZCBpbXBsZW1lbnQgaXQgZm9yIGNoZWNrYm94ZXMgYW5kIHJhZGlvIGJ1dHRv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTE2
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hh
cmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmRl
ZmF1bHRBbHRlcm5hdGVGb3JtQ29udHJvbERlc2lnbkVuYWJsZWQpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaDoKKwogMjAyMS0wOS0yOSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZC10aW1lIG9wdGltaXphdGlv
bjogZm9yd2FyZCBkZWNsYXJlIG1vcmUgdGhpbmdzIGluIE1lZGlhUGxheWVyLmggYW5kIEhUTUxN
ZWRpYUVsZW1lbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2Vz
L1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2Vi
UHJlZmVyZW5jZXMueWFtbAppbmRleCAyY2VhYzQyMDBhZmRkMTE5ODZhODg0OTkyNTIyODhkYzVh
ZDYzMDAzLi4yNTE4ZmQ1MTJhMGIyODFkMTllNWFlZGExMzVjMTc3Y2M3ZWYzYjU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbAor
KysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbApA
QCAtMjMyLDYgKzIzMiwxNyBAQCBBbGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjazoK
ICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogdHJ1ZQogCitBbHRlcm5hdGVGb3JtQ29udHJv
bERlc2lnbkVuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgY29uZGl0aW9uOiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICBkZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVs
dDogZmFsc2UKKyAgICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiBXZWJLaXQ6OmRlZmF1bHRBbHRl
cm5hdGVGb3JtQ29udHJvbERlc2lnbkVuYWJsZWQoKQorICAgIFdlYkNvcmU6CisgICAgICBkZWZh
dWx0OiBmYWxzZQorCiBBbHdheXNVc2VBY2NlbGVyYXRlZE92ZXJmbG93U2Nyb2xsOgogICB0eXBl
OiBib29sCiAgIGRlZmF1bHRWYWx1ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLmgKaW5kZXggNDgyOWNmOWM5NjZkYTBiN2YxZTI4YTM1ZWI5MzljMzQ3MzA4M2JiNS4u
NGIxMDFiMzhiNWM4ZTE0ZDBhNjc3ZjUwNzQzZDFkNjdiNDUxMzE0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKQEAgLTExNiwxMiArMTE2LDE1IEBAIHByaXZh
dGU6CiAKICNpZiBFTkFCTEUoSU9TX0ZPUk1fQ09OVFJPTF9SRUZSRVNIKQogICAgIENvbG9yIGNo
ZWNrYm94UmFkaW9Cb3JkZXJDb2xvcihPcHRpb25TZXQ8Q29udHJvbFN0YXRlczo6U3RhdGVzPiwg
T3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+KTsKLSAgICBDb2xvciBjaGVja2JveFJhZGlv
QmFja2dyb3VuZENvbG9yKE9wdGlvblNldDxDb250cm9sU3RhdGVzOjpTdGF0ZXM+LCBPcHRpb25T
ZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4pOworICAgIENvbG9yIGNoZWNrYm94UmFkaW9CYWNrZ3Jv
dW5kQ29sb3IoYm9vbCB1c2VBbHRlcm5hdGVEZXNpZ24sIE9wdGlvblNldDxDb250cm9sU3RhdGVz
OjpTdGF0ZXM+LCBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4pOworICAgIFJlZlB0cjxH
cmFkaWVudD4gY2hlY2tib3hSYWRpb0JhY2tncm91bmRHcmFkaWVudChjb25zdCBGbG9hdFJlY3Qm
LCBPcHRpb25TZXQ8Q29udHJvbFN0YXRlczo6U3RhdGVzPik7CiAgICAgQ29sb3IgY2hlY2tib3hS
YWRpb0luZGljYXRvckNvbG9yKE9wdGlvblNldDxDb250cm9sU3RhdGVzOjpTdGF0ZXM+LCBPcHRp
b25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4pOwogCiAgICAgYm9vbCBwYWludENoZWNrYm94KGNv
bnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92
ZXJyaWRlOwogICAgIGJvb2wgcGFpbnRSYWRpbyhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAorICAgIHZvaWQgcGFpbnRD
aGVja2JveFJhZGlvSW5uZXJTaGFkb3coY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYsIE9wdGlvblNldDxDb250cm9sU3RhdGVzOjpTdGF0ZXM+KTsKKwogICAgIFNlY29u
ZHMgYW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJQcm9n
cmVzcyYpIGNvbnN0IGZpbmFsOwogCiAgICAgYm9vbCBzdXBwb3J0c01ldGVyKENvbnRyb2xQYXJ0
LCBjb25zdCBIVE1MTWV0ZXJFbGVtZW50JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNDgyNzUxN2Q0ZWZkNDExYjg0ODNhZDk3
ZDBmZmY2YjFiMmZjNmVmZi4uNTZjN2E5YmQ5OTY2NmYyYTdjOTQwYTQ5ZTA2NDVkNDMxODY5ZGMz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMjA2
MCwyMCArMjA2MCw0NiBAQCBDb2xvciBSZW5kZXJUaGVtZUlPUzo6Y2hlY2tib3hSYWRpb0JvcmRl
ckNvbG9yKE9wdGlvblNldDxDb250cm9sU3RhdGVzOjpTdGF0ZXM+CiAgICAgcmV0dXJuIGRlZmF1
bHRCb3JkZXJDb2xvcjsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVJT1M6OmNoZWNrYm94UmFkaW9C
YWNrZ3JvdW5kQ29sb3IoT3B0aW9uU2V0PENvbnRyb2xTdGF0ZXM6OlN0YXRlcz4gc3RhdGVzLCBP
cHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMpCitDb2xvciBS
ZW5kZXJUaGVtZUlPUzo6Y2hlY2tib3hSYWRpb0JhY2tncm91bmRDb2xvcihib29sIHVzZUFsdGVy
bmF0ZURlc2lnbiwgT3B0aW9uU2V0PENvbnRyb2xTdGF0ZXM6OlN0YXRlcz4gc3RhdGVzLCBPcHRp
b25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMpCiB7Ci0gICAgYm9v
bCBlbXB0eSA9ICFzdGF0ZXMuY29udGFpbnNBbnkoeyBDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkNo
ZWNrZWQsIENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6SW5kZXRlcm1pbmF0ZSB9KTsKKyAgICBib29s
IGlzRW1wdHkgPSAhc3RhdGVzLmNvbnRhaW5zQW55KHsgQ29udHJvbFN0YXRlczo6U3RhdGVzOjpD
aGVja2VkLCBDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkluZGV0ZXJtaW5hdGUgfSk7CisgICAgYm9v
bCBpc0VuYWJsZWQgPSBzdGF0ZXMuY29udGFpbnMoQ29udHJvbFN0YXRlczo6U3RhdGVzOjpFbmFi
bGVkKTsKKyAgICBib29sIGlzUHJlc3NlZCA9IHN0YXRlcy5jb250YWlucyhDb250cm9sU3RhdGVz
OjpTdGF0ZXM6OlByZXNzZWQpOwogCi0gICAgaWYgKCFzdGF0ZXMuY29udGFpbnMoQ29udHJvbFN0
YXRlczo6U3RhdGVzOjpFbmFibGVkKSkKLSAgICAgICAgcmV0dXJuIHN5c3RlbUNvbG9yKGVtcHR5
ID8gQ1NTVmFsdWVXZWJraXRDb250cm9sQmFja2dyb3VuZCA6IENTU1ZhbHVlQXBwbGVTeXN0ZW1P
cGFxdWVUZXJ0aWFyeUZpbGwsIHN0eWxlQ29sb3JPcHRpb25zKTsKKyAgICBpZiAodXNlQWx0ZXJu
YXRlRGVzaWduKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGUgZGlzYWJsZWQgc3RhdGUgZm9yIHRo
ZSBhbHRlcm5hdGUgYXBwZWFyYW5jZSBpcyBjdXJyZW50bHkgdW5zcGVjaWZpZWQ7IHRoaXMgaXMg
anVzdCBhIGd1ZXNzLgorICAgICAgICBpZiAoIWlzRW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVy
biBzeXN0ZW1Db2xvcihpc0VtcHR5ID8gQ1NTVmFsdWVXZWJraXRDb250cm9sQmFja2dyb3VuZCA6
IENTU1ZhbHVlQXBwbGVTeXN0ZW1PcGFxdWVUZXJ0aWFyeUZpbGwsIHN0eWxlQ29sb3JPcHRpb25z
KTsKIAotICAgIGF1dG8gZW5hYmxlZEJhY2tncm91bmRDb2xvciA9IHN5c3RlbUNvbG9yKGVtcHR5
ID8gQ1NTVmFsdWVXZWJraXRDb250cm9sQmFja2dyb3VuZCA6IENTU1ZhbHVlQXBwbGVTeXN0ZW1C
bHVlLCBzdHlsZUNvbG9yT3B0aW9ucyk7Ci0gICAgaWYgKHN0YXRlcy5jb250YWlucyhDb250cm9s
U3RhdGVzOjpTdGF0ZXM6OlByZXNzZWQpKQorICAgICAgICBpZiAoaXNQcmVzc2VkKQorICAgICAg
ICAgICAgcmV0dXJuIGlzRW1wdHkgPyBDb2xvcihEaXNwbGF5UDM8ZmxvYXQ+IHsgMC43NzMsIDAu
NzczLCAwLjc3MyB9KSA6IENvbG9yKERpc3BsYXlQMzxmbG9hdD4geyAwLjA2NywgMC4zOCwgMC45
NTMgfSk7CisKKyAgICAgICAgcmV0dXJuIGlzRW1wdHkgPyBDb2xvcihEaXNwbGF5UDM8ZmxvYXQ+
IHsgMC44MzUsIDAuODM1LCAwLjgzNSB9KSA6IENvbG9yKERpc3BsYXlQMzxmbG9hdD4geyAwLjIw
MywgMC40NywgMC45NjQgfSk7CisgICAgfQorCisgICAgaWYgKCFpc0VuYWJsZWQpCisgICAgICAg
IHJldHVybiBzeXN0ZW1Db2xvcihpc0VtcHR5ID8gQ1NTVmFsdWVXZWJraXRDb250cm9sQmFja2dy
b3VuZCA6IENTU1ZhbHVlQXBwbGVTeXN0ZW1PcGFxdWVUZXJ0aWFyeUZpbGwsIHN0eWxlQ29sb3JP
cHRpb25zKTsKKworICAgIGF1dG8gZW5hYmxlZEJhY2tncm91bmRDb2xvciA9IHN5c3RlbUNvbG9y
KGlzRW1wdHkgPyBDU1NWYWx1ZVdlYmtpdENvbnRyb2xCYWNrZ3JvdW5kIDogQ1NTVmFsdWVBcHBs
ZVN5c3RlbUJsdWUsIHN0eWxlQ29sb3JPcHRpb25zKTsKKyAgICBpZiAoaXNQcmVzc2VkKQogICAg
ICAgICByZXR1cm4gZW5hYmxlZEJhY2tncm91bmRDb2xvci5jb2xvcldpdGhBbHBoYU11bHRpcGxp
ZWRCeShwcmVzc2VkU3RhdGVPcGFjaXR5KTsKIAogICAgIHJldHVybiBlbmFibGVkQmFja2dyb3Vu
ZENvbG9yOwogfQogCitSZWZQdHI8R3JhZGllbnQ+IFJlbmRlclRoZW1lSU9TOjpjaGVja2JveFJh
ZGlvQmFja2dyb3VuZEdyYWRpZW50KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgT3B0aW9uU2V0PENv
bnRyb2xTdGF0ZXM6OlN0YXRlcz4gc3RhdGVzKQoreworICAgIGJvb2wgaXNQcmVzc2VkID0gc3Rh
dGVzLmNvbnRhaW5zKENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6UHJlc3NlZCk7CisgICAgaWYgKGlz
UHJlc3NlZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBib29sIGlzRW1wdHkgPSAh
c3RhdGVzLmNvbnRhaW5zQW55KHsgQ29udHJvbFN0YXRlczo6U3RhdGVzOjpDaGVja2VkLCBDb250
cm9sU3RhdGVzOjpTdGF0ZXM6OkluZGV0ZXJtaW5hdGUgfSk7CisgICAgYXV0byBncmFkaWVudCA9
IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyByZWN0Lm1pblhNaW5ZQ29y
bmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSB9KTsKKyAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4wZiwgRGlzcGxheVAzPGZsb2F0PiB7IDAsIDAsIDAsIGlzRW1wdHkgPyAwLjA1ZiA6
IDAuMTI1ZiB9fSk7CisgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEuMGYsIERpc3BsYXlQ
MzxmbG9hdD4geyAwLCAwLCAwLCAwIH19KTsKKyAgICByZXR1cm4gZ3JhZGllbnQ7Cit9CisKIENv
bG9yIFJlbmRlclRoZW1lSU9TOjpjaGVja2JveFJhZGlvSW5kaWNhdG9yQ29sb3IoT3B0aW9uU2V0
PENvbnRyb2xTdGF0ZXM6OlN0YXRlcz4gc3RhdGVzLCBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0
aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMpCiB7CiAgICAgaWYgKCFzdGF0ZXMuY29udGFpbnMoQ29u
dHJvbFN0YXRlczo6U3RhdGVzOjpFbmFibGVkKSkKQEAgLTIwODYsMTEgKzIxMTIsNTMgQEAgQ29s
b3IgUmVuZGVyVGhlbWVJT1M6OmNoZWNrYm94UmFkaW9JbmRpY2F0b3JDb2xvcihPcHRpb25TZXQ8
Q29udHJvbFN0YXRlczo6U3RhdGUKICAgICByZXR1cm4gZW5hYmxlZEluZGljYXRvckNvbG9yOwog
fQogCit2b2lkIFJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94UmFkaW9Jbm5lclNoYWRvdyhj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRl
ZFJlY3QsIE9wdGlvblNldDxDb250cm9sU3RhdGVzOjpTdGF0ZXM+IHN0YXRlcykKK3sKKyAgICBh
dXRvJiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIgeyBjb250ZXh0IH07CisKKyAgICBpZiAoYXV0byBncmFkaWVu
dCA9IGNoZWNrYm94UmFkaW9CYWNrZ3JvdW5kR3JhZGllbnQocm91bmRlZFJlY3QucmVjdCgpLCBz
dGF0ZXMpKSB7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KCpncmFkaWVudCk7CisK
KyAgICAgICAgUGF0aCBwYXRoOworICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJvdW5kZWRS
ZWN0KTsKKyAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKKyAgICB9CisKKyAgICBjb25z
dCBGbG9hdFNpemUgaW5uZXJTaGFkb3dPZmZzZXQgeyAyLCAyIH07CisgICAgY29uc3RleHByIGF1
dG8gaW5uZXJTaGFkb3dCbHVyID0gMy4wZjsKKworICAgIGJvb2wgaXNFbXB0eSA9ICFzdGF0ZXMu
Y29udGFpbnNBbnkoeyBDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkNoZWNrZWQsIENvbnRyb2xTdGF0
ZXM6OlN0YXRlczo6SW5kZXRlcm1pbmF0ZSB9KTsKKyAgICBhdXRvIGZpcnN0U2hhZG93Q29sb3Ig
PSBEaXNwbGF5UDM8ZmxvYXQ+IHsgMCwgMCwgMCwgaXNFbXB0eSA/IDAuMDVmIDogMC4xZiB9Owor
ICAgIGNvbnRleHQuc2V0U2hhZG93KGlubmVyU2hhZG93T2Zmc2V0LCBpbm5lclNoYWRvd0JsdXIs
IGZpcnN0U2hhZG93Q29sb3IpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFj
ayk7CisKKyAgICBQYXRoIGlubmVyU2hhZG93UGF0aDsKKyAgICBGbG9hdFJlY3QgaW5uZXJTaGFk
b3dSZWN0ID0gcm91bmRlZFJlY3QucmVjdCgpOworICAgIGlubmVyU2hhZG93UmVjdC5pbmZsYXRl
KHN0ZDo6bWF4PGZsb2F0Pihpbm5lclNoYWRvd09mZnNldC53aWR0aCgpLCBpbm5lclNoYWRvd09m
ZnNldC5oZWlnaHQoKSkgKyBpbm5lclNoYWRvd0JsdXIpOworICAgIGlubmVyU2hhZG93UGF0aC5h
ZGRSZWN0KGlubmVyU2hhZG93UmVjdCk7CisKKyAgICBGbG9hdFJvdW5kZWRSZWN0IGlubmVyU2hh
ZG93SG9sZVJlY3QgPSByb3VuZGVkUmVjdDsKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgZnJv
bSB0aGUgc3BlYzsgYnV0IHdpdGhvdXQgaXQgd2UgZ2V0IGFudGlhbGlhc2luZyBmcmluZ2UgZnJv
bSB0aGUgZmlsbDsgd2UgbmVlZCBhIGJldHRlciBzb2x1dGlvbi4KKyAgICBpbm5lclNoYWRvd0hv
bGVSZWN0LmluZmxhdGUoMC41KTsKKyAgICBpbm5lclNoYWRvd1BhdGguYWRkUm91bmRlZFJlY3Qo
aW5uZXJTaGFkb3dIb2xlUmVjdCk7CisKKyAgICBjb250ZXh0LnNldEZpbGxSdWxlKFdpbmRSdWxl
OjpFdmVuT2RkKTsKKyAgICBjb250ZXh0LmZpbGxQYXRoKGlubmVyU2hhZG93UGF0aCk7CisKKyAg
ICBjb25zdGV4cHIgYXV0byBzZWNvbmRTaGFkb3dDb2xvciA9IERpc3BsYXlQMzxmbG9hdD4geyAx
LCAxLCAxLCAwLjVmIH07CisgICAgY29udGV4dC5zZXRTaGFkb3coRmxvYXRTaXplIHsgMCwgMCB9
LCAxLCBzZWNvbmRTaGFkb3dDb2xvcik7CisKKyAgICBjb250ZXh0LmZpbGxQYXRoKGlubmVyU2hh
ZG93UGF0aCk7Cit9CisKIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50Q2hlY2tib3goY29uc3Qg
UmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFib3guc2V0dGluZ3MoKS5pT1NGb3JtQ29udHJvbFJl
ZnJlc2hFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgYm9vbCB1c2VBbHRl
cm5hdGVEZXNpZ24gPSBib3guc2V0dGluZ3MoKS5hbHRlcm5hdGVGb3JtQ29udHJvbERlc2lnbkVu
YWJsZWQoKTsKKwogICAgIGF1dG8mIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlciB7IGNvbnRleHQgfTsKIApAQCAt
MjEwMiw3ICsyMTcwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRDaGVja2JveChjb25z
dCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWkKICAgICBhdXRvIGNvbnRy
b2xTdGF0ZXMgPSBleHRyYWN0Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGJveCk7CiAgICAgYXV0
byBzdHlsZUNvbG9yT3B0aW9ucyA9IGJveC5zdHlsZUNvbG9yT3B0aW9ucygpOwogCi0gICAgYXV0
byBiYWNrZ3JvdW5kQ29sb3IgPSBjaGVja2JveFJhZGlvQmFja2dyb3VuZENvbG9yKGNvbnRyb2xT
dGF0ZXMsIHN0eWxlQ29sb3JPcHRpb25zKTsKKyAgICBhdXRvIGJhY2tncm91bmRDb2xvciA9IGNo
ZWNrYm94UmFkaW9CYWNrZ3JvdW5kQ29sb3IodXNlQWx0ZXJuYXRlRGVzaWduLCBjb250cm9sU3Rh
dGVzLCBzdHlsZUNvbG9yT3B0aW9ucyk7CiAKICAgICBib29sIGNoZWNrZWQgPSBjb250cm9sU3Rh
dGVzLmNvbnRhaW5zKENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6Q2hlY2tlZCk7CiAgICAgYm9vbCBp
bmRldGVybWluYXRlID0gY29udHJvbFN0YXRlcy5jb250YWlucyhDb250cm9sU3RhdGVzOjpTdGF0
ZXM6OkluZGV0ZXJtaW5hdGUpOwpAQCAtMjExMSwxNyArMjE3OSwyOSBAQCBib29sIFJlbmRlclRo
ZW1lSU9TOjpwYWludENoZWNrYm94KGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQYWlu
dEluZm8mIHBhaQogICAgIGlmIChlbXB0eSkgewogICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAg
IHBhdGguYWRkUm91bmRlZFJlY3QoY2hlY2tib3hSZWN0KTsKLSAgICAgICAgY29udGV4dC5zZXRT
dHJva2VDb2xvcihjaGVja2JveFJhZGlvQm9yZGVyQ29sb3IoY29udHJvbFN0YXRlcywgc3R5bGVD
b2xvck9wdGlvbnMpKTsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoY2hlY2ti
b3hSYWRpb0JvcmRlcldpZHRoICogMik7Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUo
U29saWRTdHJva2UpOworICAgICAgICBpZiAoIXVzZUFsdGVybmF0ZURlc2lnbikgeworICAgICAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihjaGVja2JveFJhZGlvQm9yZGVyQ29sb3IoY29u
dHJvbFN0YXRlcywgc3R5bGVDb2xvck9wdGlvbnMpKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0
U3Ryb2tlVGhpY2tuZXNzKGNoZWNrYm94UmFkaW9Cb3JkZXJXaWR0aCAqIDIpOworICAgICAgICAg
ICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgICAgIH0KKyAgICAg
ICAgICAgIAogICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwog
ICAgICAgICBjb250ZXh0LmNsaXBQYXRoKHBhdGgpOwogICAgICAgICBjb250ZXh0LmRyYXdQYXRo
KHBhdGgpOworCisgICAgICAgIGlmICh1c2VBbHRlcm5hdGVEZXNpZ24pCisgICAgICAgICAgICBw
YWludENoZWNrYm94UmFkaW9Jbm5lclNoYWRvdyhwYWludEluZm8sIGNoZWNrYm94UmVjdCwgY29u
dHJvbFN0YXRlcyk7CisKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGNvbnRl
eHQuZmlsbFJvdW5kZWRSZWN0KGNoZWNrYm94UmVjdCwgYmFja2dyb3VuZENvbG9yKTsKIAorICAg
IGlmICh1c2VBbHRlcm5hdGVEZXNpZ24pIHsKKyAgICAgICAgY29udGV4dC5jbGlwUm91bmRlZFJl
Y3QoY2hlY2tib3hSZWN0KTsKKyAgICAgICAgcGFpbnRDaGVja2JveFJhZGlvSW5uZXJTaGFkb3co
cGFpbnRJbmZvLCBjaGVja2JveFJlY3QsIGNvbnRyb2xTdGF0ZXMpOworICAgIH0KKwogICAgIFBh
dGggcGF0aDsKICAgICBpZiAoY2hlY2tlZCkgewogICAgICAgICBwYXRoLm1vdmVUbyh7IDI4LjE3
NGYsIDY4LjY1MmYgfSk7CkBAIC0yMTY1LDE4ICsyMjQ1LDI3IEBAIGJvb2wgUmVuZGVyVGhlbWVJ
T1M6OnBhaW50UmFkaW8oY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJCiAgICAgaWYgKCFib3guc2V0dGluZ3MoKS5pT1NGb3JtQ29udHJvbFJlZnJlc2hFbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgYm9vbCB1c2VBbHRlcm5hdGVEZXNp
Z24gPSBib3guc2V0dGluZ3MoKS5hbHRlcm5hdGVGb3JtQ29udHJvbERlc2lnbkVuYWJsZWQoKTsK
KwogICAgIGF1dG8mIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIAogICAgIGF1dG8gY29udHJv
bFN0YXRlcyA9IGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoYm94KTsKICAgICBhdXRv
IHN0eWxlQ29sb3JPcHRpb25zID0gYm94LnN0eWxlQ29sb3JPcHRpb25zKCk7CiAKLSAgICBhdXRv
IGJhY2tncm91bmRDb2xvciA9IGNoZWNrYm94UmFkaW9CYWNrZ3JvdW5kQ29sb3IoY29udHJvbFN0
YXRlcywgc3R5bGVDb2xvck9wdGlvbnMpOworICAgIGF1dG8gYmFja2dyb3VuZENvbG9yID0gY2hl
Y2tib3hSYWRpb0JhY2tncm91bmRDb2xvcih1c2VBbHRlcm5hdGVEZXNpZ24sIGNvbnRyb2xTdGF0
ZXMsIHN0eWxlQ29sb3JPcHRpb25zKTsKKworICAgIEZsb2F0Um91bmRlZFJlY3QgcmFkaW9SZWN0
IHsgcmVjdCwgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkocmVjdC53aWR0aCgpIC8gMiwgcmVjdC5o
ZWlnaHQoKSAvIDIpIH07CiAKICAgICBpZiAoY29udHJvbFN0YXRlcy5jb250YWlucyhDb250cm9s
U3RhdGVzOjpTdGF0ZXM6OkNoZWNrZWQpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KGJhY2tncm91bmRDb2xvcik7CiAgICAgICAgIGNvbnRleHQuZmlsbEVsbGlwc2UocmVjdCk7CiAK
KyAgICAgICAgaWYgKHVzZUFsdGVybmF0ZURlc2lnbikgeworICAgICAgICAgICAgY29udGV4dC5j
bGlwUm91bmRlZFJlY3QocmFkaW9SZWN0KTsKKyAgICAgICAgICAgIHBhaW50Q2hlY2tib3hSYWRp
b0lubmVyU2hhZG93KHBhaW50SW5mbywgcmFkaW9SZWN0LCBjb250cm9sU3RhdGVzKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIC8vIFRoZSBpbm5lciBjaXJjbGUgaXMgNiAvIDE0IHRoZSBzaXplIG9m
IHRoZSBzdXJyb3VuZGluZyBjaXJjbGUsCiAgICAgICAgIC8vIGxlYXZpbmcgOCAvIDE0IGFyb3Vu
ZCBpdC4gKDggLyAxNCkgLyAyID0gMiAvIDcuCiAgICAgICAgIGNvbnN0ZXhwciBmbG9hdCBpbm5l
ckludmVyc2VSYXRpbyA9IDIgLyA3LjBmOwpAQCAtMjE5MCwxMiArMjI3OSwxNyBAQCBib29sIFJl
bmRlclRoZW1lSU9TOjpwYWludFJhZGlvKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQ
YWludEluZm8mIHBhaW50SQogICAgIH0gZWxzZSB7CiAgICAgICAgIFBhdGggcGF0aDsKICAgICAg
ICAgcGF0aC5hZGRFbGxpcHNlKHJlY3QpOwotICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9y
KGNoZWNrYm94UmFkaW9Cb3JkZXJDb2xvcihjb250cm9sU3RhdGVzLCBzdHlsZUNvbG9yT3B0aW9u
cykpOwotICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhjaGVja2JveFJhZGlvQm9y
ZGVyV2lkdGggKiAyKTsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9r
ZSk7CisgICAgICAgIGlmICghdXNlQWx0ZXJuYXRlRGVzaWduKSB7CisgICAgICAgICAgICBjb250
ZXh0LnNldFN0cm9rZUNvbG9yKGNoZWNrYm94UmFkaW9Cb3JkZXJDb2xvcihjb250cm9sU3RhdGVz
LCBzdHlsZUNvbG9yT3B0aW9ucykpOworICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlj
a25lc3MoY2hlY2tib3hSYWRpb0JvcmRlcldpZHRoICogMik7CisgICAgICAgICAgICBjb250ZXh0
LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICAgICAgfQogICAgICAgICBjb250ZXh0
LnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwogICAgICAgICBjb250ZXh0LmNsaXBQYXRo
KHBhdGgpOwogICAgICAgICBjb250ZXh0LmRyYXdQYXRoKHBhdGgpOworCisgICAgICAgIGlmICh1
c2VBbHRlcm5hdGVEZXNpZ24pCisgICAgICAgICAgICBwYWludENoZWNrYm94UmFkaW9Jbm5lclNo
YWRvdyhwYWludEluZm8sIHJhZGlvUmVjdCwgY29udHJvbFN0YXRlcyk7CiAgICAgfQogCiAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXNEZWZhdWx0VmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzRGVmYXVsdFZhbHVlcy5jcHAKaW5kZXggZjZmYTEyZTg2MWZmNGYwYWU2MTQ1YjczN2FhOTYy
NTgwNjU3OTE5NS4uODVhMzdmODY2ZWU3N2RiMWQzZDE4MzdlNDQzNjMzMWYxNTU0NDdiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1
ZXMuY3BwCkBAIC02Miw2ICs2MiwxMyBAQCBib29sIGRlZmF1bHRDU1NPTVZpZXdTY3JvbGxpbmdB
UElFbmFibGVkKCkKICAgICByZXR1cm4gIXJlc3VsdDsKIH0KIAorI2lmICFVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQorYm9vbCBkZWZhdWx0QWx0ZXJuYXRlRm9ybUNvbnRyb2xEZXNpZ25FbmFibGVk
KCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNl
c0RlZmF1bHRWYWx1ZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVm
YXVsdFZhbHVlcy5oCmluZGV4IGU0ZTIxMTI4Yjg5YTM1OWM3OWRkMTJlMTQxZTdkMzNhOGQ4OTMz
YjQuLjE5MTNmNmFjZGIzNDYyMGI4OTg2ZjMyNzlkNjhlY2Q0ZWU0ZDFmNGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCkBAIC00
MCw2ICs0MCw3IEBAIGJvb2wgaXNGZWF0dXJlRmxhZ0VuYWJsZWQoY29uc3QgY2hhciosIGJvb2wg
ZGVmYXVsdFZhbHVlID0gZmFsc2UpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBib29sIGRl
ZmF1bHRQYXNzaXZlVG91Y2hMaXN0ZW5lcnNBc0RlZmF1bHRPbkRvY3VtZW50KCk7CiBib29sIGRl
ZmF1bHRDU1NPTVZpZXdTY3JvbGxpbmdBUElFbmFibGVkKCk7Citib29sIGRlZmF1bHRBbHRlcm5h
dGVGb3JtQ29udHJvbERlc2lnbkVuYWJsZWQoKTsKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5H
KQogYm9vbCBkZWZhdWx0VGV4dEF1dG9zaXppbmdVc2VzSWRlbXBvdGVudE1vZGUoKTsKICNlbmRp
Zgo=
</data>
<flag name="review"
          id="463955"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>