<?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>237127</bug_id>
          
          <creation_ts>2022-02-23 20:48:17 -0800</creation_ts>
          <short_desc>Refactor logic for showing &quot;Markup Image&quot; and Quick Note items in the callout bar</short_desc>
          <delta_ts>2022-02-24 12:15:04 -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>hi</cc>
    
    <cc>katherine_cheney</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>1845496</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-23 20:48:17 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845497</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-23 20:48:33 -0800</bug_when>
    <thetext>&lt;rdar://problem/89396617&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845499</commentid>
    <comment_count>2</comment_count>
      <attachid>453068</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-23 21:12:26 -0800</bug_when>
    <thetext>Created attachment 453068
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845612</commentid>
    <comment_count>3</comment_count>
      <attachid>453068</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2022-02-24 08:11:58 -0800</bug_when>
    <thetext>Comment on attachment 453068
For EWS

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKContentViewEditingActions.mm:96
&gt; +    EXPECT_FALSE([menuBuilder containsActionWithTitle:WebCore::contextMenuItemTagAddHighlightToNewQuickNote()]);

You should still test for both App Highlight menu items. If things change around the logic for which item to show when, it&apos;s unlikely that this test would be updated as a part of that. So, best to just do it now.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKContentViewEditingActions.mm:104
&gt; +    EXPECT_TRUE([menuBuilder containsActionWithTitle:WebCore::contextMenuItemTagAddHighlightToNewQuickNote()]);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845628</commentid>
    <comment_count>4</comment_count>
      <attachid>453068</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-24 09:09:14 -0800</bug_when>
    <thetext>Comment on attachment 453068
For EWS

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

Thanks for the review!

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKContentViewEditingActions.mm:96
&gt;&gt; +    EXPECT_FALSE([menuBuilder containsActionWithTitle:WebCore::contextMenuItemTagAddHighlightToNewQuickNote()]);
&gt; 
&gt; You should still test for both App Highlight menu items. If things change around the logic for which item to show when, it&apos;s unlikely that this test would be updated as a part of that. So, best to just do it now.

Sounds good — I&apos;ll add checks to verify that the &quot;Add to existing Quick Note&quot; items are not also present in either case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845642</commentid>
    <comment_count>5</comment_count>
      <attachid>453109</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-24 09:33:48 -0800</bug_when>
    <thetext>Created attachment 453109
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845706</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-24 12:15:00 -0800</bug_when>
    <thetext>Committed r290450 (247752@main): &lt;https://commits.webkit.org/247752@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453109.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453068</attachid>
            <date>2022-02-23 21:12:26 -0800</date>
            <delta_ts>2022-02-24 08:11:58 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-237127-20220223211225.patch</filename>
            <type>text/plain</type>
            <size>35040</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNhZjI1N2RlNGQ4YzlmZmYw
ZWQzMjJhNDRlMTc4MGUwZTkyMjg3NjcuLjNkYmFhMDE1ZTBkOTBmOTQwOTM4NWI1NzUwZmIwNDJj
YzQ2ZDZiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMjItMDItMjMgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgbG9naWMg
Zm9yIHNob3dpbmcgIk1hcmt1cCBJbWFnZSIgYW5kIFF1aWNrIE5vdGUgaXRlbXMgaW4gdGhlIGNh
bGxvdXQgYmFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzcxMjcKKyAgICAgICAgcmRhcjovLzg5Mzk2NjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGAtYnVpbGRNZW51V2l0aEJ1aWxkZXI6YCB0
byBzdXBwbHkgYWRkaXRpb25hbCBRdWljayBOb3RlIGFuZCBpbWFnZSBhbmFseXNpcyBpdGVtcywg
aW5zdGVhZCBvZiBhZGRpbmcgdGhlbQorICAgICAgICBkaXJlY3RseSB0byB0aGUgc2hhcmVkIG1l
bnUgY29udHJvbGxlci4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgVGVz
dHM6ICBJbWFnZUFuYWx5c2lzVGVzdHMuTWVudUNvbnRyb2xsZXJJdGVtcworICAgICAgICAgICAg
ICAgIFdlYktpdC5BcHBIaWdobGlnaHRzSW5JbWFnZU92ZXJsYXlzCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBkaWRN
b3ZlVG9XaW5kb3ddKToKKworICAgICAgICBTZWUgYmVsb3cuCisKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGJ1aWxkTWVudVdpdGhCdWlsZGVyOl0pOgorCisgICAgICAgIE92ZXJyaWRlIHRoaXMgbWV0
aG9kIGFuZCBjYWxsIGludG8gdGhlIGNvbnRlbnQgdmlldyB2aWEgYC1idWlsZE1lbnVGb3JXZWJW
aWV3V2l0aEJ1aWxkZXI6YCB0byBwb3B1bGF0ZSB0aGUgZ2l2ZW4KKyAgICAgICAgYnVpbGRlciB3
aXRoIGVpdGhlciBRdWljayBOb3RlIG9yICJNYXJrdXAgSW1hZ2UiIGl0ZW1zLCBpZiBuZWNlc3Nh
cnkuIE5vdGUgdGhhdCBvdmVycmlkaW5nIHRoaXMgbWV0aG9kIG9uCisgICAgICAgIFdLV2ViVmll
dyBpcyBzdWZmaWNpZW50LCBzaW5jZSBVSUtpdCB3YWxrcyB1cCB0aGUgcmVzcG9uZGVyIGhpZXJh
cmNoeSBzdGFydGluZyBmcm9tIHRoZSBmaXJzdCByZXNwb25kZXIKKyAgICAgICAgKFdLQ29udGVu
dFZpZXcpIHdoZW4gcG9wdWxhdGluZyBtZW51IGl0ZW1zLgorCisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB0
YXJnZXRGb3JBY3Rpb246d2l0aFNlbmRlcjpdKToKKworICAgICAgICBNb3ZlIHNvbWUgbG9naWMg
Zm9yIGNvbmRpdGlvbmFsbHkgZW5hYmxpbmcgdGhlIFF1aWNrIE5vdGUgaXRlbXMgaW50byBgLWlt
YWdlQW5hbHlzaXNNYXJrdXBNZW51YC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGltYWdl
QW5hbHlzaXNNYXJrdXBNZW51XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NlbGVjdGlv
bkNoYW5nZWRdKToKKworICAgICAgICBSZW1vdmUgbG9naWMgdGhhdCB1cGRhdGVzIHRoZSBzaGFy
ZWQgVUlNZW51Q29udHJvbGxlcidzIG1lbnUgaXRlbXMgZXZlcnkgdGltZSB0aGUgc2VsZWN0aW9u
IGNoYW5nZXMuIFRoaXMgaXMKKyAgICAgICAgbm8gbG9uZ2VyIG5lZWRlZCwgc2luY2UgVUlLaXQg
d2lsbCBhbHdheXMgY2FsbCBpbnRvIGAtYnVpbGRNZW51V2l0aEJ1aWxkZXI6YCB3aGVuIHByZXNl
bnRpbmcgdGhlIGNhbGxvdXQgYmFyLAorICAgICAgICB3aGljaCBhbGxvd3MgdXMgdG8gbGF6aWx5
IHJ1biBsb2dpYyB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIHNob3cgdGhl
IFF1aWNrIE5vdGUgYW5kIGltYWdlIGFuYWx5c2lzCisgICAgICAgIGl0ZW1zIHdoZW4gdGhlIGNh
bGxvdXQgYmFyIGlzIHNob3duLCBpbnN0ZWFkIG9mIGtlZXBpbmcgdGhlIG1lbnUgY29udHJvbGxl
cidzIGAtbWVudUl0ZW1zYCBhcnJheSB1cCB0byBkYXRlIHVwb24KKyAgICAgICAgZWFjaCBzZWxl
Y3Rpb24gY2hhbmdlLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYnVpbGRNZW51Rm9yV2Vi
Vmlld1dpdGhCdWlsZGVyOl0pOgorCisgICAgICAgIENvbnN1bHQgYC1hcHBIaWdobGlnaHRNZW51
YCBhbmQgYC1pbWFnZUFuYWx5c2lzTWFya3VwTWVudWAgdG8gcG9wdWxhdGUgdGhlIG1lbnUgd2l0
aCBpbmxpbmUgVUlNZW51cy4gTm90ZSB0aGF0CisgICAgICAgIHRoZXNlIG1lbnVzJyBpdGVtcyBh
cmUgYWx3YXlzIGlubGluZWQgaW50byB0aGUgY2FsbG91dCBiYXIgYXMgdG9wLWxldmVsIGl0ZW1z
LCBzaW5jZSB3ZSBleHBsaWNpdGx5IHNwZWNpZnkKKyAgICAgICAgYFVJTWVudU9wdGlvbnNEaXNw
bGF5SW5saW5lYCB3aGVuIGNyZWF0aW5nIHRoZSBtZW51LgorCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgbWVudVdpdGhJbmxpbmVBY3Rpb246aWRlbnRpZmllcjpoYW5kbGVyOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGFwcEhpZ2hsaWdodE1lbnVdKToKKworICAgICAgICBSZWZhY3Rv
ciB0aGlzLCBhbmQgYC1pbWFnZUFuYWx5c2lzTWFya3VwTWVudWAgYWJvdmUgdG8gcmV0dXJuIGEg
VUlNZW51IHdpdGggYSBzaW5nbGUgVUlBY3Rpb24gcHJlc2VudGVkIGlubGluZS4KKworICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IHVwZGF0ZUltYWdlQW5hbHlzaXNNYXJrdXBNZW51SXRlbXM6XSk6
IERlbGV0ZWQuCisKKyAgICAgICAgUmVwbGFjZWQgd2l0aCBgLWltYWdlQW5hbHlzaXNNYXJrdXBN
ZW51YC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNhblBlcmZvcm1JbWFnZUFuYWx5c2lz
TWFya3VwXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcGVyZm9ybUltYWdl
QW5hbHlzaXNNYXJrdXA6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0
VXBBZGRpdGlvbmFsTWVudUNvbnRyb2xsZXJBY3Rpb25zXSk6IERlbGV0ZWQuCisgICAgICAgIChm
aW5kTWVudUl0ZW1XaXRoQWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyB1cGRhdGVBcHBIaWdobGlnaHRNZW51SXRlbXM6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVw
bGFjZWQgd2l0aCBgLWFwcEhpZ2hsaWdodE1lbnVgLgorCisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgY3JlYXRlSGlnaGxpZ2h0Rm9yQ3VycmVudFF1aWNrTm90ZVdpdGhSYW5nZTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjcmVhdGVIaWdobGlnaHRGb3JOZXdRdWlja05v
dGVXaXRoUmFuZ2U6XSk6IERlbGV0ZWQuCisKIDIwMjItMDItMjMgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBTaGFyZSBtb3JlIGNvZGUgYmV0d2VlbiBzZXJ2aWNl
IGFuZCBzaGFyZWQgd29ya2VycyBmb3IgY29udGV4dCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KaW5k
ZXggNmI3YmZmYjIwMzY2NWY0MjVkZDI3ZTZmZmIxNjRkOGE2OTEyMGNkMC4uNTc1MGYxNjdjNTJh
OGFjMjIyZmY1NWZjZDQ1ODUyYmJiNmFkODllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KQEAgLTE1MzgsOCArMTUzOCw2IEBAIHN0YXRp
YyBXZWJDb3JlOjpGbG9hdFBvaW50IGNvbnN0cmFpbkNvbnRlbnRPZmZzZXQoV2ViQ29yZTo6Rmxv
YXRQb2ludCBjb250ZW50T2ZmCiAgICAgICAgIFtzZWxmIF9kaXNwYXRjaFNldERldmljZU9yaWVu
dGF0aW9uOltzZWxmIF9kZXZpY2VPcmllbnRhdGlvbl1dOwogICAgIF9wYWdlLT5hY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OmFsbEZsYWdzKCkpOwogICAgIF9w
YWdlLT53ZWJWaWV3RGlkTW92ZVRvV2luZG93KCk7Ci0KLSAgICBbX2NvbnRlbnRWaWV3IHNldFVw
QWRkaXRpb25hbE1lbnVDb250cm9sbGVyQWN0aW9uc107CiB9CiAKIC0gKHZvaWQpX3NldE9wYXF1
ZUludGVybmFsOihCT09MKW9wYXF1ZQpAQCAtMjY5Nyw2ICsyNjk1LDE0IEBAIHN0YXRpYyBXZWJD
b3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHRvVXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbihVSVNlCiAgICAgICAgIF9wYWdlLT5zZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uKHRvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihjb250ZW50QXR0cmlidXRlKSk7CiB9
CiAKKy0gKHZvaWQpYnVpbGRNZW51V2l0aEJ1aWxkZXI6KGlkIDxVSU1lbnVCdWlsZGVyPilidWls
ZGVyCit7CisgICAgaWYgKHNlbGYudXNlc1N0YW5kYXJkQ29udGVudFZpZXcpCisgICAgICAgIFtf
Y29udGVudFZpZXcgYnVpbGRNZW51Rm9yV2ViVmlld1dpdGhCdWlsZGVyOmJ1aWxkZXJdOworCisg
ICAgW3N1cGVyIGJ1aWxkTWVudVdpdGhCdWlsZGVyOmJ1aWxkZXJdOworfQorCiBAZW5kCiAKIEBp
bXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLUHJpdmF0ZUlPUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCBl
ZmE1YzAwYWIyYTM3ZWM2MjkyODM1M2QzNTRkNGIyNGFjMTg4YmIwLi4yNjg2NjBmYjAwM2FkOGQ5
MmQ5MTViNmZmN2FkZDg5NjYwOTkxMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0yNjIsNiArMjYyLDcg
QEAgdXNpbmcgSW1hZ2VBbmFseXNpc1JlcXVlc3RJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmll
cjxJbWFnZUFuYWx5c2lzUmVxdWVzdElkZW4KIH0KIAogQGNsYXNzIFdLRm9jdXNlZEVsZW1lbnRJ
bmZvOworQHByb3RvY29sIFVJTWVudUJ1aWxkZXI7CiBAcHJvdG9jb2wgV0tGb3JtQ29udHJvbDsK
IAogQGludGVyZmFjZSBXS0Zvcm1JbnB1dFNlc3Npb24gOiBOU09iamVjdCA8X1dLRm9ybUlucHV0
U2Vzc2lvbj4KQEAgLTU5Myw2ICs1OTQsOCBAQCB1c2luZyBJbWFnZUFuYWx5c2lzUmVxdWVzdElk
ZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEltYWdlQW5hbHlzaXNSZXF1ZXN0SWRlbgogCiAt
ICh2b2lkKXNjcm9sbFZpZXdXaWxsU3RhcnRQYW5PclBpbmNoR2VzdHVyZTsKIAorLSAodm9pZCli
dWlsZE1lbnVGb3JXZWJWaWV3V2l0aEJ1aWxkZXI6KGlkIDxVSU1lbnVCdWlsZGVyPilidWlsZGVy
OworCiAtIChCT09MKWNhbkJlY29tZUZpcnN0UmVzcG9uZGVyRm9yV2ViVmlldzsKIC0gKEJPT0wp
YmVjb21lRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3OwogLSAoQk9PTClyZXNpZ25GaXJzdFJlc3Bv
bmRlckZvcldlYlZpZXc7CkBAIC03ODIsOCArNzg1LDYgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NP
TlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklF
VykKIC0gKFdlYkNvcmU6OkRhdGFPd25lclR5cGUpX2RhdGFPd25lckZvclBhc3RlYm9hcmQ6KFdl
YktpdDo6UGFzdGVib2FyZEFjY2Vzc0ludGVudClpbnRlbnQ7CiAjZW5kaWYKIAotLSAodm9pZClz
ZXRVcEFkZGl0aW9uYWxNZW51Q29udHJvbGxlckFjdGlvbnM7Ci0KICNpZiBFTkFCTEUoSU1BR0Vf
QU5BTFlTSVMpCiAtICh2b2lkKV9lbmRJbWFnZUFuYWx5c2lzR2VzdHVyZURlZmVycmFsOihXZWJL
aXQ6OlNob3VsZFByZXZlbnRHZXN0dXJlcylzaG91bGRQcmV2ZW50R2VzdHVyZXM7CiAtICh2b2lk
KXJlcXVlc3RUZXh0UmVjb2duaXRpb246KE5TVVJMICopaW1hZ2VVUkwgaW1hZ2VEYXRhOihjb25z
dCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJilpbWFnZURhdGEgaWRlbnRpZmllcjoo
TlNTdHJpbmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlRleHRSZWNvZ25pdGlvblJlc3VsdCYmKT4mJiljb21wbGV0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KaW5kZXggMWQxZGZmZDEyMDkxYWFjN2NjODgwZTIxNDU0ODI3Yzc1ZTBhZGY2
ZC4uMDQ0ZmUwM2RiODZjNjgwOWUzYjhjNTZkY2UyZTBjNjE0M2YxMzFhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCkBAIC00MTA2LDE2ICs0MTA2LDYgQEAgV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKHBh
c3RlQW5kTWF0Y2hTdHlsZSk7CiAKIC0gKGlkKXRhcmdldEZvckFjdGlvbjooU0VMKWFjdGlvbiB3
aXRoU2VuZGVyOihpZClzZW5kZXIKIHsKLSNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0gICAg
aWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IoY3JlYXRlSGlnaGxpZ2h0Rm9yQ3VycmVudFF1aWNrTm90
ZVdpdGhSYW5nZTopKQotICAgICAgICByZXR1cm4gc2VsZi5zaG91bGRBbGxvd0FwcEhpZ2hsaWdo
dENyZWF0aW9uICYmIF9wYWdlLT5hcHBIaWdobGlnaHRzVmlzaWJpbGl0eSgpID8gc2VsZiA6IG5p
bDsKLSAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihjcmVhdGVIaWdobGlnaHRGb3JOZXdRdWlj
a05vdGVXaXRoUmFuZ2U6KSkKLSAgICAgICAgcmV0dXJuIHNlbGYuc2hvdWxkQWxsb3dBcHBIaWdo
bGlnaHRDcmVhdGlvbiAmJiAhX3BhZ2UtPmFwcEhpZ2hsaWdodHNWaXNpYmlsaXR5KCkgPyBzZWxm
IDogbmlsOwotI2VuZGlmCi0jaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykK
LSAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihwZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1cDop
KQotICAgICAgICByZXR1cm4gc2VsZi5jYW5QZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1cCA/IHNl
bGYgOiBuaWw7Ci0jZW5kaWYKICAgICByZXR1cm4gW193ZWJWaWV3IHRhcmdldEZvckFjdGlvbjph
Y3Rpb24gd2l0aFNlbmRlcjpzZW5kZXJdOwogfQogCkBAIC00NjkzLDM5ICs0NjgzLDIyIEBAIHN0
YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2goV0tDb250ZW50VmlldyAqdmlldywg
Y29uc3QgV2ViQ29yZTo6SW50UG9pCiAKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5D
RU1FTlRTKQogCi0tICh2b2lkKXVwZGF0ZUltYWdlQW5hbHlzaXNNYXJrdXBNZW51SXRlbXM6KE5T
TXV0YWJsZUFycmF5PFVJTWVudUl0ZW0gKj4gKil1cGRhdGVkSXRlbXMKLXsKLSAgICBhdXRvIGN1
cnJlbnRJdGVtID0gZmluZE1lbnVJdGVtV2l0aEFjdGlvbih1cGRhdGVkSXRlbXMsIEBzZWxlY3Rv
cihwZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1cDopKTsKLSAgICBhdXRvJiBlZGl0b3JTdGF0ZSA9
IF9wYWdlLT5lZGl0b3JTdGF0ZSgpOwotICAgIGlmICghX3BhZ2UtPnByZWZlcmVuY2VzKCkuaW1h
Z2VBbmFseXNpc01hcmt1cEVuYWJsZWQoKSB8fCAhc2VsZi53aW5kb3cgfHwgZWRpdG9yU3RhdGUu
aXNNaXNzaW5nUG9zdExheW91dERhdGEgfHwgIWVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCku
c2VsZWN0ZWRFZGl0YWJsZUltYWdlKSB7Ci0gICAgICAgIGlmIChjdXJyZW50SXRlbSkKLSAgICAg
ICAgICAgIFt1cGRhdGVkSXRlbXMgcmVtb3ZlT2JqZWN0OmN1cnJlbnRJdGVtXTsKLSAgICB9IGVs
c2UgaWYgKCFjdXJyZW50SXRlbSkgewotICAgICAgICBhdXRvIGl0ZW0gPSBhZG9wdE5TKFtbVUlN
ZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UaXRs
ZU1hcmt1cEltYWdlKCkgYWN0aW9uOkBzZWxlY3RvcihwZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1
cDopXSk7Ci0gICAgICAgIFt1cGRhdGVkSXRlbXMgaW5zZXJ0T2JqZWN0Oml0ZW0uZ2V0KCkgYXRJ
bmRleDowXTsKLSAgICB9Ci19Ci0KLS0gKEJPT0wpY2FuUGVyZm9ybUltYWdlQW5hbHlzaXNNYXJr
dXAKKy0gKFVJTWVudSAqKWltYWdlQW5hbHlzaXNNYXJrdXBNZW51CiB7CiAgICAgaWYgKCFfcGFn
ZSB8fCAhX3BhZ2UtPnByZWZlcmVuY2VzKCkuaW1hZ2VBbmFseXNpc01hcmt1cEVuYWJsZWQoKSkK
LSAgICAgICAgcmV0dXJuIE5POwotCi0gICAgaWYgKCFfaW1hZ2VBbmFseXNpc01hcmt1cERhdGEp
Ci0gICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGF1dG8gW2Vs
ZW1lbnRDb250ZXh0LCBpbWFnZSwgcHJlZmVycmVkTUlNRVR5cGVdID0gKl9pbWFnZUFuYWx5c2lz
TWFya3VwRGF0YTsKLSAgICByZXR1cm4gIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzTWlzc2luZ1Bv
c3RMYXlvdXREYXRhICYmIGVsZW1lbnRDb250ZXh0ID09IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBv
c3RMYXlvdXREYXRhKCkuc2VsZWN0ZWRFZGl0YWJsZUltYWdlOwotfQorICAgIGlmIChfcGFnZS0+
ZWRpdG9yU3RhdGUoKS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSB8fCAhX3BhZ2UtPmVkaXRvclN0
YXRlKCkucG9zdExheW91dERhdGEoKS5zZWxlY3RlZEVkaXRhYmxlSW1hZ2UpCisgICAgICAgIHJl
dHVybiBuaWw7CiAKLS0gKHZvaWQpcGVyZm9ybUltYWdlQW5hbHlzaXNNYXJrdXA6KGlkKXNlbmRl
cgotewotICAgIGlmICghc2VsZi5jYW5QZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1cCkKLSAgICAg
ICAgcmV0dXJuOworICAgIHJldHVybiBbc2VsZiBtZW51V2l0aElubGluZUFjdGlvbjpXZWJDb3Jl
Ojpjb250ZXh0TWVudUl0ZW1UaXRsZU1hcmt1cEltYWdlKCkgaWRlbnRpZmllcjpAIldLQWN0aW9u
TWFya3VwSW1hZ2UiIGhhbmRsZXI6W10oV0tDb250ZW50VmlldyAqdmlldykgeworICAgICAgICBp
ZiAoIXZpZXctPl9pbWFnZUFuYWx5c2lzTWFya3VwRGF0YSkKKyAgICAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gW2VsZW1lbnRDb250ZXh0LCBpbWFnZSwgcHJlZmVycmVkTUlNRVR5cGVdID0g
Kl9pbWFnZUFuYWx5c2lzTWFya3VwRGF0YTsKLSAgICBpZiAoYXV0byBbZGF0YSwgdHlwZV0gPSBX
ZWJLaXQ6OnRyYW5zY29kZVdpdGhQcmVmZXJyZWRNSU1FVHlwZShpbWFnZS5nZXQoKSwgcHJlZmVy
cmVkTUlNRVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgKF9fYnJpZGdlIENGU3RyaW5nUmVm
KVVUVHlwZVRJRkYuaWRlbnRpZmllcik7IGRhdGEpCi0gICAgICAgIF9wYWdlLT5yZXBsYWNlV2l0
aFBhc3RlYm9hcmREYXRhKGVsZW1lbnRDb250ZXh0LCB7IFN0cmluZyB7IHR5cGUuZ2V0KCkgfSB9
LCB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5n
dGhdIH0pOworICAgICAgICBhdXRvIFtlbGVtZW50Q29udGV4dCwgaW1hZ2UsIHByZWZlcnJlZE1J
TUVUeXBlXSA9ICp2aWV3LT5faW1hZ2VBbmFseXNpc01hcmt1cERhdGE7CisgICAgICAgIGlmIChh
dXRvIFtkYXRhLCB0eXBlXSA9IFdlYktpdDo6dHJhbnNjb2RlV2l0aFByZWZlcnJlZE1JTUVUeXBl
KGltYWdlLmdldCgpLCBwcmVmZXJyZWRNSU1FVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAo
X19icmlkZ2UgQ0ZTdHJpbmdSZWYpVVRUeXBlVElGRi5pZGVudGlmaWVyKTsgZGF0YSkKKyAgICAg
ICAgICAgIHZpZXctPl9wYWdlLT5yZXBsYWNlV2l0aFBhc3RlYm9hcmREYXRhKGVsZW1lbnRDb250
ZXh0LCB7IFN0cmluZyB7IHR5cGUuZ2V0KCkgfSB9LCB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdIH0pOworICAgIH1dOwogfQogCiAtICh2
b2lkKWRvQWZ0ZXJDb21wdXRpbmdJbWFnZUFuYWx5c2lzUmVzdWx0c0Zvck1hcmt1cDooQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKWNvbXBsZXRpb24KQEAgLTc0NzIsNyArNzQ0NSw2IEBAIHN0
YXRpYyBib29sIGNhblVzZVF1aWNrYm9hcmRDb250cm9sbGVyRm9yKFVJVGV4dENvbnRlbnRUeXBl
IHR5cGUpCiB7CiAgICAgX2F1dG9jb3JyZWN0aW9uQ29udGV4dE5lZWRzVXBkYXRlID0gWUVTOwog
Ci0gICAgW3NlbGYgc2V0VXBBZGRpdGlvbmFsTWVudUNvbnRyb2xsZXJBY3Rpb25zXTsKICAgICBb
c2VsZiBfdXBkYXRlU2VsZWN0aW9uQXNzaXN0YW50U3VwcHJlc3Npb25TdGF0ZV07CiAKICAgICBf
Y2FjaGVkU2VsZWN0ZWRUZXh0UmFuZ2UgPSBuaWw7CkBAIC05Nzc0LDYxICs5NzQ2LDQwIEBAIHN0
YXRpYyBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXNPZlBsYWNlaG9sZGVyRWxlbWVudHNU
b0luc2VydFdoZW5Ecm9wcGluZ0l0CiB9CiAjZW5kaWYKIAotLSAodm9pZClzZXRVcEFkZGl0aW9u
YWxNZW51Q29udHJvbGxlckFjdGlvbnMKKy0gKHZvaWQpYnVpbGRNZW51Rm9yV2ViVmlld1dpdGhC
dWlsZGVyOihpZCA8VUlNZW51QnVpbGRlcj4pYnVpbGRlcgogewotICAgIGF1dG8gdXBkYXRlZEl0
ZW1zID0gYWRvcHROUyhVSU1lbnVDb250cm9sbGVyLnNoYXJlZE1lbnVDb250cm9sbGVyLm1lbnVJ
dGVtcy5tdXRhYmxlQ29weSA/OiBbTlNNdXRhYmxlQXJyYXk8VUlNZW51SXRlbSAqPiBuZXddKTsK
ICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQotICAgIFtzZWxmIHVwZGF0
ZUltYWdlQW5hbHlzaXNNYXJrdXBNZW51SXRlbXM6dXBkYXRlZEl0ZW1zLmdldCgpXTsKKyAgICBp
ZiAoYXV0byBtZW51ID0gc2VsZi5pbWFnZUFuYWx5c2lzTWFya3VwTWVudSkKKyAgICAgICAgW2J1
aWxkZXIgaW5zZXJ0U2libGluZ01lbnU6bWVudSBhZnRlck1lbnVGb3JJZGVudGlmaWVyOlVJTWVu
dVN0YW5kYXJkRWRpdF07CiAjZW5kaWYKKwogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAg
ICBbc2VsZiB1cGRhdGVBcHBIaWdobGlnaHRNZW51SXRlbXM6dXBkYXRlZEl0ZW1zLmdldCgpXTsK
KyAgICBpZiAoYXV0byBtZW51ID0gc2VsZi5hcHBIaWdobGlnaHRNZW51KQorICAgICAgICBbYnVp
bGRlciBpbnNlcnRDaGlsZE1lbnU6bWVudSBhdEVuZE9mTWVudUZvcklkZW50aWZpZXI6VUlNZW51
Um9vdF07CiAjZW5kaWYKLSAgICBVSU1lbnVDb250cm9sbGVyLnNoYXJlZE1lbnVDb250cm9sbGVy
Lm1lbnVJdGVtcyA9IHVwZGF0ZWRJdGVtcy5nZXQoKTsKIH0KIAotI2lmIEVOQUJMRShJTUFHRV9B
TkFMWVNJU19FTkhBTkNFTUVOVFMpIHx8IEVOQUJMRShBUFBfSElHSExJR0hUUykKLQotc3RhdGlj
IFVJTWVudUl0ZW0gKmZpbmRNZW51SXRlbVdpdGhBY3Rpb24oTlNBcnJheTxVSU1lbnVJdGVtICo+
ICppdGVtcywgU0VMIGFjdGlvbikKKy0gKFVJTWVudSAqKW1lbnVXaXRoSW5saW5lQWN0aW9uOihO
U1N0cmluZyAqKXRpdGxlIGlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBoYW5kbGVy
OihGdW5jdGlvbjx2b2lkKFdLQ29udGVudFZpZXcgKik+JiYpaGFuZGxlcgogewotICAgIGZvciAo
VUlNZW51SXRlbSAqaXRlbSBpbiBpdGVtcykgewotICAgICAgICBpZiAoaXRlbS5hY3Rpb24gPT0g
YWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuIGl0ZW07Ci0gICAgfQotICAgIHJldHVybiBuaWw7
CisgICAgYXV0byBhY3Rpb24gPSBbVUlBY3Rpb24gYWN0aW9uV2l0aFRpdGxlOnRpdGxlIGltYWdl
Om5pbCBpZGVudGlmaWVyOmlkZW50aWZpZXIgaGFuZGxlcjptYWtlQmxvY2tQdHIoW2hhbmRsZXIg
PSBXVEZNb3ZlKGhhbmRsZXIpLCB3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+
KHNlbGYpXShVSUFjdGlvbiAqKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGF1dG8gc3Ryb25nU2Vs
ZiA9IHdlYWtTZWxmLmdldCgpKQorICAgICAgICAgICAgaGFuZGxlcihzdHJvbmdTZWxmLmdldCgp
KTsKKyAgICB9KS5nZXQoKV07CisgICAgcmV0dXJuIFtVSU1lbnUgbWVudVdpdGhUaXRsZTpAIiIg
aW1hZ2U6bmlsIGlkZW50aWZpZXI6bmlsIG9wdGlvbnM6VUlNZW51T3B0aW9uc0Rpc3BsYXlJbmxp
bmUgY2hpbGRyZW46QFsgYWN0aW9uIF1dOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FO
QUxZU0lTX0VOSEFOQ0VNRU5UUykgfHwgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotCiAjaWYgRU5B
QkxFKEFQUF9ISUdITElHSFRTKQogCi0tICh2b2lkKXVwZGF0ZUFwcEhpZ2hsaWdodE1lbnVJdGVt
czooTlNNdXRhYmxlQXJyYXk8VUlNZW51SXRlbSAqPiAqKXVwZGF0ZWRJdGVtcworLSAoVUlNZW51
ICopYXBwSGlnaGxpZ2h0TWVudQogewotICAgIGF1dG8gY3VycmVudFF1aWNrTm90ZUl0ZW0gPSBm
aW5kTWVudUl0ZW1XaXRoQWN0aW9uKHVwZGF0ZWRJdGVtcywgQHNlbGVjdG9yKGNyZWF0ZUhpZ2hs
aWdodEZvckN1cnJlbnRRdWlja05vdGVXaXRoUmFuZ2U6KSk7Ci0gICAgYXV0byBuZXdRdWlja05v
dGVJdGVtID0gZmluZE1lbnVJdGVtV2l0aEFjdGlvbih1cGRhdGVkSXRlbXMsIEBzZWxlY3Rvcihj
cmVhdGVIaWdobGlnaHRGb3JOZXdRdWlja05vdGVXaXRoUmFuZ2U6KSk7Ci0KLSAgICBpZiAoIV9w
YWdlLT5wcmVmZXJlbmNlcygpLmFwcEhpZ2hsaWdodHNFbmFibGVkKCkgfHwgIXNlbGYud2luZG93
IHx8ICFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5zZWxlY3Rpb25Jc1JhbmdlKSB7Ci0gICAgICAgIGlm
IChjdXJyZW50UXVpY2tOb3RlSXRlbSkKLSAgICAgICAgICAgIFt1cGRhdGVkSXRlbXMgcmVtb3Zl
T2JqZWN0OmN1cnJlbnRRdWlja05vdGVJdGVtXTsKLSAgICAgICAgaWYgKG5ld1F1aWNrTm90ZUl0
ZW0pCi0gICAgICAgICAgICBbdXBkYXRlZEl0ZW1zIHJlbW92ZU9iamVjdDpuZXdRdWlja05vdGVJ
dGVtXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghY3VycmVudFF1aWNrTm90
ZUl0ZW0pCi0gICAgICAgIFt1cGRhdGVkSXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tVSU1lbnVJ
dGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOldlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0FkZEhp
Z2hsaWdodFRvQ3VycmVudFF1aWNrTm90ZSgpIGFjdGlvbjpAc2VsZWN0b3IoY3JlYXRlSGlnaGxp
Z2h0Rm9yQ3VycmVudFF1aWNrTm90ZVdpdGhSYW5nZTopXSkuZ2V0KCldOwotCi0gICAgaWYgKCFu
ZXdRdWlja05vdGVJdGVtKQotICAgICAgICBbdXBkYXRlZEl0ZW1zIGFkZE9iamVjdDphZG9wdE5T
KFtbVUlNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpXZWJDb3JlOjpjb250ZXh0TWVudUl0
ZW1UYWdBZGRIaWdobGlnaHRUb05ld1F1aWNrTm90ZSgpIGFjdGlvbjpAc2VsZWN0b3IoY3JlYXRl
SGlnaGxpZ2h0Rm9yTmV3UXVpY2tOb3RlV2l0aFJhbmdlOildKS5nZXQoKV07Ci19Ci0KLS0gKHZv
aWQpY3JlYXRlSGlnaGxpZ2h0Rm9yQ3VycmVudFF1aWNrTm90ZVdpdGhSYW5nZTooaWQpc2VuZGVy
Ci17Ci0gICAgX3BhZ2UtPmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3Jl
OjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6Tm8sIFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVl
c3RPcmlnaW5hdGVkSW5BcHA6Ok5vKTsKLX0KKyAgICBpZiAoIV9wYWdlLT5wcmVmZXJlbmNlcygp
LmFwcEhpZ2hsaWdodHNFbmFibGVkKCkgfHwgIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlv
bklzUmFuZ2UgfHwgIXNlbGYuc2hvdWxkQWxsb3dBcHBIaWdobGlnaHRDcmVhdGlvbikKKyAgICAg
ICAgcmV0dXJuIG5pbDsKIAotLSAodm9pZCljcmVhdGVIaWdobGlnaHRGb3JOZXdRdWlja05vdGVX
aXRoUmFuZ2U6KGlkKXNlbmRlcgotewotICAgIF9wYWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJblNl
bGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcywgV2Vi
Q29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6Tm8pOworICAgIGJvb2wgaXNW
aXNpYmxlID0gX3BhZ2UtPmFwcEhpZ2hsaWdodHNWaXNpYmlsaXR5KCk7CisgICAgYXV0byB0aXRs
ZSA9IGlzVmlzaWJsZSA/IFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRv
Q3VycmVudFF1aWNrTm90ZSgpIDogV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQWRkSGlnaGxp
Z2h0VG9OZXdRdWlja05vdGUoKTsKKyAgICByZXR1cm4gW3NlbGYgbWVudVdpdGhJbmxpbmVBY3Rp
b246dGl0bGUgaWRlbnRpZmllcjpAIldLQWN0aW9uQ3JlYXRlUXVpY2tOb3RlIiBoYW5kbGVyOltp
c1Zpc2libGVdKFdLQ29udGVudFZpZXcgKnZpZXcpIG11dGFibGUgeworICAgICAgICB2aWV3LT5f
cGFnZS0+Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKGlzVmlzaWJsZSA/IFdlYkNv
cmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpObyA6IFdlYkNvcmU6OkNyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0OjpZZXMsIFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVk
SW5BcHA6Ok5vKTsKKyAgICB9XTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBUFBfSElHSExJR0hU
UykKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBm
MDUxODEyYzI5NTliZWViZGUzZTgzMzNmNTQ4YzliZmQyZjQzNGNiLi4zMWE2ZjllYTEzMWVmZTRk
NzIwZmE2ODFkMmRmOGU2NDI5YzU1MTFiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjItMDItMjMgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgbG9naWMg
Zm9yIHNob3dpbmcgIk1hcmt1cCBJbWFnZSIgYW5kIFF1aWNrIE5vdGUgaXRlbXMgaW4gdGhlIGNh
bGxvdXQgYmFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzcxMjcKKyAgICAgICAgcmRhcjovLzg5Mzk2NjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0IGEgY291cGxlIG9mIGV4aXN0aW5nIEFQ
SSB0ZXN0cy4gU2VlIGNvbW1lbnRzIGJlbG93LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbWFnZUFuYWx5c2lzVGVzdHMubW06CisKKyAgICAg
ICAgUmVmYWN0b3IgSW1hZ2VBbmFseXNpc1Rlc3RzLk1lbnVDb250cm9sbGVySXRlbXMgdG8gZXhl
cmNpc2UgYC1idWlsZE1lbnVXaXRoQnVpbGRlcjpgIGluc3RlYWQgb2Ygc3dpenpsaW5nCisgICAg
ICAgIFVJTWVudUNvbnRyb2xsZXIgbWV0aG9kcyBhbmQgY2hlY2tpbmcgYC1tZW51SXRlbXNgLgor
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzd2l6emxlZFNldE1lbnVJdGVtcyk6IERlbGV0ZWQu
CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tDb250ZW50Vmlld0VkaXRpbmdBY3Rpb25zLm1tOgorCisgICAgICAgIFJlZmFj
dG9yIFdlYktpdC5BcHBIaWdobGlnaHRzSW5JbWFnZU92ZXJsYXlzIHRvIGV4ZXJjaXNlIGAtYnVp
bGRNZW51V2l0aEJ1aWxkZXI6YCBpbnN0ZWFkIG9mIHBhc3NpbmcgaW4gYWN0aW9ucworICAgICAg
ICB0byBgLXRhcmdldEZvckFjdGlvbjp3aXRoU2VuZGVyOmAuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2lvcy9UZXN0VUlNZW51QnVpbGRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2lvcy9UZXN0VUlNZW51QnVpbGRlci5tbTogQWRkZWQuCisKKyAgICAgICAgQWRkIGEg
aGVscGVyIGNsYXNzIHRoYXQgY29uZm9ybXMgdG8gVUlNZW51QnVpbGRlci4gVGhpcyBpcyB1c2Vk
IGluIHRoZSB0d28gQVBJIHRlc3RzIGFib3ZlIGFzIGFuIGFyZ3VtZW50IHRvCisgICAgICAgIGAt
YnVpbGRNZW51V2l0aEJ1aWxkZXI6YCBpbiBvcmRlciB0byBjb2xsZWN0IGFkZGl0aW9uYWwgbWVu
dSBpdGVtcyB0aGF0IFdLV2ViVmlldyBhZGRzIHRvIHRoZSBjYWxsb3V0IGJhci4KKworICAgICAg
ICAoLVtUZXN0VUlNZW51QnVpbGRlciBpbml0XSk6CisgICAgICAgICgtW1Rlc3RVSU1lbnVCdWls
ZGVyIHN5c3RlbV0pOgorICAgICAgICAoLVtUZXN0VUlNZW51QnVpbGRlciBtZW51Rm9ySWRlbnRp
ZmllcjpdKToKKyAgICAgICAgKC1bVGVzdFVJTWVudUJ1aWxkZXIgZmluZE1hdGNoaW5nOl0pOgor
ICAgICAgICAoLVtUZXN0VUlNZW51QnVpbGRlciBjb250YWluc0FjdGlvbldpdGhUaXRsZTpdKToK
KyAgICAgICAgKC1bVGVzdFVJTWVudUJ1aWxkZXIgcmVzZXRdKToKKyAgICAgICAgKC1bVGVzdFVJ
TWVudUJ1aWxkZXIgYWN0aW9uRm9ySWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bVGVzdFVJTWVu
dUJ1aWxkZXIgY29tbWFuZEZvckFjdGlvbjpwcm9wZXJ0eUxpc3Q6XSk6CisgICAgICAgICgtW1Rl
c3RVSU1lbnVCdWlsZGVyIHJlcGxhY2VNZW51Rm9ySWRlbnRpZmllcjp3aXRoTWVudTpdKToKKyAg
ICAgICAgKC1bVGVzdFVJTWVudUJ1aWxkZXIgcmVwbGFjZUNoaWxkcmVuT2ZNZW51Rm9ySWRlbnRp
Zmllcjpmcm9tQ2hpbGRyZW5CbG9jazpdKToKKyAgICAgICAgKC1bVGVzdFVJTWVudUJ1aWxkZXIg
aW5zZXJ0Q2hpbGRNZW51OmF0U3RhcnRPZk1lbnVGb3JJZGVudGlmaWVyOl0pOgorICAgICAgICAo
LVtUZXN0VUlNZW51QnVpbGRlciBpbnNlcnRDaGlsZE1lbnU6YXRFbmRPZk1lbnVGb3JJZGVudGlm
aWVyOl0pOgorICAgICAgICAoLVtUZXN0VUlNZW51QnVpbGRlciByZW1vdmVNZW51Rm9ySWRlbnRp
ZmllcjpdKToKKyAgICAgICAgKC1bVGVzdFVJTWVudUJ1aWxkZXIgaW5zZXJ0U2libGluZ01lbnU6
YmVmb3JlTWVudUZvcklkZW50aWZpZXI6XSk6CisgICAgICAgICgtW1Rlc3RVSU1lbnVCdWlsZGVy
IGluc2VydFNpYmxpbmdNZW51OmFmdGVyTWVudUZvcklkZW50aWZpZXI6XSk6CisgICAgICAgICgt
W1Rlc3RVSU1lbnVCdWlsZGVyIHJlZ2lzdGVyTWVudTpdKToKKwogMjAyMi0wMi0yMyAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OICgy
ODg5MjU/KTogW2lPU10gVGVzdFdlYktpdEFQSS5SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5UZXh0
SW50ZXJhY3Rpb25fRm9jdXNpbmdSZWFkT25seUVsZW1lbnRTaG91bGRTY3JvbGxUb1JldmVhbCBp
cyBmYWlsaW5nCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQwMjI1MTkyMmY2ZDQ2M2Q0MTQ1
YWEwODU4MTdlMzNlOTdjMzgxZDUuLmRhMzBkOWNlYmI4NjY3ODM4MWE2ZDBjOTk0NTNhZTNiM2Mz
ZDg0ZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTEyLDYgKzExMTIsNyBAQAogCQlG
NEQwNjAwODI3MzRBMUFCMDA4RkE2N0EgLyogc2ltcGxlLWVkaXRvci5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RDA2MDA3MjczNEEw
OEMwMDhGQTY3QSAvKiBzaW1wbGUtZWRpdG9yLmh0bWwgKi87IH07CiAJCUY0RDRGM0I2MUU0RTJC
Q0IwMEJCMjc2NyAvKiBEcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RDRGM0I0MUU0RTJCQ0IwMEJCMjc2NyAv
KiBEcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbSAqLzsgfTsKIAkJRjRENEYzQjkxRTRFMzZFNDAw
QkIyNzY3IC8qIERyYWdBbmREcm9wVGVzdHNJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ0RjNCNzFFNEUzNkU0MDBCQjI3NjcgLyogRHJhZ0Fu
ZERyb3BUZXN0c0lPUy5tbSAqLzsgfTsKKwkJRjRENUM1NTgyN0M2RkY0ODAwRUQxQzIzIC8qIFRl
c3RVSU1lbnVCdWlsZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjRENUM1NTcyN0M2RUJEQzAwRUQxQzIzIC8qIFRlc3RVSU1lbnVCdWlsZGVyLm1t
ICovOyB9OwogCQlGNEQ1RDY5NTI1QUY4QkU0MDAyMDUyODAgLyogRGlzYWJsZUF1dG9tYXRpY1Nw
ZWxsaW5nQ29ycmVjdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0RDVENjk0MjVBRjhCRTQwMDIwNTI4MCAvKiBEaXNhYmxlQXV0b21hdGljU3Bl
bGxpbmdDb3JyZWN0aW9uLm1tICovOyB9OwogCQlGNEQ1RTRFODFGMEM1RDM4MDA4QzFBNDkgLyog
ZHJhZ3N0YXJ0LWNsZWFyLXNlbGVjdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RDVFNEU3MUYwQzVEMjcwMDhDMUE0OSAvKiBk
cmFnc3RhcnQtY2xlYXItc2VsZWN0aW9uLmh0bWwgKi87IH07CiAJCUY0RDY1REE4MUY1RTQ3MDQw
MDlEOEMyNyAvKiBzZWxlY3RlZC10ZXh0LWltYWdlLWxpbmstYW5kLWVkaXRhYmxlLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENjVE
QTcxRjVFNDZDMDAwOUQ4QzI3IC8qIHNlbGVjdGVkLXRleHQtaW1hZ2UtbGluay1hbmQtZWRpdGFi
bGUuaHRtbCAqLzsgfTsKQEAgLTMxMjgsNiArMzEyOSw4IEBACiAJCUY0RDI5ODZEMjBGRUU3Mzcw
MDkyRDYzNiAvKiBSdW5TY3JpcHRBZnRlckRvY3VtZW50TG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFJ1blNjcmlwdEFmdGVyRG9jdW1lbnRMb2FkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNEQ0RjNCNDFFNEUyQkNCMDBCQjI3NjcgLyogRHJhZ0FuZERyb3BTaW11bGF0
b3JJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEcmFnQW5k
RHJvcFNpbXVsYXRvcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRENEYz
QjcxRTRFMzZFNDAwQkIyNzY3IC8qIERyYWdBbmREcm9wVGVzdHNJT1MubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEcmFnQW5kRHJvcFRlc3RzSU9TLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEQ1QzU1NjI3QzZFQkRDMDBFRDFDMjMgLyogVGVz
dFVJTWVudUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdFVJTWVudUJ1aWxkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRENUM1NTcyN0M2RUJEQzAwRUQxQzIzIC8qIFRl
c3RVSU1lbnVCdWlsZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGVzdFVJTWVudUJ1aWxk
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDVENjk0MjVBRjhCRTQwMDIw
NTI4MCAvKiBEaXNhYmxlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gRGlzYWJsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbi5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRENUU0RTcxRjBDNUQyNzAwOEMxQTQ5IC8qIGRyYWdz
dGFydC1jbGVhci1zZWxlY3Rpb24uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJkcmFnc3RhcnQtY2xlYXItc2Vs
ZWN0aW9uLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEQ2NURBNzFGNUU0
NkMwMDA5RDhDMjcgLyogc2VsZWN0ZWQtdGV4dC1pbWFnZS1saW5rLWFuZC1lZGl0YWJsZS5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInNlbGVjdGVkLXRleHQtaW1hZ2UtbGluay1h
bmQtZWRpdGFibGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzMyLDYg
KzM3MzUsOCBAQAogCQkJCUY0RDRGM0I0MUU0RTJCQ0IwMEJCMjc2NyAvKiBEcmFnQW5kRHJvcFNp
bXVsYXRvcklPUy5tbSAqLywKIAkJCQkyRTc3NjVDQzE2QzREODBBMDBCQTJCQjEgLyogbWFpbklP
Uy5tbSAqLywKIAkJCQlGNDhENkMwRjIyNEIzNzcwMDBFM0UyRkIgLyogUHJlZmVycmVkQ29udGVu
dE1vZGUubW0gKi8sCisJCQkJRjRENUM1NTYyN0M2RUJEQzAwRUQxQzIzIC8qIFRlc3RVSU1lbnVC
dWlsZGVyLmggKi8sCisJCQkJRjRENUM1NTcyN0M2RUJEQzAwRUQxQzIzIC8qIFRlc3RVSU1lbnVC
dWlsZGVyLm1tICovLAogCQkJCUY0NTE3QjY1MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJW
aWV3Q29udHJvbGxlci5oICovLAogCQkJCUY0NTE3QjY2MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0
V0tXZWJWaWV3Q29udHJvbGxlci5tbSAqLywKIAkJCQkyRDIxNzFDMzI2MkY4QjgyMDBDMjA5REMg
LyogVUlLaXRNYWNIZWxwZXJTUEkuaCAqLywKQEAgLTU3OTcsNiArNTgwMiw3IEBACiAJCQkJRjQ1
RDM4OTEyMTVBN0I0QjAwMkEyOTc5IC8qIFRlc3RJbnNwZWN0b3JCYXIubW0gaW4gU291cmNlcyAq
LywKIAkJCQk1MTYyODEyNTIzMjVDMTgwMDBCQjdFNDIgLyogVGVzdFBERkRvY3VtZW50Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0I3NzQ5MDYyNjdDQ0U3MjAwOTg3M0I0IC8qIFRlc3RSdW5uZXJU
ZXN0cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNEQ1QzU1ODI3QzZGRjQ4MDBFRDFDMjMgLyog
VGVzdFVJTWVudUJ1aWxkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDUxN0I2NzIwNTRDNDk1
MDBDMjY3MjEgLyogVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlGNDUwMzNGNTIwNkJFQzk1MDA5MzUxQ0UgLyogVGV4dEF1dG9zaXppbmdCb29zdC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTkzRTYxOTNCMUY5MzFCM0EwMEFGMjQ1RSAvKiBUZXh0Q29kZWMuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0ltYWdlQW5hbHlzaXNUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW1hZ2VBbmFseXNpc1Rlc3RzLm1tCmluZGV4IDk2NjhmNTA3MDNjZDY3
ZDhjMDhhZjUyZmUxYTRlZmU3YzAwZTBlNzQuLjBiZjBiYzgwMTY5NTkxMTIwYzZhZGM3OTFlZjgw
ZWJhZGRhMzkzMWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW1hZ2VBbmFseXNpc1Rlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW1hZ2VBbmFseXNpc1Rlc3RzLm1tCkBAIC0zMSw2ICszMSw3IEBACiAj
aW1wb3J0ICJJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgogI2ltcG9ydCAiVGVzdElucHV0RGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RVSU1l
bnVCdWlsZGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZp
ZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmlu
Z3MuaD4KQEAgLTI2MywyNyArMjY0LDggQEAgVEVTVChJbWFnZUFuYWx5c2lzVGVzdHMsIEltYWdl
QW5hbHlzaXNQcmlvcml0aXplc1Zpc2libGVJbWFnZXMpCiAKICNpZiBFTkFCTEUoSU1BR0VfQU5B
TFlTSVNfRU5IQU5DRU1FTlRTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCi1zdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk8VUlNZW51SXRlbSAqPj4+IGdTd2l6emxlZE1l
bnVJdGVtczsKLXN0YXRpYyB2b2lkIHN3aXp6bGVkU2V0TWVudUl0ZW1zKGlkLCBTRUwsIE5TQXJy
YXk8VUlNZW51SXRlbSAqPiAqaXRlbXMpCi17Ci0gICAgZ1N3aXp6bGVkTWVudUl0ZW1zLmdldCgp
ID0gaXRlbXM7Ci19Ci0KLXN0YXRpYyBOU0FycmF5PFVJTWVudUl0ZW0gKj4gKnN3aXp6bGVkTWVu
dUl0ZW1zKGlkLCBTRUwpCi17Ci0gICAgcmV0dXJuIGdTd2l6emxlZE1lbnVJdGVtcy5nZXQoKS5n
ZXQoKTsKLX0KLQogVEVTVChJbWFnZUFuYWx5c2lzVGVzdHMsIE1lbnVDb250cm9sbGVySXRlbXMp
CiB7Ci0gICAgYXV0byBzaGFyZWRNZW51Q29udHJvbGxlciA9IFVJTWVudUNvbnRyb2xsZXIuc2hh
cmVkTWVudUNvbnRyb2xsZXI7Ci0gICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBtZW51SXRlbXNT
d2l6emxlciB7IHNoYXJlZE1lbnVDb250cm9sbGVyLmNsYXNzLCBAc2VsZWN0b3IobWVudUl0ZW1z
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkTWVudUl0ZW1zKSB9OwotICAgIEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIgc2V0TWVudUl0ZW1zU3dpenpsZXIgeyBzaGFyZWRNZW51Q29udHJv
bGxlci5jbGFzcywgQHNlbGVjdG9yKHNldE1lbnVJdGVtczopLCByZWludGVycHJldF9jYXN0PElN
UD4oc3dpenpsZWRTZXRNZW51SXRlbXMpIH07Ci0KLSAgICBOU1N0cmluZyAqdGVzdEFjdGlvbk5h
bWUgPSBAIlRlc3QgYWN0aW9uIjsKLSAgICBhdXRvIGN1c3RvbUFjdGlvbiA9IGFkb3B0TlMoW1tV
SU1lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOnRlc3RBY3Rpb25OYW1lIGFjdGlvbjpAc2Vs
ZWN0b3IoYmVjb21lRmlyc3RSZXNwb25kZXIpXSk7Ci0gICAgW3NoYXJlZE1lbnVDb250cm9sbGVy
IHNldE1lbnVJdGVtczpAW2N1c3RvbUFjdGlvbi5nZXQoKV1dOwotCiAgICAgYXV0byB3ZWJWaWV3
ID0gY3JlYXRlV2ViVmlld1dpdGhUZXh0UmVjb2duaXRpb25FbmhhbmNlbWVudHMoKTsKICAgICBh
dXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0SW5wdXREZWxlZ2F0ZSBuZXddKTsKICAg
ICBbaW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6
W10oV0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7CkBAIC0yOTYsMjcg
KzI3OCwyMyBAQCBURVNUKEltYWdlQW5hbHlzaXNUZXN0cywgTWVudUNvbnRyb2xsZXJJdGVtcykK
ICAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAibGV0IGltYWdlID0g
ZG9jdW1lbnQuaW1hZ2VzWzBdOyBnZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGltYWdl
LCAwLCBpbWFnZSwgMSk7Il07CiAgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25V
cGRhdGVdOwogCi0gICAgYXV0byBoYXNNZW51SXRlbVdpdGhUaXRsZSA9IFsmXSAoTlNTdHJpbmcg
KnRpdGxlKSB7Ci0gICAgICAgIGZvciAoVUlNZW51SXRlbSAqaXRlbSBpbiBzaGFyZWRNZW51Q29u
dHJvbGxlci5tZW51SXRlbXMpIHsKLSAgICAgICAgICAgIGlmIChbaXRlbS50aXRsZSBpc0VxdWFs
VG9TdHJpbmc6dGl0bGVdKQotICAgICAgICAgICAgICAgIHJldHVybiBZRVM7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIE5POwotICAgIH07Ci0KLSAgICBFWFBFQ1RfVFJVRShoYXNNZW51SXRl
bVdpdGhUaXRsZSh0ZXN0QWN0aW9uTmFtZSkpOwotICAgIEVYUEVDVF9XS19TVFJFUShzaGFyZWRN
ZW51Q29udHJvbGxlci5tZW51SXRlbXMuZmlyc3RPYmplY3QudGl0bGUsIFdlYkNvcmU6OmNvbnRl
eHRNZW51SXRlbVRpdGxlTWFya3VwSW1hZ2UoKSk7CisgICAgYXV0byBtZW51QnVpbGRlciA9IGFk
b3B0TlMoW1tUZXN0VUlNZW51QnVpbGRlciBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IGJ1
aWxkTWVudVdpdGhCdWlsZGVyOm1lbnVCdWlsZGVyLmdldCgpXTsKKyAgICBFWFBFQ1RfVFJVRShb
bWVudUJ1aWxkZXIgY29udGFpbnNBY3Rpb25XaXRoVGl0bGU6V2ViQ29yZTo6Y29udGV4dE1lbnVJ
dGVtVGl0bGVNYXJrdXBJbWFnZSgpXSk7CiAKICAgICBbd2ViVmlldyBzZWxlY3RBbGw6bmlsXTsK
ICAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CiAKLSAgICBFWFBF
Q1RfVFJVRShoYXNNZW51SXRlbVdpdGhUaXRsZSh0ZXN0QWN0aW9uTmFtZSkpOwotICAgIEVYUEVD
VF9GQUxTRShoYXNNZW51SXRlbVdpdGhUaXRsZShXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UaXRs
ZU1hcmt1cEltYWdlKCkpKTsKKyAgICBbbWVudUJ1aWxkZXIgcmVzZXRdOworICAgIFt3ZWJWaWV3
IGJ1aWxkTWVudVdpdGhCdWlsZGVyOm1lbnVCdWlsZGVyLmdldCgpXTsKKyAgICBFWFBFQ1RfRkFM
U0UoW21lbnVCdWlsZGVyIGNvbnRhaW5zQWN0aW9uV2l0aFRpdGxlOldlYkNvcmU6OmNvbnRleHRN
ZW51SXRlbVRpdGxlTWFya3VwSW1hZ2UoKV0pOwogCiAgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoZG9jdW1l
bnQuYm9keSwgMCwgZG9jdW1lbnQuaW1hZ2VzWzBdLCAxKTsiXTsKICAgICBbd2ViVmlldyB3YWl0
Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07Ci0gICAgRVhQRUNUX1RSVUUoaGFzTWVudUl0ZW1X
aXRoVGl0bGUodGVzdEFjdGlvbk5hbWUpKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoc2hhcmVkTWVu
dUNvbnRyb2xsZXIubWVudUl0ZW1zLmZpcnN0T2JqZWN0LnRpdGxlLCBXZWJDb3JlOjpjb250ZXh0
TWVudUl0ZW1UaXRsZU1hcmt1cEltYWdlKCkpOworCisgICAgW21lbnVCdWlsZGVyIHJlc2V0XTsK
KyAgICBbd2ViVmlldyBidWlsZE1lbnVXaXRoQnVpbGRlcjptZW51QnVpbGRlci5nZXQoKV07Cisg
ICAgRVhQRUNUX1RSVUUoW21lbnVCdWlsZGVyIGNvbnRhaW5zQWN0aW9uV2l0aFRpdGxlOldlYkNv
cmU6OmNvbnRleHRNZW51SXRlbVRpdGxlTWFya3VwSW1hZ2UoKV0pOwogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tD
b250ZW50Vmlld0VkaXRpbmdBY3Rpb25zLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS0NvbnRlbnRWaWV3RWRpdGluZ0FjdGlvbnMubW0KaW5kZXggMGYzNTgwNzll
YjhlNTdkNTFmNTViMDFjODkxMmI5ZmJmYTA5OWI3ZS4uNGNhY2RmMjVlMTc5ODNkYzk2Mjk0NTI3
YWIyYWFmZjllMDg3YjgwOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS0NvbnRlbnRWaWV3RWRpdGluZ0FjdGlvbnMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0NvbnRlbnRWaWV3RWRpdGluZ0FjdGlvbnMu
bW0KQEAgLTMyLDkgKzMyLDExIEBACiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0SW5w
dXREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9y
dCAiVGVzdFVJTWVudUJ1aWxkZXIuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBv
cnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgi
CisjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5o
PgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtODksMTggKzkxLDE3IEBAIFRFU1QoV2Vi
S2l0LCBBcHBIaWdobGlnaHRzSW5JbWFnZU92ZXJsYXlzKQogICAgIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzZWxlY3RJbWFnZU92ZXJsYXkoKSJdOwogICAgIFt3ZWJW
aWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKIAotICAgIGF1dG8gY3JlYXRlSGln
aGxpZ2h0Rm9yQ3VycmVudFF1aWNrTm90ZVdpdGhSYW5nZVNlbGVjdG9yID0gTlNTZWxlY3RvckZy
b21TdHJpbmcoQCJjcmVhdGVIaWdobGlnaHRGb3JDdXJyZW50UXVpY2tOb3RlV2l0aFJhbmdlOiIp
OwotICAgIGF1dG8gY3JlYXRlSGlnaGxpZ2h0Rm9yTmV3UXVpY2tOb3RlV2l0aFJhbmdlU2VsZWN0
b3IgPSBOU1NlbGVjdG9yRnJvbVN0cmluZyhAImNyZWF0ZUhpZ2hsaWdodEZvck5ld1F1aWNrTm90
ZVdpdGhSYW5nZToiKTsKLQotICAgIGF1dG8gY29udGVudFZpZXcgPSBbd2ViVmlldyB0ZXh0SW5w
dXRDb250ZW50Vmlld107Ci0gICAgRVhQRUNUX05VTEwoW2NvbnRlbnRWaWV3IHRhcmdldEZvckFj
dGlvbjpjcmVhdGVIaWdobGlnaHRGb3JDdXJyZW50UXVpY2tOb3RlV2l0aFJhbmdlU2VsZWN0b3Ig
d2l0aFNlbmRlcjpuaWxdKTsKLSAgICBFWFBFQ1RfTlVMTChbY29udGVudFZpZXcgdGFyZ2V0Rm9y
QWN0aW9uOmNyZWF0ZUhpZ2hsaWdodEZvck5ld1F1aWNrTm90ZVdpdGhSYW5nZVNlbGVjdG9yIHdp
dGhTZW5kZXI6bmlsXSk7CisgICAgYXV0byBtZW51QnVpbGRlciA9IGFkb3B0TlMoW1tUZXN0VUlN
ZW51QnVpbGRlciBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IGJ1aWxkTWVudVdpdGhCdWls
ZGVyOm1lbnVCdWlsZGVyLmdldCgpXTsKKyAgICBFWFBFQ1RfRkFMU0UoW21lbnVCdWlsZGVyIGNv
bnRhaW5zQWN0aW9uV2l0aFRpdGxlOldlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hs
aWdodFRvTmV3UXVpY2tOb3RlKCldKTsKIAogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
VGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOwogICAgIFt3ZWJWaWV3IHNlbGVjdEFsbDpuaWxdOwog
ICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKLSAgICBFWFBFQ1Rf
TlVMTChbY29udGVudFZpZXcgdGFyZ2V0Rm9yQWN0aW9uOmNyZWF0ZUhpZ2hsaWdodEZvckN1cnJl
bnRRdWlja05vdGVXaXRoUmFuZ2VTZWxlY3RvciB3aXRoU2VuZGVyOm5pbF0pOwotICAgIEVYUEVD
VF9FUShbY29udGVudFZpZXcgdGFyZ2V0Rm9yQWN0aW9uOmNyZWF0ZUhpZ2hsaWdodEZvck5ld1F1
aWNrTm90ZVdpdGhSYW5nZVNlbGVjdG9yIHdpdGhTZW5kZXI6bmlsXSwgY29udGVudFZpZXcpOwor
CisgICAgW21lbnVCdWlsZGVyIHJlc2V0XTsKKyAgICBbd2ViVmlldyBidWlsZE1lbnVXaXRoQnVp
bGRlcjptZW51QnVpbGRlci5nZXQoKV07CisgICAgRVhQRUNUX1RSVUUoW21lbnVCdWlsZGVyIGNv
bnRhaW5zQWN0aW9uV2l0aFRpdGxlOldlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hs
aWdodFRvTmV3UXVpY2tOb3RlKCldKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBUFBfSElHSExJ
R0hUUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1Rlc3RVSU1lbnVCdWls
ZGVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9UZXN0VUlNZW51QnVpbGRlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI4MjI0OGNiZjdlZWJmYTYzM2I2M2E5OTU3MmE1OWE2N2U1NWNlZmIKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9UZXN0VUlNZW51QnVpbGRlci5oCkBA
IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisKKyNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CisKK0BpbnRlcmZhY2UgVGVz
dFVJTWVudUJ1aWxkZXIgOiBOU09iamVjdDxVSU1lbnVCdWlsZGVyPgorCistIChCT09MKWNvbnRh
aW5zQWN0aW9uV2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlOworLSAodm9pZClyZXNldDsKKwor
QGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvaW9zL1Rlc3RVSU1lbnVCdWlsZGVyLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9pb3MvVGVzdFVJTWVudUJ1aWxkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFiMGVhNzc2YTE1MGYx
YmQ3YmZiZTAzMjc3MGQ4ZDhjM2ZkNDkwOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvaW9zL1Rlc3RVSU1lbnVCdWlsZGVyLm1tCkBAIC0wLDAgKzEsMTQwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0VUlNZW51QnVpbGRlci5o
IgorCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorCitAaW1wbGVtZW50YXRpb24gVGVzdFVJTWVudUJ1aWxkZXIgeworICAgIFJldGFpblB0cjxO
U011dGFibGVEaWN0aW9uYXJ5PFVJTWVudUlkZW50aWZpZXIsIFVJTWVudSAqPj4gX21lbnVzQnlJ
ZGVudGlmaWVyOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgLy8gRklYTUU6IEEg
ZmxhdCBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWxsIFVJTWVudXMgaXMgc3VmZmljaWVudCB0byB0
ZXN0IGFsbCBvZiB0aGUKKyAgICAvLyBub24tZGVmYXVsdCBpdGVtcyBjdXJyZW50bHkgc3VwcGxp
ZWQgYnkgV2ViS2l0LiBXZSdsbCB3YW50IHRvIGF1Z21lbnQgdGhpcyBpbiB0aGUKKyAgICAvLyBm
dXR1cmUgaWYgd2UgbmVlZCB0byB0ZXN0IG1lbnUgbmVzdGluZyBvciBpdGVtIG9yZGVyaW5nLgor
ICAgIF9tZW51c0J5SWRlbnRpZmllciA9IGFkb3B0TlMoW05TTXV0YWJsZURpY3Rpb25hcnk8VUlN
ZW51SWRlbnRpZmllciwgVUlNZW51ICo+IG5ld10pOworICAgIHJldHVybiBzZWxmOworfQorCist
IChVSU1lbnVTeXN0ZW0gKilzeXN0ZW0KK3sKKyAgICByZXR1cm4gVUlNZW51U3lzdGVtLm1haW5T
eXN0ZW07Cit9CisKKy0gKFVJTWVudSAqKW1lbnVGb3JJZGVudGlmaWVyOihVSU1lbnVJZGVudGlm
aWVyKWlkZW50aWZpZXIKK3sKKyAgICByZXR1cm4gW19tZW51c0J5SWRlbnRpZmllciBvYmplY3RG
b3JLZXk6aWRlbnRpZmllcl07Cit9CisKKy0gKFVJTWVudUVsZW1lbnQgKilmaW5kTWF0Y2hpbmc6
KEJPT0woXikoVUlNZW51RWxlbWVudCAqKSlpc01hdGNoCit7CisgICAgZm9yIChVSU1lbnUgKm1l
bnUgaW4gW19tZW51c0J5SWRlbnRpZmllciBhbGxWYWx1ZXNdKSB7CisgICAgICAgIGZvciAoVUlN
ZW51RWxlbWVudCAqY2hpbGQgaW4gbWVudS5jaGlsZHJlbikgeworICAgICAgICAgICAgaWYgKGlz
TWF0Y2goY2hpbGQpKQorICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gbmlsOworfQorCistIChCT09MKWNvbnRhaW5zQWN0aW9uV2l0aFRp
dGxlOihOU1N0cmluZyAqKXRpdGxlCit7CisgICAgcmV0dXJuIFtzZWxmIGZpbmRNYXRjaGluZzpe
Qk9PTChVSU1lbnVFbGVtZW50ICplbGVtZW50KSB7CisgICAgICAgIHJldHVybiBbZHluYW1pY19v
YmpjX2Nhc3Q8VUlBY3Rpb24+KGVsZW1lbnQpLnRpdGxlIGlzRXF1YWw6dGl0bGVdOworICAgIH1d
OworfQorCistICh2b2lkKXJlc2V0Cit7CisgICAgW19tZW51c0J5SWRlbnRpZmllciByZW1vdmVB
bGxPYmplY3RzXTsKK30KKworLSAoVUlBY3Rpb24gKilhY3Rpb25Gb3JJZGVudGlmaWVyOihVSUFj
dGlvbklkZW50aWZpZXIpaWRlbnRpZmllcgoreworICAgIHJldHVybiAoVUlBY3Rpb24gKilbc2Vs
ZiBmaW5kTWF0Y2hpbmc6XkJPT0woVUlNZW51RWxlbWVudCAqZWxlbWVudCkgeworICAgICAgICBy
ZXR1cm4gW2R5bmFtaWNfb2JqY19jYXN0PFVJQWN0aW9uPihlbGVtZW50KS5pZGVudGlmaWVyIGlz
RXF1YWw6aWRlbnRpZmllcl07CisgICAgfV07Cit9CisKKy0gKFVJQ29tbWFuZCAqKWNvbW1hbmRG
b3JBY3Rpb246KFNFTClhY3Rpb24gcHJvcGVydHlMaXN0OihpZClwcm9wZXJ0eUxpc3QKK3sKKyAg
ICByZXR1cm4gKFVJQ29tbWFuZCAqKVtzZWxmIGZpbmRNYXRjaGluZzpeQk9PTChVSU1lbnVFbGVt
ZW50ICplbGVtZW50KSB7CisgICAgICAgIGF1dG8gY29tbWFuZCA9IGR5bmFtaWNfb2JqY19jYXN0
PFVJQ29tbWFuZD4oZWxlbWVudCk7CisgICAgICAgIHJldHVybiBjb21tYW5kLmFjdGlvbiA9PSBh
Y3Rpb24gJiYgKGNvbW1hbmQucHJvcGVydHlMaXN0ID09IHByb3BlcnR5TGlzdCB8fCBbY29tbWFu
ZC5wcm9wZXJ0eUxpc3QgaXNFcXVhbDpwcm9wZXJ0eUxpc3RdKTsKKyAgICB9XTsKK30KKworLSAo
dm9pZClyZXBsYWNlTWVudUZvcklkZW50aWZpZXI6KFVJTWVudUlkZW50aWZpZXIpcmVwbGFjZWRJ
ZGVudGlmaWVyIHdpdGhNZW51OihVSU1lbnUgKilyZXBsYWNlbWVudE1lbnUKK3sKKyAgICBbX21l
bnVzQnlJZGVudGlmaWVyIHNldE9iamVjdDpyZXBsYWNlbWVudE1lbnUgZm9yS2V5OnJlcGxhY2Vk
SWRlbnRpZmllcl07Cit9CisKKy0gKHZvaWQpcmVwbGFjZUNoaWxkcmVuT2ZNZW51Rm9ySWRlbnRp
ZmllcjooVUlNZW51SWRlbnRpZmllcilwYXJlbnRJZGVudGlmaWVyIGZyb21DaGlsZHJlbkJsb2Nr
OihOU0FycmF5PFVJTWVudUVsZW1lbnQgKj4gKihOU19OT0VTQ0FQRV4pKE5TQXJyYXk8VUlNZW51
RWxlbWVudCAqPiAqKSljaGlsZHJlbkJsb2NrCit7CisgICAgaWYgKGF1dG8gbWVudSA9IFtzZWxm
IG1lbnVGb3JJZGVudGlmaWVyOnBhcmVudElkZW50aWZpZXJdKQorICAgICAgICBbX21lbnVzQnlJ
ZGVudGlmaWVyIHNldE9iamVjdDpbbWVudSBtZW51QnlSZXBsYWNpbmdDaGlsZHJlbjpjaGlsZHJl
bkJsb2NrKG1lbnUuY2hpbGRyZW4pXSBmb3JLZXk6cGFyZW50SWRlbnRpZmllcl07Cit9CisKKy0g
KHZvaWQpaW5zZXJ0Q2hpbGRNZW51OihVSU1lbnUgKiljaGlsZE1lbnUgYXRTdGFydE9mTWVudUZv
cklkZW50aWZpZXI6KFVJTWVudUlkZW50aWZpZXIpcGFyZW50SWRlbnRpZmllcgoreworICAgIFtz
ZWxmIHJlZ2lzdGVyTWVudTpjaGlsZE1lbnVdOworfQorCistICh2b2lkKWluc2VydENoaWxkTWVu
dTooVUlNZW51ICopY2hpbGRNZW51IGF0RW5kT2ZNZW51Rm9ySWRlbnRpZmllcjooVUlNZW51SWRl
bnRpZmllcilwYXJlbnRJZGVudGlmaWVyCit7CisgICAgW3NlbGYgcmVnaXN0ZXJNZW51OmNoaWxk
TWVudV07Cit9CisKKy0gKHZvaWQpcmVtb3ZlTWVudUZvcklkZW50aWZpZXI6KFVJTWVudUlkZW50
aWZpZXIpcmVtb3ZlZElkZW50aWZpZXIKK3sKKyAgICBbX21lbnVzQnlJZGVudGlmaWVyIHJlbW92
ZU9iamVjdEZvcktleTpyZW1vdmVkSWRlbnRpZmllcl07Cit9CisKKy0gKHZvaWQpaW5zZXJ0U2li
bGluZ01lbnU6KFVJTWVudSAqKXNpYmxpbmdNZW51IGJlZm9yZU1lbnVGb3JJZGVudGlmaWVyOihV
SU1lbnVJZGVudGlmaWVyKXNpYmxpbmdJZGVudGlmaWVyCit7CisgICAgW3NlbGYgcmVnaXN0ZXJN
ZW51OnNpYmxpbmdNZW51XTsKK30KKworLSAodm9pZClpbnNlcnRTaWJsaW5nTWVudTooVUlNZW51
ICopc2libGluZ01lbnUgYWZ0ZXJNZW51Rm9ySWRlbnRpZmllcjooVUlNZW51SWRlbnRpZmllcilz
aWJsaW5nSWRlbnRpZmllcgoreworICAgIFtzZWxmIHJlZ2lzdGVyTWVudTpzaWJsaW5nTWVudV07
Cit9CisKKy0gKHZvaWQpcmVnaXN0ZXJNZW51OihVSU1lbnUgKiltZW51Cit7CisgICAgW19tZW51
c0J5SWRlbnRpZmllciBzZXRPYmplY3Q6bWVudSBmb3JLZXk6bWVudS5pZGVudGlmaWVyXTsKK30K
KworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>
<flag name="review"
          id="480361"
          type_id="1"
          status="+"
          setter="megan_gardner"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453109</attachid>
            <date>2022-02-24 09:33:48 -0800</date>
            <delta_ts>2022-02-24 12:15:02 -0800</delta_ts>
            <desc>For landing</desc>
            <filename>bug-237127-20220224093347.patch</filename>
            <type>text/plain</type>
            <size>35274</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNhZjI1N2RlNGQ4YzlmZmYw
ZWQzMjJhNDRlMTc4MGUwZTkyMjg3NjcuLmUzZjEwYTFkMWE0MWE4OTQ2NzU2MGU0OTU0M2E4ZjU5
OWUwYmMwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMjItMDItMjMgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgbG9naWMg
Zm9yIHNob3dpbmcgIk1hcmt1cCBJbWFnZSIgYW5kIFF1aWNrIE5vdGUgaXRlbXMgaW4gdGhlIGNh
bGxvdXQgYmFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzcxMjcKKyAgICAgICAgcmRhcjovLzg5Mzk2NjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
TWVnYW4gR2FyZG5lci4KKworICAgICAgICBVc2UgYC1idWlsZE1lbnVXaXRoQnVpbGRlcjpgIHRv
IHN1cHBseSBhZGRpdGlvbmFsIFF1aWNrIE5vdGUgYW5kIGltYWdlIGFuYWx5c2lzIGl0ZW1zLCBp
bnN0ZWFkIG9mIGFkZGluZyB0aGVtCisgICAgICAgIGRpcmVjdGx5IHRvIHRoZSBzaGFyZWQgbWVu
dSBjb250cm9sbGVyLiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0
czogIEltYWdlQW5hbHlzaXNUZXN0cy5NZW51Q29udHJvbGxlckl0ZW1zCisgICAgICAgICAgICAg
ICAgV2ViS2l0LkFwcEhpZ2hsaWdodHNJbkltYWdlT3ZlcmxheXMKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGRpZE1v
dmVUb1dpbmRvd10pOgorCisgICAgICAgIFNlZSBiZWxvdy4KKworICAgICAgICAoLVtXS1dlYlZp
ZXcgYnVpbGRNZW51V2l0aEJ1aWxkZXI6XSk6CisKKyAgICAgICAgT3ZlcnJpZGUgdGhpcyBtZXRo
b2QgYW5kIGNhbGwgaW50byB0aGUgY29udGVudCB2aWV3IHZpYSBgLWJ1aWxkTWVudUZvcldlYlZp
ZXdXaXRoQnVpbGRlcjpgIHRvIHBvcHVsYXRlIHRoZSBnaXZlbgorICAgICAgICBidWlsZGVyIHdp
dGggZWl0aGVyIFF1aWNrIE5vdGUgb3IgIk1hcmt1cCBJbWFnZSIgaXRlbXMsIGlmIG5lY2Vzc2Fy
eS4gTm90ZSB0aGF0IG92ZXJyaWRpbmcgdGhpcyBtZXRob2Qgb24KKyAgICAgICAgV0tXZWJWaWV3
IGlzIHN1ZmZpY2llbnQsIHNpbmNlIFVJS2l0IHdhbGtzIHVwIHRoZSByZXNwb25kZXIgaGllcmFy
Y2h5IHN0YXJ0aW5nIGZyb20gdGhlIGZpcnN0IHJlc3BvbmRlcgorICAgICAgICAoV0tDb250ZW50
Vmlldykgd2hlbiBwb3B1bGF0aW5nIG1lbnUgaXRlbXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRh
cmdldEZvckFjdGlvbjp3aXRoU2VuZGVyOl0pOgorCisgICAgICAgIE1vdmUgc29tZSBsb2dpYyBm
b3IgY29uZGl0aW9uYWxseSBlbmFibGluZyB0aGUgUXVpY2sgTm90ZSBpdGVtcyBpbnRvIGAtaW1h
Z2VBbmFseXNpc01hcmt1cE1lbnVgLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW1hZ2VB
bmFseXNpc01hcmt1cE1lbnVdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2VsZWN0aW9u
Q2hhbmdlZF0pOgorCisgICAgICAgIFJlbW92ZSBsb2dpYyB0aGF0IHVwZGF0ZXMgdGhlIHNoYXJl
ZCBVSU1lbnVDb250cm9sbGVyJ3MgbWVudSBpdGVtcyBldmVyeSB0aW1lIHRoZSBzZWxlY3Rpb24g
Y2hhbmdlcy4gVGhpcyBpcworICAgICAgICBubyBsb25nZXIgbmVlZGVkLCBzaW5jZSBVSUtpdCB3
aWxsIGFsd2F5cyBjYWxsIGludG8gYC1idWlsZE1lbnVXaXRoQnVpbGRlcjpgIHdoZW4gcHJlc2Vu
dGluZyB0aGUgY2FsbG91dCBiYXIsCisgICAgICAgIHdoaWNoIGFsbG93cyB1cyB0byBsYXppbHkg
cnVuIGxvZ2ljIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB3ZSBzaG91bGQgc2hvdyB0aGUg
UXVpY2sgTm90ZSBhbmQgaW1hZ2UgYW5hbHlzaXMKKyAgICAgICAgaXRlbXMgd2hlbiB0aGUgY2Fs
bG91dCBiYXIgaXMgc2hvd24sIGluc3RlYWQgb2Yga2VlcGluZyB0aGUgbWVudSBjb250cm9sbGVy
J3MgYC1tZW51SXRlbXNgIGFycmF5IHVwIHRvIGRhdGUgdXBvbgorICAgICAgICBlYWNoIHNlbGVj
dGlvbiBjaGFuZ2UuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBidWlsZE1lbnVGb3JXZWJW
aWV3V2l0aEJ1aWxkZXI6XSk6CisKKyAgICAgICAgQ29uc3VsdCBgLWFwcEhpZ2hsaWdodE1lbnVg
IGFuZCBgLWltYWdlQW5hbHlzaXNNYXJrdXBNZW51YCB0byBwb3B1bGF0ZSB0aGUgbWVudSB3aXRo
IGlubGluZSBVSU1lbnVzLiBOb3RlIHRoYXQKKyAgICAgICAgdGhlc2UgbWVudXMnIGl0ZW1zIGFy
ZSBhbHdheXMgaW5saW5lZCBpbnRvIHRoZSBjYWxsb3V0IGJhciBhcyB0b3AtbGV2ZWwgaXRlbXMs
IHNpbmNlIHdlIGV4cGxpY2l0bHkgc3BlY2lmeQorICAgICAgICBgVUlNZW51T3B0aW9uc0Rpc3Bs
YXlJbmxpbmVgIHdoZW4gY3JlYXRpbmcgdGhlIG1lbnUuCisKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBtZW51V2l0aElubGluZUFjdGlvbjppZGVudGlmaWVyOmhhbmRsZXI6XSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgYXBwSGlnaGxpZ2h0TWVudV0pOgorCisgICAgICAgIFJlZmFjdG9y
IHRoaXMsIGFuZCBgLWltYWdlQW5hbHlzaXNNYXJrdXBNZW51YCBhYm92ZSB0byByZXR1cm4gYSBV
SU1lbnUgd2l0aCBhIHNpbmdsZSBVSUFjdGlvbiBwcmVzZW50ZWQgaW5saW5lLgorCisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgdXBkYXRlSW1hZ2VBbmFseXNpc01hcmt1cE1lbnVJdGVtczpdKTog
RGVsZXRlZC4KKworICAgICAgICBSZXBsYWNlZCB3aXRoIGAtaW1hZ2VBbmFseXNpc01hcmt1cE1l
bnVgLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUltYWdlQW5hbHlzaXNN
YXJrdXBdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBwZXJmb3JtSW1hZ2VB
bmFseXNpc01hcmt1cDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXRV
cEFkZGl0aW9uYWxNZW51Q29udHJvbGxlckFjdGlvbnNdKTogRGVsZXRlZC4KKyAgICAgICAgKGZp
bmRNZW51SXRlbVdpdGhBY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IHVwZGF0ZUFwcEhpZ2hsaWdodE1lbnVJdGVtczpdKTogRGVsZXRlZC4KKworICAgICAgICBSZXBs
YWNlZCB3aXRoIGAtYXBwSGlnaGxpZ2h0TWVudWAuCisKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBjcmVhdGVIaWdobGlnaHRGb3JDdXJyZW50UXVpY2tOb3RlV2l0aFJhbmdlOl0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNyZWF0ZUhpZ2hsaWdodEZvck5ld1F1aWNrTm90
ZVdpdGhSYW5nZTpdKTogRGVsZXRlZC4KKwogMjAyMi0wMi0yMyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNoYXJlIG1vcmUgY29kZSBiZXR3ZWVuIHNlcnZpY2Ug
YW5kIHNoYXJlZCB3b3JrZXJzIGZvciBjb250ZXh0IGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQppbmRl
eCA2YjdiZmZiMjAzNjY1ZjQyNWRkMjdlNmZmYjE2NGQ4YTY5MTIwY2QwLi41NzUwZjE2N2M1MmE4
YWMyMjJmZjU1ZmNkNDU4NTJiYmI2YWQ4OWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQpAQCAtMTUzOCw4ICsxNTM4LDYgQEAgc3RhdGlj
IFdlYkNvcmU6OkZsb2F0UG9pbnQgY29uc3RyYWluQ29udGVudE9mZnNldChXZWJDb3JlOjpGbG9h
dFBvaW50IGNvbnRlbnRPZmYKICAgICAgICAgW3NlbGYgX2Rpc3BhdGNoU2V0RGV2aWNlT3JpZW50
YXRpb246W3NlbGYgX2RldmljZU9yaWVudGF0aW9uXV07CiAgICAgX3BhZ2UtPmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6YWxsRmxhZ3MoKSk7CiAgICAgX3Bh
Z2UtPndlYlZpZXdEaWRNb3ZlVG9XaW5kb3coKTsKLQotICAgIFtfY29udGVudFZpZXcgc2V0VXBB
ZGRpdGlvbmFsTWVudUNvbnRyb2xsZXJBY3Rpb25zXTsKIH0KIAogLSAodm9pZClfc2V0T3BhcXVl
SW50ZXJuYWw6KEJPT0wpb3BhcXVlCkBAIC0yNjk3LDYgKzI2OTUsMTQgQEAgc3RhdGljIFdlYkNv
cmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gdG9Vc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uKFVJU2UKICAgICAgICAgX3BhZ2UtPnNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24odG9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKGNvbnRlbnRBdHRyaWJ1dGUpKTsKIH0K
IAorLSAodm9pZClidWlsZE1lbnVXaXRoQnVpbGRlcjooaWQgPFVJTWVudUJ1aWxkZXI+KWJ1aWxk
ZXIKK3sKKyAgICBpZiAoc2VsZi51c2VzU3RhbmRhcmRDb250ZW50VmlldykKKyAgICAgICAgW19j
b250ZW50VmlldyBidWlsZE1lbnVGb3JXZWJWaWV3V2l0aEJ1aWxkZXI6YnVpbGRlcl07CisKKyAg
ICBbc3VwZXIgYnVpbGRNZW51V2l0aEJ1aWxkZXI6YnVpbGRlcl07Cit9CisKIEBlbmQKIAogQGlt
cGxlbWVudGF0aW9uIFdLV2ViVmlldyAoV0tQcml2YXRlSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IGVm
YTVjMDBhYjJhMzdlYzYyOTI4MzUzZDM1NGQ0YjI0YWMxODhiYjAuLjI2ODY2MGZiMDAzYWQ4ZDky
ZDkxNWI2ZmY3YWRkODk2NjA5OTEwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTI2Miw2ICsyNjIsNyBA
QCB1c2luZyBJbWFnZUFuYWx5c2lzUmVxdWVzdElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVy
PEltYWdlQW5hbHlzaXNSZXF1ZXN0SWRlbgogfQogCiBAY2xhc3MgV0tGb2N1c2VkRWxlbWVudElu
Zm87CitAcHJvdG9jb2wgVUlNZW51QnVpbGRlcjsKIEBwcm90b2NvbCBXS0Zvcm1Db250cm9sOwog
CiBAaW50ZXJmYWNlIFdLRm9ybUlucHV0U2Vzc2lvbiA6IE5TT2JqZWN0IDxfV0tGb3JtSW5wdXRT
ZXNzaW9uPgpAQCAtNTkzLDYgKzU5NCw4IEBAIHVzaW5nIEltYWdlQW5hbHlzaXNSZXF1ZXN0SWRl
bnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8SW1hZ2VBbmFseXNpc1JlcXVlc3RJZGVuCiAKIC0g
KHZvaWQpc2Nyb2xsVmlld1dpbGxTdGFydFBhbk9yUGluY2hHZXN0dXJlOwogCistICh2b2lkKWJ1
aWxkTWVudUZvcldlYlZpZXdXaXRoQnVpbGRlcjooaWQgPFVJTWVudUJ1aWxkZXI+KWJ1aWxkZXI7
CisKIC0gKEJPT0wpY2FuQmVjb21lRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3OwogLSAoQk9PTCli
ZWNvbWVGaXJzdFJlc3BvbmRlckZvcldlYlZpZXc7CiAtIChCT09MKXJlc2lnbkZpcnN0UmVzcG9u
ZGVyRm9yV2ViVmlldzsKQEAgLTc4Miw4ICs3ODUsNiBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09O
VEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVX
KQogLSAoV2ViQ29yZTo6RGF0YU93bmVyVHlwZSlfZGF0YU93bmVyRm9yUGFzdGVib2FyZDooV2Vi
S2l0OjpQYXN0ZWJvYXJkQWNjZXNzSW50ZW50KWludGVudDsKICNlbmRpZgogCi0tICh2b2lkKXNl
dFVwQWRkaXRpb25hbE1lbnVDb250cm9sbGVyQWN0aW9uczsKLQogI2lmIEVOQUJMRShJTUFHRV9B
TkFMWVNJUykKIC0gKHZvaWQpX2VuZEltYWdlQW5hbHlzaXNHZXN0dXJlRGVmZXJyYWw6KFdlYktp
dDo6U2hvdWxkUHJldmVudEdlc3R1cmVzKXNob3VsZFByZXZlbnRHZXN0dXJlczsKIC0gKHZvaWQp
cmVxdWVzdFRleHRSZWNvZ25pdGlvbjooTlNVUkwgKilpbWFnZVVSTCBpbWFnZURhdGE6KGNvbnN0
IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKWltYWdlRGF0YSBpZGVudGlmaWVyOihO
U1N0cmluZyAqKWlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6VGV4dFJlY29nbml0aW9uUmVzdWx0JiYpPiYmKWNvbXBsZXRpb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQppbmRleCAxZDFkZmZkMTIwOTFhYWM3Y2M4ODBlMjE0NTQ4MjdjNzVlMGFkZjZk
Li4wNDRmZTAzZGI4NmM2ODA5ZTNiOGM1NmRjZTJlMGM2MTQzZjEzMWFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KQEAgLTQxMDYsMTYgKzQxMDYsNiBAQCBXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcocGFz
dGVBbmRNYXRjaFN0eWxlKTsKIAogLSAoaWQpdGFyZ2V0Rm9yQWN0aW9uOihTRUwpYWN0aW9uIHdp
dGhTZW5kZXI6KGlkKXNlbmRlcgogewotI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICBp
ZiAoYWN0aW9uID09IEBzZWxlY3RvcihjcmVhdGVIaWdobGlnaHRGb3JDdXJyZW50UXVpY2tOb3Rl
V2l0aFJhbmdlOikpCi0gICAgICAgIHJldHVybiBzZWxmLnNob3VsZEFsbG93QXBwSGlnaGxpZ2h0
Q3JlYXRpb24gJiYgX3BhZ2UtPmFwcEhpZ2hsaWdodHNWaXNpYmlsaXR5KCkgPyBzZWxmIDogbmls
OwotICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKGNyZWF0ZUhpZ2hsaWdodEZvck5ld1F1aWNr
Tm90ZVdpdGhSYW5nZTopKQotICAgICAgICByZXR1cm4gc2VsZi5zaG91bGRBbGxvd0FwcEhpZ2hs
aWdodENyZWF0aW9uICYmICFfcGFnZS0+YXBwSGlnaGxpZ2h0c1Zpc2liaWxpdHkoKSA/IHNlbGYg
OiBuaWw7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQot
ICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwOikp
Ci0gICAgICAgIHJldHVybiBzZWxmLmNhblBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwID8gc2Vs
ZiA6IG5pbDsKLSNlbmRpZgogICAgIHJldHVybiBbX3dlYlZpZXcgdGFyZ2V0Rm9yQWN0aW9uOmFj
dGlvbiB3aXRoU2VuZGVyOnNlbmRlcl07CiB9CiAKQEAgLTQ2OTMsMzkgKzQ2ODMsMjIgQEAgc3Rh
dGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChXS0NvbnRlbnRWaWV3ICp2aWV3LCBj
b25zdCBXZWJDb3JlOjpJbnRQb2kKIAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNF
TUVOVFMpCiAKLS0gKHZvaWQpdXBkYXRlSW1hZ2VBbmFseXNpc01hcmt1cE1lbnVJdGVtczooTlNN
dXRhYmxlQXJyYXk8VUlNZW51SXRlbSAqPiAqKXVwZGF0ZWRJdGVtcwotewotICAgIGF1dG8gY3Vy
cmVudEl0ZW0gPSBmaW5kTWVudUl0ZW1XaXRoQWN0aW9uKHVwZGF0ZWRJdGVtcywgQHNlbGVjdG9y
KHBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwOikpOwotICAgIGF1dG8mIGVkaXRvclN0YXRlID0g
X3BhZ2UtPmVkaXRvclN0YXRlKCk7Ci0gICAgaWYgKCFfcGFnZS0+cHJlZmVyZW5jZXMoKS5pbWFn
ZUFuYWx5c2lzTWFya3VwRW5hYmxlZCgpIHx8ICFzZWxmLndpbmRvdyB8fCBlZGl0b3JTdGF0ZS5p
c01pc3NpbmdQb3N0TGF5b3V0RGF0YSB8fCAhZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5z
ZWxlY3RlZEVkaXRhYmxlSW1hZ2UpIHsKLSAgICAgICAgaWYgKGN1cnJlbnRJdGVtKQotICAgICAg
ICAgICAgW3VwZGF0ZWRJdGVtcyByZW1vdmVPYmplY3Q6Y3VycmVudEl0ZW1dOwotICAgIH0gZWxz
ZSBpZiAoIWN1cnJlbnRJdGVtKSB7Ci0gICAgICAgIGF1dG8gaXRlbSA9IGFkb3B0TlMoW1tVSU1l
bnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOldlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRpdGxl
TWFya3VwSW1hZ2UoKSBhY3Rpb246QHNlbGVjdG9yKHBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3Vw
OildKTsKLSAgICAgICAgW3VwZGF0ZWRJdGVtcyBpbnNlcnRPYmplY3Q6aXRlbS5nZXQoKSBhdElu
ZGV4OjBdOwotICAgIH0KLX0KLQotLSAoQk9PTCljYW5QZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1
cAorLSAoVUlNZW51ICopaW1hZ2VBbmFseXNpc01hcmt1cE1lbnUKIHsKICAgICBpZiAoIV9wYWdl
IHx8ICFfcGFnZS0+cHJlZmVyZW5jZXMoKS5pbWFnZUFuYWx5c2lzTWFya3VwRW5hYmxlZCgpKQot
ICAgICAgICByZXR1cm4gTk87Ci0KLSAgICBpZiAoIV9pbWFnZUFuYWx5c2lzTWFya3VwRGF0YSkK
LSAgICAgICAgcmV0dXJuIE5POworICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0byBbZWxl
bWVudENvbnRleHQsIGltYWdlLCBwcmVmZXJyZWRNSU1FVHlwZV0gPSAqX2ltYWdlQW5hbHlzaXNN
YXJrdXBEYXRhOwotICAgIHJldHVybiAhX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNNaXNzaW5nUG9z
dExheW91dERhdGEgJiYgZWxlbWVudENvbnRleHQgPT0gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9z
dExheW91dERhdGEoKS5zZWxlY3RlZEVkaXRhYmxlSW1hZ2U7Ci19CisgICAgaWYgKF9wYWdlLT5l
ZGl0b3JTdGF0ZSgpLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIHx8ICFfcGFnZS0+ZWRpdG9yU3Rh
dGUoKS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGVkRWRpdGFibGVJbWFnZSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKIAotLSAodm9pZClwZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1cDooaWQpc2VuZGVy
Ci17Ci0gICAgaWYgKCFzZWxmLmNhblBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwKQotICAgICAg
ICByZXR1cm47CisgICAgcmV0dXJuIFtzZWxmIG1lbnVXaXRoSW5saW5lQWN0aW9uOldlYkNvcmU6
OmNvbnRleHRNZW51SXRlbVRpdGxlTWFya3VwSW1hZ2UoKSBpZGVudGlmaWVyOkAiV0tBY3Rpb25N
YXJrdXBJbWFnZSIgaGFuZGxlcjpbXShXS0NvbnRlbnRWaWV3ICp2aWV3KSB7CisgICAgICAgIGlm
ICghdmlldy0+X2ltYWdlQW5hbHlzaXNNYXJrdXBEYXRhKQorICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byBbZWxlbWVudENvbnRleHQsIGltYWdlLCBwcmVmZXJyZWRNSU1FVHlwZV0gPSAq
X2ltYWdlQW5hbHlzaXNNYXJrdXBEYXRhOwotICAgIGlmIChhdXRvIFtkYXRhLCB0eXBlXSA9IFdl
YktpdDo6dHJhbnNjb2RlV2l0aFByZWZlcnJlZE1JTUVUeXBlKGltYWdlLmdldCgpLCBwcmVmZXJy
ZWRNSU1FVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYp
VVRUeXBlVElGRi5pZGVudGlmaWVyKTsgZGF0YSkKLSAgICAgICAgX3BhZ2UtPnJlcGxhY2VXaXRo
UGFzdGVib2FyZERhdGEoZWxlbWVudENvbnRleHQsIHsgU3RyaW5nIHsgdHlwZS5nZXQoKSB9IH0s
IHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0
aF0gfSk7CisgICAgICAgIGF1dG8gW2VsZW1lbnRDb250ZXh0LCBpbWFnZSwgcHJlZmVycmVkTUlN
RVR5cGVdID0gKnZpZXctPl9pbWFnZUFuYWx5c2lzTWFya3VwRGF0YTsKKyAgICAgICAgaWYgKGF1
dG8gW2RhdGEsIHR5cGVdID0gV2ViS2l0Ojp0cmFuc2NvZGVXaXRoUHJlZmVycmVkTUlNRVR5cGUo
aW1hZ2UuZ2V0KCksIHByZWZlcnJlZE1JTUVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIChf
X2JyaWRnZSBDRlN0cmluZ1JlZilVVFR5cGVUSUZGLmlkZW50aWZpZXIpOyBkYXRhKQorICAgICAg
ICAgICAgdmlldy0+X3BhZ2UtPnJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEoZWxlbWVudENvbnRl
eHQsIHsgU3RyaW5nIHsgdHlwZS5nZXQoKSB9IH0sIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0gfSk7CisgICAgfV07CiB9CiAKIC0gKHZv
aWQpZG9BZnRlckNvbXB1dGluZ0ltYWdlQW5hbHlzaXNSZXN1bHRzRm9yTWFya3VwOihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpY29tcGxldGlvbgpAQCAtNzQ3Miw3ICs3NDQ1LDYgQEAgc3Rh
dGljIGJvb2wgY2FuVXNlUXVpY2tib2FyZENvbnRyb2xsZXJGb3IoVUlUZXh0Q29udGVudFR5cGUg
dHlwZSkKIHsKICAgICBfYXV0b2NvcnJlY3Rpb25Db250ZXh0TmVlZHNVcGRhdGUgPSBZRVM7CiAK
LSAgICBbc2VsZiBzZXRVcEFkZGl0aW9uYWxNZW51Q29udHJvbGxlckFjdGlvbnNdOwogICAgIFtz
ZWxmIF91cGRhdGVTZWxlY3Rpb25Bc3Npc3RhbnRTdXBwcmVzc2lvblN0YXRlXTsKIAogICAgIF9j
YWNoZWRTZWxlY3RlZFRleHRSYW5nZSA9IG5pbDsKQEAgLTk3NzQsNjEgKzk3NDYsNDAgQEAgc3Rh
dGljIFZlY3RvcjxXZWJDb3JlOjpJbnRTaXplPiBzaXplc09mUGxhY2Vob2xkZXJFbGVtZW50c1Rv
SW5zZXJ0V2hlbkRyb3BwaW5nSXQKIH0KICNlbmRpZgogCi0tICh2b2lkKXNldFVwQWRkaXRpb25h
bE1lbnVDb250cm9sbGVyQWN0aW9ucworLSAodm9pZClidWlsZE1lbnVGb3JXZWJWaWV3V2l0aEJ1
aWxkZXI6KGlkIDxVSU1lbnVCdWlsZGVyPilidWlsZGVyCiB7Ci0gICAgYXV0byB1cGRhdGVkSXRl
bXMgPSBhZG9wdE5TKFVJTWVudUNvbnRyb2xsZXIuc2hhcmVkTWVudUNvbnRyb2xsZXIubWVudUl0
ZW1zLm11dGFibGVDb3B5ID86IFtOU011dGFibGVBcnJheTxVSU1lbnVJdGVtICo+IG5ld10pOwog
I2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCi0gICAgW3NlbGYgdXBkYXRl
SW1hZ2VBbmFseXNpc01hcmt1cE1lbnVJdGVtczp1cGRhdGVkSXRlbXMuZ2V0KCldOworICAgIGlm
IChhdXRvIG1lbnUgPSBzZWxmLmltYWdlQW5hbHlzaXNNYXJrdXBNZW51KQorICAgICAgICBbYnVp
bGRlciBpbnNlcnRTaWJsaW5nTWVudTptZW51IGFmdGVyTWVudUZvcklkZW50aWZpZXI6VUlNZW51
U3RhbmRhcmRFZGl0XTsKICNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAg
IFtzZWxmIHVwZGF0ZUFwcEhpZ2hsaWdodE1lbnVJdGVtczp1cGRhdGVkSXRlbXMuZ2V0KCldOwor
ICAgIGlmIChhdXRvIG1lbnUgPSBzZWxmLmFwcEhpZ2hsaWdodE1lbnUpCisgICAgICAgIFtidWls
ZGVyIGluc2VydENoaWxkTWVudTptZW51IGF0RW5kT2ZNZW51Rm9ySWRlbnRpZmllcjpVSU1lbnVS
b290XTsKICNlbmRpZgotICAgIFVJTWVudUNvbnRyb2xsZXIuc2hhcmVkTWVudUNvbnRyb2xsZXIu
bWVudUl0ZW1zID0gdXBkYXRlZEl0ZW1zLmdldCgpOwogfQogCi0jaWYgRU5BQkxFKElNQUdFX0FO
QUxZU0lTX0VOSEFOQ0VNRU5UUykgfHwgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotCi1zdGF0aWMg
VUlNZW51SXRlbSAqZmluZE1lbnVJdGVtV2l0aEFjdGlvbihOU0FycmF5PFVJTWVudUl0ZW0gKj4g
Kml0ZW1zLCBTRUwgYWN0aW9uKQorLSAoVUlNZW51ICopbWVudVdpdGhJbmxpbmVBY3Rpb246KE5T
U3RyaW5nICopdGl0bGUgaWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGhhbmRsZXI6
KEZ1bmN0aW9uPHZvaWQoV0tDb250ZW50VmlldyAqKT4mJiloYW5kbGVyCiB7Ci0gICAgZm9yIChV
SU1lbnVJdGVtICppdGVtIGluIGl0ZW1zKSB7Ci0gICAgICAgIGlmIChpdGVtLmFjdGlvbiA9PSBh
Y3Rpb24pCi0gICAgICAgICAgICByZXR1cm4gaXRlbTsKLSAgICB9Ci0gICAgcmV0dXJuIG5pbDsK
KyAgICBhdXRvIGFjdGlvbiA9IFtVSUFjdGlvbiBhY3Rpb25XaXRoVGl0bGU6dGl0bGUgaW1hZ2U6
bmlsIGlkZW50aWZpZXI6aWRlbnRpZmllciBoYW5kbGVyOm1ha2VCbG9ja1B0cihbaGFuZGxlciA9
IFdURk1vdmUoaGFuZGxlciksIHdlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4o
c2VsZildKFVJQWN0aW9uICopIG11dGFibGUgeworICAgICAgICBpZiAoYXV0byBzdHJvbmdTZWxm
ID0gd2Vha1NlbGYuZ2V0KCkpCisgICAgICAgICAgICBoYW5kbGVyKHN0cm9uZ1NlbGYuZ2V0KCkp
OworICAgIH0pLmdldCgpXTsKKyAgICByZXR1cm4gW1VJTWVudSBtZW51V2l0aFRpdGxlOkAiIiBp
bWFnZTpuaWwgaWRlbnRpZmllcjpuaWwgb3B0aW9uczpVSU1lbnVPcHRpb25zRGlzcGxheUlubGlu
ZSBjaGlsZHJlbjpAWyBhY3Rpb24gXV07CiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5B
TFlTSVNfRU5IQU5DRU1FTlRTKSB8fCBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0KICNpZiBFTkFC
TEUoQVBQX0hJR0hMSUdIVFMpCiAKLS0gKHZvaWQpdXBkYXRlQXBwSGlnaGxpZ2h0TWVudUl0ZW1z
OihOU011dGFibGVBcnJheTxVSU1lbnVJdGVtICo+ICopdXBkYXRlZEl0ZW1zCistIChVSU1lbnUg
KilhcHBIaWdobGlnaHRNZW51CiB7Ci0gICAgYXV0byBjdXJyZW50UXVpY2tOb3RlSXRlbSA9IGZp
bmRNZW51SXRlbVdpdGhBY3Rpb24odXBkYXRlZEl0ZW1zLCBAc2VsZWN0b3IoY3JlYXRlSGlnaGxp
Z2h0Rm9yQ3VycmVudFF1aWNrTm90ZVdpdGhSYW5nZTopKTsKLSAgICBhdXRvIG5ld1F1aWNrTm90
ZUl0ZW0gPSBmaW5kTWVudUl0ZW1XaXRoQWN0aW9uKHVwZGF0ZWRJdGVtcywgQHNlbGVjdG9yKGNy
ZWF0ZUhpZ2hsaWdodEZvck5ld1F1aWNrTm90ZVdpdGhSYW5nZTopKTsKLQotICAgIGlmICghX3Bh
Z2UtPnByZWZlcmVuY2VzKCkuYXBwSGlnaGxpZ2h0c0VuYWJsZWQoKSB8fCAhc2VsZi53aW5kb3cg
fHwgIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvbklzUmFuZ2UpIHsKLSAgICAgICAgaWYg
KGN1cnJlbnRRdWlja05vdGVJdGVtKQotICAgICAgICAgICAgW3VwZGF0ZWRJdGVtcyByZW1vdmVP
YmplY3Q6Y3VycmVudFF1aWNrTm90ZUl0ZW1dOwotICAgICAgICBpZiAobmV3UXVpY2tOb3RlSXRl
bSkKLSAgICAgICAgICAgIFt1cGRhdGVkSXRlbXMgcmVtb3ZlT2JqZWN0Om5ld1F1aWNrTm90ZUl0
ZW1dOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFjdXJyZW50UXVpY2tOb3Rl
SXRlbSkKLSAgICAgICAgW3VwZGF0ZWRJdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW1VJTWVudUl0
ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6V2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQWRkSGln
aGxpZ2h0VG9DdXJyZW50UXVpY2tOb3RlKCkgYWN0aW9uOkBzZWxlY3RvcihjcmVhdGVIaWdobGln
aHRGb3JDdXJyZW50UXVpY2tOb3RlV2l0aFJhbmdlOildKS5nZXQoKV07Ci0KLSAgICBpZiAoIW5l
d1F1aWNrTm90ZUl0ZW0pCi0gICAgICAgIFt1cGRhdGVkSXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMo
W1tVSU1lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOldlYkNvcmU6OmNvbnRleHRNZW51SXRl
bVRhZ0FkZEhpZ2hsaWdodFRvTmV3UXVpY2tOb3RlKCkgYWN0aW9uOkBzZWxlY3RvcihjcmVhdGVI
aWdobGlnaHRGb3JOZXdRdWlja05vdGVXaXRoUmFuZ2U6KV0pLmdldCgpXTsKLX0KLQotLSAodm9p
ZCljcmVhdGVIaWdobGlnaHRGb3JDdXJyZW50UXVpY2tOb3RlV2l0aFJhbmdlOihpZClzZW5kZXIK
LXsKLSAgICBfcGFnZS0+Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6
OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpObywgV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVz
dE9yaWdpbmF0ZWRJbkFwcDo6Tm8pOwotfQorICAgIGlmICghX3BhZ2UtPnByZWZlcmVuY2VzKCku
YXBwSGlnaGxpZ2h0c0VuYWJsZWQoKSB8fCAhX3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0aW9u
SXNSYW5nZSB8fCAhc2VsZi5zaG91bGRBbGxvd0FwcEhpZ2hsaWdodENyZWF0aW9uKQorICAgICAg
ICByZXR1cm4gbmlsOwogCi0tICh2b2lkKWNyZWF0ZUhpZ2hsaWdodEZvck5ld1F1aWNrTm90ZVdp
dGhSYW5nZTooaWQpc2VuZGVyCi17Ci0gICAgX3BhZ2UtPmNyZWF0ZUFwcEhpZ2hsaWdodEluU2Vs
ZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzLCBXZWJD
b3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpObyk7CisgICAgYm9vbCBpc1Zp
c2libGUgPSBfcGFnZS0+YXBwSGlnaGxpZ2h0c1Zpc2liaWxpdHkoKTsKKyAgICBhdXRvIHRpdGxl
ID0gaXNWaXNpYmxlID8gV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQWRkSGlnaGxpZ2h0VG9D
dXJyZW50UXVpY2tOb3RlKCkgOiBXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdBZGRIaWdobGln
aHRUb05ld1F1aWNrTm90ZSgpOworICAgIHJldHVybiBbc2VsZiBtZW51V2l0aElubGluZUFjdGlv
bjp0aXRsZSBpZGVudGlmaWVyOkAiV0tBY3Rpb25DcmVhdGVRdWlja05vdGUiIGhhbmRsZXI6W2lz
VmlzaWJsZV0oV0tDb250ZW50VmlldyAqdmlldykgbXV0YWJsZSB7CisgICAgICAgIHZpZXctPl9w
YWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoaXNWaXNpYmxlID8gV2ViQ29y
ZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Ok5vIDogV2ViQ29yZTo6Q3JlYXRlTmV3R3Jv
dXBGb3JIaWdobGlnaHQ6OlllcywgV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJ
bkFwcDo6Tm8pOworICAgIH1dOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFQUF9ISUdITElHSFRT
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYw
NTE4MTJjMjk1OWJlZWJkZTNlODMzM2Y1NDhjOWJmZDJmNDM0Y2IuLjc0ZWE3MDQ0OWYwMzMwOTU2
OWZkYjk3ODQ4NDc4NzE3ZmRlOGEyMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAyMi0wMi0yMyAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBsb2dpYyBm
b3Igc2hvd2luZyAiTWFya3VwIEltYWdlIiBhbmQgUXVpY2sgTm90ZSBpdGVtcyBpbiB0aGUgY2Fs
bG91dCBiYXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzEyNworICAgICAgICByZGFyOi8vODkzOTY2MTcKKworICAgICAgICBSZXZpZXdlZCBieSBN
ZWdhbiBHYXJkbmVyLgorCisgICAgICAgIEFkanVzdCBhIGNvdXBsZSBvZiBleGlzdGluZyBBUEkg
dGVzdHMuIFNlZSBjb21tZW50cyBiZWxvdy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW1hZ2VBbmFseXNpc1Rlc3RzLm1tOgorCisgICAgICAg
IFJlZmFjdG9yIEltYWdlQW5hbHlzaXNUZXN0cy5NZW51Q29udHJvbGxlckl0ZW1zIHRvIGV4ZXJj
aXNlIGAtYnVpbGRNZW51V2l0aEJ1aWxkZXI6YCBpbnN0ZWFkIG9mIHN3aXp6bGluZworICAgICAg
ICBVSU1lbnVDb250cm9sbGVyIG1ldGhvZHMgYW5kIGNoZWNraW5nIGAtbWVudUl0ZW1zYC4KKwor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6c3dpenpsZWRTZXRNZW51SXRlbXMpOiBEZWxldGVkLgor
ICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLQ29udGVudFZpZXdFZGl0aW5nQWN0aW9ucy5tbToKKworICAgICAgICBSZWZhY3Rv
ciBXZWJLaXQuQXBwSGlnaGxpZ2h0c0luSW1hZ2VPdmVybGF5cyB0byBleGVyY2lzZSBgLWJ1aWxk
TWVudVdpdGhCdWlsZGVyOmAgaW5zdGVhZCBvZiBwYXNzaW5nIGluIGFjdGlvbnMKKyAgICAgICAg
dG8gYC10YXJnZXRGb3JBY3Rpb246d2l0aFNlbmRlcjpgLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9pb3MvVGVzdFVJTWVudUJ1aWxkZXIuaDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9pb3MvVGVzdFVJTWVudUJ1aWxkZXIubW06IEFkZGVkLgorCisgICAgICAgIEFkZCBhIGhl
bHBlciBjbGFzcyB0aGF0IGNvbmZvcm1zIHRvIFVJTWVudUJ1aWxkZXIuIFRoaXMgaXMgdXNlZCBp
biB0aGUgdHdvIEFQSSB0ZXN0cyBhYm92ZSBhcyBhbiBhcmd1bWVudCB0bworICAgICAgICBgLWJ1
aWxkTWVudVdpdGhCdWlsZGVyOmAgaW4gb3JkZXIgdG8gY29sbGVjdCBhZGRpdGlvbmFsIG1lbnUg
aXRlbXMgdGhhdCBXS1dlYlZpZXcgYWRkcyB0byB0aGUgY2FsbG91dCBiYXIuCisKKyAgICAgICAg
KC1bVGVzdFVJTWVudUJ1aWxkZXIgaW5pdF0pOgorICAgICAgICAoLVtUZXN0VUlNZW51QnVpbGRl
ciBzeXN0ZW1dKToKKyAgICAgICAgKC1bVGVzdFVJTWVudUJ1aWxkZXIgbWVudUZvcklkZW50aWZp
ZXI6XSk6CisgICAgICAgICgtW1Rlc3RVSU1lbnVCdWlsZGVyIGZpbmRNYXRjaGluZzpdKToKKyAg
ICAgICAgKC1bVGVzdFVJTWVudUJ1aWxkZXIgY29udGFpbnNBY3Rpb25XaXRoVGl0bGU6XSk6Cisg
ICAgICAgICgtW1Rlc3RVSU1lbnVCdWlsZGVyIHJlc2V0XSk6CisgICAgICAgICgtW1Rlc3RVSU1l
bnVCdWlsZGVyIGFjdGlvbkZvcklkZW50aWZpZXI6XSk6CisgICAgICAgICgtW1Rlc3RVSU1lbnVC
dWlsZGVyIGNvbW1hbmRGb3JBY3Rpb246cHJvcGVydHlMaXN0Ol0pOgorICAgICAgICAoLVtUZXN0
VUlNZW51QnVpbGRlciByZXBsYWNlTWVudUZvcklkZW50aWZpZXI6d2l0aE1lbnU6XSk6CisgICAg
ICAgICgtW1Rlc3RVSU1lbnVCdWlsZGVyIHJlcGxhY2VDaGlsZHJlbk9mTWVudUZvcklkZW50aWZp
ZXI6ZnJvbUNoaWxkcmVuQmxvY2s6XSk6CisgICAgICAgICgtW1Rlc3RVSU1lbnVCdWlsZGVyIGlu
c2VydENoaWxkTWVudTphdFN0YXJ0T2ZNZW51Rm9ySWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1b
VGVzdFVJTWVudUJ1aWxkZXIgaW5zZXJ0Q2hpbGRNZW51OmF0RW5kT2ZNZW51Rm9ySWRlbnRpZmll
cjpdKToKKyAgICAgICAgKC1bVGVzdFVJTWVudUJ1aWxkZXIgcmVtb3ZlTWVudUZvcklkZW50aWZp
ZXI6XSk6CisgICAgICAgICgtW1Rlc3RVSU1lbnVCdWlsZGVyIGluc2VydFNpYmxpbmdNZW51OmJl
Zm9yZU1lbnVGb3JJZGVudGlmaWVyOl0pOgorICAgICAgICAoLVtUZXN0VUlNZW51QnVpbGRlciBp
bnNlcnRTaWJsaW5nTWVudTphZnRlck1lbnVGb3JJZGVudGlmaWVyOl0pOgorICAgICAgICAoLVtU
ZXN0VUlNZW51QnVpbGRlciByZWdpc3Rlck1lbnU6XSk6CisKIDIwMjItMDItMjMgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoMjg4
OTI1Pyk6IFtpT1NdIFRlc3RXZWJLaXRBUEkuUmVxdWVzdFRleHRJbnB1dENvbnRleHQuVGV4dElu
dGVyYWN0aW9uX0ZvY3VzaW5nUmVhZE9ubHlFbGVtZW50U2hvdWxkU2Nyb2xsVG9SZXZlYWwgaXMg
ZmFpbGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0MDIyNTE5MjJmNmQ0NjNkNDE0NWFh
MDg1ODE3ZTMzZTk3YzM4MWQ1Li5kYTMwZDljZWJiODY2NzgzODFhNmQwYzk5NDUzYWUzYjNjM2Q4
NGVhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTExMiw2ICsxMTEyLDcgQEAKIAkJRjRE
MDYwMDgyNzM0QTFBQjAwOEZBNjdBIC8qIHNpbXBsZS1lZGl0b3IuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQwNjAwNzI3MzRBMDhD
MDA4RkE2N0EgLyogc2ltcGxlLWVkaXRvci5odG1sICovOyB9OwogCQlGNEQ0RjNCNjFFNEUyQkNC
MDBCQjI3NjcgLyogRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ0RjNCNDFFNEUyQkNCMDBCQjI3NjcgLyog
RHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0gKi87IH07CiAJCUY0RDRGM0I5MUU0RTM2RTQwMEJC
Mjc2NyAvKiBEcmFnQW5kRHJvcFRlc3RzSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENEYzQjcxRTRFMzZFNDAwQkIyNzY3IC8qIERyYWdBbmRE
cm9wVGVzdHNJT1MubW0gKi87IH07CisJCUY0RDVDNTU4MjdDNkZGNDgwMEVEMUMyMyAvKiBUZXN0
VUlNZW51QnVpbGRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0RDVDNTU3MjdDNkVCREMwMEVEMUMyMyAvKiBUZXN0VUlNZW51QnVpbGRlci5tbSAq
LzsgfTsKIAkJRjRENUQ2OTUyNUFGOEJFNDAwMjA1MjgwIC8qIERpc2FibGVBdXRvbWF0aWNTcGVs
bGluZ0NvcnJlY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNEQ1RDY5NDI1QUY4QkU0MDAyMDUyODAgLyogRGlzYWJsZUF1dG9tYXRpY1NwZWxs
aW5nQ29ycmVjdGlvbi5tbSAqLzsgfTsKIAkJRjRENUU0RTgxRjBDNUQzODAwOEMxQTQ5IC8qIGRy
YWdzdGFydC1jbGVhci1zZWxlY3Rpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ1RTRFNzFGMEM1RDI3MDA4QzFBNDkgLyogZHJh
Z3N0YXJ0LWNsZWFyLXNlbGVjdGlvbi5odG1sICovOyB9OwogCQlGNEQ2NURBODFGNUU0NzA0MDA5
RDhDMjcgLyogc2VsZWN0ZWQtdGV4dC1pbWFnZS1saW5rLWFuZC1lZGl0YWJsZS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RDY1REE3
MUY1RTQ2QzAwMDlEOEMyNyAvKiBzZWxlY3RlZC10ZXh0LWltYWdlLWxpbmstYW5kLWVkaXRhYmxl
Lmh0bWwgKi87IH07CkBAIC0zMTI4LDYgKzMxMjksOCBAQAogCQlGNEQyOTg2RDIwRkVFNzM3MDA5
MkQ2MzYgLyogUnVuU2NyaXB0QWZ0ZXJEb2N1bWVudExvYWQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBSdW5TY3JpcHRBZnRlckRvY3VtZW50TG9hZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjRENEYzQjQxRTRFMkJDQjAwQkIyNzY3IC8qIERyYWdBbmREcm9wU2ltdWxhdG9y
SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRHJhZ0FuZERy
b3BTaW11bGF0b3JJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDRGM0I3
MUU0RTM2RTQwMEJCMjc2NyAvKiBEcmFnQW5kRHJvcFRlc3RzSU9TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRHJhZ0FuZERyb3BUZXN0c0lPUy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRENUM1NTYyN0M2RUJEQzAwRUQxQzIzIC8qIFRlc3RV
SU1lbnVCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RVSU1lbnVCdWlsZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0RDVDNTU3MjdDNkVCREMwMEVEMUMyMyAvKiBUZXN0
VUlNZW51QnVpbGRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRlc3RVSU1lbnVCdWlsZGVy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEQ1RDY5NDI1QUY4QkU0MDAyMDUy
ODAgLyogRGlzYWJsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IERpc2FibGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24ubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDVFNEU3MUYwQzVEMjcwMDhDMUE0OSAvKiBkcmFnc3Rh
cnQtY2xlYXItc2VsZWN0aW9uLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZHJhZ3N0YXJ0LWNsZWFyLXNlbGVj
dGlvbi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRENjVEQTcxRjVFNDZD
MDAwOUQ4QzI3IC8qIHNlbGVjdGVkLXRleHQtaW1hZ2UtbGluay1hbmQtZWRpdGFibGUuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJzZWxlY3RlZC10ZXh0LWltYWdlLWxpbmstYW5k
LWVkaXRhYmxlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzczMiw2ICsz
NzM1LDggQEAKIAkJCQlGNEQ0RjNCNDFFNEUyQkNCMDBCQjI3NjcgLyogRHJhZ0FuZERyb3BTaW11
bGF0b3JJT1MubW0gKi8sCiAJCQkJMkU3NzY1Q0MxNkM0RDgwQTAwQkEyQkIxIC8qIG1haW5JT1Mu
bW0gKi8sCiAJCQkJRjQ4RDZDMEYyMjRCMzc3MDAwRTNFMkZCIC8qIFByZWZlcnJlZENvbnRlbnRN
b2RlLm1tICovLAorCQkJCUY0RDVDNTU2MjdDNkVCREMwMEVEMUMyMyAvKiBUZXN0VUlNZW51QnVp
bGRlci5oICovLAorCQkJCUY0RDVDNTU3MjdDNkVCREMwMEVEMUMyMyAvKiBUZXN0VUlNZW51QnVp
bGRlci5tbSAqLywKIAkJCQlGNDUxN0I2NTIwNTRDNDk1MDBDMjY3MjEgLyogVGVzdFdLV2ViVmll
d0NvbnRyb2xsZXIuaCAqLywKIAkJCQlGNDUxN0I2NjIwNTRDNDk1MDBDMjY3MjEgLyogVGVzdFdL
V2ViVmlld0NvbnRyb2xsZXIubW0gKi8sCiAJCQkJMkQyMTcxQzMyNjJGOEI4MjAwQzIwOURDIC8q
IFVJS2l0TWFjSGVscGVyU1BJLmggKi8sCkBAIC01Nzk3LDYgKzU4MDIsNyBAQAogCQkJCUY0NUQz
ODkxMjE1QTdCNEIwMDJBMjk3OSAvKiBUZXN0SW5zcGVjdG9yQmFyLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTE2MjgxMjUyMzI1QzE4MDAwQkI3RTQyIC8qIFRlc3RQREZEb2N1bWVudC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdCNzc0OTA2MjY3Q0NFNzIwMDk4NzNCNCAvKiBUZXN0UnVubmVyVGVz
dHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjRENUM1NTgyN0M2RkY0ODAwRUQxQzIzIC8qIFRl
c3RVSU1lbnVCdWlsZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ1MTdCNjcyMDU0QzQ5NTAw
QzI2NzIxIC8qIFRlc3RXS1dlYlZpZXdDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RjQ1MDMzRjUyMDZCRUM5NTAwOTM1MUNFIC8qIFRleHRBdXRvc2l6aW5nQm9vc3QubW0gaW4gU291
cmNlcyAqLywKIAkJCQk5M0U2MTkzQjFGOTMxQjNBMDBBRjI0NUUgLyogVGV4dENvZGVjLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbWFnZUFuYWx5c2lzVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0ltYWdlQW5hbHlzaXNUZXN0cy5tbQppbmRleCA5NjY4ZjUwNzAzY2Q2N2Q4
YzA4YWY1MmZlMWE0ZWZlN2MwMGUwZTc0Li4wYmYwYmM4MDE2OTU5MTEyMGM2YWRjNzkxZWY4MGVi
YWRkYTM5MzFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0ltYWdlQW5hbHlzaXNUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0ltYWdlQW5hbHlzaXNUZXN0cy5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2lt
cG9ydCAiSW5zdGFuY2VNZXRob2RTd2l6emxlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIlRlc3RJbnB1dERlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0VUlNZW51
QnVpbGRlci5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3
Q29uZmlndXJhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdz
Lmg+CkBAIC0yNjMsMjcgKzI2NCw4IEBAIFRFU1QoSW1hZ2VBbmFseXNpc1Rlc3RzLCBJbWFnZUFu
YWx5c2lzUHJpb3JpdGl6ZXNWaXNpYmxlSW1hZ2VzKQogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZ
U0lTX0VOSEFOQ0VNRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5PFVJTWVudUl0ZW0gKj4+PiBnU3dpenpsZWRNZW51
SXRlbXM7Ci1zdGF0aWMgdm9pZCBzd2l6emxlZFNldE1lbnVJdGVtcyhpZCwgU0VMLCBOU0FycmF5
PFVJTWVudUl0ZW0gKj4gKml0ZW1zKQotewotICAgIGdTd2l6emxlZE1lbnVJdGVtcy5nZXQoKSA9
IGl0ZW1zOwotfQotCi1zdGF0aWMgTlNBcnJheTxVSU1lbnVJdGVtICo+ICpzd2l6emxlZE1lbnVJ
dGVtcyhpZCwgU0VMKQotewotICAgIHJldHVybiBnU3dpenpsZWRNZW51SXRlbXMuZ2V0KCkuZ2V0
KCk7Ci19Ci0KIFRFU1QoSW1hZ2VBbmFseXNpc1Rlc3RzLCBNZW51Q29udHJvbGxlckl0ZW1zKQog
ewotICAgIGF1dG8gc2hhcmVkTWVudUNvbnRyb2xsZXIgPSBVSU1lbnVDb250cm9sbGVyLnNoYXJl
ZE1lbnVDb250cm9sbGVyOwotICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgbWVudUl0ZW1zU3dp
enpsZXIgeyBzaGFyZWRNZW51Q29udHJvbGxlci5jbGFzcywgQHNlbGVjdG9yKG1lbnVJdGVtcyks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZE1lbnVJdGVtcykgfTsKLSAgICBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyIHNldE1lbnVJdGVtc1N3aXp6bGVyIHsgc2hhcmVkTWVudUNvbnRyb2xs
ZXIuY2xhc3MsIEBzZWxlY3RvcihzZXRNZW51SXRlbXM6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KHN3aXp6bGVkU2V0TWVudUl0ZW1zKSB9OwotCi0gICAgTlNTdHJpbmcgKnRlc3RBY3Rpb25OYW1l
ID0gQCJUZXN0IGFjdGlvbiI7Ci0gICAgYXV0byBjdXN0b21BY3Rpb24gPSBhZG9wdE5TKFtbVUlN
ZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTp0ZXN0QWN0aW9uTmFtZSBhY3Rpb246QHNlbGVj
dG9yKGJlY29tZUZpcnN0UmVzcG9uZGVyKV0pOwotICAgIFtzaGFyZWRNZW51Q29udHJvbGxlciBz
ZXRNZW51SXRlbXM6QFtjdXN0b21BY3Rpb24uZ2V0KCldXTsKLQogICAgIGF1dG8gd2ViVmlldyA9
IGNyZWF0ZVdlYlZpZXdXaXRoVGV4dFJlY29nbml0aW9uRW5oYW5jZW1lbnRzKCk7CiAgICAgYXV0
byBpbnB1dERlbGVnYXRlID0gYWRvcHROUyhbVGVzdElucHV0RGVsZWdhdGUgbmV3XSk7CiAgICAg
W2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVyOltd
KFdLV2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikgewpAQCAtMjk2LDI3ICsy
NzgsMjMgQEAgVEVTVChJbWFnZUFuYWx5c2lzVGVzdHMsIE1lbnVDb250cm9sbGVySXRlbXMpCiAg
ICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImxldCBpbWFnZSA9IGRv
Y3VtZW50LmltYWdlc1swXTsgZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChpbWFnZSwg
MCwgaW1hZ2UsIDEpOyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBk
YXRlXTsKIAotICAgIGF1dG8gaGFzTWVudUl0ZW1XaXRoVGl0bGUgPSBbJl0gKE5TU3RyaW5nICp0
aXRsZSkgewotICAgICAgICBmb3IgKFVJTWVudUl0ZW0gKml0ZW0gaW4gc2hhcmVkTWVudUNvbnRy
b2xsZXIubWVudUl0ZW1zKSB7Ci0gICAgICAgICAgICBpZiAoW2l0ZW0udGl0bGUgaXNFcXVhbFRv
U3RyaW5nOnRpdGxlXSkKLSAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBOTzsKLSAgICB9OwotCi0gICAgRVhQRUNUX1RSVUUoaGFzTWVudUl0ZW1X
aXRoVGl0bGUodGVzdEFjdGlvbk5hbWUpKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoc2hhcmVkTWVu
dUNvbnRyb2xsZXIubWVudUl0ZW1zLmZpcnN0T2JqZWN0LnRpdGxlLCBXZWJDb3JlOjpjb250ZXh0
TWVudUl0ZW1UaXRsZU1hcmt1cEltYWdlKCkpOworICAgIGF1dG8gbWVudUJ1aWxkZXIgPSBhZG9w
dE5TKFtbVGVzdFVJTWVudUJ1aWxkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBidWls
ZE1lbnVXaXRoQnVpbGRlcjptZW51QnVpbGRlci5nZXQoKV07CisgICAgRVhQRUNUX1RSVUUoW21l
bnVCdWlsZGVyIGNvbnRhaW5zQWN0aW9uV2l0aFRpdGxlOldlYkNvcmU6OmNvbnRleHRNZW51SXRl
bVRpdGxlTWFya3VwSW1hZ2UoKV0pOwogCiAgICAgW3dlYlZpZXcgc2VsZWN0QWxsOm5pbF07CiAg
ICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwogCi0gICAgRVhQRUNU
X1RSVUUoaGFzTWVudUl0ZW1XaXRoVGl0bGUodGVzdEFjdGlvbk5hbWUpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoaGFzTWVudUl0ZW1XaXRoVGl0bGUoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGl0bGVN
YXJrdXBJbWFnZSgpKSk7CisgICAgW21lbnVCdWlsZGVyIHJlc2V0XTsKKyAgICBbd2ViVmlldyBi
dWlsZE1lbnVXaXRoQnVpbGRlcjptZW51QnVpbGRlci5nZXQoKV07CisgICAgRVhQRUNUX0ZBTFNF
KFttZW51QnVpbGRlciBjb250YWluc0FjdGlvbldpdGhUaXRsZTpXZWJDb3JlOjpjb250ZXh0TWVu
dUl0ZW1UaXRsZU1hcmt1cEltYWdlKCldKTsKIAogICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGRvY3VtZW50
LmJvZHksIDAsIGRvY3VtZW50LmltYWdlc1swXSwgMSk7Il07CiAgICAgW3dlYlZpZXcgd2FpdEZv
ck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgIEVYUEVDVF9UUlVFKGhhc01lbnVJdGVtV2l0
aFRpdGxlKHRlc3RBY3Rpb25OYW1lKSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKHNoYXJlZE1lbnVD
b250cm9sbGVyLm1lbnVJdGVtcy5maXJzdE9iamVjdC50aXRsZSwgV2ViQ29yZTo6Y29udGV4dE1l
bnVJdGVtVGl0bGVNYXJrdXBJbWFnZSgpKTsKKworICAgIFttZW51QnVpbGRlciByZXNldF07Cisg
ICAgW3dlYlZpZXcgYnVpbGRNZW51V2l0aEJ1aWxkZXI6bWVudUJ1aWxkZXIuZ2V0KCldOworICAg
IEVYUEVDVF9UUlVFKFttZW51QnVpbGRlciBjb250YWluc0FjdGlvbldpdGhUaXRsZTpXZWJDb3Jl
Ojpjb250ZXh0TWVudUl0ZW1UaXRsZU1hcmt1cEltYWdlKCldKTsKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkp
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQ29u
dGVudFZpZXdFZGl0aW5nQWN0aW9ucy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tDb250ZW50Vmlld0VkaXRpbmdBY3Rpb25zLm1tCmluZGV4IDBmMzU4MDc5ZWI4
ZTU3ZDUxZjU1YjAxYzg5MTJiOWZiZmEwOTliN2UuLjczZDkxYjdkMDkwNGI4Mzk1MDVlNzhkMGNh
MzEyN2NjMmQ0Mjg5NTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tDb250ZW50Vmlld0VkaXRpbmdBY3Rpb25zLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tDb250ZW50Vmlld0VkaXRpbmdBY3Rpb25zLm1t
CkBAIC0zMiw5ICszMiwxMSBAQAogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdElucHV0
RGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQg
IlRlc3RVSU1lbnVCdWlsZGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0
ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgor
I2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTg5LDE4ICs5MSwxOSBAQCBURVNUKFdlYktp
dCwgQXBwSGlnaGxpZ2h0c0luSW1hZ2VPdmVybGF5cykKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAic2VsZWN0SW1hZ2VPdmVybGF5KCkiXTsKICAgICBbd2ViVmll
dyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CiAKLSAgICBhdXRvIGNyZWF0ZUhpZ2hs
aWdodEZvckN1cnJlbnRRdWlja05vdGVXaXRoUmFuZ2VTZWxlY3RvciA9IE5TU2VsZWN0b3JGcm9t
U3RyaW5nKEAiY3JlYXRlSGlnaGxpZ2h0Rm9yQ3VycmVudFF1aWNrTm90ZVdpdGhSYW5nZToiKTsK
LSAgICBhdXRvIGNyZWF0ZUhpZ2hsaWdodEZvck5ld1F1aWNrTm90ZVdpdGhSYW5nZVNlbGVjdG9y
ID0gTlNTZWxlY3RvckZyb21TdHJpbmcoQCJjcmVhdGVIaWdobGlnaHRGb3JOZXdRdWlja05vdGVX
aXRoUmFuZ2U6Iik7Ci0KLSAgICBhdXRvIGNvbnRlbnRWaWV3ID0gW3dlYlZpZXcgdGV4dElucHV0
Q29udGVudFZpZXddOwotICAgIEVYUEVDVF9OVUxMKFtjb250ZW50VmlldyB0YXJnZXRGb3JBY3Rp
b246Y3JlYXRlSGlnaGxpZ2h0Rm9yQ3VycmVudFF1aWNrTm90ZVdpdGhSYW5nZVNlbGVjdG9yIHdp
dGhTZW5kZXI6bmlsXSk7Ci0gICAgRVhQRUNUX05VTEwoW2NvbnRlbnRWaWV3IHRhcmdldEZvckFj
dGlvbjpjcmVhdGVIaWdobGlnaHRGb3JOZXdRdWlja05vdGVXaXRoUmFuZ2VTZWxlY3RvciB3aXRo
U2VuZGVyOm5pbF0pOworICAgIGF1dG8gbWVudUJ1aWxkZXIgPSBhZG9wdE5TKFtbVGVzdFVJTWVu
dUJ1aWxkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBidWlsZE1lbnVXaXRoQnVpbGRl
cjptZW51QnVpbGRlci5nZXQoKV07CisgICAgRVhQRUNUX0ZBTFNFKFttZW51QnVpbGRlciBjb250
YWluc0FjdGlvbldpdGhUaXRsZTpXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdBZGRIaWdobGln
aHRUb05ld1F1aWNrTm90ZSgpXSk7CisgICAgRVhQRUNUX0ZBTFNFKFttZW51QnVpbGRlciBjb250
YWluc0FjdGlvbldpdGhUaXRsZTpXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdBZGRIaWdobGln
aHRUb0N1cnJlbnRRdWlja05vdGUoKV0pOwogCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CiAgICAgW3dlYlZpZXcgc2VsZWN0QWxsOm5pbF07
CiAgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgIEVYUEVD
VF9OVUxMKFtjb250ZW50VmlldyB0YXJnZXRGb3JBY3Rpb246Y3JlYXRlSGlnaGxpZ2h0Rm9yQ3Vy
cmVudFF1aWNrTm90ZVdpdGhSYW5nZVNlbGVjdG9yIHdpdGhTZW5kZXI6bmlsXSk7Ci0gICAgRVhQ
RUNUX0VRKFtjb250ZW50VmlldyB0YXJnZXRGb3JBY3Rpb246Y3JlYXRlSGlnaGxpZ2h0Rm9yTmV3
UXVpY2tOb3RlV2l0aFJhbmdlU2VsZWN0b3Igd2l0aFNlbmRlcjpuaWxdLCBjb250ZW50Vmlldyk7
CisKKyAgICBbbWVudUJ1aWxkZXIgcmVzZXRdOworICAgIFt3ZWJWaWV3IGJ1aWxkTWVudVdpdGhC
dWlsZGVyOm1lbnVCdWlsZGVyLmdldCgpXTsKKyAgICBFWFBFQ1RfVFJVRShbbWVudUJ1aWxkZXIg
Y29udGFpbnNBY3Rpb25XaXRoVGl0bGU6V2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQWRkSGln
aGxpZ2h0VG9OZXdRdWlja05vdGUoKV0pOworICAgIEVYUEVDVF9GQUxTRShbbWVudUJ1aWxkZXIg
Y29udGFpbnNBY3Rpb25XaXRoVGl0bGU6V2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQWRkSGln
aGxpZ2h0VG9DdXJyZW50UXVpY2tOb3RlKCldKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBUFBf
SElHSExJR0hUUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1Rlc3RVSU1l
bnVCdWlsZGVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9UZXN0VUlNZW51QnVpbGRlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI4MjI0OGNiZjdlZWJmYTYzM2I2M2E5OTU3MmE1OWE2N2U1NWNlZmIKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9UZXN0VUlNZW51QnVpbGRl
ci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CisKK0BpbnRlcmZh
Y2UgVGVzdFVJTWVudUJ1aWxkZXIgOiBOU09iamVjdDxVSU1lbnVCdWlsZGVyPgorCistIChCT09M
KWNvbnRhaW5zQWN0aW9uV2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlOworLSAodm9pZClyZXNl
dDsKKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1Rlc3RVSU1lbnVCdWlsZGVyLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9pb3MvVGVzdFVJTWVudUJ1aWxkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFiMGVhNzc2
YTE1MGYxYmQ3YmZiZTAzMjc3MGQ4ZDhjM2ZkNDkwOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvaW9zL1Rlc3RVSU1lbnVCdWlsZGVyLm1tCkBAIC0wLDAgKzEsMTQwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0VUlNZW51QnVp
bGRlci5oIgorCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorCitAaW1wbGVtZW50YXRpb24gVGVzdFVJTWVudUJ1aWxkZXIgeworICAgIFJldGFp
blB0cjxOU011dGFibGVEaWN0aW9uYXJ5PFVJTWVudUlkZW50aWZpZXIsIFVJTWVudSAqPj4gX21l
bnVzQnlJZGVudGlmaWVyOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgLy8gRklY
TUU6IEEgZmxhdCBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWxsIFVJTWVudXMgaXMgc3VmZmljaWVu
dCB0byB0ZXN0IGFsbCBvZiB0aGUKKyAgICAvLyBub24tZGVmYXVsdCBpdGVtcyBjdXJyZW50bHkg
c3VwcGxpZWQgYnkgV2ViS2l0LiBXZSdsbCB3YW50IHRvIGF1Z21lbnQgdGhpcyBpbiB0aGUKKyAg
ICAvLyBmdXR1cmUgaWYgd2UgbmVlZCB0byB0ZXN0IG1lbnUgbmVzdGluZyBvciBpdGVtIG9yZGVy
aW5nLgorICAgIF9tZW51c0J5SWRlbnRpZmllciA9IGFkb3B0TlMoW05TTXV0YWJsZURpY3Rpb25h
cnk8VUlNZW51SWRlbnRpZmllciwgVUlNZW51ICo+IG5ld10pOworICAgIHJldHVybiBzZWxmOwor
fQorCistIChVSU1lbnVTeXN0ZW0gKilzeXN0ZW0KK3sKKyAgICByZXR1cm4gVUlNZW51U3lzdGVt
Lm1haW5TeXN0ZW07Cit9CisKKy0gKFVJTWVudSAqKW1lbnVGb3JJZGVudGlmaWVyOihVSU1lbnVJ
ZGVudGlmaWVyKWlkZW50aWZpZXIKK3sKKyAgICByZXR1cm4gW19tZW51c0J5SWRlbnRpZmllciBv
YmplY3RGb3JLZXk6aWRlbnRpZmllcl07Cit9CisKKy0gKFVJTWVudUVsZW1lbnQgKilmaW5kTWF0
Y2hpbmc6KEJPT0woXikoVUlNZW51RWxlbWVudCAqKSlpc01hdGNoCit7CisgICAgZm9yIChVSU1l
bnUgKm1lbnUgaW4gW19tZW51c0J5SWRlbnRpZmllciBhbGxWYWx1ZXNdKSB7CisgICAgICAgIGZv
ciAoVUlNZW51RWxlbWVudCAqY2hpbGQgaW4gbWVudS5jaGlsZHJlbikgeworICAgICAgICAgICAg
aWYgKGlzTWF0Y2goY2hpbGQpKQorICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gbmlsOworfQorCistIChCT09MKWNvbnRhaW5zQWN0aW9u
V2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlCit7CisgICAgcmV0dXJuIFtzZWxmIGZpbmRNYXRj
aGluZzpeQk9PTChVSU1lbnVFbGVtZW50ICplbGVtZW50KSB7CisgICAgICAgIHJldHVybiBbZHlu
YW1pY19vYmpjX2Nhc3Q8VUlBY3Rpb24+KGVsZW1lbnQpLnRpdGxlIGlzRXF1YWw6dGl0bGVdOwor
ICAgIH1dOworfQorCistICh2b2lkKXJlc2V0Cit7CisgICAgW19tZW51c0J5SWRlbnRpZmllciBy
ZW1vdmVBbGxPYmplY3RzXTsKK30KKworLSAoVUlBY3Rpb24gKilhY3Rpb25Gb3JJZGVudGlmaWVy
OihVSUFjdGlvbklkZW50aWZpZXIpaWRlbnRpZmllcgoreworICAgIHJldHVybiAoVUlBY3Rpb24g
Kilbc2VsZiBmaW5kTWF0Y2hpbmc6XkJPT0woVUlNZW51RWxlbWVudCAqZWxlbWVudCkgeworICAg
ICAgICByZXR1cm4gW2R5bmFtaWNfb2JqY19jYXN0PFVJQWN0aW9uPihlbGVtZW50KS5pZGVudGlm
aWVyIGlzRXF1YWw6aWRlbnRpZmllcl07CisgICAgfV07Cit9CisKKy0gKFVJQ29tbWFuZCAqKWNv
bW1hbmRGb3JBY3Rpb246KFNFTClhY3Rpb24gcHJvcGVydHlMaXN0OihpZClwcm9wZXJ0eUxpc3QK
K3sKKyAgICByZXR1cm4gKFVJQ29tbWFuZCAqKVtzZWxmIGZpbmRNYXRjaGluZzpeQk9PTChVSU1l
bnVFbGVtZW50ICplbGVtZW50KSB7CisgICAgICAgIGF1dG8gY29tbWFuZCA9IGR5bmFtaWNfb2Jq
Y19jYXN0PFVJQ29tbWFuZD4oZWxlbWVudCk7CisgICAgICAgIHJldHVybiBjb21tYW5kLmFjdGlv
biA9PSBhY3Rpb24gJiYgKGNvbW1hbmQucHJvcGVydHlMaXN0ID09IHByb3BlcnR5TGlzdCB8fCBb
Y29tbWFuZC5wcm9wZXJ0eUxpc3QgaXNFcXVhbDpwcm9wZXJ0eUxpc3RdKTsKKyAgICB9XTsKK30K
KworLSAodm9pZClyZXBsYWNlTWVudUZvcklkZW50aWZpZXI6KFVJTWVudUlkZW50aWZpZXIpcmVw
bGFjZWRJZGVudGlmaWVyIHdpdGhNZW51OihVSU1lbnUgKilyZXBsYWNlbWVudE1lbnUKK3sKKyAg
ICBbX21lbnVzQnlJZGVudGlmaWVyIHNldE9iamVjdDpyZXBsYWNlbWVudE1lbnUgZm9yS2V5OnJl
cGxhY2VkSWRlbnRpZmllcl07Cit9CisKKy0gKHZvaWQpcmVwbGFjZUNoaWxkcmVuT2ZNZW51Rm9y
SWRlbnRpZmllcjooVUlNZW51SWRlbnRpZmllcilwYXJlbnRJZGVudGlmaWVyIGZyb21DaGlsZHJl
bkJsb2NrOihOU0FycmF5PFVJTWVudUVsZW1lbnQgKj4gKihOU19OT0VTQ0FQRV4pKE5TQXJyYXk8
VUlNZW51RWxlbWVudCAqPiAqKSljaGlsZHJlbkJsb2NrCit7CisgICAgaWYgKGF1dG8gbWVudSA9
IFtzZWxmIG1lbnVGb3JJZGVudGlmaWVyOnBhcmVudElkZW50aWZpZXJdKQorICAgICAgICBbX21l
bnVzQnlJZGVudGlmaWVyIHNldE9iamVjdDpbbWVudSBtZW51QnlSZXBsYWNpbmdDaGlsZHJlbjpj
aGlsZHJlbkJsb2NrKG1lbnUuY2hpbGRyZW4pXSBmb3JLZXk6cGFyZW50SWRlbnRpZmllcl07Cit9
CisKKy0gKHZvaWQpaW5zZXJ0Q2hpbGRNZW51OihVSU1lbnUgKiljaGlsZE1lbnUgYXRTdGFydE9m
TWVudUZvcklkZW50aWZpZXI6KFVJTWVudUlkZW50aWZpZXIpcGFyZW50SWRlbnRpZmllcgorewor
ICAgIFtzZWxmIHJlZ2lzdGVyTWVudTpjaGlsZE1lbnVdOworfQorCistICh2b2lkKWluc2VydENo
aWxkTWVudTooVUlNZW51ICopY2hpbGRNZW51IGF0RW5kT2ZNZW51Rm9ySWRlbnRpZmllcjooVUlN
ZW51SWRlbnRpZmllcilwYXJlbnRJZGVudGlmaWVyCit7CisgICAgW3NlbGYgcmVnaXN0ZXJNZW51
OmNoaWxkTWVudV07Cit9CisKKy0gKHZvaWQpcmVtb3ZlTWVudUZvcklkZW50aWZpZXI6KFVJTWVu
dUlkZW50aWZpZXIpcmVtb3ZlZElkZW50aWZpZXIKK3sKKyAgICBbX21lbnVzQnlJZGVudGlmaWVy
IHJlbW92ZU9iamVjdEZvcktleTpyZW1vdmVkSWRlbnRpZmllcl07Cit9CisKKy0gKHZvaWQpaW5z
ZXJ0U2libGluZ01lbnU6KFVJTWVudSAqKXNpYmxpbmdNZW51IGJlZm9yZU1lbnVGb3JJZGVudGlm
aWVyOihVSU1lbnVJZGVudGlmaWVyKXNpYmxpbmdJZGVudGlmaWVyCit7CisgICAgW3NlbGYgcmVn
aXN0ZXJNZW51OnNpYmxpbmdNZW51XTsKK30KKworLSAodm9pZClpbnNlcnRTaWJsaW5nTWVudToo
VUlNZW51ICopc2libGluZ01lbnUgYWZ0ZXJNZW51Rm9ySWRlbnRpZmllcjooVUlNZW51SWRlbnRp
ZmllcilzaWJsaW5nSWRlbnRpZmllcgoreworICAgIFtzZWxmIHJlZ2lzdGVyTWVudTpzaWJsaW5n
TWVudV07Cit9CisKKy0gKHZvaWQpcmVnaXN0ZXJNZW51OihVSU1lbnUgKiltZW51Cit7CisgICAg
W19tZW51c0J5SWRlbnRpZmllciBzZXRPYmplY3Q6bWVudSBmb3JLZXk6bWVudS5pZGVudGlmaWVy
XTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>