<?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>233044</bug_id>
          
          <creation_ts>2021-11-12 08:01:01 -0800</creation_ts>
          <short_desc>Add support for injecting and rendering text recognition blocks</short_desc>
          <delta_ts>2021-11-16 08:38:27 -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>Platform</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>kangil.han</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1814441</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-11-12 08:01:01 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814475</commentid>
    <comment_count>1</comment_count>
      <attachid>444073</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-11-12 08:49:50 -0800</bug_when>
    <thetext>Created attachment 444073
Depends on #233010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814911</commentid>
    <comment_count>2</comment_count>
      <attachid>444194</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-11-14 14:21:06 -0800</bug_when>
    <thetext>Created attachment 444194
Minor adjustments / rebase on trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815275</commentid>
    <comment_count>3</comment_count>
      <attachid>444194</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-11-15 16:26:23 -0800</bug_when>
    <thetext>Comment on attachment 444194
Minor adjustments / rebase on trunk

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

r=me

&gt; Source/WebCore/dom/ImageOverlay.cpp:501
&gt; +    for (size_t index = 0; index &lt; result.blocks.size(); ++index) {

Should we add an assertion that `result.blocks.size() == elements.blocks.size()`?

&gt; Source/WebCore/dom/ImageOverlay.cpp:502
&gt; +        auto blockContainer = elements.blocks[index];

Nit: I would move this declaration after the `continue`, since it&apos;s not used otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815487</commentid>
    <comment_count>4</comment_count>
      <attachid>444194</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-11-16 08:07:52 -0800</bug_when>
    <thetext>Comment on attachment 444194
Minor adjustments / rebase on trunk

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

Thanks for the review!

&gt;&gt; Source/WebCore/dom/ImageOverlay.cpp:501
&gt;&gt; +    for (size_t index = 0; index &lt; result.blocks.size(); ++index) {
&gt; 
&gt; Should we add an assertion that `result.blocks.size() == elements.blocks.size()`?

Yes, added!

&gt;&gt; Source/WebCore/dom/ImageOverlay.cpp:502
&gt;&gt; +        auto blockContainer = elements.blocks[index];
&gt; 
&gt; Nit: I would move this declaration after the `continue`, since it&apos;s not used otherwise.

Good catch — moved to after the continue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815489</commentid>
    <comment_count>5</comment_count>
      <attachid>444386</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-11-16 08:09:25 -0800</bug_when>
    <thetext>Created attachment 444386
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815503</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-16 08:37:12 -0800</bug_when>
    <thetext>Committed r285862 (244288@main): &lt;https://commits.webkit.org/244288@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444386.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815505</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-16 08:38:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/85459672&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444073</attachid>
            <date>2021-11-12 08:49:50 -0800</date>
            <delta_ts>2021-11-14 14:21:04 -0800</delta_ts>
            <desc>Depends on #233010</desc>
            <filename>bug-233044-20211112084949.patch</filename>
            <type>text/plain</type>
            <size>13984</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTEzYTY2MzhkMTcxZTBj
MTY2ZWU1OTA1YzY4Yzc1OGE1YmRjYWE4ZC4uMmIxZWI1MWE3NjhjMTMyY2M0MTMwMDQ0MmYzYTIx
MGI1NmY0MDU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIxLTExLTEyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBpbmplY3RpbmcgYW5kIHJlbmRlcmluZyB0ZXh0IHJlY29nbml0aW9uIGJsb2NrcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDQ0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBzdXBwb3J0
IGZvciByZW5kZXJpbmcgdGV4dCByZWNvZ25pdGlvbiBibG9ja3MsIHdoaWNoIGFwcGVhciBhcyBv
cGFxdWUgZGl2IGVsZW1lbnRzIG92ZXIgaW1hZ2VzLiBTZWUgYmVsb3cKKyAgICAgICAgZm9yIG1v
cmUgZGV0YWlsczsgbm8gY2hhbmdlIGluIGJlaGF2aW9yLCBzaW5jZSBub3RoaW5nIGN1cnJlbnRs
eSBnZW5lcmF0ZXMgVGV4dFJlY29nbml0aW9uQmxvY2tEYXRhIHlldC4KKworICAgICAgICAqIGRv
bS9JbWFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5OjppbWFn
ZU92ZXJsYXlEYXRhRGV0ZWN0b3JDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OmltYWdlT3ZlcmxheUJsb2NrQ2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVy
bGF5Ojppc0RhdGFEZXRlY3RvclJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OnVwZGF0ZVN1YnRyZWUpOgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBjcmVhdGluZyB0
ZXh0IHJlY29nbml0aW9uIGJsb2NrIGNvbnRhaW5lcnMgaW4gdGhlIFVBIHNoYWRvdyByb290LCBp
ZiBuZWVkZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheTo6Zml0RWxlbWVudFRv
UXVhZCk6CisKKyAgICAgICAgRmFjdG9yIG91dCBsb2dpYyB0byBhZGp1c3QgdGhlIHdpZHRoLCBo
ZWlnaHQgYW5kIHRyYW5zZm9ybXMgb24gYSBnaXZlbiBlbGVtZW50IHRvIGZpdCB0aGUgZ2l2ZW4g
cXVhZCwgYW5kIHJldHVybgorICAgICAgICByb3RhdGVkIGJvdW5kaW5nIHJlY3QgaW5mbzsgd2Ug
dXNlIHRoaXMgaW4gdGhyZWUgcGxhY2VzIGJlbG93LgorCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZU92ZXJsYXk6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQpOgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBhZGp1c3RpbmcgdGhlIHNpemUgYW5kIHRyYW5zZm9ybXMgb24gZWFjaCBv
ZiB0aGUgYmxvY2sgY29udGFpbmVycyBjcmVhdGVkIGFib3ZlLgorCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZU92ZXJsYXk6OmltYWdlT3ZlcmxheURhdGFEZXRlY3RvckNsYXNzTmFtZSk6IERlbGV0
ZWQuCisKKyAgICAgICAgUmVuYW1lIHRoaXMgdG8ganVzdCBgaW1hZ2VPdmVybGF5RGF0YURldGVj
dG9yQ2xhc3MoKWAgdG8gbWF0Y2ggdGhlIG90aGVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLgor
CisgICAgICAgICogaHRtbC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNzczoKKyAgICAgICAgKGRpdiNp
bWFnZS1vdmVybGF5KToKKyAgICAgICAgKGRpdi5pbWFnZS1vdmVybGF5LWxpbmUpOgorICAgICAg
ICAoZGl2LmltYWdlLW92ZXJsYXktbGluZSwgZGl2LmltYWdlLW92ZXJsYXktYmxvY2spOgorICAg
ICAgICAoZGl2LmltYWdlLW92ZXJsYXktYmxvY2spOgorICAgICAgICAoZGl2LmltYWdlLW92ZXJs
YXktbGluZSwgLmltYWdlLW92ZXJsYXktdGV4dCk6CisKIDIwMjEtMTEtMTEgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBzdWJ0cmVlIHVwZGF0
ZSBsb2dpYyBpbiBJbWFnZU92ZXJsYXk6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQo
KSBpbnRvIGEgc2VwYXJhdGUgaGVscGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SW1hZ2VPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwCmlu
ZGV4IGZlOWZkMTVkNjVjMjlhOTRjZGQxZWE0MDUyMDgwYjFjNjRlMWFlM2QuLjM2ZTUxOTIyM2Mx
YTU4MDBkNzZhMmRjZTI3YTgxZGY1YTA5MzdkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9JbWFnZU92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJs
YXkuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbWFnZU92
ZXJsYXlFbGVtZW50SWRlbnRpZmllcigpCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKLXN0
YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3JDbGFzc05hbWUo
KQorc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGltYWdlT3ZlcmxheURhdGFEZXRlY3RvckNsYXNz
KCkKIHsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IGNsYXNzTmFtZSgiaW1hZ2Utb3ZlcmxheS1kYXRhLWRldGVjdG9yLXJlc3VsdCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gY2xhc3NOYW1lOwpAQCAt
ODMsNiArODMsMTIgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGltYWdlT3ZlcmxheVRleHRD
bGFzcygpCiAgICAgcmV0dXJuIGNsYXNzTmFtZTsKIH0KIAorc3RhdGljIGNvbnN0IEF0b21TdHJp
bmcmIGltYWdlT3ZlcmxheUJsb2NrQ2xhc3MoKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY2xhc3NOYW1lKCJpbWFnZS1vdmVybGF5LWJs
b2NrIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBjbGFz
c05hbWU7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAKIGJvb2wgaGFz
T3ZlcmxheShjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkKQEAgLTEwNiw3ICsxMTIsNyBAQCBz
dGF0aWMgUmVmUHRyPEhUTUxFbGVtZW50PiBpbWFnZU92ZXJsYXlIb3N0KGNvbnN0IE5vZGUmIG5v
ZGUpCiAKIGJvb2wgaXNEYXRhRGV0ZWN0b3JSZXN1bHQoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1l
bnQpCiB7Ci0gICAgcmV0dXJuIGltYWdlT3ZlcmxheUhvc3QoZWxlbWVudCkgJiYgZWxlbWVudC5o
YXNDbGFzcygpICYmIGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKGltYWdlT3ZlcmxheURh
dGFEZXRlY3RvckNsYXNzTmFtZSgpKTsKKyAgICByZXR1cm4gaW1hZ2VPdmVybGF5SG9zdChlbGVt
ZW50KSAmJiBlbGVtZW50Lmhhc0NsYXNzKCkgJiYgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFp
bnMoaW1hZ2VPdmVybGF5RGF0YURldGVjdG9yQ2xhc3MoKSk7CiB9CiAKIGJvb2wgaXNJbnNpZGVP
dmVybGF5KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKQEAgLTE5MSw2ICsxOTcsNyBAQCBzdHJ1
Y3QgRWxlbWVudHMgewogICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gcm9vdDsKICAgICBWZWN0
b3I8TGluZUVsZW1lbnRzPiBsaW5lczsKICAgICBWZWN0b3I8UmVmPEhUTUxEaXZFbGVtZW50Pj4g
ZGF0YURldGVjdG9yczsKKyAgICBWZWN0b3I8UmVmPEhUTUxEaXZFbGVtZW50Pj4gYmxvY2tzOwog
fTsKIAogc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYgcmVzdWx0KQpAQCAtMjI5LDE3ICsyMzYsMjYg
QEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICB9CiAKICAgICBpZiAoZWxlbWVudHMucm9v
dCkgewotICAgICAgICBmb3IgKGF1dG8mIGxpbmVPckRhdGFEZXRlY3RvciA6IGNoaWxkcmVuT2ZU
eXBlPEhUTUxEaXZFbGVtZW50PigqZWxlbWVudHMucm9vdCkpIHsKLSAgICAgICAgICAgIGlmICgh
bGluZU9yRGF0YURldGVjdG9yLmhhc0NsYXNzKCkpCisgICAgICAgIGZvciAoYXV0byYgY2hpbGRF
bGVtZW50IDogY2hpbGRyZW5PZlR5cGU8SFRNTERpdkVsZW1lbnQ+KCplbGVtZW50cy5yb290KSkg
eworICAgICAgICAgICAgaWYgKCFjaGlsZEVsZW1lbnQuaGFzQ2xhc3MoKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgYXV0byYgY2xhc3NlcyA9IGNoaWxkRWxlbWVu
dC5jbGFzc0xpc3QoKTsKKyAgICAgICAgICAgIGlmIChjbGFzc2VzLmNvbnRhaW5zKGltYWdlT3Zl
cmxheURhdGFEZXRlY3RvckNsYXNzKCkpKSB7CisgICAgICAgICAgICAgICAgZWxlbWVudHMuZGF0
YURldGVjdG9ycy5hcHBlbmQoY2hpbGRFbGVtZW50KTsKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNsYXNzZXMuY29udGFpbnMoaW1h
Z2VPdmVybGF5QmxvY2tDbGFzcygpKSkgeworICAgICAgICAgICAgICAgIGVsZW1lbnRzLmJsb2Nr
cy5hcHBlbmQoY2hpbGRFbGVtZW50KTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGxpbmVPckRhdGFEZXRlY3Rvci5jbGFzc0xpc3Qo
KS5jb250YWlucyhpbWFnZU92ZXJsYXlMaW5lQ2xhc3MoKSkpIHsKLSAgICAgICAgICAgICAgICBM
aW5lRWxlbWVudHMgbGluZUVsZW1lbnRzIHsgbGluZU9yRGF0YURldGVjdG9yLCB7IH0gfTsKLSAg
ICAgICAgICAgICAgICBmb3IgKGF1dG8mIHRleHQgOiBjaGlsZHJlbk9mVHlwZTxIVE1MRGl2RWxl
bWVudD4obGluZU9yRGF0YURldGVjdG9yKSkKLSAgICAgICAgICAgICAgICAgICAgbGluZUVsZW1l
bnRzLmNoaWxkcmVuLmFwcGVuZCh0ZXh0KTsKLSAgICAgICAgICAgICAgICBlbGVtZW50cy5saW5l
cy5hcHBlbmQoV1RGTW92ZShsaW5lRWxlbWVudHMpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
bGluZU9yRGF0YURldGVjdG9yLmNsYXNzTGlzdCgpLmNvbnRhaW5zKGltYWdlT3ZlcmxheURhdGFE
ZXRlY3RvckNsYXNzTmFtZSgpKSkKLSAgICAgICAgICAgICAgICBlbGVtZW50cy5kYXRhRGV0ZWN0
b3JzLmFwcGVuZChsaW5lT3JEYXRhRGV0ZWN0b3IpOworICAgICAgICAgICAgQVNTRVJUKGNsYXNz
ZXMuY29udGFpbnMoaW1hZ2VPdmVybGF5TGluZUNsYXNzKCkpKTsKKyAgICAgICAgICAgIExpbmVF
bGVtZW50cyBsaW5lRWxlbWVudHMgeyBjaGlsZEVsZW1lbnQsIHsgfSB9OworICAgICAgICAgICAg
Zm9yIChhdXRvJiB0ZXh0IDogY2hpbGRyZW5PZlR5cGU8SFRNTERpdkVsZW1lbnQ+KGNoaWxkRWxl
bWVudCkpCisgICAgICAgICAgICAgICAgbGluZUVsZW1lbnRzLmNoaWxkcmVuLmFwcGVuZCh0ZXh0
KTsKKyAgICAgICAgICAgIGVsZW1lbnRzLmxpbmVzLmFwcGVuZChXVEZNb3ZlKGxpbmVFbGVtZW50
cykpOwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBjYW5Vc2VFeGlzdGluZ0VsZW1lbnRzID0g
KFsmXSB7CkBAIC0yNDksNiArMjY1LDkgQEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUo
SFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICAg
ICAgICAgIGlmIChyZXN1bHQubGluZXMuc2l6ZSgpICE9IGVsZW1lbnRzLmxpbmVzLnNpemUoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAgICAgICAgIGlmIChyZXN1bHQu
YmxvY2tzLnNpemUoKSAhPSBlbGVtZW50cy5ibG9ja3Muc2l6ZSgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKwogICAgICAgICAgICAgZm9yIChzaXplX3QgbGluZUluZGV4ID0gMDsg
bGluZUluZGV4IDwgcmVzdWx0LmxpbmVzLnNpemUoKTsgKytsaW5lSW5kZXgpIHsKICAgICAgICAg
ICAgICAgICBhdXRvJiBjaGlsZFJlc3VsdHMgPSByZXN1bHQubGluZXNbbGluZUluZGV4XS5jaGls
ZHJlbjsKICAgICAgICAgICAgICAgICBhdXRvJiBjaGlsZFRleHRFbGVtZW50cyA9IGVsZW1lbnRz
LmxpbmVzW2xpbmVJbmRleF0uY2hpbGRyZW47CkBAIC0yNjEsNiArMjgwLDExIEBAIHN0YXRpYyBF
bGVtZW50cyB1cGRhdGVTdWJ0cmVlKEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVj
b2duaXRpb25SZXN1bHQmCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCisgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgcmVzdWx0LmJsb2Nrcy5zaXpl
KCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmJsb2Nrc1tpbmRleF0u
dGV4dCAhPSBlbGVtZW50cy5ibG9ja3NbaW5kZXhdLT50ZXh0Q29udGVudCgpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9KSgpOwogCkBAIC0zMTAsMTIgKzMzNCwyMSBAQCBzdGF0aWMg
RWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJl
Y29nbml0aW9uUmVzdWx0JgogICAgICAgICBlbGVtZW50cy5kYXRhRGV0ZWN0b3JzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkocmVzdWx0LmRhdGFEZXRlY3RvcnMuc2l6ZSgpKTsKICAgICAgICAgZm9y
IChhdXRvJiBkYXRhRGV0ZWN0b3IgOiByZXN1bHQuZGF0YURldGVjdG9ycykgewogICAgICAgICAg
ICAgYXV0byBkYXRhRGV0ZWN0b3JDb250YWluZXIgPSBEYXRhRGV0ZWN0aW9uOjpjcmVhdGVFbGVt
ZW50Rm9ySW1hZ2VPdmVybGF5KGRvY3VtZW50LmdldCgpLCBkYXRhRGV0ZWN0b3IpOwotICAgICAg
ICAgICAgZGF0YURldGVjdG9yQ29udGFpbmVyLT5jbGFzc0xpc3QoKS5hZGQoaW1hZ2VPdmVybGF5
RGF0YURldGVjdG9yQ2xhc3NOYW1lKCkpOworICAgICAgICAgICAgZGF0YURldGVjdG9yQ29udGFp
bmVyLT5jbGFzc0xpc3QoKS5hZGQoaW1hZ2VPdmVybGF5RGF0YURldGVjdG9yQ2xhc3MoKSk7CiAg
ICAgICAgICAgICByb290Q29udGFpbmVyLT5hcHBlbmRDaGlsZChkYXRhRGV0ZWN0b3JDb250YWlu
ZXIpOwogICAgICAgICAgICAgZWxlbWVudHMuZGF0YURldGVjdG9ycy51bmNoZWNrZWRBcHBlbmQo
V1RGTW92ZShkYXRhRGV0ZWN0b3JDb250YWluZXIpKTsKICAgICAgICAgfQogI2VuZGlmIC8vIEVO
QUJMRShEQVRBX0RFVEVDVElPTikKIAorICAgICAgICBlbGVtZW50cy5ibG9ja3MucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShyZXN1bHQuYmxvY2tzLnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byYg
YmxvY2sgOiByZXN1bHQuYmxvY2tzKSB7CisgICAgICAgICAgICBhdXRvIGJsb2NrQ29udGFpbmVy
ID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CisgICAgICAgICAgICBi
bG9ja0NvbnRhaW5lci0+Y2xhc3NMaXN0KCkuYWRkKGltYWdlT3ZlcmxheUJsb2NrQ2xhc3MoKSk7
CisgICAgICAgICAgICByb290Q29udGFpbmVyLT5hcHBlbmRDaGlsZChibG9ja0NvbnRhaW5lcik7
CisgICAgICAgICAgICBibG9ja0NvbnRhaW5lci0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRv
Y3VtZW50LmdldCgpLCBtYWtlU3RyaW5nKCdcbicsIGJsb2NrLnRleHQpKSk7CisgICAgICAgICAg
ICBlbGVtZW50cy5ibG9ja3MudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoYmxvY2tDb250YWluZXIp
KTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChkb2N1bWVudC0+cXVpcmtzKCkubmVlZHNUb0Zv
cmNlVXNlclNlbGVjdFdoZW5JbnN0YWxsaW5nSW1hZ2VPdmVybGF5KCkpCiAgICAgICAgICAgICBl
bGVtZW50LnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0
LCBDU1NWYWx1ZVRleHQpOwogICAgIH0KQEAgLTMzMCw2ICszNjMsMjAgQEAgc3RhdGljIEVsZW1l
bnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25p
dGlvblJlc3VsdCYKICAgICByZXR1cm4gZWxlbWVudHM7CiB9CiAKK3N0YXRpYyBSb3RhdGVkUmVj
dCBmaXRFbGVtZW50VG9RdWFkKEhUTUxFbGVtZW50JiBjb250YWluZXIsIGNvbnN0IEZsb2F0UXVh
ZCYgcXVhZCkKK3sKKyAgICBhdXRvIGJvdW5kcyA9IHJvdGF0ZWRCb3VuZGluZ1JlY3RXaXRoTWlu
aW11bUFuZ2xlT2ZSb3RhdGlvbihxdWFkLCAwLjAxKTsKKyAgICBjb250YWluZXIuc2V0SW5saW5l
U3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBib3VuZHMuc2l6ZS53aWR0aCgpLCBDU1NV
bml0VHlwZTo6Q1NTX1BYKTsKKyAgICBjb250YWluZXIuc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eUhlaWdodCwgYm91bmRzLnNpemUuaGVpZ2h0KCksIENTU1VuaXRUeXBlOjpDU1Nf
UFgpOworICAgIGNvbnRhaW5lci5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VHJh
bnNmb3JtLCBtYWtlU3RyaW5nKAorICAgICAgICAidHJhbnNsYXRlKCJfcywKKyAgICAgICAgc3Rk
Ojpyb3VuZChib3VuZHMuY2VudGVyLngoKSAtIChib3VuZHMuc2l6ZS53aWR0aCgpIC8gMikpLCAi
cHgsICJfcywKKyAgICAgICAgc3RkOjpyb3VuZChib3VuZHMuY2VudGVyLnkoKSAtIChib3VuZHMu
c2l6ZS5oZWlnaHQoKSAvIDIpKSwgInB4KSAiX3MsCisgICAgICAgIGJvdW5kcy5hbmdsZUluUmFk
aWFucyA/IG1ha2VTdHJpbmcoInJvdGF0ZSgiX3MsIGJvdW5kcy5hbmdsZUluUmFkaWFucywgInJh
ZCkgIl9zKSA6IGVtcHR5U3RyaW5nKCkKKyAgICApKTsKKyAgICByZXR1cm4gYm91bmRzOworfQor
CiB2b2lkIHVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoSFRNTEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYgcmVzdWx0LCBDYWNoZVRleHRSZWNvZ25p
dGlvblJlc3VsdHMgY2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRzKQogewogICAgIGF1dG8gZWxl
bWVudHMgPSB1cGRhdGVTdWJ0cmVlKGVsZW1lbnQsIHJlc3VsdCk7CkBAIC0zNjIsMTYgKzQwOSw3
IEBAIHZvaWQgdXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChIVE1MRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uCiAgICAgICAgIGlmIChsaW5lUXVhZC5pc0VtcHR5
KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGxpbmVCb3VuZHMgPSBy
b3RhdGVkQm91bmRpbmdSZWN0V2l0aE1pbmltdW1BbmdsZU9mUm90YXRpb24obGluZVF1YWQsIDAu
MDEpOwotICAgICAgICBsaW5lQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5V2lkdGgsIGxpbmVCb3VuZHMuc2l6ZS53aWR0aCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BY
KTsKLSAgICAgICAgbGluZUNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUhlaWdodCwgbGluZUJvdW5kcy5zaXplLmhlaWdodCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BY
KTsKLSAgICAgICAgbGluZUNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVRyYW5zZm9ybSwgbWFrZVN0cmluZygKLSAgICAgICAgICAgICJ0cmFuc2xhdGUoIl9zLAot
ICAgICAgICAgICAgc3RkOjpyb3VuZChsaW5lQm91bmRzLmNlbnRlci54KCkgLSAobGluZUJvdW5k
cy5zaXplLndpZHRoKCkgLyAyKSksICJweCwgIl9zLAotICAgICAgICAgICAgc3RkOjpyb3VuZChs
aW5lQm91bmRzLmNlbnRlci55KCkgLSAobGluZUJvdW5kcy5zaXplLmhlaWdodCgpIC8gMikpLCAi
cHgpICJfcywKLSAgICAgICAgICAgIGxpbmVCb3VuZHMuYW5nbGVJblJhZGlhbnMgPyBtYWtlU3Ry
aW5nKCJyb3RhdGUoIl9zLCBsaW5lQm91bmRzLmFuZ2xlSW5SYWRpYW5zLCAicmFkKSAiX3MpIDog
ZW1wdHlTdHJpbmcoKQotICAgICAgICApKTsKLQorICAgICAgICBhdXRvIGxpbmVCb3VuZHMgPSBm
aXRFbGVtZW50VG9RdWFkKGxpbmVDb250YWluZXIuZ2V0KCksIGxpbmVRdWFkKTsKICAgICAgICAg
YXV0byBvZmZzZXRBbG9uZ0hvcml6b250YWxBeGlzID0gWyZdKGNvbnN0IEZsb2F0UG9pbnQmIHF1
YWRQb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHF1YWRQb2ludDIpIHsKICAgICAgICAgICAgIGF1
dG8gaW50ZXJ2YWxMZW5ndGggPSBsaW5lQm91bmRzLnNpemUud2lkdGgoKTsKICAgICAgICAgICAg
IGF1dG8gbWlkID0gbWlkUG9pbnQocXVhZFBvaW50MSwgcXVhZFBvaW50Mik7CkBAIC00NTEsMjAg
KzQ4OSwyNyBAQCB2b2lkIHVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoSFRNTEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvbgogICAgICAgICBpZiAoZGF0YURldGVj
dG9yLm5vcm1hbGl6ZWRRdWFkcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAor
ICAgICAgICBhdXRvIGZpcnN0UXVhZCA9IGRhdGFEZXRlY3Rvci5ub3JtYWxpemVkUXVhZHMuZmly
c3QoKTsKKyAgICAgICAgaWYgKGZpcnN0UXVhZC5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKwogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbWUgdXAgd2l0aCBhIHdheSB0
byBjb2FsZXNjZSB0aGUgYm91bmRpbmcgcXVhZHMgaW50byBvbmUgb3IgbW9yZSByb3RhdGVkIHJl
Y3RzIHdpdGggdGhlIHNhbWUgYW5nbGUgb2Ygcm90YXRpb24uCi0gICAgICAgIGF1dG8gdGFyZ2V0
UXVhZCA9IGNvbnZlcnRUb0NvbnRhaW5lckNvb3JkaW5hdGVzKGRhdGFEZXRlY3Rvci5ub3JtYWxp
emVkUXVhZHMuZmlyc3QoKSk7Ci0gICAgICAgIGF1dG8gdGFyZ2V0Qm91bmRzID0gcm90YXRlZEJv
dW5kaW5nUmVjdFdpdGhNaW5pbXVtQW5nbGVPZlJvdGF0aW9uKHRhcmdldFF1YWQsIDAuMDEpOwot
ICAgICAgICBkYXRhRGV0ZWN0b3JDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlXaWR0aCwgdGFyZ2V0Qm91bmRzLnNpemUud2lkdGgoKSwgQ1NTVW5pdFR5cGU6OkNT
U19QWCk7Ci0gICAgICAgIGRhdGFEZXRlY3RvckNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgdGFyZ2V0Qm91bmRzLnNpemUuaGVpZ2h0KCksIENTU1Vu
aXRUeXBlOjpDU1NfUFgpOwotICAgICAgICBkYXRhRGV0ZWN0b3JDb250YWluZXItPnNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0sIG1ha2VTdHJpbmcoCi0gICAgICAg
ICAgICAidHJhbnNsYXRlKCJfcywKLSAgICAgICAgICAgIHN0ZDo6cm91bmQodGFyZ2V0Qm91bmRz
LmNlbnRlci54KCkgLSAodGFyZ2V0Qm91bmRzLnNpemUud2lkdGgoKSAvIDIpKSwgInB4LCAiX3Ms
Ci0gICAgICAgICAgICBzdGQ6OnJvdW5kKHRhcmdldEJvdW5kcy5jZW50ZXIueSgpIC0gKHRhcmdl
dEJvdW5kcy5zaXplLmhlaWdodCgpIC8gMikpLCAicHgpICJfcywKLSAgICAgICAgICAgIHRhcmdl
dEJvdW5kcy5hbmdsZUluUmFkaWFucyA/IG1ha2VTdHJpbmcoInJvdGF0ZSgiX3MsIHRhcmdldEJv
dW5kcy5hbmdsZUluUmFkaWFucywgInJhZCkgIl9zKSA6IGVtcHR5U3RyaW5nKCkKLSAgICAgICAg
KSk7CisgICAgICAgIGZpdEVsZW1lbnRUb1F1YWQoZGF0YURldGVjdG9yQ29udGFpbmVyLmdldCgp
LCBjb252ZXJ0VG9Db250YWluZXJDb29yZGluYXRlcyhmaXJzdFF1YWQpKTsKICAgICB9CiAjZW5k
aWYgLy8gRU5BQkxFKERBVEFfREVURUNUSU9OKQogCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAw
OyBpbmRleCA8IHJlc3VsdC5ibG9ja3Muc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGF1dG8g
YmxvY2tDb250YWluZXIgPSBlbGVtZW50cy5ibG9ja3NbaW5kZXhdOworICAgICAgICBhdXRvJiBi
bG9jayA9IHJlc3VsdC5ibG9ja3NbaW5kZXhdOworICAgICAgICBpZiAoYmxvY2subm9ybWFsaXpl
ZFF1YWQuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBi
b3VuZHMgPSBmaXRFbGVtZW50VG9RdWFkKGJsb2NrQ29udGFpbmVyLmdldCgpLCBjb252ZXJ0VG9D
b250YWluZXJDb29yZGluYXRlcyhibG9jay5ub3JtYWxpemVkUXVhZCkpOworICAgICAgICAvLyBG
SVhNRTogV2UnbGwgbmVlZCBhIHNtYXJ0ZXIgYWxnb3JpdGhtIGhlcmUgdGhhdCBjaG9vc2VzIHRo
ZSBsYXJnZXN0IGZvbnQgc2l6ZSBmb3IgdGhlIGNvbnRhaW5lciB3aXRob3V0CisgICAgICAgIC8v
IHZlcnRpY2FsbHkgb3ZlcmZsb3dpbmcgdGhlIGNvbnRhaW5lci4KKyAgICAgICAgYmxvY2tDb250
YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgc3RkOjpy
b3VuZCgwLjggKiBib3VuZHMuc2l6ZS5oZWlnaHQoKSksIENTU1VuaXRUeXBlOjpDU1NfUFgpOwor
ICAgIH0KKwogICAgIGlmIChSZWZQdHIgZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKSkKICAgICAg
ICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNjaGVkdWxlQ3Vyc29yVXBkYXRlKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzCmluZGV4IDYwNDk1MjIwYTE1
YmQyNTNjYmEyMzZlY2E2MDdhMDJhYzk3MjQwODkuLjI3Mjk5NmE5NWE5NGMyOWZiZjQwNmIzYWU5
M2M4ODliMGVjNWJhOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L2lt
YWdlT3ZlcmxheS5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvaW1hZ2VPdmVy
bGF5LmNzcwpAQCAtMzAsMTkgKzMwLDM1IEBAIGRpdiNpbWFnZS1vdmVybGF5IHsKICAgICBjb2xv
cjogdHJhbnNwYXJlbnQ7CiAgICAgdGV4dC1zaGFkb3c6IG5vbmU7CiAgICAgdGV4dC1hbGlnbjog
Y2VudGVyOworICAgIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7Cit9CisKK2Rpdi5pbWFnZS1vdmVy
bGF5LWxpbmUgewogICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgbGluZS1oZWlnaHQ6IDEw
MCU7Ci0gICAgZm9udC1mYW1pbHk6IHN5c3RlbS11aTsKICAgICBmb250LXNpemU6IDEwMjRweDsg
LyogVGhpcyBsYXJnZSBmb250IHNpemUgaXMgY2hvc2VuIHRvIG1pbmltaXplIGdhcHMgd2hlbiBw
YWludGluZyBzZWxlY3Rpb24gcXVhZHMuICovCiB9CiAKLWRpdi5pbWFnZS1vdmVybGF5LWxpbmUs
IC5pbWFnZS1vdmVybGF5LXRleHQgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBvdmVy
ZmxvdzogaGlkZGVuOworZGl2LmltYWdlLW92ZXJsYXktbGluZSwgZGl2LmltYWdlLW92ZXJsYXkt
YmxvY2sgeworICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogfQogCi1kaXYuaW1hZ2Utb3Zlcmxh
eS1saW5lIHsKLSAgICBwb2ludGVyLWV2ZW50czogYXV0bzsKK2Rpdi5pbWFnZS1vdmVybGF5LWJs
b2NrIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpOwor
ICAgIGJvcmRlci1yYWRpdXM6IGNhbGMoY2xhbXAoNHB4LCAwLjFlbSwgMTJweCkpOworICAgIGJv
eC1zaGFkb3c6IHJnYmEoMTAwLCAxMDAsIDEwMCwgMC4yKSA1cHggN3B4IDI5cHggNXB4OworICAg
IGNvbG9yOiByZ2IoOTAsIDkwLCA5MCk7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgICAgZGlz
cGxheTogZmxleDsKKyAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKKyAgICBhbGlnbi1jb250
ZW50OiBjZW50ZXI7CisgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKKyAgICAtd2Via2l0LWJh
Y2tkcm9wLWZpbHRlcjogYmx1cig4cHgpOworfQorCitkaXYuaW1hZ2Utb3ZlcmxheS1saW5lLCAu
aW1hZ2Utb3ZlcmxheS10ZXh0LCBkaXYuaW1hZ2Utb3ZlcmxheS1ibG9jayB7CisgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgIG92ZXJmbG93OiBoaWRkZW47CiB9CiAKIC5pbWFnZS1vdmVybGF5
LXRleHQ6OnNlbGVjdGlvbiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444194</attachid>
            <date>2021-11-14 14:21:06 -0800</date>
            <delta_ts>2021-11-15 16:26:23 -0800</delta_ts>
            <desc>Minor adjustments / rebase on trunk</desc>
            <filename>bug-233044-20211114142106.patch</filename>
            <type>text/plain</type>
            <size>13922</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTljNDVhMTZmMzBkYTE5
OTg0NDRkM2FlNDc3MmZiYzVjY2JjMjVjNi4uMDQ0MDYxNWIxZTRmNjhlNjA1MzJkZTllMWIyZDFj
N2E4YmRhNGI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIxLTExLTEyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBpbmplY3RpbmcgYW5kIHJlbmRlcmluZyB0ZXh0IHJlY29nbml0aW9uIGJsb2NrcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDQ0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBzdXBwb3J0
IGZvciByZW5kZXJpbmcgdGV4dCByZWNvZ25pdGlvbiBibG9ja3MsIHdoaWNoIGFwcGVhciBhcyBv
cGFxdWUgZGl2IGVsZW1lbnRzIG92ZXIgaW1hZ2VzLiBTZWUgYmVsb3cKKyAgICAgICAgZm9yIG1v
cmUgZGV0YWlsczsgbm8gY2hhbmdlIGluIGJlaGF2aW9yLCBzaW5jZSBub3RoaW5nIGN1cnJlbnRs
eSBnZW5lcmF0ZXMgVGV4dFJlY29nbml0aW9uQmxvY2tEYXRhIHlldC4KKworICAgICAgICAqIGRv
bS9JbWFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5OjppbWFn
ZU92ZXJsYXlEYXRhRGV0ZWN0b3JDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OmltYWdlT3ZlcmxheUJsb2NrQ2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVy
bGF5Ojppc0RhdGFEZXRlY3RvclJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OnVwZGF0ZVN1YnRyZWUpOgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBjcmVhdGluZyB0
ZXh0IHJlY29nbml0aW9uIGJsb2NrIGNvbnRhaW5lcnMgaW4gdGhlIFVBIHNoYWRvdyByb290LCBp
ZiBuZWVkZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheTo6Zml0RWxlbWVudFRv
UXVhZCk6CisKKyAgICAgICAgRmFjdG9yIG91dCBsb2dpYyB0byBhZGp1c3QgdGhlIHdpZHRoLCBo
ZWlnaHQgYW5kIHRyYW5zZm9ybXMgb24gYSBnaXZlbiBlbGVtZW50IHRvIGZpdCB0aGUgZ2l2ZW4g
cXVhZCwgYW5kIHJldHVybgorICAgICAgICByb3RhdGVkIGJvdW5kaW5nIHJlY3QgaW5mbzsgd2Ug
dXNlIHRoaXMgaW4gdGhyZWUgcGxhY2VzIGJlbG93LgorCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZU92ZXJsYXk6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQpOgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBhZGp1c3RpbmcgdGhlIHNpemUgYW5kIHRyYW5zZm9ybXMgb24gZWFjaCBv
ZiB0aGUgYmxvY2sgY29udGFpbmVycyBjcmVhdGVkIGFib3ZlLgorCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZU92ZXJsYXk6OmltYWdlT3ZlcmxheURhdGFEZXRlY3RvckNsYXNzTmFtZSk6IERlbGV0
ZWQuCisKKyAgICAgICAgUmVuYW1lIHRoaXMgdG8ganVzdCBgaW1hZ2VPdmVybGF5RGF0YURldGVj
dG9yQ2xhc3MoKWAgdG8gbWF0Y2ggdGhlIG90aGVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLgor
CisgICAgICAgICogaHRtbC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNzczoKKyAgICAgICAgKGRpdiNp
bWFnZS1vdmVybGF5KToKKyAgICAgICAgKGRpdi5pbWFnZS1vdmVybGF5LWxpbmUpOgorICAgICAg
ICAoZGl2LmltYWdlLW92ZXJsYXktbGluZSwgZGl2LmltYWdlLW92ZXJsYXktYmxvY2spOgorICAg
ICAgICAoZGl2LmltYWdlLW92ZXJsYXktYmxvY2spOgorICAgICAgICAoZGl2LmltYWdlLW92ZXJs
YXktbGluZSwgLmltYWdlLW92ZXJsYXktdGV4dCk6CisKIDIwMjEtMTEtMTQgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBWYXJpb3Vz
IG1lY2hhbmljYWwgY2xlYW51cHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFn
ZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKaW5kZXgg
ZmU5ZmQxNWQ2NWMyOWE5NGNkZDFlYTQwNTIwODBiMWM2NGUxYWUzZC4uMzZlNTE5MjIzYzFhNTgw
MGQ3NmEyZGNlMjdhODFkZjVhMDkzN2QxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0ltYWdlT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5j
cHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGltYWdlT3Zlcmxh
eUVsZW1lbnRJZGVudGlmaWVyKCkKICAgICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIAotc3RhdGlj
IGNvbnN0IEF0b21TdHJpbmcmIGltYWdlT3ZlcmxheURhdGFEZXRlY3RvckNsYXNzTmFtZSgpCitz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgaW1hZ2VPdmVybGF5RGF0YURldGVjdG9yQ2xhc3MoKQog
ewogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
Y2xhc3NOYW1lKCJpbWFnZS1vdmVybGF5LWRhdGEtZGV0ZWN0b3ItcmVzdWx0IiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBjbGFzc05hbWU7CkBAIC04Myw2
ICs4MywxMiBAQCBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgaW1hZ2VPdmVybGF5VGV4dENsYXNz
KCkKICAgICByZXR1cm4gY2xhc3NOYW1lOwogfQogCitzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYg
aW1hZ2VPdmVybGF5QmxvY2tDbGFzcygpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjbGFzc05hbWUoImltYWdlLW92ZXJsYXktYmxvY2si
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIGNsYXNzTmFt
ZTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKIAogYm9vbCBoYXNPdmVy
bGF5KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KQpAQCAtMTA2LDcgKzExMiw3IEBAIHN0YXRp
YyBSZWZQdHI8SFRNTEVsZW1lbnQ+IGltYWdlT3ZlcmxheUhvc3QoY29uc3QgTm9kZSYgbm9kZSkK
IAogYm9vbCBpc0RhdGFEZXRlY3RvclJlc3VsdChjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkK
IHsKLSAgICByZXR1cm4gaW1hZ2VPdmVybGF5SG9zdChlbGVtZW50KSAmJiBlbGVtZW50Lmhhc0Ns
YXNzKCkgJiYgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoaW1hZ2VPdmVybGF5RGF0YURl
dGVjdG9yQ2xhc3NOYW1lKCkpOworICAgIHJldHVybiBpbWFnZU92ZXJsYXlIb3N0KGVsZW1lbnQp
ICYmIGVsZW1lbnQuaGFzQ2xhc3MoKSAmJiBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucyhp
bWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3JDbGFzcygpKTsKIH0KIAogYm9vbCBpc0luc2lkZU92ZXJs
YXkoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQpAQCAtMTkxLDYgKzE5Nyw3IEBAIHN0cnVjdCBF
bGVtZW50cyB7CiAgICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiByb290OwogICAgIFZlY3RvcjxM
aW5lRWxlbWVudHM+IGxpbmVzOwogICAgIFZlY3RvcjxSZWY8SFRNTERpdkVsZW1lbnQ+PiBkYXRh
RGV0ZWN0b3JzOworICAgIFZlY3RvcjxSZWY8SFRNTERpdkVsZW1lbnQ+PiBibG9ja3M7CiB9Owog
CiBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JiByZXN1bHQpCkBAIC0yMjksMTcgKzIzNiwyNiBAQCBz
dGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
VGV4dFJlY29nbml0aW9uUmVzdWx0JgogICAgIH0KIAogICAgIGlmIChlbGVtZW50cy5yb290KSB7
Ci0gICAgICAgIGZvciAoYXV0byYgbGluZU9yRGF0YURldGVjdG9yIDogY2hpbGRyZW5PZlR5cGU8
SFRNTERpdkVsZW1lbnQ+KCplbGVtZW50cy5yb290KSkgewotICAgICAgICAgICAgaWYgKCFsaW5l
T3JEYXRhRGV0ZWN0b3IuaGFzQ2xhc3MoKSkKKyAgICAgICAgZm9yIChhdXRvJiBjaGlsZEVsZW1l
bnQgOiBjaGlsZHJlbk9mVHlwZTxIVE1MRGl2RWxlbWVudD4oKmVsZW1lbnRzLnJvb3QpKSB7Cisg
ICAgICAgICAgICBpZiAoIWNoaWxkRWxlbWVudC5oYXNDbGFzcygpKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICBhdXRvJiBjbGFzc2VzID0gY2hpbGRFbGVtZW50LmNs
YXNzTGlzdCgpOworICAgICAgICAgICAgaWYgKGNsYXNzZXMuY29udGFpbnMoaW1hZ2VPdmVybGF5
RGF0YURldGVjdG9yQ2xhc3MoKSkpIHsKKyAgICAgICAgICAgICAgICBlbGVtZW50cy5kYXRhRGV0
ZWN0b3JzLmFwcGVuZChjaGlsZEVsZW1lbnQpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2xhc3Nlcy5jb250YWlucyhpbWFnZU92
ZXJsYXlCbG9ja0NsYXNzKCkpKSB7CisgICAgICAgICAgICAgICAgZWxlbWVudHMuYmxvY2tzLmFw
cGVuZChjaGlsZEVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBpZiAobGluZU9yRGF0YURldGVjdG9yLmNsYXNzTGlzdCgpLmNv
bnRhaW5zKGltYWdlT3ZlcmxheUxpbmVDbGFzcygpKSkgewotICAgICAgICAgICAgICAgIExpbmVF
bGVtZW50cyBsaW5lRWxlbWVudHMgeyBsaW5lT3JEYXRhRGV0ZWN0b3IsIHsgfSB9OwotICAgICAg
ICAgICAgICAgIGZvciAoYXV0byYgdGV4dCA6IGNoaWxkcmVuT2ZUeXBlPEhUTUxEaXZFbGVtZW50
PihsaW5lT3JEYXRhRGV0ZWN0b3IpKQotICAgICAgICAgICAgICAgICAgICBsaW5lRWxlbWVudHMu
Y2hpbGRyZW4uYXBwZW5kKHRleHQpOwotICAgICAgICAgICAgICAgIGVsZW1lbnRzLmxpbmVzLmFw
cGVuZChXVEZNb3ZlKGxpbmVFbGVtZW50cykpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChsaW5l
T3JEYXRhRGV0ZWN0b3IuY2xhc3NMaXN0KCkuY29udGFpbnMoaW1hZ2VPdmVybGF5RGF0YURldGVj
dG9yQ2xhc3NOYW1lKCkpKQotICAgICAgICAgICAgICAgIGVsZW1lbnRzLmRhdGFEZXRlY3RvcnMu
YXBwZW5kKGxpbmVPckRhdGFEZXRlY3Rvcik7CisgICAgICAgICAgICBBU1NFUlQoY2xhc3Nlcy5j
b250YWlucyhpbWFnZU92ZXJsYXlMaW5lQ2xhc3MoKSkpOworICAgICAgICAgICAgTGluZUVsZW1l
bnRzIGxpbmVFbGVtZW50cyB7IGNoaWxkRWxlbWVudCwgeyB9IH07CisgICAgICAgICAgICBmb3Ig
KGF1dG8mIHRleHQgOiBjaGlsZHJlbk9mVHlwZTxIVE1MRGl2RWxlbWVudD4oY2hpbGRFbGVtZW50
KSkKKyAgICAgICAgICAgICAgICBsaW5lRWxlbWVudHMuY2hpbGRyZW4uYXBwZW5kKHRleHQpOwor
ICAgICAgICAgICAgZWxlbWVudHMubGluZXMuYXBwZW5kKFdURk1vdmUobGluZUVsZW1lbnRzKSk7
CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGNhblVzZUV4aXN0aW5nRWxlbWVudHMgPSAoWyZd
IHsKQEAgLTI0OSw2ICsyNjUsOSBAQCBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1M
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JgogICAgICAgICAg
ICAgaWYgKHJlc3VsdC5saW5lcy5zaXplKCkgIT0gZWxlbWVudHMubGluZXMuc2l6ZSgpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICAgICAgaWYgKHJlc3VsdC5ibG9j
a3Muc2l6ZSgpICE9IGVsZW1lbnRzLmJsb2Nrcy5zaXplKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBsaW5lSW5kZXggPSAwOyBsaW5l
SW5kZXggPCByZXN1bHQubGluZXMuc2l6ZSgpOyArK2xpbmVJbmRleCkgewogICAgICAgICAgICAg
ICAgIGF1dG8mIGNoaWxkUmVzdWx0cyA9IHJlc3VsdC5saW5lc1tsaW5lSW5kZXhdLmNoaWxkcmVu
OwogICAgICAgICAgICAgICAgIGF1dG8mIGNoaWxkVGV4dEVsZW1lbnRzID0gZWxlbWVudHMubGlu
ZXNbbGluZUluZGV4XS5jaGlsZHJlbjsKQEAgLTI2MSw2ICsyODAsMTEgQEAgc3RhdGljIEVsZW1l
bnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25p
dGlvblJlc3VsdCYKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCByZXN1bHQuYmxvY2tzLnNpemUoKTsg
KytpbmRleCkgeworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuYmxvY2tzW2luZGV4XS50ZXh0
ICE9IGVsZW1lbnRzLmJsb2Nrc1tpbmRleF0tPnRleHRDb250ZW50KCkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0pKCk7CiAKQEAgLTMxMCwxMiArMzM0LDIxIEBAIHN0YXRpYyBFbGVt
ZW50cyB1cGRhdGVTdWJ0cmVlKEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2du
aXRpb25SZXN1bHQmCiAgICAgICAgIGVsZW1lbnRzLmRhdGFEZXRlY3RvcnMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShyZXN1bHQuZGF0YURldGVjdG9ycy5zaXplKCkpOwogICAgICAgICBmb3IgKGF1
dG8mIGRhdGFEZXRlY3RvciA6IHJlc3VsdC5kYXRhRGV0ZWN0b3JzKSB7CiAgICAgICAgICAgICBh
dXRvIGRhdGFEZXRlY3RvckNvbnRhaW5lciA9IERhdGFEZXRlY3Rpb246OmNyZWF0ZUVsZW1lbnRG
b3JJbWFnZU92ZXJsYXkoZG9jdW1lbnQuZ2V0KCksIGRhdGFEZXRlY3Rvcik7Ci0gICAgICAgICAg
ICBkYXRhRGV0ZWN0b3JDb250YWluZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlEYXRh
RGV0ZWN0b3JDbGFzc05hbWUoKSk7CisgICAgICAgICAgICBkYXRhRGV0ZWN0b3JDb250YWluZXIt
PmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3JDbGFzcygpKTsKICAgICAg
ICAgICAgIHJvb3RDb250YWluZXItPmFwcGVuZENoaWxkKGRhdGFEZXRlY3RvckNvbnRhaW5lcik7
CiAgICAgICAgICAgICBlbGVtZW50cy5kYXRhRGV0ZWN0b3JzLnVuY2hlY2tlZEFwcGVuZChXVEZN
b3ZlKGRhdGFEZXRlY3RvckNvbnRhaW5lcikpOwogICAgICAgICB9CiAjZW5kaWYgLy8gRU5BQkxF
KERBVEFfREVURUNUSU9OKQogCisgICAgICAgIGVsZW1lbnRzLmJsb2Nrcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHJlc3VsdC5ibG9ja3Muc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBibG9j
ayA6IHJlc3VsdC5ibG9ja3MpIHsKKyAgICAgICAgICAgIGF1dG8gYmxvY2tDb250YWluZXIgPSBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpKTsKKyAgICAgICAgICAgIGJsb2Nr
Q29udGFpbmVyLT5jbGFzc0xpc3QoKS5hZGQoaW1hZ2VPdmVybGF5QmxvY2tDbGFzcygpKTsKKyAg
ICAgICAgICAgIHJvb3RDb250YWluZXItPmFwcGVuZENoaWxkKGJsb2NrQ29udGFpbmVyKTsKKyAg
ICAgICAgICAgIGJsb2NrQ29udGFpbmVyLT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1l
bnQuZ2V0KCksIG1ha2VTdHJpbmcoJ1xuJywgYmxvY2sudGV4dCkpKTsKKyAgICAgICAgICAgIGVs
ZW1lbnRzLmJsb2Nrcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShibG9ja0NvbnRhaW5lcikpOwor
ICAgICAgICB9CisKICAgICAgICAgaWYgKGRvY3VtZW50LT5xdWlya3MoKS5uZWVkc1RvRm9yY2VV
c2VyU2VsZWN0V2hlbkluc3RhbGxpbmdJbWFnZU92ZXJsYXkoKSkKICAgICAgICAgICAgIGVsZW1l
bnQuc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QsIENT
U1ZhbHVlVGV4dCk7CiAgICAgfQpAQCAtMzMwLDYgKzM2MywyMCBAQCBzdGF0aWMgRWxlbWVudHMg
dXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9u
UmVzdWx0JgogICAgIHJldHVybiBlbGVtZW50czsKIH0KIAorc3RhdGljIFJvdGF0ZWRSZWN0IGZp
dEVsZW1lbnRUb1F1YWQoSFRNTEVsZW1lbnQmIGNvbnRhaW5lciwgY29uc3QgRmxvYXRRdWFkJiBx
dWFkKQoreworICAgIGF1dG8gYm91bmRzID0gcm90YXRlZEJvdW5kaW5nUmVjdFdpdGhNaW5pbXVt
QW5nbGVPZlJvdGF0aW9uKHF1YWQsIDAuMDEpOworICAgIGNvbnRhaW5lci5zZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIGJvdW5kcy5zaXplLndpZHRoKCksIENTU1VuaXRU
eXBlOjpDU1NfUFgpOworICAgIGNvbnRhaW5lci5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5SGVpZ2h0LCBib3VuZHMuc2l6ZS5oZWlnaHQoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7
CisgICAgY29udGFpbmVyLnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zv
cm0sIG1ha2VTdHJpbmcoCisgICAgICAgICJ0cmFuc2xhdGUoIl9zLAorICAgICAgICBzdGQ6OnJv
dW5kKGJvdW5kcy5jZW50ZXIueCgpIC0gKGJvdW5kcy5zaXplLndpZHRoKCkgLyAyKSksICJweCwg
Il9zLAorICAgICAgICBzdGQ6OnJvdW5kKGJvdW5kcy5jZW50ZXIueSgpIC0gKGJvdW5kcy5zaXpl
LmhlaWdodCgpIC8gMikpLCAicHgpICJfcywKKyAgICAgICAgYm91bmRzLmFuZ2xlSW5SYWRpYW5z
ID8gbWFrZVN0cmluZygicm90YXRlKCJfcywgYm91bmRzLmFuZ2xlSW5SYWRpYW5zLCAicmFkKSAi
X3MpIDogZW1wdHlTdHJpbmcoKQorICAgICkpOworICAgIHJldHVybiBib3VuZHM7Cit9CisKIHZv
aWQgdXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChIVE1MRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JiByZXN1bHQsIENhY2hlVGV4dFJlY29nbml0aW9u
UmVzdWx0cyBjYWNoZVRleHRSZWNvZ25pdGlvblJlc3VsdHMpCiB7CiAgICAgYXV0byBlbGVtZW50
cyA9IHVwZGF0ZVN1YnRyZWUoZWxlbWVudCwgcmVzdWx0KTsKQEAgLTM2MiwxNiArNDA5LDcgQEAg
dm9pZCB1cGRhdGVXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0KEhUTUxFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBUZXh0UmVjb2duaXRpb24KICAgICAgICAgaWYgKGxpbmVRdWFkLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbGluZUJvdW5kcyA9IHJvdGF0
ZWRCb3VuZGluZ1JlY3RXaXRoTWluaW11bUFuZ2xlT2ZSb3RhdGlvbihsaW5lUXVhZCwgMC4wMSk7
Ci0gICAgICAgIGxpbmVDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlXaWR0aCwgbGluZUJvdW5kcy5zaXplLndpZHRoKCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOwot
ICAgICAgICBsaW5lQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
SGVpZ2h0LCBsaW5lQm91bmRzLnNpemUuaGVpZ2h0KCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOwot
ICAgICAgICBsaW5lQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
VHJhbnNmb3JtLCBtYWtlU3RyaW5nKAotICAgICAgICAgICAgInRyYW5zbGF0ZSgiX3MsCi0gICAg
ICAgICAgICBzdGQ6OnJvdW5kKGxpbmVCb3VuZHMuY2VudGVyLngoKSAtIChsaW5lQm91bmRzLnNp
emUud2lkdGgoKSAvIDIpKSwgInB4LCAiX3MsCi0gICAgICAgICAgICBzdGQ6OnJvdW5kKGxpbmVC
b3VuZHMuY2VudGVyLnkoKSAtIChsaW5lQm91bmRzLnNpemUuaGVpZ2h0KCkgLyAyKSksICJweCkg
Il9zLAotICAgICAgICAgICAgbGluZUJvdW5kcy5hbmdsZUluUmFkaWFucyA/IG1ha2VTdHJpbmco
InJvdGF0ZSgiX3MsIGxpbmVCb3VuZHMuYW5nbGVJblJhZGlhbnMsICJyYWQpICJfcykgOiBlbXB0
eVN0cmluZygpCi0gICAgICAgICkpOwotCisgICAgICAgIGF1dG8gbGluZUJvdW5kcyA9IGZpdEVs
ZW1lbnRUb1F1YWQobGluZUNvbnRhaW5lci5nZXQoKSwgbGluZVF1YWQpOwogICAgICAgICBhdXRv
IG9mZnNldEFsb25nSG9yaXpvbnRhbEF4aXMgPSBbJl0oY29uc3QgRmxvYXRQb2ludCYgcXVhZFBv
aW50MSwgY29uc3QgRmxvYXRQb2ludCYgcXVhZFBvaW50MikgewogICAgICAgICAgICAgYXV0byBp
bnRlcnZhbExlbmd0aCA9IGxpbmVCb3VuZHMuc2l6ZS53aWR0aCgpOwogICAgICAgICAgICAgYXV0
byBtaWQgPSBtaWRQb2ludChxdWFkUG9pbnQxLCBxdWFkUG9pbnQyKTsKQEAgLTQ1MSwyMCArNDg5
LDI3IEBAIHZvaWQgdXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChIVE1MRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uCiAgICAgICAgIGlmIChkYXRhRGV0ZWN0b3Iu
bm9ybWFsaXplZFF1YWRzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCisgICAg
ICAgIGF1dG8gZmlyc3RRdWFkID0gZGF0YURldGVjdG9yLm5vcm1hbGl6ZWRRdWFkcy5maXJzdCgp
OworICAgICAgICBpZiAoZmlyc3RRdWFkLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29tZSB1cCB3aXRoIGEgd2F5IHRvIGNv
YWxlc2NlIHRoZSBib3VuZGluZyBxdWFkcyBpbnRvIG9uZSBvciBtb3JlIHJvdGF0ZWQgcmVjdHMg
d2l0aCB0aGUgc2FtZSBhbmdsZSBvZiByb3RhdGlvbi4KLSAgICAgICAgYXV0byB0YXJnZXRRdWFk
ID0gY29udmVydFRvQ29udGFpbmVyQ29vcmRpbmF0ZXMoZGF0YURldGVjdG9yLm5vcm1hbGl6ZWRR
dWFkcy5maXJzdCgpKTsKLSAgICAgICAgYXV0byB0YXJnZXRCb3VuZHMgPSByb3RhdGVkQm91bmRp
bmdSZWN0V2l0aE1pbmltdW1BbmdsZU9mUm90YXRpb24odGFyZ2V0UXVhZCwgMC4wMSk7Ci0gICAg
ICAgIGRhdGFEZXRlY3RvckNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdpZHRoLCB0YXJnZXRCb3VuZHMuc2l6ZS53aWR0aCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BY
KTsKLSAgICAgICAgZGF0YURldGVjdG9yQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5SGVpZ2h0LCB0YXJnZXRCb3VuZHMuc2l6ZS5oZWlnaHQoKSwgQ1NTVW5pdFR5
cGU6OkNTU19QWCk7Ci0gICAgICAgIGRhdGFEZXRlY3RvckNvbnRhaW5lci0+c2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybSwgbWFrZVN0cmluZygKLSAgICAgICAgICAg
ICJ0cmFuc2xhdGUoIl9zLAotICAgICAgICAgICAgc3RkOjpyb3VuZCh0YXJnZXRCb3VuZHMuY2Vu
dGVyLngoKSAtICh0YXJnZXRCb3VuZHMuc2l6ZS53aWR0aCgpIC8gMikpLCAicHgsICJfcywKLSAg
ICAgICAgICAgIHN0ZDo6cm91bmQodGFyZ2V0Qm91bmRzLmNlbnRlci55KCkgLSAodGFyZ2V0Qm91
bmRzLnNpemUuaGVpZ2h0KCkgLyAyKSksICJweCkgIl9zLAotICAgICAgICAgICAgdGFyZ2V0Qm91
bmRzLmFuZ2xlSW5SYWRpYW5zID8gbWFrZVN0cmluZygicm90YXRlKCJfcywgdGFyZ2V0Qm91bmRz
LmFuZ2xlSW5SYWRpYW5zLCAicmFkKSAiX3MpIDogZW1wdHlTdHJpbmcoKQotICAgICAgICApKTsK
KyAgICAgICAgZml0RWxlbWVudFRvUXVhZChkYXRhRGV0ZWN0b3JDb250YWluZXIuZ2V0KCksIGNv
bnZlcnRUb0NvbnRhaW5lckNvb3JkaW5hdGVzKGZpcnN0UXVhZCkpOwogICAgIH0KICNlbmRpZiAv
LyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgcmVzdWx0LmJsb2Nrcy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgYXV0byBibG9j
a0NvbnRhaW5lciA9IGVsZW1lbnRzLmJsb2Nrc1tpbmRleF07CisgICAgICAgIGF1dG8mIGJsb2Nr
ID0gcmVzdWx0LmJsb2Nrc1tpbmRleF07CisgICAgICAgIGlmIChibG9jay5ub3JtYWxpemVkUXVh
ZC5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIGJvdW5k
cyA9IGZpdEVsZW1lbnRUb1F1YWQoYmxvY2tDb250YWluZXIuZ2V0KCksIGNvbnZlcnRUb0NvbnRh
aW5lckNvb3JkaW5hdGVzKGJsb2NrLm5vcm1hbGl6ZWRRdWFkKSk7CisgICAgICAgIC8vIEZJWE1F
OiBXZSdsbCBuZWVkIGEgc21hcnRlciBhbGdvcml0aG0gaGVyZSB0aGF0IGNob29zZXMgdGhlIGxh
cmdlc3QgZm9udCBzaXplIGZvciB0aGUgY29udGFpbmVyIHdpdGhvdXQKKyAgICAgICAgLy8gdmVy
dGljYWxseSBvdmVyZmxvd2luZyB0aGUgY29udGFpbmVyLgorICAgICAgICBibG9ja0NvbnRhaW5l
ci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBzdGQ6OnJvdW5k
KDAuOCAqIGJvdW5kcy5zaXplLmhlaWdodCgpKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAg
fQorCiAgICAgaWYgKFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICBm
cmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2NoZWR1bGVDdXJzb3JVcGRhdGUoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNzcyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MKaW5kZXggNjA0OTUyMjBhMTViZDI1
M2NiYTIzNmVjYTYwN2EwMmFjOTcyNDA4OS4uMDcwMTZiNDI3YjI1NjhkYmJmZjFiNGM5ZjYxOWQ1
MmI0MWVmNjBkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvaW1hZ2VP
dmVybGF5LmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXku
Y3NzCkBAIC0zMCwxOSArMzAsMzUgQEAgZGl2I2ltYWdlLW92ZXJsYXkgewogICAgIGNvbG9yOiB0
cmFuc3BhcmVudDsKICAgICB0ZXh0LXNoYWRvdzogbm9uZTsKICAgICB0ZXh0LWFsaWduOiBjZW50
ZXI7CisgICAgZm9udC1mYW1pbHk6IHN5c3RlbS11aTsKK30KKworZGl2LmltYWdlLW92ZXJsYXkt
bGluZSB7CiAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICBsaW5lLWhlaWdodDogMTAwJTsK
LSAgICBmb250LWZhbWlseTogc3lzdGVtLXVpOwogICAgIGZvbnQtc2l6ZTogMTAyNHB4OyAvKiBU
aGlzIGxhcmdlIGZvbnQgc2l6ZSBpcyBjaG9zZW4gdG8gbWluaW1pemUgZ2FwcyB3aGVuIHBhaW50
aW5nIHNlbGVjdGlvbiBxdWFkcy4gKi8KIH0KIAotZGl2LmltYWdlLW92ZXJsYXktbGluZSwgLmlt
YWdlLW92ZXJsYXktdGV4dCB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIG92ZXJmbG93
OiBoaWRkZW47CitkaXYuaW1hZ2Utb3ZlcmxheS1saW5lLCBkaXYuaW1hZ2Utb3ZlcmxheS1ibG9j
ayB7CisgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiB9CiAKLWRpdi5pbWFnZS1vdmVybGF5LWxp
bmUgewotICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOworZGl2LmltYWdlLW92ZXJsYXktYmxvY2sg
eworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7CisgICAg
Ym9yZGVyLXJhZGl1czogY2FsYyhjbGFtcCgycHgsIDAuMWVtLCAxMnB4KSk7CisgICAgYm94LXNo
YWRvdzogcmdiYSgxMDAsIDEwMCwgMTAwLCAwLjIpIDNweCA0cHggOHB4IDRweDsKKyAgICBjb2xv
cjogcmdiKDkwLCA5MCwgOTApOworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgIGRpc3BsYXk6
IGZsZXg7CisgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CisgICAgYWxpZ24tY29udGVudDog
Y2VudGVyOworICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CisgICAgLXdlYmtpdC1iYWNrZHJv
cC1maWx0ZXI6IGJsdXIoOHB4KTsKK30KKworZGl2LmltYWdlLW92ZXJsYXktbGluZSwgLmltYWdl
LW92ZXJsYXktdGV4dCwgZGl2LmltYWdlLW92ZXJsYXktYmxvY2sgeworICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICBvdmVyZmxvdzogaGlkZGVuOwogfQogCiAuaW1hZ2Utb3ZlcmxheS10ZXh0
OjpzZWxlY3Rpb24gewo=
</data>
<flag name="review"
          id="469156"
          type_id="1"
          status="+"
          setter="akeerthi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444386</attachid>
            <date>2021-11-16 08:09:25 -0800</date>
            <delta_ts>2021-11-16 08:37:14 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-233044-20211116080924.patch</filename>
            <type>text/plain</type>
            <size>14011</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1ODYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDMzMTRkNTUyNTU5NmYy
NDY3YjIyNmYxNThjYTAwNDRlYTIzMmJjOC4uNDlmY2U3N2ZlNWU5OWRhOWQwNTlkNGZiZGU0Y2M1
N2VjMjdhODRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIxLTExLTEyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBpbmplY3RpbmcgYW5kIHJlbmRlcmluZyB0ZXh0IHJlY29nbml0aW9uIGJsb2NrcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDQ0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRpdHlhIEtlZXJ0aGkuCisKKyAgICAgICAgQWRkcyBzdXBwb3J0
IGZvciByZW5kZXJpbmcgdGV4dCByZWNvZ25pdGlvbiBibG9ja3MsIHdoaWNoIGFwcGVhciBhcyBv
cGFxdWUgZGl2IGVsZW1lbnRzIG92ZXIgaW1hZ2VzLiBTZWUgYmVsb3cKKyAgICAgICAgZm9yIG1v
cmUgZGV0YWlsczsgbm8gY2hhbmdlIGluIGJlaGF2aW9yLCBzaW5jZSBub3RoaW5nIGN1cnJlbnRs
eSBnZW5lcmF0ZXMgVGV4dFJlY29nbml0aW9uQmxvY2tEYXRhIHlldC4KKworICAgICAgICAqIGRv
bS9JbWFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5OjppbWFn
ZU92ZXJsYXlEYXRhRGV0ZWN0b3JDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OmltYWdlT3ZlcmxheUJsb2NrQ2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVy
bGF5Ojppc0RhdGFEZXRlY3RvclJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OnVwZGF0ZVN1YnRyZWUpOgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBjcmVhdGluZyB0
ZXh0IHJlY29nbml0aW9uIGJsb2NrIGNvbnRhaW5lcnMgaW4gdGhlIFVBIHNoYWRvdyByb290LCBp
ZiBuZWVkZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheTo6Zml0RWxlbWVudFRv
UXVhZCk6CisKKyAgICAgICAgRmFjdG9yIG91dCBsb2dpYyB0byBhZGp1c3QgdGhlIHdpZHRoLCBo
ZWlnaHQgYW5kIHRyYW5zZm9ybXMgb24gYSBnaXZlbiBlbGVtZW50IHRvIGZpdCB0aGUgZ2l2ZW4g
cXVhZCwgYW5kIHJldHVybgorICAgICAgICByb3RhdGVkIGJvdW5kaW5nIHJlY3QgaW5mbzsgd2Ug
dXNlIHRoaXMgaW4gdGhyZWUgcGxhY2VzIGJlbG93LgorCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZU92ZXJsYXk6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQpOgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBhZGp1c3RpbmcgdGhlIHNpemUgYW5kIHRyYW5zZm9ybXMgb24gZWFjaCBv
ZiB0aGUgYmxvY2sgY29udGFpbmVycyBjcmVhdGVkIGFib3ZlLgorCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZU92ZXJsYXk6OmltYWdlT3ZlcmxheURhdGFEZXRlY3RvckNsYXNzTmFtZSk6IERlbGV0
ZWQuCisKKyAgICAgICAgUmVuYW1lIHRoaXMgdG8ganVzdCBgaW1hZ2VPdmVybGF5RGF0YURldGVj
dG9yQ2xhc3MoKWAgdG8gbWF0Y2ggdGhlIG90aGVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLgor
CisgICAgICAgICogaHRtbC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNzczoKKyAgICAgICAgKGRpdiNp
bWFnZS1vdmVybGF5KToKKyAgICAgICAgKGRpdi5pbWFnZS1vdmVybGF5LWxpbmUpOgorICAgICAg
ICAoZGl2LmltYWdlLW92ZXJsYXktbGluZSwgZGl2LmltYWdlLW92ZXJsYXktYmxvY2spOgorICAg
ICAgICAoZGl2LmltYWdlLW92ZXJsYXktYmxvY2spOgorICAgICAgICAoZGl2LmltYWdlLW92ZXJs
YXktbGluZSwgLmltYWdlLW92ZXJsYXktdGV4dCk6CisKIDIwMjEtMTEtMTYgIEFuZHJldSBCb3Rl
bGxhICA8YW5kcmV1QGFuZHJldWJvdGVsbGEuY29tPgogCiAgICAgICAgIEVtcHR5IDxpbnB1dCB0
eXBlPWZpbGU+IGlzIHJlcHJlc2VudGVkIGluY29ycmVjdGx5IGluIEZvcm1EYXRhCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9JbWFnZU92ZXJsYXkuY3BwCmluZGV4IGZlOWZkMTVkNjVjMjlhOTRjZGQxZWE0MDUyMDgw
YjFjNjRlMWFlM2QuLmY4YTlhOWRkMGJiYzE1MmJjZTVjMzcyNGQ3MjkwNDM4ZTYzYjMyYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBj
b25zdCBBdG9tU3RyaW5nJiBpbWFnZU92ZXJsYXlFbGVtZW50SWRlbnRpZmllcigpCiAgICAgcmV0
dXJuIGlkZW50aWZpZXI7CiB9CiAKLXN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbWFnZU92ZXJs
YXlEYXRhRGV0ZWN0b3JDbGFzc05hbWUoKQorc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGltYWdl
T3ZlcmxheURhdGFEZXRlY3RvckNsYXNzKCkKIHsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGNsYXNzTmFtZSgiaW1hZ2Utb3ZlcmxheS1kYXRh
LWRldGVjdG9yLXJlc3VsdCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICByZXR1cm4gY2xhc3NOYW1lOwpAQCAtODMsNiArODMsMTIgQEAgc3RhdGljIGNvbnN0IEF0b21T
dHJpbmcmIGltYWdlT3ZlcmxheVRleHRDbGFzcygpCiAgICAgcmV0dXJuIGNsYXNzTmFtZTsKIH0K
IAorc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGltYWdlT3ZlcmxheUJsb2NrQ2xhc3MoKQorewor
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY2xh
c3NOYW1lKCJpbWFnZS1vdmVybGF5LWJsb2NrIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgIHJldHVybiBjbGFzc05hbWU7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoSU1B
R0VfQU5BTFlTSVMpCiAKIGJvb2wgaGFzT3ZlcmxheShjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVu
dCkKQEAgLTEwNiw3ICsxMTIsNyBAQCBzdGF0aWMgUmVmUHRyPEhUTUxFbGVtZW50PiBpbWFnZU92
ZXJsYXlIb3N0KGNvbnN0IE5vZGUmIG5vZGUpCiAKIGJvb2wgaXNEYXRhRGV0ZWN0b3JSZXN1bHQo
Y29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIGltYWdlT3ZlcmxheUhv
c3QoZWxlbWVudCkgJiYgZWxlbWVudC5oYXNDbGFzcygpICYmIGVsZW1lbnQuY2xhc3NOYW1lcygp
LmNvbnRhaW5zKGltYWdlT3ZlcmxheURhdGFEZXRlY3RvckNsYXNzTmFtZSgpKTsKKyAgICByZXR1
cm4gaW1hZ2VPdmVybGF5SG9zdChlbGVtZW50KSAmJiBlbGVtZW50Lmhhc0NsYXNzKCkgJiYgZWxl
bWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoaW1hZ2VPdmVybGF5RGF0YURldGVjdG9yQ2xhc3Mo
KSk7CiB9CiAKIGJvb2wgaXNJbnNpZGVPdmVybGF5KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkK
QEAgLTE5MSw2ICsxOTcsNyBAQCBzdHJ1Y3QgRWxlbWVudHMgewogICAgIFJlZlB0cjxIVE1MRGl2
RWxlbWVudD4gcm9vdDsKICAgICBWZWN0b3I8TGluZUVsZW1lbnRzPiBsaW5lczsKICAgICBWZWN0
b3I8UmVmPEhUTUxEaXZFbGVtZW50Pj4gZGF0YURldGVjdG9yczsKKyAgICBWZWN0b3I8UmVmPEhU
TUxEaXZFbGVtZW50Pj4gYmxvY2tzOwogfTsKIAogc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRy
ZWUoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYgcmVz
dWx0KQpAQCAtMjI5LDE3ICsyMzYsMjYgQEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUo
SFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICB9
CiAKICAgICBpZiAoZWxlbWVudHMucm9vdCkgewotICAgICAgICBmb3IgKGF1dG8mIGxpbmVPckRh
dGFEZXRlY3RvciA6IGNoaWxkcmVuT2ZUeXBlPEhUTUxEaXZFbGVtZW50PigqZWxlbWVudHMucm9v
dCkpIHsKLSAgICAgICAgICAgIGlmICghbGluZU9yRGF0YURldGVjdG9yLmhhc0NsYXNzKCkpCisg
ICAgICAgIGZvciAoYXV0byYgY2hpbGRFbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8SFRNTERpdkVs
ZW1lbnQ+KCplbGVtZW50cy5yb290KSkgeworICAgICAgICAgICAgaWYgKCFjaGlsZEVsZW1lbnQu
aGFzQ2xhc3MoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgYXV0
byYgY2xhc3NlcyA9IGNoaWxkRWxlbWVudC5jbGFzc0xpc3QoKTsKKyAgICAgICAgICAgIGlmIChj
bGFzc2VzLmNvbnRhaW5zKGltYWdlT3ZlcmxheURhdGFEZXRlY3RvckNsYXNzKCkpKSB7CisgICAg
ICAgICAgICAgICAgZWxlbWVudHMuZGF0YURldGVjdG9ycy5hcHBlbmQoY2hpbGRFbGVtZW50KTsK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKGNsYXNzZXMuY29udGFpbnMoaW1hZ2VPdmVybGF5QmxvY2tDbGFzcygpKSkgeworICAgICAg
ICAgICAgICAgIGVsZW1lbnRzLmJsb2Nrcy5hcHBlbmQoY2hpbGRFbGVtZW50KTsKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGxpbmVP
ckRhdGFEZXRlY3Rvci5jbGFzc0xpc3QoKS5jb250YWlucyhpbWFnZU92ZXJsYXlMaW5lQ2xhc3Mo
KSkpIHsKLSAgICAgICAgICAgICAgICBMaW5lRWxlbWVudHMgbGluZUVsZW1lbnRzIHsgbGluZU9y
RGF0YURldGVjdG9yLCB7IH0gfTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHRleHQgOiBj
aGlsZHJlbk9mVHlwZTxIVE1MRGl2RWxlbWVudD4obGluZU9yRGF0YURldGVjdG9yKSkKLSAgICAg
ICAgICAgICAgICAgICAgbGluZUVsZW1lbnRzLmNoaWxkcmVuLmFwcGVuZCh0ZXh0KTsKLSAgICAg
ICAgICAgICAgICBlbGVtZW50cy5saW5lcy5hcHBlbmQoV1RGTW92ZShsaW5lRWxlbWVudHMpKTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAobGluZU9yRGF0YURldGVjdG9yLmNsYXNzTGlzdCgpLmNv
bnRhaW5zKGltYWdlT3ZlcmxheURhdGFEZXRlY3RvckNsYXNzTmFtZSgpKSkKLSAgICAgICAgICAg
ICAgICBlbGVtZW50cy5kYXRhRGV0ZWN0b3JzLmFwcGVuZChsaW5lT3JEYXRhRGV0ZWN0b3IpOwor
ICAgICAgICAgICAgQVNTRVJUKGNsYXNzZXMuY29udGFpbnMoaW1hZ2VPdmVybGF5TGluZUNsYXNz
KCkpKTsKKyAgICAgICAgICAgIExpbmVFbGVtZW50cyBsaW5lRWxlbWVudHMgeyBjaGlsZEVsZW1l
bnQsIHsgfSB9OworICAgICAgICAgICAgZm9yIChhdXRvJiB0ZXh0IDogY2hpbGRyZW5PZlR5cGU8
SFRNTERpdkVsZW1lbnQ+KGNoaWxkRWxlbWVudCkpCisgICAgICAgICAgICAgICAgbGluZUVsZW1l
bnRzLmNoaWxkcmVuLmFwcGVuZCh0ZXh0KTsKKyAgICAgICAgICAgIGVsZW1lbnRzLmxpbmVzLmFw
cGVuZChXVEZNb3ZlKGxpbmVFbGVtZW50cykpOwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBj
YW5Vc2VFeGlzdGluZ0VsZW1lbnRzID0gKFsmXSB7CkBAIC0yNDksNiArMjY1LDkgQEAgc3RhdGlj
IEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRS
ZWNvZ25pdGlvblJlc3VsdCYKICAgICAgICAgICAgIGlmIChyZXN1bHQubGluZXMuc2l6ZSgpICE9
IGVsZW1lbnRzLmxpbmVzLnNpemUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICAgICAgICAgIGlmIChyZXN1bHQuYmxvY2tzLnNpemUoKSAhPSBlbGVtZW50cy5ibG9ja3Mu
c2l6ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgICAgICAgZm9y
IChzaXplX3QgbGluZUluZGV4ID0gMDsgbGluZUluZGV4IDwgcmVzdWx0LmxpbmVzLnNpemUoKTsg
KytsaW5lSW5kZXgpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBjaGlsZFJlc3VsdHMgPSByZXN1
bHQubGluZXNbbGluZUluZGV4XS5jaGlsZHJlbjsKICAgICAgICAgICAgICAgICBhdXRvJiBjaGls
ZFRleHRFbGVtZW50cyA9IGVsZW1lbnRzLmxpbmVzW2xpbmVJbmRleF0uY2hpbGRyZW47CkBAIC0y
NjEsNiArMjgwLDExIEBAIHN0YXRpYyBFbGVtZW50cyB1cGRhdGVTdWJ0cmVlKEhUTUxFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmCiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgcmVzdWx0LmJsb2Nrcy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0LmJsb2Nrc1tpbmRleF0udGV4dCAhPSBlbGVtZW50cy5ibG9ja3NbaW5kZXhdLT50
ZXh0Q29udGVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9CisKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9KSgpOwogCkBAIC0z
MTAsMTIgKzMzNCwyMSBAQCBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JgogICAgICAgICBlbGVtZW50
cy5kYXRhRGV0ZWN0b3JzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVzdWx0LmRhdGFEZXRlY3Rv
cnMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBkYXRhRGV0ZWN0b3IgOiByZXN1bHQuZGF0
YURldGVjdG9ycykgewogICAgICAgICAgICAgYXV0byBkYXRhRGV0ZWN0b3JDb250YWluZXIgPSBE
YXRhRGV0ZWN0aW9uOjpjcmVhdGVFbGVtZW50Rm9ySW1hZ2VPdmVybGF5KGRvY3VtZW50LmdldCgp
LCBkYXRhRGV0ZWN0b3IpOwotICAgICAgICAgICAgZGF0YURldGVjdG9yQ29udGFpbmVyLT5jbGFz
c0xpc3QoKS5hZGQoaW1hZ2VPdmVybGF5RGF0YURldGVjdG9yQ2xhc3NOYW1lKCkpOworICAgICAg
ICAgICAgZGF0YURldGVjdG9yQ29udGFpbmVyLT5jbGFzc0xpc3QoKS5hZGQoaW1hZ2VPdmVybGF5
RGF0YURldGVjdG9yQ2xhc3MoKSk7CiAgICAgICAgICAgICByb290Q29udGFpbmVyLT5hcHBlbmRD
aGlsZChkYXRhRGV0ZWN0b3JDb250YWluZXIpOwogICAgICAgICAgICAgZWxlbWVudHMuZGF0YURl
dGVjdG9ycy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShkYXRhRGV0ZWN0b3JDb250YWluZXIpKTsK
ICAgICAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShEQVRBX0RFVEVDVElPTikKIAorICAgICAgICBl
bGVtZW50cy5ibG9ja3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZXN1bHQuYmxvY2tzLnNpemUo
KSk7CisgICAgICAgIGZvciAoYXV0byYgYmxvY2sgOiByZXN1bHQuYmxvY2tzKSB7CisgICAgICAg
ICAgICBhdXRvIGJsb2NrQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dC5nZXQoKSk7CisgICAgICAgICAgICBibG9ja0NvbnRhaW5lci0+Y2xhc3NMaXN0KCkuYWRkKGlt
YWdlT3ZlcmxheUJsb2NrQ2xhc3MoKSk7CisgICAgICAgICAgICByb290Q29udGFpbmVyLT5hcHBl
bmRDaGlsZChibG9ja0NvbnRhaW5lcik7CisgICAgICAgICAgICBibG9ja0NvbnRhaW5lci0+YXBw
ZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpLCBtYWtlU3RyaW5nKCdcbicsIGJs
b2NrLnRleHQpKSk7CisgICAgICAgICAgICBlbGVtZW50cy5ibG9ja3MudW5jaGVja2VkQXBwZW5k
KFdURk1vdmUoYmxvY2tDb250YWluZXIpKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChkb2N1
bWVudC0+cXVpcmtzKCkubmVlZHNUb0ZvcmNlVXNlclNlbGVjdFdoZW5JbnN0YWxsaW5nSW1hZ2VP
dmVybGF5KCkpCiAgICAgICAgICAgICBlbGVtZW50LnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCBDU1NWYWx1ZVRleHQpOwogICAgIH0KQEAgLTMzMCw2
ICszNjMsMjAgQEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICByZXR1cm4gZWxlbWVudHM7
CiB9CiAKK3N0YXRpYyBSb3RhdGVkUmVjdCBmaXRFbGVtZW50VG9RdWFkKEhUTUxFbGVtZW50JiBj
b250YWluZXIsIGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKK3sKKyAgICBhdXRvIGJvdW5kcyA9IHJv
dGF0ZWRCb3VuZGluZ1JlY3RXaXRoTWluaW11bUFuZ2xlT2ZSb3RhdGlvbihxdWFkLCAwLjAxKTsK
KyAgICBjb250YWluZXIuc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBi
b3VuZHMuc2l6ZS53aWR0aCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICBjb250YWluZXIu
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgYm91bmRzLnNpemUuaGVp
Z2h0KCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgIGNvbnRhaW5lci5zZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtLCBtYWtlU3RyaW5nKAorICAgICAgICAidHJh
bnNsYXRlKCJfcywKKyAgICAgICAgc3RkOjpyb3VuZChib3VuZHMuY2VudGVyLngoKSAtIChib3Vu
ZHMuc2l6ZS53aWR0aCgpIC8gMikpLCAicHgsICJfcywKKyAgICAgICAgc3RkOjpyb3VuZChib3Vu
ZHMuY2VudGVyLnkoKSAtIChib3VuZHMuc2l6ZS5oZWlnaHQoKSAvIDIpKSwgInB4KSAiX3MsCisg
ICAgICAgIGJvdW5kcy5hbmdsZUluUmFkaWFucyA/IG1ha2VTdHJpbmcoInJvdGF0ZSgiX3MsIGJv
dW5kcy5hbmdsZUluUmFkaWFucywgInJhZCkgIl9zKSA6IGVtcHR5U3RyaW5nKCkKKyAgICApKTsK
KyAgICByZXR1cm4gYm91bmRzOworfQorCiB2b2lkIHVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25S
ZXN1bHQoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYg
cmVzdWx0LCBDYWNoZVRleHRSZWNvZ25pdGlvblJlc3VsdHMgY2FjaGVUZXh0UmVjb2duaXRpb25S
ZXN1bHRzKQogewogICAgIGF1dG8gZWxlbWVudHMgPSB1cGRhdGVTdWJ0cmVlKGVsZW1lbnQsIHJl
c3VsdCk7CkBAIC0zNjIsMTYgKzQwOSw3IEBAIHZvaWQgdXBkYXRlV2l0aFRleHRSZWNvZ25pdGlv
blJlc3VsdChIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uCiAgICAg
ICAgIGlmIChsaW5lUXVhZC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBhdXRvIGxpbmVCb3VuZHMgPSByb3RhdGVkQm91bmRpbmdSZWN0V2l0aE1pbmltdW1Bbmds
ZU9mUm90YXRpb24obGluZVF1YWQsIDAuMDEpOwotICAgICAgICBsaW5lQ29udGFpbmVyLT5zZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIGxpbmVCb3VuZHMuc2l6ZS53aWR0
aCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKLSAgICAgICAgbGluZUNvbnRhaW5lci0+c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgbGluZUJvdW5kcy5zaXplLmhlaWdo
dCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKLSAgICAgICAgbGluZUNvbnRhaW5lci0+c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybSwgbWFrZVN0cmluZygKLSAgICAg
ICAgICAgICJ0cmFuc2xhdGUoIl9zLAotICAgICAgICAgICAgc3RkOjpyb3VuZChsaW5lQm91bmRz
LmNlbnRlci54KCkgLSAobGluZUJvdW5kcy5zaXplLndpZHRoKCkgLyAyKSksICJweCwgIl9zLAot
ICAgICAgICAgICAgc3RkOjpyb3VuZChsaW5lQm91bmRzLmNlbnRlci55KCkgLSAobGluZUJvdW5k
cy5zaXplLmhlaWdodCgpIC8gMikpLCAicHgpICJfcywKLSAgICAgICAgICAgIGxpbmVCb3VuZHMu
YW5nbGVJblJhZGlhbnMgPyBtYWtlU3RyaW5nKCJyb3RhdGUoIl9zLCBsaW5lQm91bmRzLmFuZ2xl
SW5SYWRpYW5zLCAicmFkKSAiX3MpIDogZW1wdHlTdHJpbmcoKQotICAgICAgICApKTsKLQorICAg
ICAgICBhdXRvIGxpbmVCb3VuZHMgPSBmaXRFbGVtZW50VG9RdWFkKGxpbmVDb250YWluZXIuZ2V0
KCksIGxpbmVRdWFkKTsKICAgICAgICAgYXV0byBvZmZzZXRBbG9uZ0hvcml6b250YWxBeGlzID0g
WyZdKGNvbnN0IEZsb2F0UG9pbnQmIHF1YWRQb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHF1YWRQ
b2ludDIpIHsKICAgICAgICAgICAgIGF1dG8gaW50ZXJ2YWxMZW5ndGggPSBsaW5lQm91bmRzLnNp
emUud2lkdGgoKTsKICAgICAgICAgICAgIGF1dG8gbWlkID0gbWlkUG9pbnQocXVhZFBvaW50MSwg
cXVhZFBvaW50Mik7CkBAIC00NTEsMjAgKzQ4OSwyOCBAQCB2b2lkIHVwZGF0ZVdpdGhUZXh0UmVj
b2duaXRpb25SZXN1bHQoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlv
bgogICAgICAgICBpZiAoZGF0YURldGVjdG9yLm5vcm1hbGl6ZWRRdWFkcy5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAorICAgICAgICBhdXRvIGZpcnN0UXVhZCA9IGRhdGFEZXRl
Y3Rvci5ub3JtYWxpemVkUXVhZHMuZmlyc3QoKTsKKyAgICAgICAgaWYgKGZpcnN0UXVhZC5pc0Vt
cHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGNvbWUgdXAgd2l0aCBhIHdheSB0byBjb2FsZXNjZSB0aGUgYm91bmRpbmcgcXVhZHMgaW50
byBvbmUgb3IgbW9yZSByb3RhdGVkIHJlY3RzIHdpdGggdGhlIHNhbWUgYW5nbGUgb2Ygcm90YXRp
b24uCi0gICAgICAgIGF1dG8gdGFyZ2V0UXVhZCA9IGNvbnZlcnRUb0NvbnRhaW5lckNvb3JkaW5h
dGVzKGRhdGFEZXRlY3Rvci5ub3JtYWxpemVkUXVhZHMuZmlyc3QoKSk7Ci0gICAgICAgIGF1dG8g
dGFyZ2V0Qm91bmRzID0gcm90YXRlZEJvdW5kaW5nUmVjdFdpdGhNaW5pbXVtQW5nbGVPZlJvdGF0
aW9uKHRhcmdldFF1YWQsIDAuMDEpOwotICAgICAgICBkYXRhRGV0ZWN0b3JDb250YWluZXItPnNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgdGFyZ2V0Qm91bmRzLnNpemUu
d2lkdGgoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7Ci0gICAgICAgIGRhdGFEZXRlY3RvckNvbnRh
aW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgdGFyZ2V0Qm91
bmRzLnNpemUuaGVpZ2h0KCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOwotICAgICAgICBkYXRhRGV0
ZWN0b3JDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zv
cm0sIG1ha2VTdHJpbmcoCi0gICAgICAgICAgICAidHJhbnNsYXRlKCJfcywKLSAgICAgICAgICAg
IHN0ZDo6cm91bmQodGFyZ2V0Qm91bmRzLmNlbnRlci54KCkgLSAodGFyZ2V0Qm91bmRzLnNpemUu
d2lkdGgoKSAvIDIpKSwgInB4LCAiX3MsCi0gICAgICAgICAgICBzdGQ6OnJvdW5kKHRhcmdldEJv
dW5kcy5jZW50ZXIueSgpIC0gKHRhcmdldEJvdW5kcy5zaXplLmhlaWdodCgpIC8gMikpLCAicHgp
ICJfcywKLSAgICAgICAgICAgIHRhcmdldEJvdW5kcy5hbmdsZUluUmFkaWFucyA/IG1ha2VTdHJp
bmcoInJvdGF0ZSgiX3MsIHRhcmdldEJvdW5kcy5hbmdsZUluUmFkaWFucywgInJhZCkgIl9zKSA6
IGVtcHR5U3RyaW5nKCkKLSAgICAgICAgKSk7CisgICAgICAgIGZpdEVsZW1lbnRUb1F1YWQoZGF0
YURldGVjdG9yQ29udGFpbmVyLmdldCgpLCBjb252ZXJ0VG9Db250YWluZXJDb29yZGluYXRlcyhm
aXJzdFF1YWQpKTsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKERBVEFfREVURUNUSU9OKQogCisg
ICAgQVNTRVJUKHJlc3VsdC5ibG9ja3Muc2l6ZSgpID09IGVsZW1lbnRzLmJsb2Nrcy5zaXplKCkp
OworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCByZXN1bHQuYmxvY2tzLnNpemUo
KTsgKytpbmRleCkgeworICAgICAgICBhdXRvJiBibG9jayA9IHJlc3VsdC5ibG9ja3NbaW5kZXhd
OworICAgICAgICBpZiAoYmxvY2subm9ybWFsaXplZFF1YWQuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBibG9ja0NvbnRhaW5lciA9IGVsZW1lbnRzLmJs
b2Nrc1tpbmRleF07CisgICAgICAgIGF1dG8gYm91bmRzID0gZml0RWxlbWVudFRvUXVhZChibG9j
a0NvbnRhaW5lci5nZXQoKSwgY29udmVydFRvQ29udGFpbmVyQ29vcmRpbmF0ZXMoYmxvY2subm9y
bWFsaXplZFF1YWQpKTsKKyAgICAgICAgLy8gRklYTUU6IFdlJ2xsIG5lZWQgYSBzbWFydGVyIGFs
Z29yaXRobSBoZXJlIHRoYXQgY2hvb3NlcyB0aGUgbGFyZ2VzdCBmb250IHNpemUgZm9yIHRoZSBj
b250YWluZXIgd2l0aG91dAorICAgICAgICAvLyB2ZXJ0aWNhbGx5IG92ZXJmbG93aW5nIHRoZSBj
b250YWluZXIuCisgICAgICAgIGJsb2NrQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5Rm9udFNpemUsIHN0ZDo6cm91bmQoMC44ICogYm91bmRzLnNpemUuaGVpZ2h0
KCkpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICB9CisKICAgICBpZiAoUmVmUHRyIGZyYW1l
ID0gZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5zY2hl
ZHVsZUN1cnNvclVwZGF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9pbWFnZU92ZXJsYXkuY3NzIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvaW1hZ2VP
dmVybGF5LmNzcwppbmRleCA2MDQ5NTIyMGExNWJkMjUzY2JhMjM2ZWNhNjA3YTAyYWM5NzI0MDg5
Li4wNzAxNmI0MjdiMjU2OGRiYmZmMWI0YzlmNjE5ZDUyYjQxZWY2MGRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MKQEAgLTMwLDE5ICszMCwzNSBAQCBk
aXYjaW1hZ2Utb3ZlcmxheSB7CiAgICAgY29sb3I6IHRyYW5zcGFyZW50OwogICAgIHRleHQtc2hh
ZG93OiBub25lOwogICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICBmb250LWZhbWlseTogc3lz
dGVtLXVpOworfQorCitkaXYuaW1hZ2Utb3ZlcmxheS1saW5lIHsKICAgICB3aGl0ZS1zcGFjZTog
bm93cmFwOwogICAgIGxpbmUtaGVpZ2h0OiAxMDAlOwotICAgIGZvbnQtZmFtaWx5OiBzeXN0ZW0t
dWk7CiAgICAgZm9udC1zaXplOiAxMDI0cHg7IC8qIFRoaXMgbGFyZ2UgZm9udCBzaXplIGlzIGNo
b3NlbiB0byBtaW5pbWl6ZSBnYXBzIHdoZW4gcGFpbnRpbmcgc2VsZWN0aW9uIHF1YWRzLiAqLwog
fQogCi1kaXYuaW1hZ2Utb3ZlcmxheS1saW5lLCAuaW1hZ2Utb3ZlcmxheS10ZXh0IHsKLSAgICBw
b3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKK2Rpdi5pbWFnZS1vdmVy
bGF5LWxpbmUsIGRpdi5pbWFnZS1vdmVybGF5LWJsb2NrIHsKKyAgICBwb2ludGVyLWV2ZW50czog
YXV0bzsKIH0KIAotZGl2LmltYWdlLW92ZXJsYXktbGluZSB7Ci0gICAgcG9pbnRlci1ldmVudHM6
IGF1dG87CitkaXYuaW1hZ2Utb3ZlcmxheS1ibG9jayB7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTsKKyAgICBib3JkZXItcmFkaXVzOiBjYWxjKGNsYW1w
KDJweCwgMC4xZW0sIDEycHgpKTsKKyAgICBib3gtc2hhZG93OiByZ2JhKDEwMCwgMTAwLCAxMDAs
IDAuMikgM3B4IDRweCA4cHggNHB4OworICAgIGNvbG9yOiByZ2IoOTAsIDkwLCA5MCk7CisgICAg
Zm9udC13ZWlnaHQ6IGJvbGQ7CisgICAgZGlzcGxheTogZmxleDsKKyAgICBqdXN0aWZ5LWNvbnRl
bnQ6IGNlbnRlcjsKKyAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CisgICAgZmxleC1kaXJlY3Rp
b246IGNvbHVtbjsKKyAgICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpOworfQor
CitkaXYuaW1hZ2Utb3ZlcmxheS1saW5lLCAuaW1hZ2Utb3ZlcmxheS10ZXh0LCBkaXYuaW1hZ2Ut
b3ZlcmxheS1ibG9jayB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIG92ZXJmbG93OiBo
aWRkZW47CiB9CiAKIC5pbWFnZS1vdmVybGF5LXRleHQ6OnNlbGVjdGlvbiB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>