<?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>220033</bug_id>
          
          <creation_ts>2020-12-18 17:24:11 -0800</creation_ts>
          <short_desc>Check availability of speech recognition service before requesting permissions</short_desc>
          <delta_ts>2020-12-21 11:35:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1715870</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-18 17:24:11 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715871</commentid>
    <comment_count>1</comment_count>
      <attachid>416561</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-18 17:33:21 -0800</bug_when>
    <thetext>Created attachment 416561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715970</commentid>
    <comment_count>2</comment_count>
      <attachid>416593</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-20 17:44:48 -0800</bug_when>
    <thetext>Created attachment 416593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716011</commentid>
    <comment_count>3</comment_count>
      <attachid>416593</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-12-21 09:20:03 -0800</bug_when>
    <thetext>Comment on attachment 416593
Patch

LGTM.
I am unsure whether we can bypass the speech service TCC prompt to get a valid isAvailable check.
Did you test that manually?

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

&gt; Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.mm:267
&gt; +    return recognizer &amp;&amp; [recognizer isAvailable];

Is it ok to try creating allocSFSpeechRecognizerInstance and do we get a valid isAvailable result when the TCC prompt is unknown?

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:110
&gt; +        m_speechRecognitionServiceCheck = m_microphoneCheck = CheckResult::Denied;

Can we just do:
if (!checkSpeechRecognitionServiceAvailability(m_requests.first()-&gt;lang())) {
    completeCurrentRequest(SpeechRecognitionPermissionDecision::Deny);
    return;
}

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:66
&gt; +    m_permissionChecker(request.lang(), request.clientOrigin(), [this, weakThis = makeWeakPtr(this), weakRequest = makeWeakPtr(request)](SpeechRecognitionPermissionDecision decision) mutable {

auto decision

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1725
&gt; +    auto permissionChecker = [weakPage = makeWeakPtr(targetPage)](auto lang, auto&amp; origin, auto&amp;&amp; completionHandler) mutable {

auto&amp; lang</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716034</commentid>
    <comment_count>4</comment_count>
      <attachid>416610</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-21 10:57:14 -0800</bug_when>
    <thetext>Created attachment 416610
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716035</commentid>
    <comment_count>5</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-21 10:58:53 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #3)
&gt; Comment on attachment 416593 [details]
&gt; Patch
&gt; 
&gt; LGTM.
&gt; I am unsure whether we can bypass the speech service TCC prompt to get a
&gt; valid isAvailable check.
&gt; Did you test that manually?

Yes, I tested on a newly built MiniBrowser (no permission granted yet), and it did not crash or error when checking the availability.

&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=416593&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.mm:267
&gt; &gt; +    return recognizer &amp;&amp; [recognizer isAvailable];
&gt; 
&gt; Is it ok to try creating allocSFSpeechRecognizerInstance and do we get a
&gt; valid isAvailable result when the TCC prompt is unknown?
&gt; 
&gt; &gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:110
&gt; &gt; +        m_speechRecognitionServiceCheck = m_microphoneCheck = CheckResult::Denied;
&gt; 
&gt; Can we just do:
&gt; if (!checkSpeechRecognitionServiceAvailability(m_requests.first()-&gt;lang())) {
&gt;     completeCurrentRequest(SpeechRecognitionPermissionDecision::Deny);
&gt;     return;
&gt; }
&gt; 
&gt; &gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:66
&gt; &gt; +    m_permissionChecker(request.lang(), request.clientOrigin(), [this, weakThis = makeWeakPtr(this), weakRequest = makeWeakPtr(request)](SpeechRecognitionPermissionDecision decision) mutable {
&gt; 
&gt; auto decision
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1725
&gt; &gt; +    auto permissionChecker = [weakPage = makeWeakPtr(targetPage)](auto lang, auto&amp; origin, auto&amp;&amp; completionHandler) mutable {
&gt; 
&gt; auto&amp; lang</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716036</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-21 11:05:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/72555917&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716047</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-21 11:35:49 -0800</bug_when>
    <thetext>Committed r271031: &lt;https://trac.webkit.org/changeset/271031&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416610.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416561</attachid>
            <date>2020-12-18 17:33:21 -0800</date>
            <delta_ts>2020-12-20 17:44:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220033-20201218173320.patch</filename>
            <type>text/plain</type>
            <size>15952</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwOTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMDA4MGYxZjFkNDZkYTU0
ZmJlY2FiNzU1ZDQ1MmZiNGEzOWNlNTIuLjc1M2E3NTYxZmM5NTMzNWMzODQ1NTgzZTFmMGZlYWFi
OWM4N2U2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjAtMTItMTggIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hlY2sgYXZhaWxhYmlsaXR5IG9m
IHNwZWVjaCByZWNvZ25pdGlvbiBzZXJ2aWNlIGJlZm9yZSByZXF1ZXN0aW5nIHBlcm1pc3Npb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAwMzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiBzcGVl
Y2ggcmVjb2duaXRpb24gc2VydmljZSBpcyBub3QgYXZhaWxhYmxlIGZvciB0YXJnZXQgbGFuZ3Vh
Z2UsIChtYXliZSB0aGUgbGFuZ3VhZ2UgaXMgbm90IHN1cHBvcnRlZCwgdXNlciAKKyAgICAgICAg
dHVybnMgb2ZmIGRpY3RhdGlvbiBpbiBzeXN0ZW0gc2V0dGluZ3MsIGV0YyksIGxldCdzIGp1c3Qg
ZmFpbCB0aGUgc3BlZWNoIHJlY29nbml0aW9uIHJlcXVlc3Qgd2l0aG91dCBwcm9tcHRpbmcuCisK
KyAgICAgICAgTWFudWFsbHkgdGVzdGVkIHdpdGggTWluaUJyb3dzZXIuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tOgorICAgICAgICAoV2Vi
S2l0OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25BY2Nlc3MpOgorICAgICAgICAoV2ViS2l0Ojpj
aGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmNo
ZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQXZhaWxhYmlsaXR5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRQcm9jZXNzaW5n
UmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5oOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0OjpsYW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVlc3RQZXJtaXNz
aW9uRm9yUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2Vy
dmVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKwogMjAyMC0xMi0xOCAgU2lodWkgTGl1
ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyIHNob3VsZCBub3QgaXNzdWUgc2FuZGJveCBleHRl
bnNpb24gZm9yIG1vY2tlZCBkZXZpY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KaW5kZXggZDllMjhhZDk4
ZDNjMjVhYzlkYjJjNzM4YTU2NDJiYTM2NTE2ZDdjNy4uNjIxMGU5NmNlMGMyOTMzYTM1YTYxMDJm
ZWU3YzlmMzYyNWVmMmYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQpAQCAtMzgsMTQgKzM4LDggQEAK
ICNpbXBvcnQgPHd0Zi9VUkxIZWxwZXJzLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5k
Ym94U1BJLmg+CiAKLSNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCi0jaW1wb3J0IDxTcGVlY2gv
U3BlZWNoLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUksoU3BlZWNoKQotU09GVF9MSU5LX0NMQVNT
KFNwZWVjaCwgU0ZTcGVlY2hSZWNvZ25pemVyKQotI2VuZGlmCi0KICNpbXBvcnQgPHBhbC9jb2Nv
YS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorI2ltcG9ydCA8cGFsL2NvY29hL1NwZWVjaFNvZnRM
aW5rLmg+CiAKIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhUQ0MpCiBTT0ZUX0xJTksoVEND
LCBUQ0NBY2Nlc3NQcmVmbGlnaHQsIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3VsdCwgKENGU3RyaW5n
UmVmIHNlcnZpY2UsIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKSwgKHNlcnZpY2UsIG9wdGlvbnMp
KQpAQCAtMjU0LDEyICsyNDgsMTIgQEAgdm9pZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25BY2Nl
c3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQpPiYmIGMKICAgICAgICAg
fQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKICAgICB9KTsKLSAgICBb
Z2V0U0ZTcGVlY2hSZWNvZ25pemVyQ2xhc3MoKSByZXF1ZXN0QXV0aG9yaXphdGlvbjpkZWNpc2lv
bkhhbmRsZXIuZ2V0KCldOworICAgIFtQQUw6OmdldFNGU3BlZWNoUmVjb2duaXplckNsYXNzKCkg
cmVxdWVzdEF1dGhvcml6YXRpb246ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKIH0KIAogTWVkaWFQ
ZXJtaXNzaW9uUmVzdWx0IGNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCkKIHsK
LSAgICBhdXRvIGF1dGhvcml6YXRpb25TdGF0dXMgPSBbZ2V0U0ZTcGVlY2hSZWNvZ25pemVyQ2xh
c3MoKSBhdXRob3JpemF0aW9uU3RhdHVzXTsKKyAgICBhdXRvIGF1dGhvcml6YXRpb25TdGF0dXMg
PSBbUEFMOjpnZXRTRlNwZWVjaFJlY29nbml6ZXJDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNd
OwogICAgIGlmIChhdXRob3JpemF0aW9uU3RhdHVzID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhv
cml6YXRpb25TdGF0dXNEZW5pZWQgfHwgYXV0aG9yaXphdGlvblN0YXR1cyA9PSBTRlNwZWVjaFJl
Y29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkKICAgICAgICAgcmV0dXJuIE1l
ZGlhUGVybWlzc2lvblJlc3VsdDo6RGVuaWVkOwogICAgIGlmIChhdXRob3JpemF0aW9uU3RhdHVz
ID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkKQpAQCAt
MjY3LDYgKzI2MSwxMiBAQCBNZWRpYVBlcm1pc3Npb25SZXN1bHQgY2hlY2tTcGVlY2hSZWNvZ25p
dGlvblNlcnZpY2VBY2Nlc3MoKQogICAgIHJldHVybiBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OlVu
a25vd247CiB9CiAKK2Jvb2wgY2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBdmFpbGFiaWxp
dHkoY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQoreworICAgIGF1dG8gcmVjb2duaXpl
ciA9IGxvY2FsZUlkZW50aWZpZXIuaXNFbXB0eSgpID8gYWRvcHROUyhbUEFMOjphbGxvY1NGU3Bl
ZWNoUmVjb2duaXplckluc3RhbmNlKCkgaW5pdF0pIDogYWRvcHROUyhbUEFMOjphbGxvY1NGU3Bl
ZWNoUmVjb2duaXplckluc3RhbmNlKCkgaW5pdFdpdGhMb2NhbGU6W05TTG9jYWxlIGxvY2FsZVdp
dGhMb2NhbGVJZGVudGlmaWVyOmxvY2FsZUlkZW50aWZpZXJdXSk7CisgICAgcmV0dXJuIHJlY29n
bml6ZXIgJiYgW3JlY29nbml6ZXIgaXNBdmFpbGFibGVdOworfQorCiAjZW5kaWYgLy8gSEFWRShT
UEVFQ0hSRUNPR05JWkVSKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgKaW5kZXggMzNmNzIw
YmNjNWM0ZjQzNTAxYTZiOTg4ODlkYjhkNGMwNWU3YzNmOS4uNWI0NzhjOGViM2I2NGQ0Nzk3YTI5
YTdmZjQwYTg5MzQyNTc1OTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgKQEAgLTY4LDYgKzY4LDcgQEAgTWVkaWFQZXJtaXNz
aW9uUmVzdWx0IGNoZWNrQVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBl
KTsKICNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCiB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25p
dGlvbkFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgYXV0aG9yaXplZCk+JiYpOwog
TWVkaWFQZXJtaXNzaW9uUmVzdWx0IGNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNz
KCk7Citib29sIGNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQXZhaWxhYmlsaXR5KGNvbnN0
IFN0cmluZyYgbG9jYWxlSWRlbnRpZmllcik7CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCmluZGV4IGM2NjlhOWU3NmZhOTg2YjcwNDAw
Yjc2NmUzMmMxN2FiMTk0MmZiNTQuLjk5YTdkNGI1OTdjMDI2MmI4ODBkZjE0YmYyODEwNTMzMzgx
NDMyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCkBAIC03NSw5ICs3NSw5IEBAIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6On5TcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyKCkKICAgICAgICAgcmVxdWVzdC0+Y29tcGxldGUoU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOwogfQogICAgIAotdm9pZCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0aW9udEhhbmRsZXIpCit2b2lkIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QoY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYgY29tcGxldGlvbnRIYW5kbGVyKQog
ewotICAgIG1fcmVxdWVzdHMuYXBwZW5kKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3Q6OmNyZWF0ZShvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOworICAgIG1f
cmVxdWVzdHMuYXBwZW5kKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0
ZShsYW5nLCBvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOwogICAgIGlmICht
X3JlcXVlc3RzLnNpemUoKSA9PSAxKQogICAgICAgICBzdGFydE5leHRSZXF1ZXN0KCk7CiB9CkBA
IC0xMDMsNiArMTAzLDExIEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cjo6c3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpCiAgICAgbV9taWNyb3Bob25lQ2hlY2sgPSBjb21w
dXRlTWljcm9waG9uZUFjY2VzcygpOwogICAgIG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hl
Y2sgPSBjb21wdXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7CiAKKyAgICAvLyBT
cGVlY2ggcmVjb2duaXRpb24gc2VydmljZSBjYW4gYmUgdW5hdmFpbGFibGUgd2hlbiB1c2VyIGRv
ZXMgbm90IGVuYWJsZSBkaWN0YXRpb24gaW4gc3lzdGVtIHNldHRpbmdzLgorICAgIC8vIExldCdz
IGF2b2lkIHByb21wdGluZyB1c2VycyBpbiB0aGF0IGNhc2UuCisgICAgaWYgKCFjaGVja1NwZWVj
aFJlY29nbml0aW9uU2VydmljZUF2YWlsYWJpbGl0eShtX3JlcXVlc3RzLmZpcnN0KCktPmxhbmco
KSkpCisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPSBtX21pY3JvcGhv
bmVDaGVjayA9IENoZWNrUmVzdWx0OjpEZW5pZWQ7CisKICAgICBtX3BhZ2Uuc3luY0lmTW9ja0Rl
dmljZXNFbmFibGVkQ2hhbmdlZCgpOwogICAgIGlmIChtX3BhZ2UucHJlZmVyZW5jZXMoKS5tb2Nr
Q2FwdHVyZURldmljZXNFbmFibGVkKCkpIHsKICAgICAgICAgbV9taWNyb3Bob25lQ2hlY2sgPSBD
aGVja1Jlc3VsdDo6R3JhbnRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaAppbmRleCBlMjcxZjA1
MDY4OTM2NzdiNzFiMzBhNThiZGIwYjg5YWE0YzJmYTA2Li44OTI5YTAzMGU0MGNiZTViYTIyMGZl
NDA2ZTUxNmU0ZGE3YTllNmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCkBAIC0zOSw3ICsz
OSw3IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIENoZWNrUmVzdWx0IHsgRGVuaWVkLCBHcmFu
dGVkLCBVbmtub3duIH07CiAgICAgZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcihXZWJQYWdlUHJveHkmKTsKICAgICB+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcigpOwotICAgIHZvaWQgcmVxdWVzdChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lz
aW9uKT4mJik7CisgICAgdm9pZCByZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYpOwogCiAgICAgdm9pZCBkZWNpZGVCeURlZmF1bHRB
Y3Rpb24oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCmluZGV4IDIyNTE3YjNlZmE2
MTI4OWQ0Mzc0M2NiNGY0Nzc5MTY1ZDBlMGEzOGUuLmU3Y2NjNDhkMTdjMDEwNmI1MGU5ZGVkM2I5
ZjRhNTcyYjc0YmM4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTM1LDkgKzM1LDkg
QEAgZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiA6IGJvb2wg
eyBEZW55LCBHcmFudCB9OwogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVz
dD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3Q+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3Qob3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KGxhbmcs
IG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKICAgICB9CiAKICAgICB2b2lk
IGNvbXBsZXRlKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKQpA
QCAtNDcsMTMgKzQ3LDE2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CisgICAgY29u
c3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9sYW5nOyB9CiAKIHByaXZhdGU6Ci0g
ICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25EZWNpc2lvbik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIDogbV9v
cmlnaW4ob3JpZ2luKQorICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoY29u
c3QgU3RyaW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogbV9sYW5nKGxhbmcpCisgICAgICAgICwg
bV9vcmlnaW4ob3JpZ2luKQogICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpCiAgICAgeyB9CiAKKyAgICBTdHJpbmcgbV9sYW5nOwogICAgIFdl
YkNvcmU6OkNsaWVudE9yaWdpbiBtX29yaWdpbjsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4gbV9jb21wbGV0aW9uSGFuZGxl
cjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5jcHAKaW5kZXggZmM0ZGJjZjRkZjNlYzg1MzJkMTRmZjM0NzczM2E2ZTAyMDM4ODNh
Yy4uYTMxYmMwNmY5NjE2YzdhZDE0N2VhYTkyMmI2ZjQ4MzdlMDkwODFmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcApAQCAt
MzYsNyArMzYsNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotCiBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBj
b25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmIHBlcm1pc3Npb25DaGVja2VyLCBT
cGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkJiYgY2hl
Y2tJZkVuYWJsZWQKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwgUmVhbHRpbWVNZWRp
YVNvdXJjZUNyZWF0ZUZ1bmN0aW9uJiYgZnVuY3Rpb24KQEAgLTY0LDcgKzYzLDcgQEAgdm9pZCBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWQKIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVz
dFBlcm1pc3Npb25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYg
cmVxdWVzdCkKIHsKLSAgICBtX3Blcm1pc3Npb25DaGVja2VyKHJlcXVlc3QuY2xpZW50T3JpZ2lu
KCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWFrUmVxdWVzdCA9IG1h
a2VXZWFrUHRyKHJlcXVlc3QpXShTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiBk
ZWNpc2lvbikgbXV0YWJsZSB7CisgICAgbV9wZXJtaXNzaW9uQ2hlY2tlcihyZXF1ZXN0Lmxhbmco
KSwgcmVxdWVzdC5jbGllbnRPcmlnaW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyksIHdlYWtSZXF1ZXN0ID0gbWFrZVdlYWtQdHIocmVxdWVzdCldKFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXggZmRkYWFjODE3ZmYzMmZmNGQ4
MjNjM2VlYmQ0NDQ4ODdhY2E4ZjhmNy4uMWRlNWQxNTJjZmEwNzAwYzhkODczM2NiMTI2N2ViMjlh
OGM4YzU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIGVu
dW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24gOiBib29sOwogCiB1
c2luZyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgPSBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcjsKLXVzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXIgPSBGdW5j
dGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmKT47Cit1c2luZyBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyID0gRnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJik+OwogdXNpbmcgU3Bl
ZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCA9IEZ1bmN0
aW9uPGJvb2woKT47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmVyIDogcHVibGljIENh
bk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3MjUxMDEwODg3MWZiZjY3NDdmNzZiYTNkZWY2
MWQwZTQ5OTNmODQwLi4xODA3ZmY0OTBlMmU3NDJlZDA3YTZjY2ZkY2M2MGY0ZjFjNDI1MmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwMzQzLDEyICsx
MDM0MywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRl
Rm9yVGVzdGluZygpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgY2xp
ZW50T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgbGFuZywgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmICghbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
KQogICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBtYWtlVW5p
cXVlPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI+KCp0aGlzKTsKIAotICAgIG1f
c3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci0+cmVxdWVzdChjbGllbnRPcmlnaW4s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXItPnJlcXVlc3QobGFuZywgY2xpZW50T3JpZ2luLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQnlEZWZhdWx0QWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGQzZjdj
ZjRkZThjMGI4ZmNlZjMzZDkwZGExODgzOTUxZWUyOGRjMjcuLjBkZjYxNmI3NmZiNzUwMzNlZjIw
MTc5ZmU1YjI5NmYyODM1NWUzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC0xODI5LDcgKzE4MjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNZWRpYUNhcHR1
cmVSZXBvcnRpbmdEZWxheShTZWNvbmRzIGNhcHR1cmVSZXBvcnRpbmdEZWxheSkgeyBtX21lZGlh
Q2FwdHVyZVJlcG9ydGluZ0RlbGF5ID0gY2FwdHVyZVJlcG9ydGluZ0RlbGF5OyB9CiAgICAgc2l6
ZV90IHN1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlcigpIHsgcmV0dXJuIG1fc3VzcGVuZE1lZGlh
UGxheWJhY2tDb3VudGVyOyB9CiAKLSAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb24oY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYpOworICAgIHZvaWQg
cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIGxhbmcsIGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25CeURlZmF1bHRBY3Rpb24oY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIHZv
aWQgc3luY0lmTW9ja0RldmljZXNFbmFibGVkQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZDkzYzFmMzkyODQ4ZWJjN2EzY2E1NjU4
Yjg2OTk0YTUwNzhkNDIzOS4uZmZmNTVlM2I3YWVhZjkxMzE4YTc0Y2FlYWNjZWFmNTc4ZDM0NDlh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0x
NzIyLDEzICsxNzIyLDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50CiAKICAgICBBU1NFUlQo
IW1fc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNYXAuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAg
IGF1dG8mIHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZl
ck1hcC5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIGF1dG8g
cGVybWlzc2lvbkNoZWNrZXIgPSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0o
YXV0byYgb3JpZ2luLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgeworICAgIGF1
dG8gcGVybWlzc2lvbkNoZWNrZXIgPSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdl
KV0oYXV0byBsYW5nLCBhdXRvJiBvcmlnaW4sIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1BhZ2UpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHdlYWtQYWdlLT5yZXF1ZXN0U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgICAgICB3ZWFrUGFnZS0+cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bihsYW5nLCBvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9OwogICAg
IGF1dG8gY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBbd2Vha1BhZ2UgPSBtYWtl
V2Vha1B0cih0YXJnZXRQYWdlKV0oKSB7CiAgICAgICAgIHJldHVybiB3ZWFrUGFnZSAmJiB3ZWFr
UGFnZS0+cHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416593</attachid>
            <date>2020-12-20 17:44:48 -0800</date>
            <delta_ts>2020-12-21 10:57:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220033-20201220174448.patch</filename>
            <type>text/plain</type>
            <size>15988</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwOTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMDA4MGYxZjFkNDZkYTU0
ZmJlY2FiNzU1ZDQ1MmZiNGEzOWNlNTIuLjc1M2E3NTYxZmM5NTMzNWMzODQ1NTgzZTFmMGZlYWFi
OWM4N2U2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjAtMTItMTggIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hlY2sgYXZhaWxhYmlsaXR5IG9m
IHNwZWVjaCByZWNvZ25pdGlvbiBzZXJ2aWNlIGJlZm9yZSByZXF1ZXN0aW5nIHBlcm1pc3Npb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAwMzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiBzcGVl
Y2ggcmVjb2duaXRpb24gc2VydmljZSBpcyBub3QgYXZhaWxhYmxlIGZvciB0YXJnZXQgbGFuZ3Vh
Z2UsIChtYXliZSB0aGUgbGFuZ3VhZ2UgaXMgbm90IHN1cHBvcnRlZCwgdXNlciAKKyAgICAgICAg
dHVybnMgb2ZmIGRpY3RhdGlvbiBpbiBzeXN0ZW0gc2V0dGluZ3MsIGV0YyksIGxldCdzIGp1c3Qg
ZmFpbCB0aGUgc3BlZWNoIHJlY29nbml0aW9uIHJlcXVlc3Qgd2l0aG91dCBwcm9tcHRpbmcuCisK
KyAgICAgICAgTWFudWFsbHkgdGVzdGVkIHdpdGggTWluaUJyb3dzZXIuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tOgorICAgICAgICAoV2Vi
S2l0OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25BY2Nlc3MpOgorICAgICAgICAoV2ViS2l0Ojpj
aGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmNo
ZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQXZhaWxhYmlsaXR5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRQcm9jZXNzaW5n
UmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5oOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0OjpsYW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVlc3RQZXJtaXNz
aW9uRm9yUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2Vy
dmVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKwogMjAyMC0xMi0xOCAgU2lodWkgTGl1
ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyIHNob3VsZCBub3QgaXNzdWUgc2FuZGJveCBleHRl
bnNpb24gZm9yIG1vY2tlZCBkZXZpY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KaW5kZXggZDllMjhhZDk4
ZDNjMjVhYzlkYjJjNzM4YTU2NDJiYTM2NTE2ZDdjNy4uNjIxMGU5NmNlMGMyOTMzYTM1YTYxMDJm
ZWU3YzlmMzYyNWVmMmYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQpAQCAtMzgsMTQgKzM4LDggQEAK
ICNpbXBvcnQgPHd0Zi9VUkxIZWxwZXJzLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5k
Ym94U1BJLmg+CiAKLSNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCi0jaW1wb3J0IDxTcGVlY2gv
U3BlZWNoLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUksoU3BlZWNoKQotU09GVF9MSU5LX0NMQVNT
KFNwZWVjaCwgU0ZTcGVlY2hSZWNvZ25pemVyKQotI2VuZGlmCi0KICNpbXBvcnQgPHBhbC9jb2Nv
YS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorI2ltcG9ydCA8cGFsL2NvY29hL1NwZWVjaFNvZnRM
aW5rLmg+CiAKIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhUQ0MpCiBTT0ZUX0xJTksoVEND
LCBUQ0NBY2Nlc3NQcmVmbGlnaHQsIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3VsdCwgKENGU3RyaW5n
UmVmIHNlcnZpY2UsIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKSwgKHNlcnZpY2UsIG9wdGlvbnMp
KQpAQCAtMjU0LDEyICsyNDgsMTIgQEAgdm9pZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25BY2Nl
c3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQpPiYmIGMKICAgICAgICAg
fQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKICAgICB9KTsKLSAgICBb
Z2V0U0ZTcGVlY2hSZWNvZ25pemVyQ2xhc3MoKSByZXF1ZXN0QXV0aG9yaXphdGlvbjpkZWNpc2lv
bkhhbmRsZXIuZ2V0KCldOworICAgIFtQQUw6OmdldFNGU3BlZWNoUmVjb2duaXplckNsYXNzKCkg
cmVxdWVzdEF1dGhvcml6YXRpb246ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKIH0KIAogTWVkaWFQ
ZXJtaXNzaW9uUmVzdWx0IGNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCkKIHsK
LSAgICBhdXRvIGF1dGhvcml6YXRpb25TdGF0dXMgPSBbZ2V0U0ZTcGVlY2hSZWNvZ25pemVyQ2xh
c3MoKSBhdXRob3JpemF0aW9uU3RhdHVzXTsKKyAgICBhdXRvIGF1dGhvcml6YXRpb25TdGF0dXMg
PSBbUEFMOjpnZXRTRlNwZWVjaFJlY29nbml6ZXJDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNd
OwogICAgIGlmIChhdXRob3JpemF0aW9uU3RhdHVzID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhv
cml6YXRpb25TdGF0dXNEZW5pZWQgfHwgYXV0aG9yaXphdGlvblN0YXR1cyA9PSBTRlNwZWVjaFJl
Y29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkKICAgICAgICAgcmV0dXJuIE1l
ZGlhUGVybWlzc2lvblJlc3VsdDo6RGVuaWVkOwogICAgIGlmIChhdXRob3JpemF0aW9uU3RhdHVz
ID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkKQpAQCAt
MjY3LDYgKzI2MSwxMiBAQCBNZWRpYVBlcm1pc3Npb25SZXN1bHQgY2hlY2tTcGVlY2hSZWNvZ25p
dGlvblNlcnZpY2VBY2Nlc3MoKQogICAgIHJldHVybiBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OlVu
a25vd247CiB9CiAKK2Jvb2wgY2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBdmFpbGFiaWxp
dHkoY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQoreworICAgIGF1dG8gcmVjb2duaXpl
ciA9IGxvY2FsZUlkZW50aWZpZXIuaXNFbXB0eSgpID8gYWRvcHROUyhbUEFMOjphbGxvY1NGU3Bl
ZWNoUmVjb2duaXplckluc3RhbmNlKCkgaW5pdF0pIDogYWRvcHROUyhbUEFMOjphbGxvY1NGU3Bl
ZWNoUmVjb2duaXplckluc3RhbmNlKCkgaW5pdFdpdGhMb2NhbGU6W05TTG9jYWxlIGxvY2FsZVdp
dGhMb2NhbGVJZGVudGlmaWVyOmxvY2FsZUlkZW50aWZpZXJdXSk7CisgICAgcmV0dXJuIHJlY29n
bml6ZXIgJiYgW3JlY29nbml6ZXIgaXNBdmFpbGFibGVdOworfQorCiAjZW5kaWYgLy8gSEFWRShT
UEVFQ0hSRUNPR05JWkVSKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgKaW5kZXggMzNmNzIw
YmNjNWM0ZjQzNTAxYTZiOTg4ODlkYjhkNGMwNWU3YzNmOS4uNWI0NzhjOGViM2I2NGQ0Nzk3YTI5
YTdmZjQwYTg5MzQyNTc1OTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgKQEAgLTY4LDYgKzY4LDcgQEAgTWVkaWFQZXJtaXNz
aW9uUmVzdWx0IGNoZWNrQVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBl
KTsKICNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCiB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25p
dGlvbkFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgYXV0aG9yaXplZCk+JiYpOwog
TWVkaWFQZXJtaXNzaW9uUmVzdWx0IGNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNz
KCk7Citib29sIGNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQXZhaWxhYmlsaXR5KGNvbnN0
IFN0cmluZyYgbG9jYWxlSWRlbnRpZmllcik7CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCmluZGV4IGM2NjlhOWU3NmZhOTg2YjcwNDAw
Yjc2NmUzMmMxN2FiMTk0MmZiNTQuLmU4ODFiOWVlMDBhYWRhM2I2NjNkNWJlMzBlNWNiNzhjMDg5
NzU2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCkBAIC03NSw5ICs3NSw5IEBAIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6On5TcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyKCkKICAgICAgICAgcmVxdWVzdC0+Y29tcGxldGUoU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOwogfQogICAgIAotdm9pZCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0aW9udEhhbmRsZXIpCit2b2lkIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QoY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYgY29tcGxldGlvbnRIYW5kbGVyKQog
ewotICAgIG1fcmVxdWVzdHMuYXBwZW5kKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3Q6OmNyZWF0ZShvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOworICAgIG1f
cmVxdWVzdHMuYXBwZW5kKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0
ZShsYW5nLCBvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOwogICAgIGlmICht
X3JlcXVlc3RzLnNpemUoKSA9PSAxKQogICAgICAgICBzdGFydE5leHRSZXF1ZXN0KCk7CiB9CkBA
IC0xMDMsNiArMTAzLDEzIEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cjo6c3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpCiAgICAgbV9taWNyb3Bob25lQ2hlY2sgPSBjb21w
dXRlTWljcm9waG9uZUFjY2VzcygpOwogICAgIG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hl
Y2sgPSBjb21wdXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7CiAKKyNpZiBIQVZF
KFNQRUVDSFJFQ09HTklaRVIpCisgICAgLy8gU3BlZWNoIHJlY29nbml0aW9uIHNlcnZpY2UgY2Fu
IGJlIHVuYXZhaWxhYmxlIHdoZW4gdXNlciBkb2VzIG5vdCBlbmFibGUgZGljdGF0aW9uIGluIHN5
c3RlbSBzZXR0aW5ncy4KKyAgICAvLyBMZXQncyBhdm9pZCBwcm9tcHRpbmcgdXNlcnMgaW4gdGhh
dCBjYXNlLgorICAgIGlmICghY2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBdmFpbGFiaWxp
dHkobV9yZXF1ZXN0cy5maXJzdCgpLT5sYW5nKCkpKQorICAgICAgICBtX3NwZWVjaFJlY29nbml0
aW9uU2VydmljZUNoZWNrID0gbV9taWNyb3Bob25lQ2hlY2sgPSBDaGVja1Jlc3VsdDo6RGVuaWVk
OworI2VuZGlmCisKICAgICBtX3BhZ2Uuc3luY0lmTW9ja0RldmljZXNFbmFibGVkQ2hhbmdlZCgp
OwogICAgIGlmIChtX3BhZ2UucHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVk
KCkpIHsKICAgICAgICAgbV9taWNyb3Bob25lQ2hlY2sgPSBDaGVja1Jlc3VsdDo6R3JhbnRlZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIuaAppbmRleCBlMjcxZjA1MDY4OTM2NzdiNzFiMzBhNThiZGIw
Yjg5YWE0YzJmYTA2Li44OTI5YTAzMGU0MGNiZTViYTIyMGZlNDA2ZTUxNmU0ZGE3YTllNmZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBl
bnVtIGNsYXNzIENoZWNrUmVzdWx0IHsgRGVuaWVkLCBHcmFudGVkLCBVbmtub3duIH07CiAgICAg
ZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcihXZWJQYWdlUHJveHkm
KTsKICAgICB+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcigpOwotICAgIHZvaWQg
cmVxdWVzdChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJik7CisgICAgdm9pZCBy
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lv
bik+JiYpOwogCiAgICAgdm9pZCBkZWNpZGVCeURlZmF1bHRBY3Rpb24oY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdC5oCmluZGV4IDIyNTE3YjNlZmE2MTI4OWQ0Mzc0M2NiNGY0Nzc5MTY1
ZDBlMGEzOGUuLmU3Y2NjNDhkMTdjMDEwNmI1MGU5ZGVkM2I5ZjRhNTcyYjc0YmM4NzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTM1LDkgKzM1LDkgQEAgZW51bSBjbGFzcyBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiA6IGJvb2wgeyBEZW55LCBHcmFudCB9OwogCiBj
bGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0IDogcHVibGljIFJlZkNvdW50
ZWQ8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gY3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2lu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lz
aW9uKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qob3JpZ2luLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KGxhbmcsIG9yaWdpbiwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBsZXRlKFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKQpAQCAtNDcsMTMgKzQ3LDE2IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CisgICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29u
c3QgeyByZXR1cm4gbV9sYW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIDogbV9vcmlnaW4ob3JpZ2luKQorICAgIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoY29uc3QgU3RyaW5nJiBsYW5nLCBjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgICAgIDogbV9sYW5nKGxhbmcpCisgICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAg
ICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAg
ICAgeyB9CiAKKyAgICBTdHJpbmcgbV9sYW5nOwogICAgIFdlYkNvcmU6OkNsaWVudE9yaWdpbiBt
X29yaWdpbjsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkRlY2lzaW9uKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKaW5kZXggZmM0
ZGJjZjRkZjNlYzg1MzJkMTRmZjM0NzczM2E2ZTAyMDM4ODNhYy4uYTMxYmMwNmY5NjE2YzdhZDE0
N2VhYTkyMmI2ZjQ4MzdlMDkwODFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcApAQCAtMzYsNyArMzYsNiBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotCiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2hlY2tlciYmIHBlcm1pc3Npb25DaGVja2VyLCBTcGVlY2hSZWNvZ25pdGlvbkNoZWNr
SWZNb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkJiYgY2hlY2tJZkVuYWJsZWQKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogICAgICwgUmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9u
JiYgZnVuY3Rpb24KQEAgLTY0LDcgKzYzLDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWQKIAog
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBtX3Bl
cm1pc3Npb25DaGVja2VyKHJlcXVlc3QuY2xpZW50T3JpZ2luKCksIFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWFrUmVxdWVzdCA9IG1ha2VXZWFrUHRyKHJlcXVlc3QpXShT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikgbXV0YWJsZSB7Cisg
ICAgbV9wZXJtaXNzaW9uQ2hlY2tlcihyZXF1ZXN0LmxhbmcoKSwgcmVxdWVzdC5jbGllbnRPcmln
aW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYWtSZXF1ZXN0ID0g
bWFrZVdlYWtQdHIocmVxdWVzdCldKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9u
IGRlY2lzaW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLmgKaW5kZXggZmRkYWFjODE3ZmYzMmZmNGQ4MjNjM2VlYmQ0NDQ4ODdhY2E4Zjhm
Ny4uMWRlNWQxNTJjZmEwNzAwYzhkODczM2NiMTI2N2ViMjlhOGM4YzU1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC00Niw3
ICs0Niw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIGVudW0gY2xhc3MgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uRGVjaXNpb24gOiBib29sOwogCiB1c2luZyBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcklkZW50aWZpZXIgPSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcjsKLXVzaW5nIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXIgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uRGVjaXNpb24pPiYmKT47Cit1c2luZyBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DaGVja2VyID0gRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkRlY2lzaW9uKT4mJik+OwogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25DaGVja0lm
TW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCA9IEZ1bmN0aW9uPGJvb2woKT47CiAKIGNsYXNz
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQ
Qzo6TWVzc2FnZVNlbmRlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCA3MjUxMDEwODg3MWZiZjY3NDdmNzZiYTNkZWY2MWQwZTQ5OTNmODQwLi4xODA3ZmY0
OTBlMmU3NDJlZDA3YTZjY2ZkY2M2MGY0ZjFjNDI1MmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwMzQzLDEyICsxMDM0MywxMiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZygpCiAgICAgfSk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgh
bV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKQogICAgICAgICBtX3NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI+KCp0aGlzKTsKIAotICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlci0+cmVxdWVzdChjbGllbnRPcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXItPnJlcXVl
c3QobGFuZywgY2xpZW50T3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQnlE
ZWZhdWx0QWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGQzZjdjZjRkZThjMGI4ZmNlZjMzZDkwZGEx
ODgzOTUxZWUyOGRjMjcuLjBkZjYxNmI3NmZiNzUwMzNlZjIwMTc5ZmU1YjI5NmYyODM1NWUzZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xODI5LDcgKzE4Mjks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheShTZWNv
bmRzIGNhcHR1cmVSZXBvcnRpbmdEZWxheSkgeyBtX21lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5
ID0gY2FwdHVyZVJlcG9ydGluZ0RlbGF5OyB9CiAgICAgc2l6ZV90IHN1c3BlbmRNZWRpYVBsYXli
YWNrQ291bnRlcigpIHsgcmV0dXJuIG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyOyB9CiAK
LSAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25EZWNpc2lvbik+JiYpOworICAgIHZvaWQgcmVxdWVzdFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
RGVjaXNpb24pPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25CeURlZmF1bHRBY3Rpb24oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIHZvaWQgc3luY0lmTW9ja0RldmljZXNF
bmFibGVkQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKaW5kZXggZDkzYzFmMzkyODQ4ZWJjN2EzY2E1NjU4Yjg2OTk0YTUwNzhkNDIzOS4uZmZm
NTVlM2I3YWVhZjkxMzE4YTc0Y2FlYWNjZWFmNTc4ZDM0NDlhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNzIyLDEzICsxNzIyLDEzIEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcklkZW50CiAKICAgICBBU1NFUlQoIW1fc3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXJNYXAuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIGF1dG8mIHNwZWVjaFJlY29nbml0
aW9uU2VydmVyID0gbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZlck1hcC5hZGQoaWRlbnRpZmllciwg
bnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIGF1dG8gcGVybWlzc2lvbkNoZWNrZXIgPSBb
d2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oYXV0byYgb3JpZ2luLCBhdXRvJiYg
Y29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgeworICAgIGF1dG8gcGVybWlzc2lvbkNoZWNrZXIg
PSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oYXV0byBsYW5nLCBhdXRvJiBv
cmlnaW4sIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAgIGlmICgh
d2Vha1BhZ2UpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIHdlYWtQYWdlLT5yZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uKG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICB3ZWFrUGFn
ZS0+cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihsYW5nLCBvcmlnaW4sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9OwogICAgIGF1dG8gY2hlY2tJZk1vY2tDYXB0
dXJlRGV2aWNlc0VuYWJsZWQgPSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0o
KSB7CiAgICAgICAgIHJldHVybiB3ZWFrUGFnZSAmJiB3ZWFrUGFnZS0+cHJlZmVyZW5jZXMoKS5t
b2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416610</attachid>
            <date>2020-12-21 10:57:14 -0800</date>
            <delta_ts>2020-12-21 11:35:50 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-220033-20201221105713.patch</filename>
            <type>text/plain</type>
            <size>16982</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFiNmE0MWViZDFhMjhmMTVh
MTBjMWIxYzk2NmRmNjgxODA0MmYxMjguLjI2ZTExY2MzMzliY2EzNjgzYTgzNWQxZTQ1NzFiMDI1
ZDA0ZjExYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjAtMTItMjEgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hlY2sgYXZhaWxhYmlsaXR5IG9m
IHNwZWVjaCByZWNvZ25pdGlvbiBzZXJ2aWNlIGJlZm9yZSByZXF1ZXN0aW5nIHBlcm1pc3Npb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAwMzMK
KworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIElmIHNwZWVj
aCByZWNvZ25pdGlvbiBzZXJ2aWNlIGlzIG5vdCBhdmFpbGFibGUgZm9yIHRhcmdldCBsYW5ndWFn
ZSAobWF5YmUgdGhlIGxhbmd1YWdlIGlzIG5vdCBzdXBwb3J0ZWQsIHVzZXIgCisgICAgICAgIHR1
cm5zIG9mZiBkaWN0YXRpb24gaW4gc3lzdGVtIHNldHRpbmdzLCBldGMpLCBsZXQncyBqdXN0IGZh
aWwgdGhlIHNwZWVjaCByZWNvZ25pdGlvbiByZXF1ZXN0IHdpdGhvdXQgcHJvbXB0aW5nLgorCisg
ICAgICAgIE1hbnVhbGx5IHRlc3RlZCB3aXRoIE1pbmlCcm93c2VyLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYktp
dDo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6Y2hl
Y2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpjaGVj
a1NwZWVjaFJlY29nbml0aW9uU2VydmljZUF2YWlsYWJpbGl0eSk6CisgICAgICAgICogVUlQcm9j
ZXNzL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0UHJvY2Vzc2luZ1Jl
cXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3QuaDoKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdDo6bGFuZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpyZXF1ZXN0UGVybWlzc2lv
bkZvclJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpj
cmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcik6CisKIDIwMjAtMTItMjAgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3
MDk2OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVy
bWlzc2lvblV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlh
UGVybWlzc2lvblV0aWxpdGllcy5tbQppbmRleCBkOWUyOGFkOThkM2MyNWFjOWRiMmM3MzhhNTY0
MmJhMzY1MTZkN2M3Li42MjEwZTk2Y2UwYzI5MzNhMzVhNjEwMmZlZTdjOWYzNjI1ZWYyZjAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25V
dGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJt
aXNzaW9uVXRpbGl0aWVzLm1tCkBAIC0zOCwxNCArMzgsOCBAQAogI2ltcG9ydCA8d3RmL1VSTEhl
bHBlcnMuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KIAotI2lmIEhB
VkUoU1BFRUNIUkVDT0dOSVpFUikKLSNpbXBvcnQgPFNwZWVjaC9TcGVlY2guaD4KLQotU09GVF9M
SU5LX0ZSQU1FV09SSyhTcGVlY2gpCi1TT0ZUX0xJTktfQ0xBU1MoU3BlZWNoLCBTRlNwZWVjaFJl
Y29nbml6ZXIpCi0jZW5kaWYKLQogI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRM
aW5rLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvU3BlZWNoU29mdExpbmsuaD4KIAogU09GVF9MSU5L
X1BSSVZBVEVfRlJBTUVXT1JLKFRDQykKIFNPRlRfTElOSyhUQ0MsIFRDQ0FjY2Vzc1ByZWZsaWdo
dCwgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0LCAoQ0ZTdHJpbmdSZWYgc2VydmljZSwgQ0ZEaWN0
aW9uYXJ5UmVmIG9wdGlvbnMpLCAoc2VydmljZSwgb3B0aW9ucykpCkBAIC0yNTQsMTIgKzI0OCwx
MiBAQCB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvbkFjY2VzcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wgYXV0aG9yaXplZCk+JiYgYwogICAgICAgICB9CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGF1dGhvcml6ZWQpOwogICAgIH0pOwotICAgIFtnZXRTRlNwZWVjaFJlY29nbml6
ZXJDbGFzcygpIHJlcXVlc3RBdXRob3JpemF0aW9uOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07Cisg
ICAgW1BBTDo6Z2V0U0ZTcGVlY2hSZWNvZ25pemVyQ2xhc3MoKSByZXF1ZXN0QXV0aG9yaXphdGlv
bjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOwogfQogCiBNZWRpYVBlcm1pc3Npb25SZXN1bHQgY2hl
Y2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKQogewotICAgIGF1dG8gYXV0aG9yaXph
dGlvblN0YXR1cyA9IFtnZXRTRlNwZWVjaFJlY29nbml6ZXJDbGFzcygpIGF1dGhvcml6YXRpb25T
dGF0dXNdOworICAgIGF1dG8gYXV0aG9yaXphdGlvblN0YXR1cyA9IFtQQUw6OmdldFNGU3BlZWNo
UmVjb2duaXplckNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c107CiAgICAgaWYgKGF1dGhvcml6
YXRpb25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c0Rlbmll
ZCB8fCBhdXRob3JpemF0aW9uU3RhdHVzID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRp
b25TdGF0dXNSZXN0cmljdGVkKQogICAgICAgICByZXR1cm4gTWVkaWFQZXJtaXNzaW9uUmVzdWx0
OjpEZW5pZWQ7CiAgICAgaWYgKGF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25p
emVyQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQpCkBAIC0yNjcsNiArMjYxLDEyIEBAIE1l
ZGlhUGVybWlzc2lvblJlc3VsdCBjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcygp
CiAgICAgcmV0dXJuIE1lZGlhUGVybWlzc2lvblJlc3VsdDo6VW5rbm93bjsKIH0KIAorYm9vbCBj
aGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUF2YWlsYWJpbGl0eShjb25zdCBTdHJpbmcmIGxv
Y2FsZUlkZW50aWZpZXIpCit7CisgICAgYXV0byByZWNvZ25pemVyID0gbG9jYWxlSWRlbnRpZmll
ci5pc0VtcHR5KCkgPyBhZG9wdE5TKFtQQUw6OmFsbG9jU0ZTcGVlY2hSZWNvZ25pemVySW5zdGFu
Y2UoKSBpbml0XSkgOiBhZG9wdE5TKFtQQUw6OmFsbG9jU0ZTcGVlY2hSZWNvZ25pemVySW5zdGFu
Y2UoKSBpbml0V2l0aExvY2FsZTpbTlNMb2NhbGUgbG9jYWxlV2l0aExvY2FsZUlkZW50aWZpZXI6
bG9jYWxlSWRlbnRpZmllcl1dKTsKKyAgICByZXR1cm4gcmVjb2duaXplciAmJiBbcmVjb2duaXpl
ciBpc0F2YWlsYWJsZV07Cit9CisKICNlbmRpZiAvLyBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9N
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaAppbmRleCAzM2Y3MjBiY2M1YzRmNDM1MDFhNmI5ODg4
OWRiOGQ0YzA1ZTdjM2Y5Li41YjQ3OGM4ZWIzYjY0ZDQ3OTdhMjlhN2ZmNDBhODkzNDI1NzU5MTM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYVBlcm1pc3Npb25VdGls
aXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYVBlcm1pc3Npb25VdGls
aXRpZXMuaApAQCAtNjgsNiArNjgsNyBAQCBNZWRpYVBlcm1pc3Npb25SZXN1bHQgY2hlY2tBVkNh
cHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGUpOwogI2lmIEhBVkUoU1BFRUNI
UkVDT0dOSVpFUikKIHZvaWQgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9uQWNjZXNzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCBhdXRob3JpemVkKT4mJik7CiBNZWRpYVBlcm1pc3Npb25SZXN1
bHQgY2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKK2Jvb2wgY2hlY2tTcGVl
Y2hSZWNvZ25pdGlvblNlcnZpY2VBdmFpbGFiaWxpdHkoY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVu
dGlmaWVyKTsKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlci5jcHAKaW5kZXggYzY2OWE5ZTc2ZmE5ODZiNzA0MDBiNzY2ZTMyYzE3YWIxOTQyZmI1
NC4uY2QyMzJhNTY3NDI0YmUwMjc3YWUyMDVjZjA4N2RjYzA0ZDY4Yzc5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlci5jcHAKQEAgLTc1LDkgKzc1LDkgQEAgU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcjo6flNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoKQogICAg
ICAgICByZXF1ZXN0LT5jb21wbGV0ZShTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lv
bjo6RGVueSk7CiB9CiAgICAgCi12b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OnJlcXVlc3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNv
bXBsZXRpb250SGFuZGxlcikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cjo6cmVxdWVzdChjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0aW9udEhhbmRsZXIpCiB7Ci0gICAgbV9yZXF1ZXN0cy5h
cHBlbmQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKG9yaWdpbiwg
V1RGTW92ZShjb21wbGV0aW9udEhhbmRsZXIpKSk7CisgICAgbV9yZXF1ZXN0cy5hcHBlbmQoU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKGxhbmcsIG9yaWdpbiwgV1RG
TW92ZShjb21wbGV0aW9udEhhbmRsZXIpKSk7CiAgICAgaWYgKG1fcmVxdWVzdHMuc2l6ZSgpID09
IDEpCiAgICAgICAgIHN0YXJ0TmV4dFJlcXVlc3QoKTsKIH0KQEAgLTEwNCwxMSArMTA0LDI2IEBA
IHZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRQcm9jZXNzaW5n
UmVxdWVzdCgpCiAgICAgbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVjayA9IGNvbXB1dGVT
cGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKIAogICAgIG1fcGFnZS5zeW5jSWZNb2Nr
RGV2aWNlc0VuYWJsZWRDaGFuZ2VkKCk7Ci0gICAgaWYgKG1fcGFnZS5wcmVmZXJlbmNlcygpLm1v
Y2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoKSkgeworICAgIGJvb2wgbW9ja0NhcHR1cmVEZXZpY2Vz
RW5hYmxlZCA9IG1fcGFnZS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQo
KTsKKyAgICBpZiAobW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCkgewogICAgICAgICBtX21pY3Jv
cGhvbmVDaGVjayA9IENoZWNrUmVzdWx0OjpHcmFudGVkOwogICAgICAgICBtX3NwZWVjaFJlY29n
bml0aW9uU2VydmljZUNoZWNrID0gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQ7CiAgICAgfQogCisjaWYg
SEFWRShTUEVFQ0hSRUNPR05JWkVSKQorICAgIGlmICghbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxl
ZCAmJiBtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrICE9IENoZWNrUmVzdWx0OjpEZW5p
ZWQpIHsKKyAgICAgICAgLy8gU3BlZWNoIHJlY29nbml0aW9uIHNlcnZpY2UgY2FuIGJlIHVuYXZh
aWxhYmxlIHdoZW4gdXNlciBkb2VzIG5vdCBlbmFibGUgZGljdGF0aW9uIGluIHN5c3RlbSBzZXR0
aW5ncy4KKyAgICAgICAgLy8gTGV0J3MgYXZvaWQgcHJvbXB0aW5nIHVzZXIgaW4gdGhhdCBjYXNl
LgorICAgICAgICBpZiAoIWNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQXZhaWxhYmlsaXR5
KG1fcmVxdWVzdHMuZmlyc3QoKS0+bGFuZygpKSkKKyAgICAgICAgICAgIG1fc3BlZWNoUmVjb2du
aXRpb25TZXJ2aWNlQ2hlY2sgPSBDaGVja1Jlc3VsdDo6RGVuaWVkOworICAgIH0KKyNlbmRpZgor
CisgICAgaWYgKG1fbWljcm9waG9uZUNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQgfHwgbV9z
cGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVjayA9PSBDaGVja1Jlc3VsdDo6RGVuaWVkKSB7Cisg
ICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
RGVjaXNpb246OkRlbnkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gV2UgY3Vy
cmVudGx5IGRvbid0IGFsbG93IHRoaXJkLXBhcnR5IGFjY2Vzcy4KICAgICBpZiAobV91c2VyUGVy
bWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0OjpVbmtub3duKSB7CiAgICAgICAgIGF1dG8gY2xp
ZW50T3JpZ2luID0gbV9yZXF1ZXN0cy5maXJzdCgpLT5vcmlnaW4oKTsKQEAgLTExOCw3ICsxMzMs
NyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0UHJvY2Vz
c2luZ1JlcXVlc3QoKQogICAgICAgICAgICAgbV91c2VyUGVybWlzc2lvbkNoZWNrID0gQ2hlY2tS
ZXN1bHQ6OkRlbmllZDsKICAgICB9CiAKLSAgICBpZiAobV9taWNyb3Bob25lQ2hlY2sgPT0gQ2hl
Y2tSZXN1bHQ6OkRlbmllZCB8fCBtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrID09IENo
ZWNrUmVzdWx0OjpEZW5pZWQgfHwgbV91c2VyUGVybWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0
OjpEZW5pZWQpIHsKKyAgICBpZiAobV91c2VyUGVybWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0
OjpEZW5pZWQpIHsKICAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25EZWNpc2lvbjo6RGVueSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyLmgKaW5kZXggZTI3MWYwNTA2ODkzNjc3YjcxYjMwYTU4YmRiMGI4
OWFhNGMyZmEwNi4uODkyOWEwMzBlNDBjYmU1YmEyMjBmZTQwNmU1MTZlNGRhN2E5ZTZmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgZW51
bSBjbGFzcyBDaGVja1Jlc3VsdCB7IERlbmllZCwgR3JhbnRlZCwgVW5rbm93biB9OwogICAgIGV4
cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoV2ViUGFnZVByb3h5Jik7
CiAgICAgflNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoKTsKLSAgICB2b2lkIHJl
cXVlc3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYpOworICAgIHZvaWQgcmVx
dWVzdChjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24p
PiYmKTsKIAogICAgIHZvaWQgZGVjaWRlQnlEZWZhdWx0QWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3QuaAppbmRleCAyMjUxN2IzZWZhNjEyODlkNDM3NDNjYjRmNDc3OTE2NWQw
ZTBhMzhlLi5lN2NjYzQ4ZDE3YzAxMDZiNTBlOWRlZDNiOWY0YTU3MmI3NGJjODc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdC5oCkBAIC0zNSw5ICszNSw5IEBAIGVudW0gY2xhc3MgU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24gOiBib29sIHsgRGVueSwgR3JhbnQgfTsKIAogY2xh
c3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVk
PFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgc3RhdGljIFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0PiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lv
bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KG9yaWdpbiwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChsYW5nLCBvcmlnaW4sIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21wbGV0ZShTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikKQEAgLTQ3LDEzICs0NywxNiBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4oKSBj
b25zdCB7IHJldHVybiBtX29yaWdpbjsgfQorICAgIGNvbnN0IFN0cmluZyYgbGFuZygpIGNvbnN0
IHsgcmV0dXJuIG1fbGFuZzsgfQogCiBwcml2YXRlOgotICAgIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICA6IG1fb3JpZ2luKG9yaWdpbikKKyAgICBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgICAgICA6IG1fbGFuZyhsYW5nKQorICAgICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAg
ICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAg
IHsgfQogCisgICAgU3RyaW5nIG1fbGFuZzsKICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gbV9v
cmlnaW47CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25EZWNpc2lvbik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCmluZGV4IGZjNGRi
Y2Y0ZGYzZWM4NTMyZDE0ZmYzNDc3MzNhNmUwMjAzODgzYWMuLjliNThmZTkwNDNjZDI1ZDIwOGYz
MmI2MzEwNmVlY2NiNTNmYzFiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLQogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0
aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNoZWNrZXImJiBwZXJtaXNzaW9uQ2hlY2tlciwgU3BlZWNoUmVjb2duaXRpb25DaGVja0lm
TW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCYmIGNoZWNrSWZFbmFibGVkCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKICAgICAsIFJlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbiYm
IGZ1bmN0aW9uCkBAIC02NCw3ICs2Myw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6
OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkCiAKIHZv
aWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgbV9wZXJt
aXNzaW9uQ2hlY2tlcihyZXF1ZXN0LmNsaWVudE9yaWdpbigpLCBbdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKSwgd2Vha1JlcXVlc3QgPSBtYWtlV2Vha1B0cihyZXF1ZXN0KV0oU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24pIG11dGFibGUgeworICAg
IG1fcGVybWlzc2lvbkNoZWNrZXIocmVxdWVzdC5sYW5nKCksIHJlcXVlc3QuY2xpZW50T3JpZ2lu
KCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWFrUmVxdWVzdCA9IG1h
a2VXZWFrUHRyKHJlcXVlc3QpXShhdXRvIGRlY2lzaW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXggZmRkYWFjODE3ZmYzMmZm
NGQ4MjNjM2VlYmQ0NDQ4ODdhY2E4ZjhmNy4uMWRlNWQxNTJjZmEwNzAwYzhkODczM2NiMTI2N2Vi
MjlhOGM4YzU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblNlcnZlci5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsK
IGVudW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24gOiBib29sOwog
CiB1c2luZyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgPSBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcjsKLXVzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXIgPSBG
dW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmKT47Cit1c2lu
ZyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyID0gRnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJik+OwogdXNpbmcg
U3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCA9IEZ1
bmN0aW9uPGJvb2woKT47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmVyIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3MjUxMDEwODg3MWZiZjY3NDdmNzZiYTNk
ZWY2MWQwZTQ5OTNmODQwLi4xODA3ZmY0OTBlMmU3NDJlZDA3YTZjY2ZkY2M2MGY0ZjFjNDI1MmVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwMzQzLDEy
ICsxMDM0MywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBk
YXRlRm9yVGVzdGluZygpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYg
Y2xpZW50T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5
OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgbGFuZywg
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmICghbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyKQogICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBtYWtl
VW5pcXVlPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI+KCp0aGlzKTsKIAotICAg
IG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci0+cmVxdWVzdChjbGllbnRPcmln
aW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBtX3NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXItPnJlcXVlc3QobGFuZywgY2xpZW50T3JpZ2luLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQnlEZWZhdWx0QWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGQz
ZjdjZjRkZThjMGI4ZmNlZjMzZDkwZGExODgzOTUxZWUyOGRjMjcuLjBkZjYxNmI3NmZiNzUwMzNl
ZjIwMTc5ZmU1YjI5NmYyODM1NWUzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0xODI5LDcgKzE4MjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNZWRpYUNh
cHR1cmVSZXBvcnRpbmdEZWxheShTZWNvbmRzIGNhcHR1cmVSZXBvcnRpbmdEZWxheSkgeyBtX21l
ZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5ID0gY2FwdHVyZVJlcG9ydGluZ0RlbGF5OyB9CiAgICAg
c2l6ZV90IHN1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlcigpIHsgcmV0dXJuIG1fc3VzcGVuZE1l
ZGlhUGxheWJhY2tDb3VudGVyOyB9CiAKLSAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb24oY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYpOworICAgIHZv
aWQgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIGxhbmcs
IGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmKTsKICAgICB2b2lkIHJlcXVlc3RT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25CeURlZmF1bHRBY3Rpb24oY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAg
IHZvaWQgc3luY0lmTW9ja0RldmljZXNFbmFibGVkQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZDkzYzFmMzkyODQ4ZWJjN2EzY2E1
NjU4Yjg2OTk0YTUwNzhkNDIzOS4uZDk0MjQ2ODZlMmY2OTQzMzUxNjQ4NzE3Yjc5MzVkNDhlZWQw
MTNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBA
IC0xNzIyLDEzICsxNzIyLDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50CiAKICAgICBBU1NF
UlQoIW1fc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNYXAuY29udGFpbnMoaWRlbnRpZmllcikpOwog
ICAgIGF1dG8mIHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbV9zcGVlY2hSZWNvZ25pdGlvblNl
cnZlck1hcC5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIGF1
dG8gcGVybWlzc2lvbkNoZWNrZXIgPSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdl
KV0oYXV0byYgb3JpZ2luLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgeworICAg
IGF1dG8gcGVybWlzc2lvbkNoZWNrZXIgPSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQ
YWdlKV0oYXV0byYgbGFuZywgYXV0byYgb3JpZ2luLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIp
IG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtQYWdlKSB7CiAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6RGVueSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB3ZWFrUGFnZS0+cmVxdWVz
dFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICAgICAgd2Vha1BhZ2UtPnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb24obGFuZywgb3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfTsK
ICAgICBhdXRvIGNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gW3dlYWtQYWdlID0g
bWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKCkgewogICAgICAgICByZXR1cm4gd2Vha1BhZ2UgJiYg
d2Vha1BhZ2UtPnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>