<?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>238714</bug_id>
          
          <creation_ts>2022-04-03 10:40:21 -0700</creation_ts>
          <short_desc>[macOS] Add helper methods to install and uninstall VKCImageAnalysisOverlayView</short_desc>
          <delta_ts>2022-04-04 15:08:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>1857683</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-03 10:40:21 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857684</commentid>
    <comment_count>1</comment_count>
      <attachid>456507</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-03 12:00:46 -0700</bug_when>
    <thetext>Created attachment 456507
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857688</commentid>
    <comment_count>2</comment_count>
      <attachid>456510</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-03 12:52:44 -0700</bug_when>
    <thetext>Created attachment 456510
Fix Big Sur build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857690</commentid>
    <comment_count>3</comment_count>
      <attachid>456511</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-03 13:00:22 -0700</bug_when>
    <thetext>Created attachment 456511
Fix Big Sur build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857923</commentid>
    <comment_count>4</comment_count>
      <attachid>456511</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-04-04 10:33:13 -0700</bug_when>
    <thetext>Comment on attachment 456511
Fix Big Sur build

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

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:1172
&gt; +        return CGRectMake(0, 0, 1, 1);

Why does this have a non-zero size?

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:5960
&gt; +bool WebViewImpl::shouldAvoidUpdatingCursorAtPoint(NSPoint locationInView) const

Not totally sure this mechanism is a good idea, e.g. if you cmd-tab to a window with a web view and then don&apos;t update the cursor. Can you instead just force the cursor you want to be set?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857991</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-04 12:18:41 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #4)
&gt; Comment on attachment 456511 [details]
&gt; Fix Big Sur build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456511&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:1172
&gt; &gt; +        return CGRectMake(0, 0, 1, 1);
&gt; 
&gt; Why does this have a non-zero size?

So I just decided to fall back to the default value here (i.e., as if the delegate were unimplemented), which is the unit rect (0, 0, 1, 1). The return value of this delegate method is a normalized rect relative to the bounds of the WKWebView.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:5960
&gt; &gt; +bool WebViewImpl::shouldAvoidUpdatingCursorAtPoint(NSPoint locationInView) const
&gt; 
&gt; Not totally sure this mechanism is a good idea, e.g. if you cmd-tab to a
&gt; window with a web view and then don&apos;t update the cursor. Can you instead
&gt; just force the cursor you want to be set?

That&apos;s a good point! I&apos;ll see if I can change this...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857999</commentid>
    <comment_count>6</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-04 12:42:34 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #5)
&gt; (In reply to Tim Horton from comment #4)
&gt; &gt; Comment on attachment 456511 [details]
&gt; &gt; Fix Big Sur build
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=456511&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:1172
&gt; &gt; &gt; +        return CGRectMake(0, 0, 1, 1);
&gt; &gt; 
&gt; &gt; Why does this have a non-zero size?
&gt; 
&gt; So I just decided to fall back to the default value here (i.e., as if the
&gt; delegate were unimplemented), which is the unit rect (0, 0, 1, 1). The
&gt; return value of this delegate method is a normalized rect relative to the
&gt; bounds of the WKWebView.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:5960
&gt; &gt; &gt; +bool WebViewImpl::shouldAvoidUpdatingCursorAtPoint(NSPoint locationInView) const
&gt; &gt; 
&gt; &gt; Not totally sure this mechanism is a good idea, e.g. if you cmd-tab to a
&gt; &gt; window with a web view and then don&apos;t update the cursor. Can you instead
&gt; &gt; just force the cursor you want to be set?
&gt; 
&gt; That&apos;s a good point! I&apos;ll see if I can change this...

Chatted with Tim on Slack about this; the overall approach seems okay since we&apos;re not avoiding cursor updates — just letting the native VisionKit views set the cursor on our behalf. I&apos;ll rename this method to something like, `imageAnalysisOverlayViewHasCursorAtPoint()`, to make this interaction clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858011</commentid>
    <comment_count>7</comment_count>
      <attachid>456611</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-04 12:56:46 -0700</bug_when>
    <thetext>Created attachment 456611
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858059</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-04 14:17:16 -0700</bug_when>
    <thetext>Committed r292316 (249209@main): &lt;https://commits.webkit.org/249209@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456611.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858061</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-04 14:18:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/91260885&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456507</attachid>
            <date>2022-04-03 12:00:46 -0700</date>
            <delta_ts>2022-04-03 13:15:24 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-238714-20220403120045.patch</filename>
            <type>text/plain</type>
            <size>16669</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBmOTZjYzZi
ZWMzNWEyMTRmZTU1MzZhZjY4YzM5MzNiNjUwYjY3MDg5Li44ZTg1NjBlZTc2NGNkNDIwYTE1NDMy
ZmQzMzdlODRiN2Y1ZmUxNzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMi0wNC0wMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBbbWFjT1NdIEFkZCBoZWxwZXIgbWV0aG9kcyB0byBpbnN0YWxsIGFuZCB1bmluc3RhbGwg
VktDSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgc29mdC1saW5raW5nIHN1cHBvcnQgZm9yIFZLQ0ltYWdl
QW5hbHlzaXNPdmVybGF5Vmlldy4gU2VlIFdlYktpdC9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgICAgICAqIHBhbC9jb2NvYS9WaXNpb25LaXRDb3JlU29mdExpbmsuaDoKKyAgICAg
ICAgKiBwYWwvY29jb2EvVmlzaW9uS2l0Q29yZVNvZnRMaW5rLm1tOgorCiAyMDIyLTAzLTMxICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFk
ZCBzdXBwb3J0IGZvciB0ZW1wb3JhcmlseSBpbnN0YWxsaW5nIFZLQ0ltYWdlQW5hbHlzaXNJbnRl
cmFjdGlvbiBvbiBXS0NvbnRlbnRWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZhYjZjNjgxZjVlYzVmMGQ3MTBl
MDE1NjExZGYyYjc3YmZlYjgxMDYuLjA2NDNiNzU0YWE2YjQ3MTlmOTkzODYyZDM0ZGM1YzhhZWU5
YzU0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjItMDQtMDMgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBBZGQgaGVscGVy
IG1ldGhvZHMgdG8gaW5zdGFsbCBhbmQgdW5pbnN0YWxsIFZLQ0ltYWdlQW5hbHlzaXNPdmVybGF5
VmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
NzE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGhlbHBlciBtZXRob2RzIGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIGEgdGVtcG9yYXJ5IFZLQ0lt
YWdlQW5hbHlzaXNPdmVybGF5VmlldyBhcyBhIHN1YnZpZXcgb2YgV0tXZWJWaWV3LgorICAgICAg
ICBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yICh5ZXQp
LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjppbWFnZUFuYWx5c2lzSW50ZXJhY3Rpb25Cb3VuZHMgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3
IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm9jZXNzSW1hZ2VBbmFseXplclJlcXVlc3QpOgor
CisgICAgICAgIFB1bGwgbG9naWMgZm9yIHByb2Nlc3NpbmcgYW4gaW1hZ2UgYW5hbHl6ZXIgcmVx
dWVzdCBhbmQgaW52b2tpbmcgdGhlIGNvbXBsZXRpb24gaGFuZGxlciBvbiB0aGUgbWFpbiB0aHJl
YWQgKHZpYQorICAgICAgICBgY2FsbE9uTWFpblJ1bkxvb3BgKSBvdXQgaW50byBhIHNlcGFyYXRl
IGhlbHBlciBtZXRob2QgKHRvIGJlIHVzZWQgaW4gYSBzdWJzZXF1ZW50IHBhdGNoKS4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdFRleHRSZWNvZ25pdGlvbik6CisgICAg
ICAgICgtW1dLSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGUgaW5pdFdpdGhXZWJWaWV3
SW1wbDpdKToKKworICAgICAgICBBZGQgYW4gT2JqZWN0aXZlLUMgb2JqZWN0IHRoYXQgYWN0cyBh
cyBhIGRlbGVnYXRlIGZvciB0aGUgaW1hZ2UgYW5hbHlzaXMgb3ZlcmxheSB2aWV3LiBUaGlzIGlz
IGRvbmUgdG8gY29ycmVjdGx5CisgICAgICAgIHBvc2l0aW9uIHRoZSBvdmVybGF5LCBidXQgYWxz
byBmb3IgYSBjb3VwbGUgb2YgYWRkaXRvbmFsIHJlYXNvbnMgYmVsb3cuCisKKyAgICAgICAgKC1b
V0tJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0ZSBkZWFsbG9jXSk6CisgICAgICAgICgt
W1dLSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGUgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0
aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKworICAgICAgICBBZGQgbG9naWMgdG8gc3Rl
YWwgZmlyc3QgcmVzcG9uZGVyIHN0YXR1cyBhd2F5IGZyb20gVktDSW1hZ2VBbmFseXNpc092ZXJs
YXlWaWV3J3MgaW50ZXJuYWwgdGV4dCBzZWxlY3Rpb24gdmlldworICAgICAgICBhbmQgcmVzdG9y
ZSBpdCB0byB0aGUgd2ViIHZpZXcgd2hlbiB0aGVyZSBpcyBubyBsb25nZXIgYW4gYWN0aXZlIHRl
eHQgc2VsZWN0aW9uIGluIHRoZSBvdmVybGF5LiBUaGlzIGVuc3VyZXMKKyAgICAgICAgdGhhdCBr
ZXkgZXZlbnRzIGFyZSBvbmx5IHJvdXRlZCB0byB0aGUgaW1hZ2UgYW5hbHlzaXMgb3ZlcmxheSB2
aWV3IGluIHRoZSBjYXNlIHdoZXJlIHRoZSBvdmVybGF5IGFjdHVhbGx5CisgICAgICAgIGNvbnRh
aW5zIGEgdGV4dCBzZWxlY3Rpb24uCisKKyAgICAgICAgKC1bV0tJbWFnZUFuYWx5c2lzT3Zlcmxh
eVZpZXdEZWxlZ2F0ZSBmaXJzdFJlc3BvbmRlcklzSW5zaWRlSW1hZ2VPdmVybGF5XSk6CisgICAg
ICAgICgtW1dLSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGUgaW1hZ2VBbmFseXNpc092
ZXJsYXk6c2hvdWxkSGFuZGxlS2V5RG93bkV2ZW50Ol0pOgorCisgICAgICAgIE5ldmVyIGFsbG93
IHRoZSBpbWFnZSBvdmVybGF5IHZpZXcgdG8gb3ZlcnJpZGUgRXNjYXBlIGtleSBoYW5kbGluZy4K
KworICAgICAgICAoLVtXS0ltYWdlQW5hbHlzaXNPdmVybGF5Vmlld0RlbGVnYXRlIGNvbnRlbnRz
UmVjdEZvckltYWdlQW5hbHlzaXNPdmVybGF5VmlldzpdKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6Omluc3RhbGxJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6dW5pbnN0YWxsSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNob3VsZEF2b2lkVXBkYXRpbmdDdXJzb3JBdFBv
aW50IGNvbnN0KToKKworICAgICAgICBBbGxvdyB0aGUgaW1hZ2UgYW5hbHlzaXMgb3ZlcmxheSB2
aWV3IHRvIHNldCB0aGUgbW91c2UgY3Vyc29yIHdoZW4gdGhlIG1vdXNlIGlzIG92ZXIgaW50ZXJh
Y3RhYmxlIGNvbnRlbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2V0Q3Vyc29yKToKKwog
MjAyMi0wNC0wMiAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRXhwb3NlIEFYT2JqZWN0Q2FjaGU6OnRyZWVEYXRhIHRvIHRoZSBVSSBwcm9jZXNzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9WaXNpb25LaXRDb3JlU29m
dExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvVmlzaW9uS2l0Q29yZVNvZnRM
aW5rLmgKaW5kZXggZTFmMDY5OWVhNDY4YWRjOTgxYWRiNmU5ZTMzN2M5NDU0OTA1ZTIxZi4uODMw
NzdiOTU5ODE2NWE0ODI0ODEyYmM0OTUyODAyZjdhNDFkZjMyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jb2NvYS9WaXNpb25LaXRDb3JlU29mdExpbmsuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Zpc2lvbktpdENvcmVTb2Z0TGluay5oCkBAIC0zOCw2
ICszOCw3IEBAIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgVktDSW1hZ2VBbmFseXpl
clJlcXVlc3QpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFZLQ0ltYWdlQW5hbHlz
aXMpCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKIFNPRlRfTElOS19D
TEFTU19GT1JfSEVBREVSKFBBTCwgVktDSW1hZ2VBbmFseXNpc0ludGVyYWN0aW9uKQorU09GVF9M
SU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcpCiAj
ZW5kaWYKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL1Zpc2lvbktpdENvcmVTb2Z0TGluay5tbSBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY29jb2EvVmlzaW9uS2l0Q29yZVNvZnRMaW5rLm1tCmluZGV4IDRlYmVj
M2U2NDA1YjVjYTBlMzRjYTBhOGJhMTczMTJmMGYzZjUxM2QuLjgwNjkyMzA3OTM3NWIxOGFjZTNj
ZGVjYWU2NDg0MzU3Y2M1YWVkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y29jb2EvVmlzaW9uS2l0Q29yZVNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY29jb2EvVmlzaW9uS2l0Q29yZVNvZnRMaW5rLm1tCkBAIC0zOCw2ICszOCw3IEBAIFNPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUX0FORF9JU19PUFRJT05BTChQQUwsIFZp
c2lvbktpdENvcmUsIFZLQ0ltCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VF9BTkRfSVNfT1BUSU9OQUwoUEFMLCBWaXNpb25LaXRDb3JlLCBWS0NJbWFnZUFuYWx5c2lzLCBQ
QUxfRVhQT1JULCB0cnVlKQogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMp
CiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVF9BTkRfSVNfT1BUSU9OQUwo
UEFMLCBWaXNpb25LaXRDb3JlLCBWS0NJbWFnZUFuYWx5c2lzSW50ZXJhY3Rpb24sIFBBTF9FWFBP
UlQsIHRydWUpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVF9BTkRfSVNf
T1BUSU9OQUwoUEFMLCBWaXNpb25LaXRDb3JlLCBWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcs
IFBBTF9FWFBPUlQsIHRydWUpCiAjZW5kaWYKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAppbmRleCAyY2Ix
OTljZGJlZjNjMzI0MDM4MTFlNWY1ZjdmOGQ0NjFiZmNhMWJhLi5iZGQ5NjEzMGI2YWE4NDY0MmVh
MmUxOTgzNWYzMGE1YWJiZDhiZTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLmgKQEAgLTYxLDYgKzYxLDcgQEAgT0JKQ19DTEFTUyBXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFdLRE9NUGFzdGVNZW51RGVsZWdhdGU7CiBPQkpD
X0NMQVNTIFdLRWRpdG9yVW5kb1RhcmdldDsKIE9CSkNfQ0xBU1MgV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlcjsKK09CSkNfQ0xBU1MgV0tJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0
ZTsKIE9CSkNfQ0xBU1MgV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyOwogT0JKQ19DTEFTUyBX
S01vdXNlVHJhY2tpbmdPYnNlcnZlcjsKIE9CSkNfQ0xBU1MgV0tSZXZlYWxJdGVtUHJlc2VudGVy
OwpAQCAtODYsNiArODcsOCBAQCBPQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
OwogT0JKQ19DTEFTUyBXS1BERkhVRFZpZXc7CiAjZW5kaWYKIAorT0JKQ19DTEFTUyBWS0NJbWFn
ZUFuYWx5c2lzT3ZlcmxheVZpZXc7CisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgSGl0VGVzdFJl
c3VsdDsKIGNsYXNzIE9iamVjdDsKQEAgLTU5NSw2ICs1OTgsMTMgQEAgcHVibGljOgogICAgIHZv
aWQgY29tcHV0ZUhhc0ltYWdlQW5hbHlzaXNSZXN1bHRzKGNvbnN0IFVSTCYgaW1hZ2VVUkwsIFNo
YXJlYWJsZUJpdG1hcCYgaW1hZ2VCaXRtYXAsIEltYWdlQW5hbHlzaXNUeXBlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZ
U0lTX0VOSEFOQ0VNRU5UUykKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgaW1hZ2VBbmFseXNpc0lu
dGVyYWN0aW9uQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUFuYWx5c2lzSW50ZXJhY3Rp
b25Cb3VuZHM7IH0KKyAgICBWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcgKmltYWdlQW5hbHlz
aXNPdmVybGF5VmlldygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3
LmdldCgpOyB9CisjZW5kaWYKKworICAgIGJvb2wgc2hvdWxkQXZvaWRVcGRhdGluZ0N1cnNvckF0
UG9pbnQoTlNQb2ludCBsb2NhdGlvbkluVmlldykgY29uc3Q7CisKICAgICBib29sIGFjY2VwdHNQ
cmV2aWV3UGFuZWxDb250cm9sKFFMUHJldmlld1BhbmVsICopOwogICAgIHZvaWQgYmVnaW5QcmV2
aWV3UGFuZWxDb250cm9sKFFMUHJldmlld1BhbmVsICopOwogICAgIHZvaWQgZW5kUHJldmlld1Bh
bmVsQ29udHJvbChRTFByZXZpZXdQYW5lbCAqKTsKQEAgLTY3Nyw2ICs2ODcsOSBAQCBwcml2YXRl
OgogICAgIGJvb2wgdXNlTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldygpIGNvbnN0OwogICAgIGJv
b2wgaXNSaWNobHlFZGl0YWJsZUZvclRvdWNoQmFyKCkgY29uc3Q7CiAKKyAgICB2b2lkIGluc3Rh
bGxJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcoVktDSW1hZ2VBbmFseXNpcyAqKTsKKyAgICB2b2lk
IHVuaW5zdGFsbEltYWdlQW5hbHlzaXNPdmVybGF5VmlldygpOworCiAgICAgYm9vbCBtX2NsaWVu
dFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Nh
bkNyZWF0ZVRvdWNoQmFycyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3N0YXJ0ZWRMaXN0ZW5pbmdU
b0N1c3RvbWl6YXRpb25FdmVudHMgeyBmYWxzZSB9OwpAQCAtNzQ1LDYgKzc1OCw3IEBAIHByaXZh
dGU6CiAKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgQ29jb2FJbWFnZUFuYWx5emVy
ICplbnN1cmVJbWFnZUFuYWx5emVyKCk7CisgICAgaW50MzJfdCBwcm9jZXNzSW1hZ2VBbmFseXpl
clJlcXVlc3QoQ29jb2FJbWFnZUFuYWx5emVyUmVxdWVzdCAqLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKENvY29hSW1hZ2VBbmFseXNpcyAqLCBOU0Vycm9yICopPiYmKTsKICNlbmRpZgogCiAgICAg
V2Vha09iakNQdHI8TlNWaWV3PFdlYlZpZXdJbXBsRGVsZWdhdGU+PiBtX3ZpZXc7CkBAIC04OTEs
NiArOTA1LDEzIEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENvY29hSW1hZ2VBbmFseXplcj4g
bV9pbWFnZUFuYWx5emVyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5I
QU5DRU1FTlRTKQorICAgIFJldGFpblB0cjxWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXc+IG1f
aW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3OworICAgIFJldGFpblB0cjxXS0ltYWdlQW5hbHlzaXNP
dmVybGF5Vmlld0RlbGVnYXRlPiBtX2ltYWdlQW5hbHlzaXNPdmVybGF5Vmlld0RlbGVnYXRlOwor
ICAgIHVpbnQzMl90IG1fY3VycmVudEltYWdlQW5hbHlzaXNSZXF1ZXN0SUQgeyAwIH07CisgICAg
V2ViQ29yZTo6RmxvYXRSZWN0IG1faW1hZ2VBbmFseXNpc0ludGVyYWN0aW9uQm91bmRzOworI2Vu
ZGlmCisKICNpZiBIQVZFKFRSQU5TTEFUSU9OX1VJX1NFUlZJQ0VTKSAmJiBFTkFCTEUoQ09OVEVY
VF9NRU5VUykKICAgICBXZWFrT2JqQ1B0cjxOU1BvcG92ZXI+IG1fbGFzdENvbnRleHRNZW51VHJh
bnNsYXRpb25Qb3BvdmVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCmluZGV4IGQ3NDc0NzA0ZGJlYzg3NWU3YTNkNDkwODY2MTkzYWY1M2U3
MDkxZDMuLjU5YzJhNjc0NTQ1ZmM0YzExYjA1N2MxZDhjZjZlMzIyODQxY2UyZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yMzIsNiArMjMy
LDE1IEBAIENvY29hSW1hZ2VBbmFseXplciAqV2ViVmlld0ltcGw6OmVuc3VyZUltYWdlQW5hbHl6
ZXIoKQogICAgIHJldHVybiBtX2ltYWdlQW5hbHl6ZXIuZ2V0KCk7CiB9CiAKK2ludDMyX3QgV2Vi
Vmlld0ltcGw6OnByb2Nlc3NJbWFnZUFuYWx5emVyUmVxdWVzdChDb2NvYUltYWdlQW5hbHl6ZXJS
ZXF1ZXN0ICpyZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENvY29hSW1hZ2VBbmFseXNp
cyAqLCBOU0Vycm9yICopPiYmIGNvbXBsZXRpb24pCit7CisgICAgcmV0dXJuIFtlbnN1cmVJbWFn
ZUFuYWx5emVyKCkgcHJvY2Vzc1JlcXVlc3Q6cmVxdWVzdCBwcm9ncmVzc0hhbmRsZXI6bmlsIGNv
bXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxl
dGlvbildIChDb2NvYUltYWdlQW5hbHlzaXMgKnJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIG11dGFi
bGUgeworICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbY29tcGxldGlvbiA9IFdURk1vdmUoY29t
cGxldGlvbiksIHJlc3VsdCA9IFJldGFpblB0ciB7IHJlc3VsdCB9LCBlcnJvciA9IFJldGFpblB0
ciB7IGVycm9yIH1dICgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbihyZXN1bHQu
Z2V0KCksIGVycm9yLmdldCgpKTsKKyAgICAgICAgfSk7CisgICAgfSkuZ2V0KCldOworfQorCiBz
dGF0aWMgUmV0YWluUHRyPENvY29hSW1hZ2VBbmFseXplclJlcXVlc3Q+IGNyZWF0ZUltYWdlQW5h
bHl6ZXJSZXF1ZXN0KENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IFVSTCYgaW1hZ2VVUkwsIGNvbnN0
IFVSTCYgcGFnZVVSTCwgVktBbmFseXNpc1R5cGVzIHR5cGVzKQogewogICAgIGF1dG8gcmVxdWVz
dCA9IGNyZWF0ZUltYWdlQW5hbHl6ZXJSZXF1ZXN0KGltYWdlLCB0eXBlcyk7CkBAIC0yNjQsMTIg
KzI3MywxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0VGV4dFJlY29nbml0aW9uKGNvbnN0
IFVSTCYgaW1hZ2VVUkwsIGNvbnN0IFNoYXJlYWJsZUJpdAogCiAgICAgYXV0byByZXF1ZXN0ID0g
Y3JlYXRlSW1hZ2VBbmFseXplclJlcXVlc3QoY2dJbWFnZS5nZXQoKSwgaW1hZ2VVUkwsIFtOU1VS
TCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6bV9wYWdlLT5jdXJyZW50VVJMKCldLCBWS0FuYWx5c2lz
VHlwZVRleHQpOwogICAgIGF1dG8gc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0g
ICAgW2Vuc3VyZUltYWdlQW5hbHl6ZXIoKSBwcm9jZXNzUmVxdWVzdDpyZXF1ZXN0LmdldCgpIHBy
b2dyZXNzSGFuZGxlcjpuaWwgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0
aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwgc3RhcnRUaW1lXSAoQ29jb2FJbWFnZUFuYWx5c2lz
ICphbmFseXNpcywgTlNFcnJvciAqKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbE9uTWFpblJ1bkxv
b3AoW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pLCByZXN1bHQgPSBtYWtlVGV4dFJl
Y29nbml0aW9uUmVzdWx0KGFuYWx5c2lzKSwgc3RhcnRUaW1lXSAoKSBtdXRhYmxlIHsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HKEltYWdlcywgIkltYWdlIGFuYWx5c2lzIGNvbXBsZXRlZCBpbiAl
LjBmIG1zIChmb3VuZCB0ZXh0PyAlZCkiLCAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRp
bWUpLm1pbGxpc2Vjb25kcygpLCAhcmVzdWx0LmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICBjb21w
bGV0aW9uKFdURk1vdmUocmVzdWx0KSk7Ci0gICAgICAgIH0pOwotICAgIH0pLmdldCgpXTsKKyAg
ICBwcm9jZXNzSW1hZ2VBbmFseXplclJlcXVlc3QocmVxdWVzdC5nZXQoKSwgW2NvbXBsZXRpb24g
PSBXVEZNb3ZlKGNvbXBsZXRpb24pLCBzdGFydFRpbWVdIChDb2NvYUltYWdlQW5hbHlzaXMgKmFu
YWx5c2lzLCBOU0Vycm9yICopIG11dGFibGUgeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VU
ZXh0UmVjb2duaXRpb25SZXN1bHQoYW5hbHlzaXMpOworICAgICAgICBSRUxFQVNFX0xPRyhJbWFn
ZXMsICJJbWFnZSBhbmFseXNpcyBjb21wbGV0ZWQgaW4gJS4wZiBtcyAoZm91bmQgdGV4dD8gJWQp
IiwgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKS5taWxsaXNlY29uZHMoKSwgIXJl
c3VsdC5pc0VtcHR5KCkpOworICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUocmVzdWx0KSk7Cisg
ICAgfSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmNvbXB1dGVIYXNJbWFnZUFuYWx5c2lzUmVz
dWx0cyhjb25zdCBVUkwmIGltYWdlVVJMLCBTaGFyZWFibGVCaXRtYXAmIGltYWdlQml0bWFwLCBJ
bWFnZUFuYWx5c2lzVHlwZSB0eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb24pCkBAIC0xMDg4LDYgKzEwOTYsODggQEAgLSAodm9pZClfd2ViX2dyYW50RE9NUGFz
dGVBY2Nlc3MKIAogQGVuZAogCitAaW50ZXJmYWNlIFdLSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3
RGVsZWdhdGUgOiBOU09iamVjdDxWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0ZT4K
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXdJbXBsOihXZWJLaXQ6OldlYlZpZXdJbXBs
JilpbXBsOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tJbWFnZUFuYWx5c2lzT3ZlcmxheVZp
ZXdEZWxlZ2F0ZSB7CisgICAgV2Vha1B0cjxXZWJLaXQ6OldlYlZpZXdJbXBsPiBfaW1wbDsKKyAg
ICBfX3dlYWsgVktDSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3ICpfb3ZlcmxheVZpZXc7CisgICAg
X193ZWFrIE5TUmVzcG9uZGVyICpfbGFzdE92ZXJsYXlSZXNwb25kZXJWaWV3OworfQorCitzdGF0
aWMgdm9pZCogaW1hZ2VPdmVybGF5T2JzZXJ2YXRpb25Db250ZXh0ID0gJmltYWdlT3ZlcmxheU9i
c2VydmF0aW9uQ29udGV4dDsKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlld0ltcGw6
KFdlYktpdDo6V2ViVmlld0ltcGwmKWltcGwKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9pbXBsID0gaW1wbDsKKyAgICBfb3Zl
cmxheVZpZXcgPSBpbXBsLmltYWdlQW5hbHlzaXNPdmVybGF5VmlldygpOworICAgIFtfb3Zlcmxh
eVZpZXcgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAiaGFzQWN0aXZlVGV4dFNlbGVjdGlv
biIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uT2xkIHwgTlNLZXlWYWx1ZU9ic2Vy
dmluZ09wdGlvbk5ldyBjb250ZXh0OmltYWdlT3ZlcmxheU9ic2VydmF0aW9uQ29udGV4dF07Cisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtfb3ZlcmxheVZp
ZXcgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAiaGFzQWN0aXZlVGV4dFNlbGVjdGlv
biJdOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JL
ZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5T
RGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAoreworICAgIGlmIChj
b250ZXh0ICE9IGltYWdlT3ZlcmxheU9ic2VydmF0aW9uQ29udGV4dCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgQk9PTCBvbGRIYXNBY3RpdmVUZXh0U2VsZWN0aW9uID0gW2NoYW5nZVtOU0tleVZh
bHVlQ2hhbmdlT2xkS2V5XSBib29sVmFsdWVdOworICAgIEJPT0wgbmV3SGFzQWN0aXZlVGV4dFNl
bGVjdGlvbiA9IFtjaGFuZ2VbTlNLZXlWYWx1ZUNoYW5nZU5ld0tleV0gYm9vbFZhbHVlXTsKKyAg
ICBfX3dlYWsgYXV0byB3ZWJWaWV3ID0gX2ltcGwgPyBfaW1wbC0+dmlldygpIDogbmlsOworICAg
IGF1dG8gY3VycmVudFJlc3BvbmRlciA9IHdlYlZpZXcud2luZG93LmZpcnN0UmVzcG9uZGVyOwor
ICAgIGlmIChvbGRIYXNBY3RpdmVUZXh0U2VsZWN0aW9uICYmICFuZXdIYXNBY3RpdmVUZXh0U2Vs
ZWN0aW9uKSB7CisgICAgICAgIGlmIChzZWxmLmZpcnN0UmVzcG9uZGVySXNJbnNpZGVJbWFnZU92
ZXJsYXkpIHsKKyAgICAgICAgICAgIF9sYXN0T3ZlcmxheVJlc3BvbmRlclZpZXcgPSBjdXJyZW50
UmVzcG9uZGVyOworICAgICAgICAgICAgW3dlYlZpZXcud2luZG93IG1ha2VGaXJzdFJlc3BvbmRl
cjp3ZWJWaWV3XTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoIW9sZEhhc0FjdGl2ZVRleHRT
ZWxlY3Rpb24gJiYgbmV3SGFzQWN0aXZlVGV4dFNlbGVjdGlvbikgeworICAgICAgICBpZiAoX2xh
c3RPdmVybGF5UmVzcG9uZGVyVmlldyAmJiBjdXJyZW50UmVzcG9uZGVyICE9IF9sYXN0T3Zlcmxh
eVJlc3BvbmRlclZpZXcpCisgICAgICAgICAgICBbd2ViVmlldy53aW5kb3cgbWFrZUZpcnN0UmVz
cG9uZGVyOl9sYXN0T3ZlcmxheVJlc3BvbmRlclZpZXddOworICAgIH0KK30KKworLSAoQk9PTClm
aXJzdFJlc3BvbmRlcklzSW5zaWRlSW1hZ2VPdmVybGF5Cit7CisgICAgaWYgKCFfaW1wbCkKKyAg
ICAgICAgcmV0dXJuIE5POworCisgICAgZm9yIChhdXRvIHZpZXcgPSBkeW5hbWljX29iamNfY2Fz
dDxOU1ZpZXc+KF9pbXBsLT52aWV3KCkud2luZG93LmZpcnN0UmVzcG9uZGVyKTsgdmlldzsgdmll
dyA9IHZpZXcuc3VwZXJ2aWV3KSB7CisgICAgICAgIGlmICh2aWV3ID09IF9vdmVybGF5VmlldykK
KyAgICAgICAgICAgIHJldHVybiBZRVM7CisgICAgfQorICAgIHJldHVybiBOTzsKK30KKworI3By
YWdtYSBtYXJrIC0gVktDSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGUKKworLSAoQk9P
TClpbWFnZUFuYWx5c2lzT3ZlcmxheTooVktDSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3ICopb3Zl
cmxheVZpZXcgc2hvdWxkSGFuZGxlS2V5RG93bkV2ZW50OihOU0V2ZW50ICopZXZlbnQKK3sKKyAg
ICByZXR1cm4gIVtldmVudC5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNFcXVhbFRvU3Ry
aW5nOkAiXGUiXTsKK30KKworLSAoQ0dSZWN0KWNvbnRlbnRzUmVjdEZvckltYWdlQW5hbHlzaXNP
dmVybGF5VmlldzooVktDSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3ICopb3ZlcmxheVZpZXcKK3sK
KyAgICBpZiAoIV9pbXBsKQorICAgICAgICByZXR1cm4gQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKTsK
KworICAgIGF1dG8gdW5pdEludGVyYWN0aW9uUmVjdCA9IF9pbXBsLT5pbWFnZUFuYWx5c2lzSW50
ZXJhY3Rpb25Cb3VuZHMoKTsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgdW5vYnNjdXJlZFJlY3Qg
PSBfaW1wbC0+dmlldygpLmJvdW5kczsKKyAgICB1bml0SW50ZXJhY3Rpb25SZWN0Lm1vdmVCeSgt
dW5vYnNjdXJlZFJlY3QubG9jYXRpb24oKSk7CisgICAgdW5pdEludGVyYWN0aW9uUmVjdC5zY2Fs
ZSgxIC8gdW5vYnNjdXJlZFJlY3Quc2l6ZSgpKTsKKyAgICByZXR1cm4gdW5pdEludGVyYWN0aW9u
UmVjdDsKK30KKworQGVuZAorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogTlNUb3VjaEJhciAqV2Vi
Vmlld0ltcGw6Om1ha2VUb3VjaEJhcigpCkBAIC01ODM0LDYgKzU5MjQsNDUgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6ZGlkRmluaXNoUHJlc2VudGF0aW9uKFdLUmV2ZWFsSXRlbVByZXNlbnRlciAqcHJl
c2VudGVyKQogCiAjZW5kaWYgLy8gRU5BQkxFKFJFVkVBTCkKIAorI2lmIEVOQUJMRShJTUFHRV9B
TkFMWVNJU19FTkhBTkNFTUVOVFMpCisKK3ZvaWQgV2ViVmlld0ltcGw6Omluc3RhbGxJbWFnZUFu
YWx5c2lzT3ZlcmxheVZpZXcoVktDSW1hZ2VBbmFseXNpcyAqYW5hbHlzaXMpCit7CisgICAgaWYg
KCFtX2ltYWdlQW5hbHlzaXNPdmVybGF5VmlldykgeworICAgICAgICBtX2ltYWdlQW5hbHlzaXNP
dmVybGF5VmlldyA9IGFkb3B0TlMoW1BBTDo6YWxsb2NWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZp
ZXdJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6W21fdmlldyBib3VuZHNdXSk7CisgICAgICAgIG1f
aW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tJbWFnZUFuYWx5
c2lzT3ZlcmxheVZpZXdEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhXZWJWaWV3SW1wbDoqdGhpc10p
OworICAgICAgICBbbV9pbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcgc2V0RGVsZWdhdGU6bV9pbWFn
ZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0ZS5nZXQoKV07CisgICAgICAgIFttX2ltYWdlQW5h
bHlzaXNPdmVybGF5VmlldyBzZXRBY3RpdmVJbnRlcmFjdGlvblR5cGVzOlZLSW1hZ2VBbmFseXNp
c0ludGVyYWN0aW9uVHlwZVRleHRTZWxlY3Rpb24gfCBWS0ltYWdlQW5hbHlzaXNJbnRlcmFjdGlv
blR5cGVEYXRhRGV0ZWN0b3JzXTsKKyAgICAgICAgW21faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3
IHNldFdhbnRzQXV0b21hdGljQ29udGVudHNSZWN0Q2FsY3VsYXRpb246Tk9dOworICAgIH0KKwor
ICAgIFttX2ltYWdlQW5hbHlzaXNPdmVybGF5VmlldyBzZXRBbmFseXNpczphbmFseXNpc107Cisg
ICAgW21fdmlldyBhZGRTdWJ2aWV3Om1faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3LmdldCgpXTsK
K30KKwordm9pZCBXZWJWaWV3SW1wbDo6dW5pbnN0YWxsSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3
KCkKK3sKKyAgICBpZiAoIW1faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3KQorICAgICAgICByZXR1
cm47CisKKyAgICBbbV9pbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcgcmVtb3ZlRnJvbVN1cGVydmll
d107CisgICAgbV9pbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0ZSA9IG5pbDsKKyAgICBt
X2ltYWdlQW5hbHlzaXNPdmVybGF5VmlldyA9IG5pbDsKKyAgICBtX2ltYWdlQW5hbHlzaXNJbnRl
cmFjdGlvbkJvdW5kcyA9IHsgfTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJ
U19FTkhBTkNFTUVOVFMpCisKK2Jvb2wgV2ViVmlld0ltcGw6OnNob3VsZEF2b2lkVXBkYXRpbmdD
dXJzb3JBdFBvaW50KE5TUG9pbnQgbG9jYXRpb25JblZpZXcpIGNvbnN0Cit7CisjaWYgRU5BQkxF
KElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICByZXR1cm4gW21faW1hZ2VBbmFseXNp
c092ZXJsYXlWaWV3IGludGVyYWN0YWJsZUl0ZW1FeGlzdHNBdFBvaW50OmxvY2F0aW9uSW5WaWV3
XTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uSW5WaWV3KTsKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQ
TEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW0KaW5kZXggMjc5ODBiMDdlM2ZkZjU1YmNiYzU1NTY2ZjRiZTg0OTc4ZGZmMjBm
My4uNjE4YjQxZDI5YjVlMjJjMGM1M2VhNTJkMjJhMzQ0ZDQ5NTBhNGNlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtMzIyLDEz
ICszMjIsMTcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6
OkN1cnNvciYgY3Vyc29yKQogICAgIGlmICghd2luZG93KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoW3dpbmRvdyB3aW5kb3dOdW1iZXJdICE9IFtOU1dpbmRvdyB3aW5kb3dOdW1iZXJBdFBv
aW50OltOU0V2ZW50IG1vdXNlTG9jYXRpb25dIGJlbG93V2luZG93V2l0aFdpbmRvd051bWJlcjow
XSkKKyAgICBhdXRvIG1vdXNlTG9jYXRpb25JblNjcmVlbiA9IE5TRXZlbnQubW91c2VMb2NhdGlv
bjsKKyAgICBpZiAod2luZG93LndpbmRvd051bWJlciAhPSBbTlNXaW5kb3cgd2luZG93TnVtYmVy
QXRQb2ludDptb3VzZUxvY2F0aW9uSW5TY3JlZW4gYmVsb3dXaW5kb3dXaXRoV2luZG93TnVtYmVy
OjBdKQogICAgICAgICByZXR1cm47CiAKICAgICBOU0N1cnNvciAqcGxhdGZvcm1DdXJzb3IgPSBj
dXJzb3IucGxhdGZvcm1DdXJzb3IoKTsKICAgICBpZiAoW05TQ3Vyc29yIGN1cnJlbnRDdXJzb3Jd
ID09IHBsYXRmb3JtQ3Vyc29yKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9pbXBsLT5z
aG91bGRBdm9pZFVwZGF0aW5nQ3Vyc29yQXRQb2ludChbbV92aWV3IGNvbnZlcnRQb2ludDptb3Vz
ZUxvY2F0aW9uSW5TY3JlZW4gZnJvbVZpZXc6bmlsXSkpCisgICAgICAgIHJldHVybjsKKwogICAg
IFtwbGF0Zm9ybUN1cnNvciBzZXRdOwogCiAgICAgaWYgKGN1cnNvci50eXBlKCkgPT0gV2ViQ29y
ZTo6Q3Vyc29yOjpUeXBlOjpOb25lKSB7Cg==
</data>
<flag name="commit-queue"
          id="484828"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456510</attachid>
            <date>2022-04-03 12:52:44 -0700</date>
            <delta_ts>2022-04-03 13:20:38 -0700</delta_ts>
            <desc>Fix Big Sur build</desc>
            <filename>bug-238714-20220403125244.patch</filename>
            <type>text/plain</type>
            <size>16749</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBmOTZjYzZi
ZWMzNWEyMTRmZTU1MzZhZjY4YzM5MzNiNjUwYjY3MDg5Li44ZTg1NjBlZTc2NGNkNDIwYTE1NDMy
ZmQzMzdlODRiN2Y1ZmUxNzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMi0wNC0wMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBbbWFjT1NdIEFkZCBoZWxwZXIgbWV0aG9kcyB0byBpbnN0YWxsIGFuZCB1bmluc3RhbGwg
VktDSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgc29mdC1saW5raW5nIHN1cHBvcnQgZm9yIFZLQ0ltYWdl
QW5hbHlzaXNPdmVybGF5Vmlldy4gU2VlIFdlYktpdC9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgICAgICAqIHBhbC9jb2NvYS9WaXNpb25LaXRDb3JlU29mdExpbmsuaDoKKyAgICAg
ICAgKiBwYWwvY29jb2EvVmlzaW9uS2l0Q29yZVNvZnRMaW5rLm1tOgorCiAyMDIyLTAzLTMxICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFk
ZCBzdXBwb3J0IGZvciB0ZW1wb3JhcmlseSBpbnN0YWxsaW5nIFZLQ0ltYWdlQW5hbHlzaXNJbnRl
cmFjdGlvbiBvbiBXS0NvbnRlbnRWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZhYjZjNjgxZjVlYzVmMGQ3MTBl
MDE1NjExZGYyYjc3YmZlYjgxMDYuLjA2NDNiNzU0YWE2YjQ3MTlmOTkzODYyZDM0ZGM1YzhhZWU5
YzU0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjItMDQtMDMgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBBZGQgaGVscGVy
IG1ldGhvZHMgdG8gaW5zdGFsbCBhbmQgdW5pbnN0YWxsIFZLQ0ltYWdlQW5hbHlzaXNPdmVybGF5
VmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
NzE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGhlbHBlciBtZXRob2RzIGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIGEgdGVtcG9yYXJ5IFZLQ0lt
YWdlQW5hbHlzaXNPdmVybGF5VmlldyBhcyBhIHN1YnZpZXcgb2YgV0tXZWJWaWV3LgorICAgICAg
ICBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yICh5ZXQp
LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjppbWFnZUFuYWx5c2lzSW50ZXJhY3Rpb25Cb3VuZHMgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3
IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm9jZXNzSW1hZ2VBbmFseXplclJlcXVlc3QpOgor
CisgICAgICAgIFB1bGwgbG9naWMgZm9yIHByb2Nlc3NpbmcgYW4gaW1hZ2UgYW5hbHl6ZXIgcmVx
dWVzdCBhbmQgaW52b2tpbmcgdGhlIGNvbXBsZXRpb24gaGFuZGxlciBvbiB0aGUgbWFpbiB0aHJl
YWQgKHZpYQorICAgICAgICBgY2FsbE9uTWFpblJ1bkxvb3BgKSBvdXQgaW50byBhIHNlcGFyYXRl
IGhlbHBlciBtZXRob2QgKHRvIGJlIHVzZWQgaW4gYSBzdWJzZXF1ZW50IHBhdGNoKS4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdFRleHRSZWNvZ25pdGlvbik6CisgICAg
ICAgICgtW1dLSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGUgaW5pdFdpdGhXZWJWaWV3
SW1wbDpdKToKKworICAgICAgICBBZGQgYW4gT2JqZWN0aXZlLUMgb2JqZWN0IHRoYXQgYWN0cyBh
cyBhIGRlbGVnYXRlIGZvciB0aGUgaW1hZ2UgYW5hbHlzaXMgb3ZlcmxheSB2aWV3LiBUaGlzIGlz
IGRvbmUgdG8gY29ycmVjdGx5CisgICAgICAgIHBvc2l0aW9uIHRoZSBvdmVybGF5LCBidXQgYWxz
byBmb3IgYSBjb3VwbGUgb2YgYWRkaXRvbmFsIHJlYXNvbnMgYmVsb3cuCisKKyAgICAgICAgKC1b
V0tJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0ZSBkZWFsbG9jXSk6CisgICAgICAgICgt
W1dLSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGUgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0
aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKworICAgICAgICBBZGQgbG9naWMgdG8gc3Rl
YWwgZmlyc3QgcmVzcG9uZGVyIHN0YXR1cyBhd2F5IGZyb20gVktDSW1hZ2VBbmFseXNpc092ZXJs
YXlWaWV3J3MgaW50ZXJuYWwgdGV4dCBzZWxlY3Rpb24gdmlldworICAgICAgICBhbmQgcmVzdG9y
ZSBpdCB0byB0aGUgd2ViIHZpZXcgd2hlbiB0aGVyZSBpcyBubyBsb25nZXIgYW4gYWN0aXZlIHRl
eHQgc2VsZWN0aW9uIGluIHRoZSBvdmVybGF5LiBUaGlzIGVuc3VyZXMKKyAgICAgICAgdGhhdCBr
ZXkgZXZlbnRzIGFyZSBvbmx5IHJvdXRlZCB0byB0aGUgaW1hZ2UgYW5hbHlzaXMgb3ZlcmxheSB2
aWV3IGluIHRoZSBjYXNlIHdoZXJlIHRoZSBvdmVybGF5IGFjdHVhbGx5CisgICAgICAgIGNvbnRh
aW5zIGEgdGV4dCBzZWxlY3Rpb24uCisKKyAgICAgICAgKC1bV0tJbWFnZUFuYWx5c2lzT3Zlcmxh
eVZpZXdEZWxlZ2F0ZSBmaXJzdFJlc3BvbmRlcklzSW5zaWRlSW1hZ2VPdmVybGF5XSk6CisgICAg
ICAgICgtW1dLSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGUgaW1hZ2VBbmFseXNpc092
ZXJsYXk6c2hvdWxkSGFuZGxlS2V5RG93bkV2ZW50Ol0pOgorCisgICAgICAgIE5ldmVyIGFsbG93
IHRoZSBpbWFnZSBvdmVybGF5IHZpZXcgdG8gb3ZlcnJpZGUgRXNjYXBlIGtleSBoYW5kbGluZy4K
KworICAgICAgICAoLVtXS0ltYWdlQW5hbHlzaXNPdmVybGF5Vmlld0RlbGVnYXRlIGNvbnRlbnRz
UmVjdEZvckltYWdlQW5hbHlzaXNPdmVybGF5VmlldzpdKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6Omluc3RhbGxJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6dW5pbnN0YWxsSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNob3VsZEF2b2lkVXBkYXRpbmdDdXJzb3JBdFBv
aW50IGNvbnN0KToKKworICAgICAgICBBbGxvdyB0aGUgaW1hZ2UgYW5hbHlzaXMgb3ZlcmxheSB2
aWV3IHRvIHNldCB0aGUgbW91c2UgY3Vyc29yIHdoZW4gdGhlIG1vdXNlIGlzIG92ZXIgaW50ZXJh
Y3RhYmxlIGNvbnRlbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2V0Q3Vyc29yKToKKwog
MjAyMi0wNC0wMiAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRXhwb3NlIEFYT2JqZWN0Q2FjaGU6OnRyZWVEYXRhIHRvIHRoZSBVSSBwcm9jZXNzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9WaXNpb25LaXRDb3JlU29m
dExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvVmlzaW9uS2l0Q29yZVNvZnRM
aW5rLmgKaW5kZXggZTFmMDY5OWVhNDY4YWRjOTgxYWRiNmU5ZTMzN2M5NDU0OTA1ZTIxZi4uODMw
NzdiOTU5ODE2NWE0ODI0ODEyYmM0OTUyODAyZjdhNDFkZjMyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jb2NvYS9WaXNpb25LaXRDb3JlU29mdExpbmsuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Zpc2lvbktpdENvcmVTb2Z0TGluay5oCkBAIC0zOCw2
ICszOCw3IEBAIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgVktDSW1hZ2VBbmFseXpl
clJlcXVlc3QpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFZLQ0ltYWdlQW5hbHlz
aXMpCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKIFNPRlRfTElOS19D
TEFTU19GT1JfSEVBREVSKFBBTCwgVktDSW1hZ2VBbmFseXNpc0ludGVyYWN0aW9uKQorU09GVF9M
SU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcpCiAj
ZW5kaWYKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL1Zpc2lvbktpdENvcmVTb2Z0TGluay5tbSBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY29jb2EvVmlzaW9uS2l0Q29yZVNvZnRMaW5rLm1tCmluZGV4IDRlYmVj
M2U2NDA1YjVjYTBlMzRjYTBhOGJhMTczMTJmMGYzZjUxM2QuLjgwNjkyMzA3OTM3NWIxOGFjZTNj
ZGVjYWU2NDg0MzU3Y2M1YWVkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y29jb2EvVmlzaW9uS2l0Q29yZVNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY29jb2EvVmlzaW9uS2l0Q29yZVNvZnRMaW5rLm1tCkBAIC0zOCw2ICszOCw3IEBAIFNPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUX0FORF9JU19PUFRJT05BTChQQUwsIFZp
c2lvbktpdENvcmUsIFZLQ0ltCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VF9BTkRfSVNfT1BUSU9OQUwoUEFMLCBWaXNpb25LaXRDb3JlLCBWS0NJbWFnZUFuYWx5c2lzLCBQ
QUxfRVhQT1JULCB0cnVlKQogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMp
CiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVF9BTkRfSVNfT1BUSU9OQUwo
UEFMLCBWaXNpb25LaXRDb3JlLCBWS0NJbWFnZUFuYWx5c2lzSW50ZXJhY3Rpb24sIFBBTF9FWFBP
UlQsIHRydWUpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVF9BTkRfSVNf
T1BUSU9OQUwoUEFMLCBWaXNpb25LaXRDb3JlLCBWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcs
IFBBTF9FWFBPUlQsIHRydWUpCiAjZW5kaWYKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAppbmRleCAyY2Ix
OTljZGJlZjNjMzI0MDM4MTFlNWY1ZjdmOGQ0NjFiZmNhMWJhLi4yNjFiMjcwYjFhYjE5ZGM1MWQ4
NTZmYzcxNDA3MjhjNTRmY2UzOWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLmgKQEAgLTYxLDYgKzYxLDcgQEAgT0JKQ19DTEFTUyBXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFdLRE9NUGFzdGVNZW51RGVsZWdhdGU7CiBPQkpD
X0NMQVNTIFdLRWRpdG9yVW5kb1RhcmdldDsKIE9CSkNfQ0xBU1MgV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlcjsKK09CSkNfQ0xBU1MgV0tJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0
ZTsKIE9CSkNfQ0xBU1MgV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyOwogT0JKQ19DTEFTUyBX
S01vdXNlVHJhY2tpbmdPYnNlcnZlcjsKIE9CSkNfQ0xBU1MgV0tSZXZlYWxJdGVtUHJlc2VudGVy
OwpAQCAtODYsNiArODcsOSBAQCBPQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
OwogT0JKQ19DTEFTUyBXS1BERkhVRFZpZXc7CiAjZW5kaWYKIAorT0JKQ19DTEFTUyBWS0NJbWFn
ZUFuYWx5c2lzOworT0JKQ19DTEFTUyBWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXc7CisKIG5h
bWVzcGFjZSBBUEkgewogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIE9iamVjdDsKQEAgLTU5
NSw2ICs1OTksMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0ZUhhc0ltYWdlQW5hbHlzaXNS
ZXN1bHRzKGNvbnN0IFVSTCYgaW1hZ2VVUkwsIFNoYXJlYWJsZUJpdG1hcCYgaW1hZ2VCaXRtYXAs
IEltYWdlQW5hbHlzaXNUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgaW1hZ2VBbmFseXNpc0ludGVyYWN0aW9uQm91bmRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbWFnZUFuYWx5c2lzSW50ZXJhY3Rpb25Cb3VuZHM7IH0KKyAgICBWS0NJbWFnZUFu
YWx5c2lzT3ZlcmxheVZpZXcgKmltYWdlQW5hbHlzaXNPdmVybGF5VmlldygpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3LmdldCgpOyB9CisjZW5kaWYKKworICAgIGJv
b2wgc2hvdWxkQXZvaWRVcGRhdGluZ0N1cnNvckF0UG9pbnQoTlNQb2ludCBsb2NhdGlvbkluVmll
dykgY29uc3Q7CisKICAgICBib29sIGFjY2VwdHNQcmV2aWV3UGFuZWxDb250cm9sKFFMUHJldmll
d1BhbmVsICopOwogICAgIHZvaWQgYmVnaW5QcmV2aWV3UGFuZWxDb250cm9sKFFMUHJldmlld1Bh
bmVsICopOwogICAgIHZvaWQgZW5kUHJldmlld1BhbmVsQ29udHJvbChRTFByZXZpZXdQYW5lbCAq
KTsKQEAgLTY3Nyw2ICs2ODgsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIHVzZU1lZGlhUGxheWJh
Y2tDb250cm9sc1ZpZXcoKSBjb25zdDsKICAgICBib29sIGlzUmljaGx5RWRpdGFibGVGb3JUb3Vj
aEJhcigpIGNvbnN0OwogCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykK
KyAgICB2b2lkIGluc3RhbGxJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcoVktDSW1hZ2VBbmFseXNp
cyAqKTsKKyAgICB2b2lkIHVuaW5zdGFsbEltYWdlQW5hbHlzaXNPdmVybGF5VmlldygpOworI2Vu
ZGlmCisKICAgICBib29sIG1fY2xpZW50V2FudHNNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IHsg
ZmFsc2UgfTsKICAgICBib29sIG1fY2FuQ3JlYXRlVG91Y2hCYXJzIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fc3RhcnRlZExpc3RlbmluZ1RvQ3VzdG9taXphdGlvbkV2ZW50cyB7IGZhbHNlIH07CkBA
IC03NDUsNiArNzYxLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykK
ICAgICBDb2NvYUltYWdlQW5hbHl6ZXIgKmVuc3VyZUltYWdlQW5hbHl6ZXIoKTsKKyAgICBpbnQz
Ml90IHByb2Nlc3NJbWFnZUFuYWx5emVyUmVxdWVzdChDb2NvYUltYWdlQW5hbHl6ZXJSZXF1ZXN0
ICosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29jb2FJbWFnZUFuYWx5c2lzICosIE5TRXJyb3Ig
Kik+JiYpOwogI2VuZGlmCiAKICAgICBXZWFrT2JqQ1B0cjxOU1ZpZXc8V2ViVmlld0ltcGxEZWxl
Z2F0ZT4+IG1fdmlldzsKQEAgLTg5MSw2ICs5MDgsMTMgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5Q
dHI8Q29jb2FJbWFnZUFuYWx5emVyPiBtX2ltYWdlQW5hbHl6ZXI7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisgICAgUmV0YWluUHRyPFZLQ0ltYWdl
QW5hbHlzaXNPdmVybGF5Vmlldz4gbV9pbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXc7CisgICAgUmV0
YWluUHRyPFdLSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGU+IG1faW1hZ2VBbmFseXNp
c092ZXJsYXlWaWV3RGVsZWdhdGU7CisgICAgdWludDMyX3QgbV9jdXJyZW50SW1hZ2VBbmFseXNp
c1JlcXVlc3RJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9pbWFnZUFuYWx5c2lz
SW50ZXJhY3Rpb25Cb3VuZHM7CisjZW5kaWYKKwogI2lmIEhBVkUoVFJBTlNMQVRJT05fVUlfU0VS
VklDRVMpICYmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIFdlYWtPYmpDUHRyPE5TUG9wb3Zl
cj4gbV9sYXN0Q29udGV4dE1lbnVUcmFuc2xhdGlvblBvcG92ZXI7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggZDc0NzQ3MDRkYmVj
ODc1ZTdhM2Q0OTA4NjYxOTNhZjUzZTcwOTFkMy4uNTljMmE2NzQ1NDVmYzRjMTFiMDU3YzFkOGNm
NmUzMjI4NDFjZTJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0KQEAgLTIzMiw2ICsyMzIsMTUgQEAgQ29jb2FJbWFnZUFuYWx5emVyICpXZWJWaWV3
SW1wbDo6ZW5zdXJlSW1hZ2VBbmFseXplcigpCiAgICAgcmV0dXJuIG1faW1hZ2VBbmFseXplci5n
ZXQoKTsKIH0KIAoraW50MzJfdCBXZWJWaWV3SW1wbDo6cHJvY2Vzc0ltYWdlQW5hbHl6ZXJSZXF1
ZXN0KENvY29hSW1hZ2VBbmFseXplclJlcXVlc3QgKnJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoQ29jb2FJbWFnZUFuYWx5c2lzICosIE5TRXJyb3IgKik+JiYgY29tcGxldGlvbikKK3sK
KyAgICByZXR1cm4gW2Vuc3VyZUltYWdlQW5hbHl6ZXIoKSBwcm9jZXNzUmVxdWVzdDpyZXF1ZXN0
IHByb2dyZXNzSGFuZGxlcjpuaWwgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21w
bGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENvY29hSW1hZ2VBbmFseXNpcyAqcmVzdWx0
LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFtj
b21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwgcmVzdWx0ID0gUmV0YWluUHRyIHsgcmVz
dWx0IH0sIGVycm9yID0gUmV0YWluUHRyIHsgZXJyb3IgfV0gKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uKHJlc3VsdC5nZXQoKSwgZXJyb3IuZ2V0KCkpOworICAgICAgICB9KTsK
KyAgICB9KS5nZXQoKV07Cit9CisKIHN0YXRpYyBSZXRhaW5QdHI8Q29jb2FJbWFnZUFuYWx5emVy
UmVxdWVzdD4gY3JlYXRlSW1hZ2VBbmFseXplclJlcXVlc3QoQ0dJbWFnZVJlZiBpbWFnZSwgY29u
c3QgVVJMJiBpbWFnZVVSTCwgY29uc3QgVVJMJiBwYWdlVVJMLCBWS0FuYWx5c2lzVHlwZXMgdHlw
ZXMpCiB7CiAgICAgYXV0byByZXF1ZXN0ID0gY3JlYXRlSW1hZ2VBbmFseXplclJlcXVlc3QoaW1h
Z2UsIHR5cGVzKTsKQEAgLTI2NCwxMiArMjczLDExIEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlcXVl
c3RUZXh0UmVjb2duaXRpb24oY29uc3QgVVJMJiBpbWFnZVVSTCwgY29uc3QgU2hhcmVhYmxlQml0
CiAKICAgICBhdXRvIHJlcXVlc3QgPSBjcmVhdGVJbWFnZUFuYWx5emVyUmVxdWVzdChjZ0ltYWdl
LmdldCgpLCBpbWFnZVVSTCwgW05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzptX3BhZ2UtPmN1
cnJlbnRVUkwoKV0sIFZLQW5hbHlzaXNUeXBlVGV4dCk7CiAgICAgYXV0byBzdGFydFRpbWUgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBbZW5zdXJlSW1hZ2VBbmFseXplcigpIHByb2Nlc3NS
ZXF1ZXN0OnJlcXVlc3QuZ2V0KCkgcHJvZ3Jlc3NIYW5kbGVyOm5pbCBjb21wbGV0aW9uSGFuZGxl
cjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pLCBzdGFydFRp
bWVdIChDb2NvYUltYWdlQW5hbHlzaXMgKmFuYWx5c2lzLCBOU0Vycm9yICopIG11dGFibGUgewot
ICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlv
biksIHJlc3VsdCA9IG1ha2VUZXh0UmVjb2duaXRpb25SZXN1bHQoYW5hbHlzaXMpLCBzdGFydFRp
bWVdICgpIG11dGFibGUgewotICAgICAgICAgICAgUkVMRUFTRV9MT0coSW1hZ2VzLCAiSW1hZ2Ug
YW5hbHlzaXMgY29tcGxldGVkIGluICUuMGYgbXMgKGZvdW5kIHRleHQ/ICVkKSIsIChNb25vdG9u
aWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZSkubWlsbGlzZWNvbmRzKCksICFyZXN1bHQuaXNFbXB0
eSgpKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShyZXN1bHQpKTsKLSAgICAgICAg
fSk7Ci0gICAgfSkuZ2V0KCldOworICAgIHByb2Nlc3NJbWFnZUFuYWx5emVyUmVxdWVzdChyZXF1
ZXN0LmdldCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbiksIHN0YXJ0VGltZV0g
KENvY29hSW1hZ2VBbmFseXNpcyAqYW5hbHlzaXMsIE5TRXJyb3IgKikgbXV0YWJsZSB7CisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gbWFrZVRleHRSZWNvZ25pdGlvblJlc3VsdChhbmFseXNpcyk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HKEltYWdlcywgIkltYWdlIGFuYWx5c2lzIGNvbXBsZXRlZCBpbiAl
LjBmIG1zIChmb3VuZCB0ZXh0PyAlZCkiLCAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRp
bWUpLm1pbGxpc2Vjb25kcygpLCAhcmVzdWx0LmlzRW1wdHkoKSk7CisgICAgICAgIGNvbXBsZXRp
b24oV1RGTW92ZShyZXN1bHQpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6Y29t
cHV0ZUhhc0ltYWdlQW5hbHlzaXNSZXN1bHRzKGNvbnN0IFVSTCYgaW1hZ2VVUkwsIFNoYXJlYWJs
ZUJpdG1hcCYgaW1hZ2VCaXRtYXAsIEltYWdlQW5hbHlzaXNUeXBlIHR5cGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKQEAgLTEwODgsNiArMTA5Niw4OCBAQCAt
ICh2b2lkKV93ZWJfZ3JhbnRET01QYXN0ZUFjY2VzcwogCiBAZW5kCiAKK0BpbnRlcmZhY2UgV0tJ
bWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0ZSA6IE5TT2JqZWN0PFZLQ0ltYWdlQW5hbHlz
aXNPdmVybGF5Vmlld0RlbGVnYXRlPgorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlld0lt
cGw6KFdlYktpdDo6V2ViVmlld0ltcGwmKWltcGw7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBX
S0ltYWdlQW5hbHlzaXNPdmVybGF5Vmlld0RlbGVnYXRlIHsKKyAgICBXZWFrUHRyPFdlYktpdDo6
V2ViVmlld0ltcGw+IF9pbXBsOworICAgIF9fd2VhayBWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZp
ZXcgKl9vdmVybGF5VmlldzsKKyAgICBfX3dlYWsgTlNSZXNwb25kZXIgKl9sYXN0T3ZlcmxheVJl
c3BvbmRlclZpZXc7Cit9CisKK3N0YXRpYyB2b2lkKiBpbWFnZU92ZXJsYXlPYnNlcnZhdGlvbkNv
bnRleHQgPSAmaW1hZ2VPdmVybGF5T2JzZXJ2YXRpb25Db250ZXh0OworCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhXZWJWaWV3SW1wbDooV2ViS2l0OjpXZWJWaWV3SW1wbCYpaW1wbAoreworICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
X2ltcGwgPSBpbXBsOworICAgIF9vdmVybGF5VmlldyA9IGltcGwuaW1hZ2VBbmFseXNpc092ZXJs
YXlWaWV3KCk7CisgICAgW19vdmVybGF5VmlldyBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6
QCJoYXNBY3RpdmVUZXh0U2VsZWN0aW9uIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRp
b25PbGQgfCBOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6aW1hZ2VPdmVybGF5
T2JzZXJ2YXRpb25Db250ZXh0XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFs
bG9jCit7CisgICAgW19vdmVybGF5VmlldyByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6
QCJoYXNBY3RpdmVUZXh0U2VsZWN0aW9uIl07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCist
ICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVj
dDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQg
Kiljb250ZXh0Cit7CisgICAgaWYgKGNvbnRleHQgIT0gaW1hZ2VPdmVybGF5T2JzZXJ2YXRpb25D
b250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBCT09MIG9sZEhhc0FjdGl2ZVRleHRTZWxl
Y3Rpb24gPSBbY2hhbmdlW05TS2V5VmFsdWVDaGFuZ2VPbGRLZXldIGJvb2xWYWx1ZV07CisgICAg
Qk9PTCBuZXdIYXNBY3RpdmVUZXh0U2VsZWN0aW9uID0gW2NoYW5nZVtOU0tleVZhbHVlQ2hhbmdl
TmV3S2V5XSBib29sVmFsdWVdOworICAgIF9fd2VhayBhdXRvIHdlYlZpZXcgPSBfaW1wbCA/IF9p
bXBsLT52aWV3KCkgOiBuaWw7CisgICAgYXV0byBjdXJyZW50UmVzcG9uZGVyID0gd2ViVmlldy53
aW5kb3cuZmlyc3RSZXNwb25kZXI7CisgICAgaWYgKG9sZEhhc0FjdGl2ZVRleHRTZWxlY3Rpb24g
JiYgIW5ld0hhc0FjdGl2ZVRleHRTZWxlY3Rpb24pIHsKKyAgICAgICAgaWYgKHNlbGYuZmlyc3RS
ZXNwb25kZXJJc0luc2lkZUltYWdlT3ZlcmxheSkgeworICAgICAgICAgICAgX2xhc3RPdmVybGF5
UmVzcG9uZGVyVmlldyA9IGN1cnJlbnRSZXNwb25kZXI7CisgICAgICAgICAgICBbd2ViVmlldy53
aW5kb3cgbWFrZUZpcnN0UmVzcG9uZGVyOndlYlZpZXddOworICAgICAgICB9CisgICAgfSBlbHNl
IGlmICghb2xkSGFzQWN0aXZlVGV4dFNlbGVjdGlvbiAmJiBuZXdIYXNBY3RpdmVUZXh0U2VsZWN0
aW9uKSB7CisgICAgICAgIGlmIChfbGFzdE92ZXJsYXlSZXNwb25kZXJWaWV3ICYmIGN1cnJlbnRS
ZXNwb25kZXIgIT0gX2xhc3RPdmVybGF5UmVzcG9uZGVyVmlldykKKyAgICAgICAgICAgIFt3ZWJW
aWV3LndpbmRvdyBtYWtlRmlyc3RSZXNwb25kZXI6X2xhc3RPdmVybGF5UmVzcG9uZGVyVmlld107
CisgICAgfQorfQorCistIChCT09MKWZpcnN0UmVzcG9uZGVySXNJbnNpZGVJbWFnZU92ZXJsYXkK
K3sKKyAgICBpZiAoIV9pbXBsKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBmb3IgKGF1dG8g
dmlldyA9IGR5bmFtaWNfb2JqY19jYXN0PE5TVmlldz4oX2ltcGwtPnZpZXcoKS53aW5kb3cuZmly
c3RSZXNwb25kZXIpOyB2aWV3OyB2aWV3ID0gdmlldy5zdXBlcnZpZXcpIHsKKyAgICAgICAgaWYg
KHZpZXcgPT0gX292ZXJsYXlWaWV3KQorICAgICAgICAgICAgcmV0dXJuIFlFUzsKKyAgICB9Cisg
ICAgcmV0dXJuIE5POworfQorCisjcHJhZ21hIG1hcmsgLSBWS0NJbWFnZUFuYWx5c2lzT3Zlcmxh
eVZpZXdEZWxlZ2F0ZQorCistIChCT09MKWltYWdlQW5hbHlzaXNPdmVybGF5OihWS0NJbWFnZUFu
YWx5c2lzT3ZlcmxheVZpZXcgKilvdmVybGF5VmlldyBzaG91bGRIYW5kbGVLZXlEb3duRXZlbnQ6
KE5TRXZlbnQgKilldmVudAoreworICAgIHJldHVybiAhW2V2ZW50LmNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVycyBpc0VxdWFsVG9TdHJpbmc6QCJcZSJdOworfQorCistIChDR1JlY3QpY29udGVu
dHNSZWN0Rm9ySW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3OihWS0NJbWFnZUFuYWx5c2lzT3Zlcmxh
eVZpZXcgKilvdmVybGF5VmlldworeworICAgIGlmICghX2ltcGwpCisgICAgICAgIHJldHVybiBD
R1JlY3RNYWtlKDAsIDAsIDEsIDEpOworCisgICAgYXV0byB1bml0SW50ZXJhY3Rpb25SZWN0ID0g
X2ltcGwtPmltYWdlQW5hbHlzaXNJbnRlcmFjdGlvbkJvdW5kcygpOworICAgIFdlYkNvcmU6OkZs
b2F0UmVjdCB1bm9ic2N1cmVkUmVjdCA9IF9pbXBsLT52aWV3KCkuYm91bmRzOworICAgIHVuaXRJ
bnRlcmFjdGlvblJlY3QubW92ZUJ5KC11bm9ic2N1cmVkUmVjdC5sb2NhdGlvbigpKTsKKyAgICB1
bml0SW50ZXJhY3Rpb25SZWN0LnNjYWxlKDEgLyB1bm9ic2N1cmVkUmVjdC5zaXplKCkpOworICAg
IHJldHVybiB1bml0SW50ZXJhY3Rpb25SZWN0OworfQorCitAZW5kCisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBOU1RvdWNoQmFyICpXZWJWaWV3SW1wbDo6bWFrZVRvdWNoQmFyKCkKQEAgLTU4MzQs
NiArNTkyNCw0NSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRGaW5pc2hQcmVzZW50YXRpb24oV0tS
ZXZlYWxJdGVtUHJlc2VudGVyICpwcmVzZW50ZXIpCiAKICNlbmRpZiAvLyBFTkFCTEUoUkVWRUFM
KQogCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKwordm9pZCBXZWJW
aWV3SW1wbDo6aW5zdGFsbEltYWdlQW5hbHlzaXNPdmVybGF5VmlldyhWS0NJbWFnZUFuYWx5c2lz
ICphbmFseXNpcykKK3sKKyAgICBpZiAoIW1faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3KSB7Cisg
ICAgICAgIG1faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3ID0gYWRvcHROUyhbUEFMOjphbGxvY1ZL
Q0ltYWdlQW5hbHlzaXNPdmVybGF5Vmlld0luc3RhbmNlKCkgaW5pdFdpdGhGcmFtZTpbbV92aWV3
IGJvdW5kc11dKTsKKyAgICAgICAgbV9pbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tXS0ltYWdlQW5hbHlzaXNPdmVybGF5Vmlld0RlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aFdlYlZpZXdJbXBsOip0aGlzXSk7CisgICAgICAgIFttX2ltYWdlQW5hbHlzaXNPdmVybGF5
VmlldyBzZXREZWxlZ2F0ZTptX2ltYWdlQW5hbHlzaXNPdmVybGF5Vmlld0RlbGVnYXRlLmdldCgp
XTsKKyAgICAgICAgW21faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3IHNldEFjdGl2ZUludGVyYWN0
aW9uVHlwZXM6VktJbWFnZUFuYWx5c2lzSW50ZXJhY3Rpb25UeXBlVGV4dFNlbGVjdGlvbiB8IFZL
SW1hZ2VBbmFseXNpc0ludGVyYWN0aW9uVHlwZURhdGFEZXRlY3RvcnNdOworICAgICAgICBbbV9p
bWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcgc2V0V2FudHNBdXRvbWF0aWNDb250ZW50c1JlY3RDYWxj
dWxhdGlvbjpOT107CisgICAgfQorCisgICAgW21faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3IHNl
dEFuYWx5c2lzOmFuYWx5c2lzXTsKKyAgICBbbV92aWV3IGFkZFN1YnZpZXc6bV9pbWFnZUFuYWx5
c2lzT3ZlcmxheVZpZXcuZ2V0KCldOworfQorCit2b2lkIFdlYlZpZXdJbXBsOjp1bmluc3RhbGxJ
bWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcoKQoreworICAgIGlmICghbV9pbWFnZUFuYWx5c2lzT3Zl
cmxheVZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIFttX2ltYWdlQW5hbHlzaXNPdmVybGF5
VmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICBtX2ltYWdlQW5hbHlzaXNPdmVybGF5Vmll
d0RlbGVnYXRlID0gbmlsOworICAgIG1faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3ID0gbmlsOwor
ICAgIG1faW1hZ2VBbmFseXNpc0ludGVyYWN0aW9uQm91bmRzID0geyB9OworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKworYm9vbCBXZWJWaWV3SW1w
bDo6c2hvdWxkQXZvaWRVcGRhdGluZ0N1cnNvckF0UG9pbnQoTlNQb2ludCBsb2NhdGlvbkluVmll
dykgY29uc3QKK3sKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAg
IHJldHVybiBbbV9pbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcgaW50ZXJhY3RhYmxlSXRlbUV4aXN0
c0F0UG9pbnQ6bG9jYXRpb25JblZpZXddOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obG9jYXRp
b25JblZpZXcpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCAyNzk4MGIwN2UzZmRmNTVi
Y2JjNTU1NjZmNGJlODQ5NzhkZmYyMGYzLi42MThiNDFkMjliNWUyMmMwYzUzZWE1MmQyMmEzNDRk
NDk1MGE0Y2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tCkBAIC0zMjIsMTMgKzMyMiwxNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpz
ZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJiBjdXJzb3IpCiAgICAgaWYgKCF3aW5kb3cp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChbd2luZG93IHdpbmRvd051bWJlcl0gIT0gW05T
V2luZG93IHdpbmRvd051bWJlckF0UG9pbnQ6W05TRXZlbnQgbW91c2VMb2NhdGlvbl0gYmVsb3dX
aW5kb3dXaXRoV2luZG93TnVtYmVyOjBdKQorICAgIGF1dG8gbW91c2VMb2NhdGlvbkluU2NyZWVu
ID0gTlNFdmVudC5tb3VzZUxvY2F0aW9uOworICAgIGlmICh3aW5kb3cud2luZG93TnVtYmVyICE9
IFtOU1dpbmRvdyB3aW5kb3dOdW1iZXJBdFBvaW50Om1vdXNlTG9jYXRpb25JblNjcmVlbiBiZWxv
d1dpbmRvd1dpdGhXaW5kb3dOdW1iZXI6MF0pCiAgICAgICAgIHJldHVybjsKIAogICAgIE5TQ3Vy
c29yICpwbGF0Zm9ybUN1cnNvciA9IGN1cnNvci5wbGF0Zm9ybUN1cnNvcigpOwogICAgIGlmIChb
TlNDdXJzb3IgY3VycmVudEN1cnNvcl0gPT0gcGxhdGZvcm1DdXJzb3IpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGlmIChtX2ltcGwtPnNob3VsZEF2b2lkVXBkYXRpbmdDdXJzb3JBdFBvaW50KFtt
X3ZpZXcgY29udmVydFBvaW50Om1vdXNlTG9jYXRpb25JblNjcmVlbiBmcm9tVmlldzpuaWxdKSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgW3BsYXRmb3JtQ3Vyc29yIHNldF07CiAKICAgICBpZiAo
Y3Vyc29yLnR5cGUoKSA9PSBXZWJDb3JlOjpDdXJzb3I6OlR5cGU6Ok5vbmUpIHsK
</data>
<flag name="commit-queue"
          id="484829"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456511</attachid>
            <date>2022-04-03 13:00:22 -0700</date>
            <delta_ts>2022-04-04 12:56:45 -0700</delta_ts>
            <desc>Fix Big Sur build</desc>
            <filename>bug-238714-20220403130022.patch</filename>
            <type>text/plain</type>
            <size>16841</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBmOTZjYzZi
ZWMzNWEyMTRmZTU1MzZhZjY4YzM5MzNiNjUwYjY3MDg5Li44ZTg1NjBlZTc2NGNkNDIwYTE1NDMy
ZmQzMzdlODRiN2Y1ZmUxNzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMi0wNC0wMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBbbWFjT1NdIEFkZCBoZWxwZXIgbWV0aG9kcyB0byBpbnN0YWxsIGFuZCB1bmluc3RhbGwg
VktDSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgc29mdC1saW5raW5nIHN1cHBvcnQgZm9yIFZLQ0ltYWdl
QW5hbHlzaXNPdmVybGF5Vmlldy4gU2VlIFdlYktpdC9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgICAgICAqIHBhbC9jb2NvYS9WaXNpb25LaXRDb3JlU29mdExpbmsuaDoKKyAgICAg
ICAgKiBwYWwvY29jb2EvVmlzaW9uS2l0Q29yZVNvZnRMaW5rLm1tOgorCiAyMDIyLTAzLTMxICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFk
ZCBzdXBwb3J0IGZvciB0ZW1wb3JhcmlseSBpbnN0YWxsaW5nIFZLQ0ltYWdlQW5hbHlzaXNJbnRl
cmFjdGlvbiBvbiBXS0NvbnRlbnRWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZhYjZjNjgxZjVlYzVmMGQ3MTBl
MDE1NjExZGYyYjc3YmZlYjgxMDYuLjA2NDNiNzU0YWE2YjQ3MTlmOTkzODYyZDM0ZGM1YzhhZWU5
YzU0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjItMDQtMDMgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBBZGQgaGVscGVy
IG1ldGhvZHMgdG8gaW5zdGFsbCBhbmQgdW5pbnN0YWxsIFZLQ0ltYWdlQW5hbHlzaXNPdmVybGF5
VmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
NzE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGhlbHBlciBtZXRob2RzIGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIGEgdGVtcG9yYXJ5IFZLQ0lt
YWdlQW5hbHlzaXNPdmVybGF5VmlldyBhcyBhIHN1YnZpZXcgb2YgV0tXZWJWaWV3LgorICAgICAg
ICBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yICh5ZXQp
LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjppbWFnZUFuYWx5c2lzSW50ZXJhY3Rpb25Cb3VuZHMgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3
IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm9jZXNzSW1hZ2VBbmFseXplclJlcXVlc3QpOgor
CisgICAgICAgIFB1bGwgbG9naWMgZm9yIHByb2Nlc3NpbmcgYW4gaW1hZ2UgYW5hbHl6ZXIgcmVx
dWVzdCBhbmQgaW52b2tpbmcgdGhlIGNvbXBsZXRpb24gaGFuZGxlciBvbiB0aGUgbWFpbiB0aHJl
YWQgKHZpYQorICAgICAgICBgY2FsbE9uTWFpblJ1bkxvb3BgKSBvdXQgaW50byBhIHNlcGFyYXRl
IGhlbHBlciBtZXRob2QgKHRvIGJlIHVzZWQgaW4gYSBzdWJzZXF1ZW50IHBhdGNoKS4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdFRleHRSZWNvZ25pdGlvbik6CisgICAg
ICAgICgtW1dLSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGUgaW5pdFdpdGhXZWJWaWV3
SW1wbDpdKToKKworICAgICAgICBBZGQgYW4gT2JqZWN0aXZlLUMgb2JqZWN0IHRoYXQgYWN0cyBh
cyBhIGRlbGVnYXRlIGZvciB0aGUgaW1hZ2UgYW5hbHlzaXMgb3ZlcmxheSB2aWV3LiBUaGlzIGlz
IGRvbmUgdG8gY29ycmVjdGx5CisgICAgICAgIHBvc2l0aW9uIHRoZSBvdmVybGF5LCBidXQgYWxz
byBmb3IgYSBjb3VwbGUgb2YgYWRkaXRvbmFsIHJlYXNvbnMgYmVsb3cuCisKKyAgICAgICAgKC1b
V0tJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0ZSBkZWFsbG9jXSk6CisgICAgICAgICgt
W1dLSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGUgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0
aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKworICAgICAgICBBZGQgbG9naWMgdG8gc3Rl
YWwgZmlyc3QgcmVzcG9uZGVyIHN0YXR1cyBhd2F5IGZyb20gVktDSW1hZ2VBbmFseXNpc092ZXJs
YXlWaWV3J3MgaW50ZXJuYWwgdGV4dCBzZWxlY3Rpb24gdmlldworICAgICAgICBhbmQgcmVzdG9y
ZSBpdCB0byB0aGUgd2ViIHZpZXcgd2hlbiB0aGVyZSBpcyBubyBsb25nZXIgYW4gYWN0aXZlIHRl
eHQgc2VsZWN0aW9uIGluIHRoZSBvdmVybGF5LiBUaGlzIGVuc3VyZXMKKyAgICAgICAgdGhhdCBr
ZXkgZXZlbnRzIGFyZSBvbmx5IHJvdXRlZCB0byB0aGUgaW1hZ2UgYW5hbHlzaXMgb3ZlcmxheSB2
aWV3IGluIHRoZSBjYXNlIHdoZXJlIHRoZSBvdmVybGF5IGFjdHVhbGx5CisgICAgICAgIGNvbnRh
aW5zIGEgdGV4dCBzZWxlY3Rpb24uCisKKyAgICAgICAgKC1bV0tJbWFnZUFuYWx5c2lzT3Zlcmxh
eVZpZXdEZWxlZ2F0ZSBmaXJzdFJlc3BvbmRlcklzSW5zaWRlSW1hZ2VPdmVybGF5XSk6CisgICAg
ICAgICgtW1dLSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGUgaW1hZ2VBbmFseXNpc092
ZXJsYXk6c2hvdWxkSGFuZGxlS2V5RG93bkV2ZW50Ol0pOgorCisgICAgICAgIE5ldmVyIGFsbG93
IHRoZSBpbWFnZSBvdmVybGF5IHZpZXcgdG8gb3ZlcnJpZGUgRXNjYXBlIGtleSBoYW5kbGluZy4K
KworICAgICAgICAoLVtXS0ltYWdlQW5hbHlzaXNPdmVybGF5Vmlld0RlbGVnYXRlIGNvbnRlbnRz
UmVjdEZvckltYWdlQW5hbHlzaXNPdmVybGF5VmlldzpdKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6Omluc3RhbGxJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6dW5pbnN0YWxsSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNob3VsZEF2b2lkVXBkYXRpbmdDdXJzb3JBdFBv
aW50IGNvbnN0KToKKworICAgICAgICBBbGxvdyB0aGUgaW1hZ2UgYW5hbHlzaXMgb3ZlcmxheSB2
aWV3IHRvIHNldCB0aGUgbW91c2UgY3Vyc29yIHdoZW4gdGhlIG1vdXNlIGlzIG92ZXIgaW50ZXJh
Y3RhYmxlIGNvbnRlbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2V0Q3Vyc29yKToKKwog
MjAyMi0wNC0wMiAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRXhwb3NlIEFYT2JqZWN0Q2FjaGU6OnRyZWVEYXRhIHRvIHRoZSBVSSBwcm9jZXNzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9WaXNpb25LaXRDb3JlU29m
dExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvVmlzaW9uS2l0Q29yZVNvZnRM
aW5rLmgKaW5kZXggZTFmMDY5OWVhNDY4YWRjOTgxYWRiNmU5ZTMzN2M5NDU0OTA1ZTIxZi4uODMw
NzdiOTU5ODE2NWE0ODI0ODEyYmM0OTUyODAyZjdhNDFkZjMyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jb2NvYS9WaXNpb25LaXRDb3JlU29mdExpbmsuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Zpc2lvbktpdENvcmVTb2Z0TGluay5oCkBAIC0zOCw2
ICszOCw3IEBAIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgVktDSW1hZ2VBbmFseXpl
clJlcXVlc3QpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFZLQ0ltYWdlQW5hbHlz
aXMpCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKIFNPRlRfTElOS19D
TEFTU19GT1JfSEVBREVSKFBBTCwgVktDSW1hZ2VBbmFseXNpc0ludGVyYWN0aW9uKQorU09GVF9M
SU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcpCiAj
ZW5kaWYKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL1Zpc2lvbktpdENvcmVTb2Z0TGluay5tbSBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY29jb2EvVmlzaW9uS2l0Q29yZVNvZnRMaW5rLm1tCmluZGV4IDRlYmVj
M2U2NDA1YjVjYTBlMzRjYTBhOGJhMTczMTJmMGYzZjUxM2QuLjgwNjkyMzA3OTM3NWIxOGFjZTNj
ZGVjYWU2NDg0MzU3Y2M1YWVkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y29jb2EvVmlzaW9uS2l0Q29yZVNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY29jb2EvVmlzaW9uS2l0Q29yZVNvZnRMaW5rLm1tCkBAIC0zOCw2ICszOCw3IEBAIFNPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUX0FORF9JU19PUFRJT05BTChQQUwsIFZp
c2lvbktpdENvcmUsIFZLQ0ltCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VF9BTkRfSVNfT1BUSU9OQUwoUEFMLCBWaXNpb25LaXRDb3JlLCBWS0NJbWFnZUFuYWx5c2lzLCBQ
QUxfRVhQT1JULCB0cnVlKQogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMp
CiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVF9BTkRfSVNfT1BUSU9OQUwo
UEFMLCBWaXNpb25LaXRDb3JlLCBWS0NJbWFnZUFuYWx5c2lzSW50ZXJhY3Rpb24sIFBBTF9FWFBP
UlQsIHRydWUpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVF9BTkRfSVNf
T1BUSU9OQUwoUEFMLCBWaXNpb25LaXRDb3JlLCBWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcs
IFBBTF9FWFBPUlQsIHRydWUpCiAjZW5kaWYKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAppbmRleCAyY2Ix
OTljZGJlZjNjMzI0MDM4MTFlNWY1ZjdmOGQ0NjFiZmNhMWJhLi4yNjFiMjcwYjFhYjE5ZGM1MWQ4
NTZmYzcxNDA3MjhjNTRmY2UzOWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLmgKQEAgLTYxLDYgKzYxLDcgQEAgT0JKQ19DTEFTUyBXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFdLRE9NUGFzdGVNZW51RGVsZWdhdGU7CiBPQkpD
X0NMQVNTIFdLRWRpdG9yVW5kb1RhcmdldDsKIE9CSkNfQ0xBU1MgV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlcjsKK09CSkNfQ0xBU1MgV0tJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0
ZTsKIE9CSkNfQ0xBU1MgV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyOwogT0JKQ19DTEFTUyBX
S01vdXNlVHJhY2tpbmdPYnNlcnZlcjsKIE9CSkNfQ0xBU1MgV0tSZXZlYWxJdGVtUHJlc2VudGVy
OwpAQCAtODYsNiArODcsOSBAQCBPQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
OwogT0JKQ19DTEFTUyBXS1BERkhVRFZpZXc7CiAjZW5kaWYKIAorT0JKQ19DTEFTUyBWS0NJbWFn
ZUFuYWx5c2lzOworT0JKQ19DTEFTUyBWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXc7CisKIG5h
bWVzcGFjZSBBUEkgewogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIE9iamVjdDsKQEAgLTU5
NSw2ICs1OTksMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0ZUhhc0ltYWdlQW5hbHlzaXNS
ZXN1bHRzKGNvbnN0IFVSTCYgaW1hZ2VVUkwsIFNoYXJlYWJsZUJpdG1hcCYgaW1hZ2VCaXRtYXAs
IEltYWdlQW5hbHlzaXNUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgaW1hZ2VBbmFseXNpc0ludGVyYWN0aW9uQm91bmRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbWFnZUFuYWx5c2lzSW50ZXJhY3Rpb25Cb3VuZHM7IH0KKyAgICBWS0NJbWFnZUFu
YWx5c2lzT3ZlcmxheVZpZXcgKmltYWdlQW5hbHlzaXNPdmVybGF5VmlldygpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3LmdldCgpOyB9CisjZW5kaWYKKworICAgIGJv
b2wgc2hvdWxkQXZvaWRVcGRhdGluZ0N1cnNvckF0UG9pbnQoTlNQb2ludCBsb2NhdGlvbkluVmll
dykgY29uc3Q7CisKICAgICBib29sIGFjY2VwdHNQcmV2aWV3UGFuZWxDb250cm9sKFFMUHJldmll
d1BhbmVsICopOwogICAgIHZvaWQgYmVnaW5QcmV2aWV3UGFuZWxDb250cm9sKFFMUHJldmlld1Bh
bmVsICopOwogICAgIHZvaWQgZW5kUHJldmlld1BhbmVsQ29udHJvbChRTFByZXZpZXdQYW5lbCAq
KTsKQEAgLTY3Nyw2ICs2ODgsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIHVzZU1lZGlhUGxheWJh
Y2tDb250cm9sc1ZpZXcoKSBjb25zdDsKICAgICBib29sIGlzUmljaGx5RWRpdGFibGVGb3JUb3Vj
aEJhcigpIGNvbnN0OwogCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykK
KyAgICB2b2lkIGluc3RhbGxJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcoVktDSW1hZ2VBbmFseXNp
cyAqKTsKKyAgICB2b2lkIHVuaW5zdGFsbEltYWdlQW5hbHlzaXNPdmVybGF5VmlldygpOworI2Vu
ZGlmCisKICAgICBib29sIG1fY2xpZW50V2FudHNNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IHsg
ZmFsc2UgfTsKICAgICBib29sIG1fY2FuQ3JlYXRlVG91Y2hCYXJzIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fc3RhcnRlZExpc3RlbmluZ1RvQ3VzdG9taXphdGlvbkV2ZW50cyB7IGZhbHNlIH07CkBA
IC03NDUsNiArNzYxLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykK
ICAgICBDb2NvYUltYWdlQW5hbHl6ZXIgKmVuc3VyZUltYWdlQW5hbHl6ZXIoKTsKKyAgICBpbnQz
Ml90IHByb2Nlc3NJbWFnZUFuYWx5emVyUmVxdWVzdChDb2NvYUltYWdlQW5hbHl6ZXJSZXF1ZXN0
ICosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29jb2FJbWFnZUFuYWx5c2lzICosIE5TRXJyb3Ig
Kik+JiYpOwogI2VuZGlmCiAKICAgICBXZWFrT2JqQ1B0cjxOU1ZpZXc8V2ViVmlld0ltcGxEZWxl
Z2F0ZT4+IG1fdmlldzsKQEAgLTg5MSw2ICs5MDgsMTMgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5Q
dHI8Q29jb2FJbWFnZUFuYWx5emVyPiBtX2ltYWdlQW5hbHl6ZXI7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisgICAgUmV0YWluUHRyPFZLQ0ltYWdl
QW5hbHlzaXNPdmVybGF5Vmlldz4gbV9pbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXc7CisgICAgUmV0
YWluUHRyPFdLSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGU+IG1faW1hZ2VBbmFseXNp
c092ZXJsYXlWaWV3RGVsZWdhdGU7CisgICAgdWludDMyX3QgbV9jdXJyZW50SW1hZ2VBbmFseXNp
c1JlcXVlc3RJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9pbWFnZUFuYWx5c2lz
SW50ZXJhY3Rpb25Cb3VuZHM7CisjZW5kaWYKKwogI2lmIEhBVkUoVFJBTlNMQVRJT05fVUlfU0VS
VklDRVMpICYmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIFdlYWtPYmpDUHRyPE5TUG9wb3Zl
cj4gbV9sYXN0Q29udGV4dE1lbnVUcmFuc2xhdGlvblBvcG92ZXI7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggZDc0NzQ3MDRkYmVj
ODc1ZTdhM2Q0OTA4NjYxOTNhZjUzZTcwOTFkMy4uYzU0YzJiN2YxYzM0MTA2YTBhZTU0YWI4MzU5
YTg4ZDQxMTA2N2NhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0KQEAgLTIzMiw2ICsyMzIsMTUgQEAgQ29jb2FJbWFnZUFuYWx5emVyICpXZWJWaWV3
SW1wbDo6ZW5zdXJlSW1hZ2VBbmFseXplcigpCiAgICAgcmV0dXJuIG1faW1hZ2VBbmFseXplci5n
ZXQoKTsKIH0KIAoraW50MzJfdCBXZWJWaWV3SW1wbDo6cHJvY2Vzc0ltYWdlQW5hbHl6ZXJSZXF1
ZXN0KENvY29hSW1hZ2VBbmFseXplclJlcXVlc3QgKnJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoQ29jb2FJbWFnZUFuYWx5c2lzICosIE5TRXJyb3IgKik+JiYgY29tcGxldGlvbikKK3sK
KyAgICByZXR1cm4gW2Vuc3VyZUltYWdlQW5hbHl6ZXIoKSBwcm9jZXNzUmVxdWVzdDpyZXF1ZXN0
IHByb2dyZXNzSGFuZGxlcjpuaWwgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21w
bGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENvY29hSW1hZ2VBbmFseXNpcyAqcmVzdWx0
LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFtj
b21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwgcmVzdWx0ID0gUmV0YWluUHRyIHsgcmVz
dWx0IH0sIGVycm9yID0gUmV0YWluUHRyIHsgZXJyb3IgfV0gKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uKHJlc3VsdC5nZXQoKSwgZXJyb3IuZ2V0KCkpOworICAgICAgICB9KTsK
KyAgICB9KS5nZXQoKV07Cit9CisKIHN0YXRpYyBSZXRhaW5QdHI8Q29jb2FJbWFnZUFuYWx5emVy
UmVxdWVzdD4gY3JlYXRlSW1hZ2VBbmFseXplclJlcXVlc3QoQ0dJbWFnZVJlZiBpbWFnZSwgY29u
c3QgVVJMJiBpbWFnZVVSTCwgY29uc3QgVVJMJiBwYWdlVVJMLCBWS0FuYWx5c2lzVHlwZXMgdHlw
ZXMpCiB7CiAgICAgYXV0byByZXF1ZXN0ID0gY3JlYXRlSW1hZ2VBbmFseXplclJlcXVlc3QoaW1h
Z2UsIHR5cGVzKTsKQEAgLTI2NCwxMiArMjczLDExIEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlcXVl
c3RUZXh0UmVjb2duaXRpb24oY29uc3QgVVJMJiBpbWFnZVVSTCwgY29uc3QgU2hhcmVhYmxlQml0
CiAKICAgICBhdXRvIHJlcXVlc3QgPSBjcmVhdGVJbWFnZUFuYWx5emVyUmVxdWVzdChjZ0ltYWdl
LmdldCgpLCBpbWFnZVVSTCwgW05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzptX3BhZ2UtPmN1
cnJlbnRVUkwoKV0sIFZLQW5hbHlzaXNUeXBlVGV4dCk7CiAgICAgYXV0byBzdGFydFRpbWUgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBbZW5zdXJlSW1hZ2VBbmFseXplcigpIHByb2Nlc3NS
ZXF1ZXN0OnJlcXVlc3QuZ2V0KCkgcHJvZ3Jlc3NIYW5kbGVyOm5pbCBjb21wbGV0aW9uSGFuZGxl
cjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pLCBzdGFydFRp
bWVdIChDb2NvYUltYWdlQW5hbHlzaXMgKmFuYWx5c2lzLCBOU0Vycm9yICopIG11dGFibGUgewot
ICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlv
biksIHJlc3VsdCA9IG1ha2VUZXh0UmVjb2duaXRpb25SZXN1bHQoYW5hbHlzaXMpLCBzdGFydFRp
bWVdICgpIG11dGFibGUgewotICAgICAgICAgICAgUkVMRUFTRV9MT0coSW1hZ2VzLCAiSW1hZ2Ug
YW5hbHlzaXMgY29tcGxldGVkIGluICUuMGYgbXMgKGZvdW5kIHRleHQ/ICVkKSIsIChNb25vdG9u
aWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZSkubWlsbGlzZWNvbmRzKCksICFyZXN1bHQuaXNFbXB0
eSgpKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShyZXN1bHQpKTsKLSAgICAgICAg
fSk7Ci0gICAgfSkuZ2V0KCldOworICAgIHByb2Nlc3NJbWFnZUFuYWx5emVyUmVxdWVzdChyZXF1
ZXN0LmdldCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbiksIHN0YXJ0VGltZV0g
KENvY29hSW1hZ2VBbmFseXNpcyAqYW5hbHlzaXMsIE5TRXJyb3IgKikgbXV0YWJsZSB7CisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gbWFrZVRleHRSZWNvZ25pdGlvblJlc3VsdChhbmFseXNpcyk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HKEltYWdlcywgIkltYWdlIGFuYWx5c2lzIGNvbXBsZXRlZCBpbiAl
LjBmIG1zIChmb3VuZCB0ZXh0PyAlZCkiLCAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRp
bWUpLm1pbGxpc2Vjb25kcygpLCAhcmVzdWx0LmlzRW1wdHkoKSk7CisgICAgICAgIGNvbXBsZXRp
b24oV1RGTW92ZShyZXN1bHQpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6Y29t
cHV0ZUhhc0ltYWdlQW5hbHlzaXNSZXN1bHRzKGNvbnN0IFVSTCYgaW1hZ2VVUkwsIFNoYXJlYWJs
ZUJpdG1hcCYgaW1hZ2VCaXRtYXAsIEltYWdlQW5hbHlzaXNUeXBlIHR5cGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKQEAgLTEwODgsNiArMTA5Niw5MiBAQCAt
ICh2b2lkKV93ZWJfZ3JhbnRET01QYXN0ZUFjY2VzcwogCiBAZW5kCiAKKyNpZiBFTkFCTEUoSU1B
R0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorCitAaW50ZXJmYWNlIFdLSW1hZ2VBbmFseXNpc092
ZXJsYXlWaWV3RGVsZWdhdGUgOiBOU09iamVjdDxWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdE
ZWxlZ2F0ZT4KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXdJbXBsOihXZWJLaXQ6Oldl
YlZpZXdJbXBsJilpbXBsOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tJbWFnZUFuYWx5c2lz
T3ZlcmxheVZpZXdEZWxlZ2F0ZSB7CisgICAgV2Vha1B0cjxXZWJLaXQ6OldlYlZpZXdJbXBsPiBf
aW1wbDsKKyAgICBfX3dlYWsgVktDSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3ICpfb3ZlcmxheVZp
ZXc7CisgICAgX193ZWFrIE5TUmVzcG9uZGVyICpfbGFzdE92ZXJsYXlSZXNwb25kZXJWaWV3Owor
fQorCitzdGF0aWMgdm9pZCogaW1hZ2VPdmVybGF5T2JzZXJ2YXRpb25Db250ZXh0ID0gJmltYWdl
T3ZlcmxheU9ic2VydmF0aW9uQ29udGV4dDsKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2Vi
Vmlld0ltcGw6KFdlYktpdDo6V2ViVmlld0ltcGwmKWltcGwKK3sKKyAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9pbXBsID0gaW1wbDsK
KyAgICBfb3ZlcmxheVZpZXcgPSBpbXBsLmltYWdlQW5hbHlzaXNPdmVybGF5VmlldygpOworICAg
IFtfb3ZlcmxheVZpZXcgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAiaGFzQWN0aXZlVGV4
dFNlbGVjdGlvbiIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uT2xkIHwgTlNLZXlW
YWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0OmltYWdlT3ZlcmxheU9ic2VydmF0aW9uQ29u
dGV4dF07CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtf
b3ZlcmxheVZpZXcgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAiaGFzQWN0aXZlVGV4
dFNlbGVjdGlvbiJdOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClvYnNlcnZl
VmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBj
aGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAorewor
ICAgIGlmIChjb250ZXh0ICE9IGltYWdlT3ZlcmxheU9ic2VydmF0aW9uQ29udGV4dCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQk9PTCBvbGRIYXNBY3RpdmVUZXh0U2VsZWN0aW9uID0gW2NoYW5n
ZVtOU0tleVZhbHVlQ2hhbmdlT2xkS2V5XSBib29sVmFsdWVdOworICAgIEJPT0wgbmV3SGFzQWN0
aXZlVGV4dFNlbGVjdGlvbiA9IFtjaGFuZ2VbTlNLZXlWYWx1ZUNoYW5nZU5ld0tleV0gYm9vbFZh
bHVlXTsKKyAgICBfX3dlYWsgYXV0byB3ZWJWaWV3ID0gX2ltcGwgPyBfaW1wbC0+dmlldygpIDog
bmlsOworICAgIGF1dG8gY3VycmVudFJlc3BvbmRlciA9IHdlYlZpZXcud2luZG93LmZpcnN0UmVz
cG9uZGVyOworICAgIGlmIChvbGRIYXNBY3RpdmVUZXh0U2VsZWN0aW9uICYmICFuZXdIYXNBY3Rp
dmVUZXh0U2VsZWN0aW9uKSB7CisgICAgICAgIGlmIChzZWxmLmZpcnN0UmVzcG9uZGVySXNJbnNp
ZGVJbWFnZU92ZXJsYXkpIHsKKyAgICAgICAgICAgIF9sYXN0T3ZlcmxheVJlc3BvbmRlclZpZXcg
PSBjdXJyZW50UmVzcG9uZGVyOworICAgICAgICAgICAgW3dlYlZpZXcud2luZG93IG1ha2VGaXJz
dFJlc3BvbmRlcjp3ZWJWaWV3XTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoIW9sZEhhc0Fj
dGl2ZVRleHRTZWxlY3Rpb24gJiYgbmV3SGFzQWN0aXZlVGV4dFNlbGVjdGlvbikgeworICAgICAg
ICBpZiAoX2xhc3RPdmVybGF5UmVzcG9uZGVyVmlldyAmJiBjdXJyZW50UmVzcG9uZGVyICE9IF9s
YXN0T3ZlcmxheVJlc3BvbmRlclZpZXcpCisgICAgICAgICAgICBbd2ViVmlldy53aW5kb3cgbWFr
ZUZpcnN0UmVzcG9uZGVyOl9sYXN0T3ZlcmxheVJlc3BvbmRlclZpZXddOworICAgIH0KK30KKwor
LSAoQk9PTClmaXJzdFJlc3BvbmRlcklzSW5zaWRlSW1hZ2VPdmVybGF5Cit7CisgICAgaWYgKCFf
aW1wbCkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgZm9yIChhdXRvIHZpZXcgPSBkeW5hbWlj
X29iamNfY2FzdDxOU1ZpZXc+KF9pbXBsLT52aWV3KCkud2luZG93LmZpcnN0UmVzcG9uZGVyKTsg
dmlldzsgdmlldyA9IHZpZXcuc3VwZXJ2aWV3KSB7CisgICAgICAgIGlmICh2aWV3ID09IF9vdmVy
bGF5VmlldykKKyAgICAgICAgICAgIHJldHVybiBZRVM7CisgICAgfQorICAgIHJldHVybiBOTzsK
K30KKworI3ByYWdtYSBtYXJrIC0gVktDSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGUK
KworLSAoQk9PTClpbWFnZUFuYWx5c2lzT3ZlcmxheTooVktDSW1hZ2VBbmFseXNpc092ZXJsYXlW
aWV3ICopb3ZlcmxheVZpZXcgc2hvdWxkSGFuZGxlS2V5RG93bkV2ZW50OihOU0V2ZW50ICopZXZl
bnQKK3sKKyAgICByZXR1cm4gIVtldmVudC5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNF
cXVhbFRvU3RyaW5nOkAiXGUiXTsKK30KKworLSAoQ0dSZWN0KWNvbnRlbnRzUmVjdEZvckltYWdl
QW5hbHlzaXNPdmVybGF5VmlldzooVktDSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3ICopb3Zlcmxh
eVZpZXcKK3sKKyAgICBpZiAoIV9pbXBsKQorICAgICAgICByZXR1cm4gQ0dSZWN0TWFrZSgwLCAw
LCAxLCAxKTsKKworICAgIGF1dG8gdW5pdEludGVyYWN0aW9uUmVjdCA9IF9pbXBsLT5pbWFnZUFu
YWx5c2lzSW50ZXJhY3Rpb25Cb3VuZHMoKTsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgdW5vYnNj
dXJlZFJlY3QgPSBfaW1wbC0+dmlldygpLmJvdW5kczsKKyAgICB1bml0SW50ZXJhY3Rpb25SZWN0
Lm1vdmVCeSgtdW5vYnNjdXJlZFJlY3QubG9jYXRpb24oKSk7CisgICAgdW5pdEludGVyYWN0aW9u
UmVjdC5zY2FsZSgxIC8gdW5vYnNjdXJlZFJlY3Quc2l6ZSgpKTsKKyAgICByZXR1cm4gdW5pdElu
dGVyYWN0aW9uUmVjdDsKK30KKworQGVuZAorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZ
U0lTX0VOSEFOQ0VNRU5UUykKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIE5TVG91Y2hCYXIgKldl
YlZpZXdJbXBsOjptYWtlVG91Y2hCYXIoKQpAQCAtNTgzNCw2ICs1OTI4LDQ1IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OmRpZEZpbmlzaFByZXNlbnRhdGlvbihXS1JldmVhbEl0ZW1QcmVzZW50ZXIgKnBy
ZXNlbnRlcikKIAogI2VuZGlmIC8vIEVOQUJMRShSRVZFQUwpCiAKKyNpZiBFTkFCTEUoSU1BR0Vf
QU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorCit2b2lkIFdlYlZpZXdJbXBsOjppbnN0YWxsSW1hZ2VB
bmFseXNpc092ZXJsYXlWaWV3KFZLQ0ltYWdlQW5hbHlzaXMgKmFuYWx5c2lzKQoreworICAgIGlm
ICghbV9pbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcpIHsKKyAgICAgICAgbV9pbWFnZUFuYWx5c2lz
T3ZlcmxheVZpZXcgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVktDSW1hZ2VBbmFseXNpc092ZXJsYXlW
aWV3SW5zdGFuY2UoKSBpbml0V2l0aEZyYW1lOlttX3ZpZXcgYm91bmRzXV0pOworICAgICAgICBt
X2ltYWdlQW5hbHlzaXNPdmVybGF5Vmlld0RlbGVnYXRlID0gYWRvcHROUyhbW1dLSW1hZ2VBbmFs
eXNpc092ZXJsYXlWaWV3RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoV2ViVmlld0ltcGw6KnRoaXNd
KTsKKyAgICAgICAgW21faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3IHNldERlbGVnYXRlOm1faW1h
Z2VBbmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGUuZ2V0KCldOworICAgICAgICBbbV9pbWFnZUFu
YWx5c2lzT3ZlcmxheVZpZXcgc2V0QWN0aXZlSW50ZXJhY3Rpb25UeXBlczpWS0ltYWdlQW5hbHlz
aXNJbnRlcmFjdGlvblR5cGVUZXh0U2VsZWN0aW9uIHwgVktJbWFnZUFuYWx5c2lzSW50ZXJhY3Rp
b25UeXBlRGF0YURldGVjdG9yc107CisgICAgICAgIFttX2ltYWdlQW5hbHlzaXNPdmVybGF5Vmll
dyBzZXRXYW50c0F1dG9tYXRpY0NvbnRlbnRzUmVjdENhbGN1bGF0aW9uOk5PXTsKKyAgICB9CisK
KyAgICBbbV9pbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcgc2V0QW5hbHlzaXM6YW5hbHlzaXNdOwor
ICAgIFttX3ZpZXcgYWRkU3VidmlldzptX2ltYWdlQW5hbHlzaXNPdmVybGF5Vmlldy5nZXQoKV07
Cit9CisKK3ZvaWQgV2ViVmlld0ltcGw6OnVuaW5zdGFsbEltYWdlQW5hbHlzaXNPdmVybGF5Vmll
dygpCit7CisgICAgaWYgKCFtX2ltYWdlQW5hbHlzaXNPdmVybGF5VmlldykKKyAgICAgICAgcmV0
dXJuOworCisgICAgW21faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3IHJlbW92ZUZyb21TdXBlcnZp
ZXddOworICAgIG1faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGUgPSBuaWw7CisgICAg
bV9pbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcgPSBuaWw7CisgICAgbV9pbWFnZUFuYWx5c2lzSW50
ZXJhY3Rpb25Cb3VuZHMgPSB7IH07Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlT
SVNfRU5IQU5DRU1FTlRTKQorCitib29sIFdlYlZpZXdJbXBsOjpzaG91bGRBdm9pZFVwZGF0aW5n
Q3Vyc29yQXRQb2ludChOU1BvaW50IGxvY2F0aW9uSW5WaWV3KSBjb25zdAoreworI2lmIEVOQUJM
RShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisgICAgcmV0dXJuIFttX2ltYWdlQW5hbHlz
aXNPdmVybGF5VmlldyBpbnRlcmFjdGFibGVJdGVtRXhpc3RzQXRQb2ludDpsb2NhdGlvbkluVmll
d107CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbkluVmlldyk7CisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
UExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tCmluZGV4IDI3OTgwYjA3ZTNmZGY1NWJjYmM1NTU2NmY0YmU4NDk3OGRmZjIw
ZjMuLjYxOGI0MWQyOWI1ZTIyYzBjNTNlYTUyZDIyYTM0NGQ0OTUwYTRjZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTMyMiwx
MyArMzIyLDE3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldEN1cnNvcihjb25zdCBXZWJDb3Jl
OjpDdXJzb3ImIGN1cnNvcikKICAgICBpZiAoIXdpbmRvdykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKFt3aW5kb3cgd2luZG93TnVtYmVyXSAhPSBbTlNXaW5kb3cgd2luZG93TnVtYmVyQXRQ
b2ludDpbTlNFdmVudCBtb3VzZUxvY2F0aW9uXSBiZWxvd1dpbmRvd1dpdGhXaW5kb3dOdW1iZXI6
MF0pCisgICAgYXV0byBtb3VzZUxvY2F0aW9uSW5TY3JlZW4gPSBOU0V2ZW50Lm1vdXNlTG9jYXRp
b247CisgICAgaWYgKHdpbmRvdy53aW5kb3dOdW1iZXIgIT0gW05TV2luZG93IHdpbmRvd051bWJl
ckF0UG9pbnQ6bW91c2VMb2NhdGlvbkluU2NyZWVuIGJlbG93V2luZG93V2l0aFdpbmRvd051bWJl
cjowXSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTlNDdXJzb3IgKnBsYXRmb3JtQ3Vyc29yID0g
Y3Vyc29yLnBsYXRmb3JtQ3Vyc29yKCk7CiAgICAgaWYgKFtOU0N1cnNvciBjdXJyZW50Q3Vyc29y
XSA9PSBwbGF0Zm9ybUN1cnNvcikKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1faW1wbC0+
c2hvdWxkQXZvaWRVcGRhdGluZ0N1cnNvckF0UG9pbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6bW91
c2VMb2NhdGlvbkluU2NyZWVuIGZyb21WaWV3Om5pbF0pKQorICAgICAgICByZXR1cm47CisKICAg
ICBbcGxhdGZvcm1DdXJzb3Igc2V0XTsKIAogICAgIGlmIChjdXJzb3IudHlwZSgpID09IFdlYkNv
cmU6OkN1cnNvcjo6VHlwZTo6Tm9uZSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456611</attachid>
            <date>2022-04-04 12:56:46 -0700</date>
            <delta_ts>2022-04-04 15:08:36 -0700</delta_ts>
            <desc>For landing</desc>
            <filename>bug-238714-20220404125645.patch</filename>
            <type>text/plain</type>
            <size>16865</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBmOTZjYzZi
ZWMzNWEyMTRmZTU1MzZhZjY4YzM5MzNiNjUwYjY3MDg5Li5hYTMzNjFmZjJhNGY0NWFmNTBiOWVl
NmFkMTg0YWMyY2NiOTZmYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMi0wNC0wNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBbbWFjT1NdIEFkZCBoZWxwZXIgbWV0aG9kcyB0byBpbnN0YWxsIGFuZCB1bmluc3RhbGwg
VktDSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3MTQKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9y
dG9uLgorCisgICAgICAgIEFkZCBzb2Z0LWxpbmtpbmcgc3VwcG9ydCBmb3IgVktDSW1hZ2VBbmFs
eXNpc092ZXJsYXlWaWV3LiBTZWUgV2ViS2l0L0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgICAgICogcGFsL2NvY29hL1Zpc2lvbktpdENvcmVTb2Z0TGluay5oOgorICAgICAgICAq
IHBhbC9jb2NvYS9WaXNpb25LaXRDb3JlU29mdExpbmsubW06CisKIDIwMjItMDMtMzEgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQWRkIHN1
cHBvcnQgZm9yIHRlbXBvcmFyaWx5IGluc3RhbGxpbmcgVktDSW1hZ2VBbmFseXNpc0ludGVyYWN0
aW9uIG9uIFdLQ29udGVudFZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmFiNmM2ODFmNWVjNWYwZDcxMGUwMTU2
MTFkZjJiNzdiZmViODEwNi4uN2RkMGJlZDA5ZjE1OGU0NjA0MDA1YWUzOWJkNzVkMjUyZWVhNTI4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAyMi0wNC0wNCAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIEFkZCBoZWxwZXIgbWV0
aG9kcyB0byBpbnN0YWxsIGFuZCB1bmluc3RhbGwgVktDSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIEFkZCBoZWxwZXIg
bWV0aG9kcyBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyBhIHRlbXBvcmFyeSBWS0NJbWFnZUFuYWx5
c2lzT3ZlcmxheVZpZXcgYXMgYSBzdWJ2aWV3IG9mIFdLV2ViVmlldy4KKyAgICAgICAgU2VlIGJl
bG93IGZvciBtb3JlIGRldGFpbHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvciAoeWV0KS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6aW1hZ2VBbmFseXNpc0ludGVyYWN0aW9uQm91bmRzIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmltYWdlQW5hbHlzaXNPdmVybGF5VmlldyBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6cHJvY2Vzc0ltYWdlQW5hbHl6ZXJSZXF1ZXN0KToKKworICAgICAg
ICBQdWxsIGxvZ2ljIGZvciBwcm9jZXNzaW5nIGFuIGltYWdlIGFuYWx5emVyIHJlcXVlc3QgYW5k
IGludm9raW5nIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgb24gdGhlIG1haW4gdGhyZWFkICh2aWEK
KyAgICAgICAgYGNhbGxPbk1haW5SdW5Mb29wYCkgb3V0IGludG8gYSBzZXBhcmF0ZSBoZWxwZXIg
bWV0aG9kICh0byBiZSB1c2VkIGluIGEgc3Vic2VxdWVudCBwYXRjaCkuCisKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OnJlcXVlc3RUZXh0UmVjb2duaXRpb24pOgorICAgICAgICAoLVtX
S0ltYWdlQW5hbHlzaXNPdmVybGF5Vmlld0RlbGVnYXRlIGluaXRXaXRoV2ViVmlld0ltcGw6XSk6
CisKKyAgICAgICAgQWRkIGFuIE9iamVjdGl2ZS1DIG9iamVjdCB0aGF0IGFjdHMgYXMgYSBkZWxl
Z2F0ZSBmb3IgdGhlIGltYWdlIGFuYWx5c2lzIG92ZXJsYXkgdmlldy4gVGhpcyBpcyBkb25lIHRv
IGNvcnJlY3RseQorICAgICAgICBwb3NpdGlvbiB0aGUgb3ZlcmxheSwgYnV0IGFsc28gZm9yIGEg
Y291cGxlIG9mIGFkZGl0b25hbCByZWFzb25zIGJlbG93LgorCisgICAgICAgICgtW1dLSW1hZ2VB
bmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGUgZGVhbGxvY10pOgorICAgICAgICAoLVtXS0ltYWdl
QW5hbHlzaXNPdmVybGF5Vmlld0RlbGVnYXRlIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmpl
Y3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisKKyAgICAgICAgQWRkIGxvZ2ljIHRvIHN0ZWFsIGZpcnN0
IHJlc3BvbmRlciBzdGF0dXMgYXdheSBmcm9tIFZLQ0ltYWdlQW5hbHlzaXNPdmVybGF5Vmlldydz
IGludGVybmFsIHRleHQgc2VsZWN0aW9uIHZpZXcKKyAgICAgICAgYW5kIHJlc3RvcmUgaXQgdG8g
dGhlIHdlYiB2aWV3IHdoZW4gdGhlcmUgaXMgbm8gbG9uZ2VyIGFuIGFjdGl2ZSB0ZXh0IHNlbGVj
dGlvbiBpbiB0aGUgb3ZlcmxheS4gVGhpcyBlbnN1cmVzCisgICAgICAgIHRoYXQga2V5IGV2ZW50
cyBhcmUgb25seSByb3V0ZWQgdG8gdGhlIGltYWdlIGFuYWx5c2lzIG92ZXJsYXkgdmlldyBpbiB0
aGUgY2FzZSB3aGVyZSB0aGUgb3ZlcmxheSBhY3R1YWxseQorICAgICAgICBjb250YWlucyBhIHRl
eHQgc2VsZWN0aW9uLgorCisgICAgICAgICgtW1dLSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3RGVs
ZWdhdGUgZmlyc3RSZXNwb25kZXJJc0luc2lkZUltYWdlT3ZlcmxheV0pOgorICAgICAgICAoLVtX
S0ltYWdlQW5hbHlzaXNPdmVybGF5Vmlld0RlbGVnYXRlIGltYWdlQW5hbHlzaXNPdmVybGF5OnNo
b3VsZEhhbmRsZUtleURvd25FdmVudDpdKToKKworICAgICAgICBOZXZlciBhbGxvdyB0aGUgaW1h
Z2Ugb3ZlcmxheSB2aWV3IHRvIG92ZXJyaWRlIEVzY2FwZSBrZXkgaGFuZGxpbmcuCisKKyAgICAg
ICAgKC1bV0tJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0ZSBjb250ZW50c1JlY3RGb3JJ
bWFnZUFuYWx5c2lzT3ZlcmxheVZpZXc6XSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjppbnN0YWxsSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnVuaW5zdGFsbEltYWdlQW5hbHlzaXNPdmVybGF5Vmlldyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjppbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdIYXNDdXJzb3JBdFBv
aW50IGNvbnN0KToKKworICAgICAgICBBbGxvdyB0aGUgaW1hZ2UgYW5hbHlzaXMgb3ZlcmxheSB2
aWV3IHRvIHNldCB0aGUgbW91c2UgY3Vyc29yIHdoZW4gdGhlIG1vdXNlIGlzIG92ZXIgaW50ZXJh
Y3RhYmxlIGNvbnRlbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2V0Q3Vyc29yKToKKwog
MjAyMi0wNC0wMiAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRXhwb3NlIEFYT2JqZWN0Q2FjaGU6OnRyZWVEYXRhIHRvIHRoZSBVSSBwcm9jZXNzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9WaXNpb25LaXRDb3JlU29m
dExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvVmlzaW9uS2l0Q29yZVNvZnRM
aW5rLmgKaW5kZXggZTFmMDY5OWVhNDY4YWRjOTgxYWRiNmU5ZTMzN2M5NDU0OTA1ZTIxZi4uODMw
NzdiOTU5ODE2NWE0ODI0ODEyYmM0OTUyODAyZjdhNDFkZjMyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jb2NvYS9WaXNpb25LaXRDb3JlU29mdExpbmsuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Zpc2lvbktpdENvcmVTb2Z0TGluay5oCkBAIC0zOCw2
ICszOCw3IEBAIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgVktDSW1hZ2VBbmFseXpl
clJlcXVlc3QpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFZLQ0ltYWdlQW5hbHlz
aXMpCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKIFNPRlRfTElOS19D
TEFTU19GT1JfSEVBREVSKFBBTCwgVktDSW1hZ2VBbmFseXNpc0ludGVyYWN0aW9uKQorU09GVF9M
SU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcpCiAj
ZW5kaWYKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL1Zpc2lvbktpdENvcmVTb2Z0TGluay5tbSBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY29jb2EvVmlzaW9uS2l0Q29yZVNvZnRMaW5rLm1tCmluZGV4IDRlYmVj
M2U2NDA1YjVjYTBlMzRjYTBhOGJhMTczMTJmMGYzZjUxM2QuLjgwNjkyMzA3OTM3NWIxOGFjZTNj
ZGVjYWU2NDg0MzU3Y2M1YWVkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y29jb2EvVmlzaW9uS2l0Q29yZVNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY29jb2EvVmlzaW9uS2l0Q29yZVNvZnRMaW5rLm1tCkBAIC0zOCw2ICszOCw3IEBAIFNPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUX0FORF9JU19PUFRJT05BTChQQUwsIFZp
c2lvbktpdENvcmUsIFZLQ0ltCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VF9BTkRfSVNfT1BUSU9OQUwoUEFMLCBWaXNpb25LaXRDb3JlLCBWS0NJbWFnZUFuYWx5c2lzLCBQ
QUxfRVhQT1JULCB0cnVlKQogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMp
CiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVF9BTkRfSVNfT1BUSU9OQUwo
UEFMLCBWaXNpb25LaXRDb3JlLCBWS0NJbWFnZUFuYWx5c2lzSW50ZXJhY3Rpb24sIFBBTF9FWFBP
UlQsIHRydWUpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVF9BTkRfSVNf
T1BUSU9OQUwoUEFMLCBWaXNpb25LaXRDb3JlLCBWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcs
IFBBTF9FWFBPUlQsIHRydWUpCiAjZW5kaWYKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAppbmRleCAyY2Ix
OTljZGJlZjNjMzI0MDM4MTFlNWY1ZjdmOGQ0NjFiZmNhMWJhLi43MDBlMjA0ZDM1Y2RkZmFkMDBh
ZGIwNjc3YzE3NzVmYWM3MmU3MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLmgKQEAgLTYxLDYgKzYxLDcgQEAgT0JKQ19DTEFTUyBXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFdLRE9NUGFzdGVNZW51RGVsZWdhdGU7CiBPQkpD
X0NMQVNTIFdLRWRpdG9yVW5kb1RhcmdldDsKIE9CSkNfQ0xBU1MgV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlcjsKK09CSkNfQ0xBU1MgV0tJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0
ZTsKIE9CSkNfQ0xBU1MgV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyOwogT0JKQ19DTEFTUyBX
S01vdXNlVHJhY2tpbmdPYnNlcnZlcjsKIE9CSkNfQ0xBU1MgV0tSZXZlYWxJdGVtUHJlc2VudGVy
OwpAQCAtODYsNiArODcsOSBAQCBPQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
OwogT0JKQ19DTEFTUyBXS1BERkhVRFZpZXc7CiAjZW5kaWYKIAorT0JKQ19DTEFTUyBWS0NJbWFn
ZUFuYWx5c2lzOworT0JKQ19DTEFTUyBWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXc7CisKIG5h
bWVzcGFjZSBBUEkgewogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIE9iamVjdDsKQEAgLTU5
NSw2ICs1OTksMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0ZUhhc0ltYWdlQW5hbHlzaXNS
ZXN1bHRzKGNvbnN0IFVSTCYgaW1hZ2VVUkwsIFNoYXJlYWJsZUJpdG1hcCYgaW1hZ2VCaXRtYXAs
IEltYWdlQW5hbHlzaXNUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgaW1hZ2VBbmFseXNpc0ludGVyYWN0aW9uQm91bmRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbWFnZUFuYWx5c2lzSW50ZXJhY3Rpb25Cb3VuZHM7IH0KKyAgICBWS0NJbWFnZUFu
YWx5c2lzT3ZlcmxheVZpZXcgKmltYWdlQW5hbHlzaXNPdmVybGF5VmlldygpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3LmdldCgpOyB9CisjZW5kaWYKKworICAgIGJv
b2wgaW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3SGFzQ3Vyc29yQXRQb2ludChOU1BvaW50IGxvY2F0
aW9uSW5WaWV3KSBjb25zdDsKKwogICAgIGJvb2wgYWNjZXB0c1ByZXZpZXdQYW5lbENvbnRyb2wo
UUxQcmV2aWV3UGFuZWwgKik7CiAgICAgdm9pZCBiZWdpblByZXZpZXdQYW5lbENvbnRyb2woUUxQ
cmV2aWV3UGFuZWwgKik7CiAgICAgdm9pZCBlbmRQcmV2aWV3UGFuZWxDb250cm9sKFFMUHJldmll
d1BhbmVsICopOwpAQCAtNjc3LDYgKzY4OCwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgdXNlTWVk
aWFQbGF5YmFja0NvbnRyb2xzVmlldygpIGNvbnN0OwogICAgIGJvb2wgaXNSaWNobHlFZGl0YWJs
ZUZvclRvdWNoQmFyKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5D
RU1FTlRTKQorICAgIHZvaWQgaW5zdGFsbEltYWdlQW5hbHlzaXNPdmVybGF5VmlldyhWS0NJbWFn
ZUFuYWx5c2lzICopOworICAgIHZvaWQgdW5pbnN0YWxsSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3
KCk7CisjZW5kaWYKKwogICAgIGJvb2wgbV9jbGllbnRXYW50c01lZGlhUGxheWJhY2tDb250cm9s
c1ZpZXcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9jYW5DcmVhdGVUb3VjaEJhcnMgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9zdGFydGVkTGlzdGVuaW5nVG9DdXN0b21pemF0aW9uRXZlbnRzIHsgZmFs
c2UgfTsKQEAgLTc0NSw2ICs3NjEsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKElNQUdFX0FO
QUxZU0lTKQogICAgIENvY29hSW1hZ2VBbmFseXplciAqZW5zdXJlSW1hZ2VBbmFseXplcigpOwor
ICAgIGludDMyX3QgcHJvY2Vzc0ltYWdlQW5hbHl6ZXJSZXF1ZXN0KENvY29hSW1hZ2VBbmFseXpl
clJlcXVlc3QgKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChDb2NvYUltYWdlQW5hbHlzaXMgKiwg
TlNFcnJvciAqKT4mJik7CiAjZW5kaWYKIAogICAgIFdlYWtPYmpDUHRyPE5TVmlldzxXZWJWaWV3
SW1wbERlbGVnYXRlPj4gbV92aWV3OwpAQCAtODkxLDYgKzkwOCwxMyBAQCBwcml2YXRlOgogICAg
IFJldGFpblB0cjxDb2NvYUltYWdlQW5hbHl6ZXI+IG1faW1hZ2VBbmFseXplcjsKICNlbmRpZgog
CisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICBSZXRhaW5QdHI8
VktDSW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3PiBtX2ltYWdlQW5hbHlzaXNPdmVybGF5VmlldzsK
KyAgICBSZXRhaW5QdHI8V0tJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0ZT4gbV9pbWFn
ZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0ZTsKKyAgICB1aW50MzJfdCBtX2N1cnJlbnRJbWFn
ZUFuYWx5c2lzUmVxdWVzdElEIHsgMCB9OworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2ltYWdl
QW5hbHlzaXNJbnRlcmFjdGlvbkJvdW5kczsKKyNlbmRpZgorCiAjaWYgSEFWRShUUkFOU0xBVElP
Tl9VSV9TRVJWSUNFUykgJiYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgV2Vha09iakNQdHI8
TlNQb3BvdmVyPiBtX2xhc3RDb250ZXh0TWVudVRyYW5zbGF0aW9uUG9wb3ZlcjsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCBkNzQ3
NDcwNGRiZWM4NzVlN2EzZDQ5MDg2NjE5M2FmNTNlNzA5MWQzLi42OTBjOTI2OTVkODIwNjA4MmIx
ODE0NzQ2ZGVhZmMyMjQwNTJhOTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQpAQCAtMjMyLDYgKzIzMiwxNSBAQCBDb2NvYUltYWdlQW5hbHl6ZXIg
KldlYlZpZXdJbXBsOjplbnN1cmVJbWFnZUFuYWx5emVyKCkKICAgICByZXR1cm4gbV9pbWFnZUFu
YWx5emVyLmdldCgpOwogfQogCitpbnQzMl90IFdlYlZpZXdJbXBsOjpwcm9jZXNzSW1hZ2VBbmFs
eXplclJlcXVlc3QoQ29jb2FJbWFnZUFuYWx5emVyUmVxdWVzdCAqcmVxdWVzdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChDb2NvYUltYWdlQW5hbHlzaXMgKiwgTlNFcnJvciAqKT4mJiBjb21wbGV0
aW9uKQoreworICAgIHJldHVybiBbZW5zdXJlSW1hZ2VBbmFseXplcigpIHByb2Nlc3NSZXF1ZXN0
OnJlcXVlc3QgcHJvZ3Jlc3NIYW5kbGVyOm5pbCBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQ
dHIoW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoQ29jb2FJbWFnZUFuYWx5c2lz
ICpyZXN1bHQsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblJ1
bkxvb3AoW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pLCByZXN1bHQgPSBSZXRhaW5Q
dHIgeyByZXN1bHQgfSwgZXJyb3IgPSBSZXRhaW5QdHIgeyBlcnJvciB9XSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGNvbXBsZXRpb24ocmVzdWx0LmdldCgpLCBlcnJvci5nZXQoKSk7CisgICAg
ICAgIH0pOworICAgIH0pLmdldCgpXTsKK30KKwogc3RhdGljIFJldGFpblB0cjxDb2NvYUltYWdl
QW5hbHl6ZXJSZXF1ZXN0PiBjcmVhdGVJbWFnZUFuYWx5emVyUmVxdWVzdChDR0ltYWdlUmVmIGlt
YWdlLCBjb25zdCBVUkwmIGltYWdlVVJMLCBjb25zdCBVUkwmIHBhZ2VVUkwsIFZLQW5hbHlzaXNU
eXBlcyB0eXBlcykKIHsKICAgICBhdXRvIHJlcXVlc3QgPSBjcmVhdGVJbWFnZUFuYWx5emVyUmVx
dWVzdChpbWFnZSwgdHlwZXMpOwpAQCAtMjY0LDEyICsyNzMsMTEgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6cmVxdWVzdFRleHRSZWNvZ25pdGlvbihjb25zdCBVUkwmIGltYWdlVVJMLCBjb25zdCBTaGFy
ZWFibGVCaXQKIAogICAgIGF1dG8gcmVxdWVzdCA9IGNyZWF0ZUltYWdlQW5hbHl6ZXJSZXF1ZXN0
KGNnSW1hZ2UuZ2V0KCksIGltYWdlVVJMLCBbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOm1f
cGFnZS0+Y3VycmVudFVSTCgpXSwgVktBbmFseXNpc1R5cGVUZXh0KTsKICAgICBhdXRvIHN0YXJ0
VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgIFtlbnN1cmVJbWFnZUFuYWx5emVyKCkg
cHJvY2Vzc1JlcXVlc3Q6cmVxdWVzdC5nZXQoKSBwcm9ncmVzc0hhbmRsZXI6bmlsIGNvbXBsZXRp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbiks
IHN0YXJ0VGltZV0gKENvY29hSW1hZ2VBbmFseXNpcyAqYW5hbHlzaXMsIE5TRXJyb3IgKikgbXV0
YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFtjb21wbGV0aW9uID0gV1RGTW92ZShj
b21wbGV0aW9uKSwgcmVzdWx0ID0gbWFrZVRleHRSZWNvZ25pdGlvblJlc3VsdChhbmFseXNpcyks
IHN0YXJ0VGltZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPRyhJbWFnZXMs
ICJJbWFnZSBhbmFseXNpcyBjb21wbGV0ZWQgaW4gJS4wZiBtcyAoZm91bmQgdGV4dD8gJWQpIiwg
KE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKS5taWxsaXNlY29uZHMoKSwgIXJlc3Vs
dC5pc0VtcHR5KCkpOwotICAgICAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKHJlc3VsdCkpOwot
ICAgICAgICB9KTsKLSAgICB9KS5nZXQoKV07CisgICAgcHJvY2Vzc0ltYWdlQW5hbHl6ZXJSZXF1
ZXN0KHJlcXVlc3QuZ2V0KCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwgc3Rh
cnRUaW1lXSAoQ29jb2FJbWFnZUFuYWx5c2lzICphbmFseXNpcywgTlNFcnJvciAqKSBtdXRhYmxl
IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVGV4dFJlY29nbml0aW9uUmVzdWx0KGFuYWx5
c2lzKTsKKyAgICAgICAgUkVMRUFTRV9MT0coSW1hZ2VzLCAiSW1hZ2UgYW5hbHlzaXMgY29tcGxl
dGVkIGluICUuMGYgbXMgKGZvdW5kIHRleHQ/ICVkKSIsIChNb25vdG9uaWNUaW1lOjpub3coKSAt
IHN0YXJ0VGltZSkubWlsbGlzZWNvbmRzKCksICFyZXN1bHQuaXNFbXB0eSgpKTsKKyAgICAgICAg
Y29tcGxldGlvbihXVEZNb3ZlKHJlc3VsdCkpOworICAgIH0pOwogfQogCiB2b2lkIFdlYlZpZXdJ
bXBsOjpjb21wdXRlSGFzSW1hZ2VBbmFseXNpc1Jlc3VsdHMoY29uc3QgVVJMJiBpbWFnZVVSTCwg
U2hhcmVhYmxlQml0bWFwJiBpbWFnZUJpdG1hcCwgSW1hZ2VBbmFseXNpc1R5cGUgdHlwZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQpAQCAtMTA4OCw2ICsxMDk2
LDkyIEBAIC0gKHZvaWQpX3dlYl9ncmFudERPTVBhc3RlQWNjZXNzCiAKIEBlbmQKIAorI2lmIEVO
QUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisKK0BpbnRlcmZhY2UgV0tJbWFnZUFu
YWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0ZSA6IE5TT2JqZWN0PFZLQ0ltYWdlQW5hbHlzaXNPdmVy
bGF5Vmlld0RlbGVnYXRlPgorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlld0ltcGw6KFdl
YktpdDo6V2ViVmlld0ltcGwmKWltcGw7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0ltYWdl
QW5hbHlzaXNPdmVybGF5Vmlld0RlbGVnYXRlIHsKKyAgICBXZWFrUHRyPFdlYktpdDo6V2ViVmll
d0ltcGw+IF9pbXBsOworICAgIF9fd2VhayBWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcgKl9v
dmVybGF5VmlldzsKKyAgICBfX3dlYWsgTlNSZXNwb25kZXIgKl9sYXN0T3ZlcmxheVJlc3BvbmRl
clZpZXc7Cit9CisKK3N0YXRpYyB2b2lkKiBpbWFnZU92ZXJsYXlPYnNlcnZhdGlvbkNvbnRleHQg
PSAmaW1hZ2VPdmVybGF5T2JzZXJ2YXRpb25Db250ZXh0OworCistIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhXZWJWaWV3SW1wbDooV2ViS2l0OjpXZWJWaWV3SW1wbCYpaW1wbAoreworICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2ltcGwg
PSBpbXBsOworICAgIF9vdmVybGF5VmlldyA9IGltcGwuaW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3
KCk7CisgICAgW19vdmVybGF5VmlldyBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJoYXNB
Y3RpdmVUZXh0U2VsZWN0aW9uIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25PbGQg
fCBOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6aW1hZ2VPdmVybGF5T2JzZXJ2
YXRpb25Db250ZXh0XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7
CisgICAgW19vdmVybGF5VmlldyByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJoYXNB
Y3RpdmVUZXh0U2VsZWN0aW9uIl07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lk
KW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQp
b2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250
ZXh0Cit7CisgICAgaWYgKGNvbnRleHQgIT0gaW1hZ2VPdmVybGF5T2JzZXJ2YXRpb25Db250ZXh0
KQorICAgICAgICByZXR1cm47CisKKyAgICBCT09MIG9sZEhhc0FjdGl2ZVRleHRTZWxlY3Rpb24g
PSBbY2hhbmdlW05TS2V5VmFsdWVDaGFuZ2VPbGRLZXldIGJvb2xWYWx1ZV07CisgICAgQk9PTCBu
ZXdIYXNBY3RpdmVUZXh0U2VsZWN0aW9uID0gW2NoYW5nZVtOU0tleVZhbHVlQ2hhbmdlTmV3S2V5
XSBib29sVmFsdWVdOworICAgIF9fd2VhayBhdXRvIHdlYlZpZXcgPSBfaW1wbCA/IF9pbXBsLT52
aWV3KCkgOiBuaWw7CisgICAgYXV0byBjdXJyZW50UmVzcG9uZGVyID0gd2ViVmlldy53aW5kb3cu
Zmlyc3RSZXNwb25kZXI7CisgICAgaWYgKG9sZEhhc0FjdGl2ZVRleHRTZWxlY3Rpb24gJiYgIW5l
d0hhc0FjdGl2ZVRleHRTZWxlY3Rpb24pIHsKKyAgICAgICAgaWYgKHNlbGYuZmlyc3RSZXNwb25k
ZXJJc0luc2lkZUltYWdlT3ZlcmxheSkgeworICAgICAgICAgICAgX2xhc3RPdmVybGF5UmVzcG9u
ZGVyVmlldyA9IGN1cnJlbnRSZXNwb25kZXI7CisgICAgICAgICAgICBbd2ViVmlldy53aW5kb3cg
bWFrZUZpcnN0UmVzcG9uZGVyOndlYlZpZXddOworICAgICAgICB9CisgICAgfSBlbHNlIGlmICgh
b2xkSGFzQWN0aXZlVGV4dFNlbGVjdGlvbiAmJiBuZXdIYXNBY3RpdmVUZXh0U2VsZWN0aW9uKSB7
CisgICAgICAgIGlmIChfbGFzdE92ZXJsYXlSZXNwb25kZXJWaWV3ICYmIGN1cnJlbnRSZXNwb25k
ZXIgIT0gX2xhc3RPdmVybGF5UmVzcG9uZGVyVmlldykKKyAgICAgICAgICAgIFt3ZWJWaWV3Lndp
bmRvdyBtYWtlRmlyc3RSZXNwb25kZXI6X2xhc3RPdmVybGF5UmVzcG9uZGVyVmlld107CisgICAg
fQorfQorCistIChCT09MKWZpcnN0UmVzcG9uZGVySXNJbnNpZGVJbWFnZU92ZXJsYXkKK3sKKyAg
ICBpZiAoIV9pbXBsKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBmb3IgKGF1dG8gdmlldyA9
IGR5bmFtaWNfb2JqY19jYXN0PE5TVmlldz4oX2ltcGwtPnZpZXcoKS53aW5kb3cuZmlyc3RSZXNw
b25kZXIpOyB2aWV3OyB2aWV3ID0gdmlldy5zdXBlcnZpZXcpIHsKKyAgICAgICAgaWYgKHZpZXcg
PT0gX292ZXJsYXlWaWV3KQorICAgICAgICAgICAgcmV0dXJuIFlFUzsKKyAgICB9CisgICAgcmV0
dXJuIE5POworfQorCisjcHJhZ21hIG1hcmsgLSBWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdE
ZWxlZ2F0ZQorCistIChCT09MKWltYWdlQW5hbHlzaXNPdmVybGF5OihWS0NJbWFnZUFuYWx5c2lz
T3ZlcmxheVZpZXcgKilvdmVybGF5VmlldyBzaG91bGRIYW5kbGVLZXlEb3duRXZlbnQ6KE5TRXZl
bnQgKilldmVudAoreworICAgIHJldHVybiAhW2V2ZW50LmNoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVycyBpc0VxdWFsVG9TdHJpbmc6QCJcZSJdOworfQorCistIChDR1JlY3QpY29udGVudHNSZWN0
Rm9ySW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3OihWS0NJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcg
KilvdmVybGF5VmlldworeworICAgIGlmICghX2ltcGwpCisgICAgICAgIHJldHVybiBDR1JlY3RN
YWtlKDAsIDAsIDEsIDEpOworCisgICAgYXV0byB1bml0SW50ZXJhY3Rpb25SZWN0ID0gX2ltcGwt
PmltYWdlQW5hbHlzaXNJbnRlcmFjdGlvbkJvdW5kcygpOworICAgIFdlYkNvcmU6OkZsb2F0UmVj
dCB1bm9ic2N1cmVkUmVjdCA9IF9pbXBsLT52aWV3KCkuYm91bmRzOworICAgIHVuaXRJbnRlcmFj
dGlvblJlY3QubW92ZUJ5KC11bm9ic2N1cmVkUmVjdC5sb2NhdGlvbigpKTsKKyAgICB1bml0SW50
ZXJhY3Rpb25SZWN0LnNjYWxlKDEgLyB1bm9ic2N1cmVkUmVjdC5zaXplKCkpOworICAgIHJldHVy
biB1bml0SW50ZXJhY3Rpb25SZWN0OworfQorCitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoSU1B
R0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogTlNUb3Vj
aEJhciAqV2ViVmlld0ltcGw6Om1ha2VUb3VjaEJhcigpCkBAIC01ODM0LDYgKzU5MjgsNDUgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6ZGlkRmluaXNoUHJlc2VudGF0aW9uKFdLUmV2ZWFsSXRlbVByZXNl
bnRlciAqcHJlc2VudGVyKQogCiAjZW5kaWYgLy8gRU5BQkxFKFJFVkVBTCkKIAorI2lmIEVOQUJM
RShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisKK3ZvaWQgV2ViVmlld0ltcGw6Omluc3Rh
bGxJbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcoVktDSW1hZ2VBbmFseXNpcyAqYW5hbHlzaXMpCit7
CisgICAgaWYgKCFtX2ltYWdlQW5hbHlzaXNPdmVybGF5VmlldykgeworICAgICAgICBtX2ltYWdl
QW5hbHlzaXNPdmVybGF5VmlldyA9IGFkb3B0TlMoW1BBTDo6YWxsb2NWS0NJbWFnZUFuYWx5c2lz
T3ZlcmxheVZpZXdJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6W21fdmlldyBib3VuZHNdXSk7Cisg
ICAgICAgIG1faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tJ
bWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhXZWJWaWV3SW1w
bDoqdGhpc10pOworICAgICAgICBbbV9pbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcgc2V0RGVsZWdh
dGU6bV9pbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0ZS5nZXQoKV07CisgICAgICAgIFtt
X2ltYWdlQW5hbHlzaXNPdmVybGF5VmlldyBzZXRBY3RpdmVJbnRlcmFjdGlvblR5cGVzOlZLSW1h
Z2VBbmFseXNpc0ludGVyYWN0aW9uVHlwZVRleHRTZWxlY3Rpb24gfCBWS0ltYWdlQW5hbHlzaXNJ
bnRlcmFjdGlvblR5cGVEYXRhRGV0ZWN0b3JzXTsKKyAgICAgICAgW21faW1hZ2VBbmFseXNpc092
ZXJsYXlWaWV3IHNldFdhbnRzQXV0b21hdGljQ29udGVudHNSZWN0Q2FsY3VsYXRpb246Tk9dOwor
ICAgIH0KKworICAgIFttX2ltYWdlQW5hbHlzaXNPdmVybGF5VmlldyBzZXRBbmFseXNpczphbmFs
eXNpc107CisgICAgW21fdmlldyBhZGRTdWJ2aWV3Om1faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3
LmdldCgpXTsKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6dW5pbnN0YWxsSW1hZ2VBbmFseXNpc092
ZXJsYXlWaWV3KCkKK3sKKyAgICBpZiAoIW1faW1hZ2VBbmFseXNpc092ZXJsYXlWaWV3KQorICAg
ICAgICByZXR1cm47CisKKyAgICBbbV9pbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcgcmVtb3ZlRnJv
bVN1cGVydmlld107CisgICAgbV9pbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXdEZWxlZ2F0ZSA9IG5p
bDsKKyAgICBtX2ltYWdlQW5hbHlzaXNPdmVybGF5VmlldyA9IG5pbDsKKyAgICBtX2ltYWdlQW5h
bHlzaXNJbnRlcmFjdGlvbkJvdW5kcyA9IHsgfTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTUFH
RV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisKK2Jvb2wgV2ViVmlld0ltcGw6OmltYWdlQW5hbHlz
aXNPdmVybGF5Vmlld0hhc0N1cnNvckF0UG9pbnQoTlNQb2ludCBsb2NhdGlvbkluVmlldykgY29u
c3QKK3sKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIHJldHVy
biBbbV9pbWFnZUFuYWx5c2lzT3ZlcmxheVZpZXcgaW50ZXJhY3RhYmxlSXRlbUV4aXN0c0F0UG9p
bnQ6bG9jYXRpb25JblZpZXddOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb25JblZp
ZXcpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCAyNzk4MGIwN2UzZmRmNTViY2JjNTU1
NjZmNGJlODQ5NzhkZmYyMGYzLi4xZmU3NWRmNjU5MWRmMWU1MDUwOTFkZTRmYThiMmRiYjBmYWNk
YTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLm1tCkBAIC0zMjIsMTMgKzMyMiwxNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRDdXJz
b3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJiBjdXJzb3IpCiAgICAgaWYgKCF3aW5kb3cpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChbd2luZG93IHdpbmRvd051bWJlcl0gIT0gW05TV2luZG93
IHdpbmRvd051bWJlckF0UG9pbnQ6W05TRXZlbnQgbW91c2VMb2NhdGlvbl0gYmVsb3dXaW5kb3dX
aXRoV2luZG93TnVtYmVyOjBdKQorICAgIGF1dG8gbW91c2VMb2NhdGlvbkluU2NyZWVuID0gTlNF
dmVudC5tb3VzZUxvY2F0aW9uOworICAgIGlmICh3aW5kb3cud2luZG93TnVtYmVyICE9IFtOU1dp
bmRvdyB3aW5kb3dOdW1iZXJBdFBvaW50Om1vdXNlTG9jYXRpb25JblNjcmVlbiBiZWxvd1dpbmRv
d1dpdGhXaW5kb3dOdW1iZXI6MF0pCiAgICAgICAgIHJldHVybjsKIAogICAgIE5TQ3Vyc29yICpw
bGF0Zm9ybUN1cnNvciA9IGN1cnNvci5wbGF0Zm9ybUN1cnNvcigpOwogICAgIGlmIChbTlNDdXJz
b3IgY3VycmVudEN1cnNvcl0gPT0gcGxhdGZvcm1DdXJzb3IpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIGlmIChtX2ltcGwtPmltYWdlQW5hbHlzaXNPdmVybGF5Vmlld0hhc0N1cnNvckF0UG9pbnQo
W21fdmlldyBjb252ZXJ0UG9pbnQ6bW91c2VMb2NhdGlvbkluU2NyZWVuIGZyb21WaWV3Om5pbF0p
KQorICAgICAgICByZXR1cm47CisKICAgICBbcGxhdGZvcm1DdXJzb3Igc2V0XTsKIAogICAgIGlm
IChjdXJzb3IudHlwZSgpID09IFdlYkNvcmU6OkN1cnNvcjo6VHlwZTo6Tm9uZSkgewo=
</data>
<flag name="commit-queue"
          id="484996"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>