<?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>189719</bug_id>
          
          <creation_ts>2018-09-18 15:30:07 -0700</creation_ts>
          <short_desc>Simply authentication code even more!</short_desc>
          <delta_ts>2018-09-21 12:26:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1460779</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-18 15:30:07 -0700</bug_when>
    <thetext>Simply authentication code even more!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460780</commentid>
    <comment_count>1</comment_count>
      <attachid>350066</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-18 15:31:57 -0700</bug_when>
    <thetext>Created attachment 350066
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460781</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-18 15:34:27 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460783</commentid>
    <comment_count>3</comment_count>
      <attachid>350068</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-18 15:39:24 -0700</bug_when>
    <thetext>Created attachment 350068
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461108</commentid>
    <comment_count>4</comment_count>
      <attachid>350148</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-19 13:42:06 -0700</bug_when>
    <thetext>Created attachment 350148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461942</commentid>
    <comment_count>5</comment_count>
      <attachid>350148</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-09-21 11:18:19 -0700</bug_when>
    <thetext>Comment on attachment 350148
Patch

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

r=me, but toAuthenticationChallengeDisposition has a bug you need to fix.

&gt; Source/WebKit/Shared/Authentication/AuthenticationChallengeDisposition.h:49
&gt; +    WebKit::AuthenticationChallengeDisposition,
&gt; +    WebKit::AuthenticationChallengeDisposition::UseCredential,
&gt; +    WebKit::AuthenticationChallengeDisposition::PerformDefaultHandling,
&gt; +    WebKit::AuthenticationChallengeDisposition::Cancel,
&gt; +    WebKit::AuthenticationChallengeDisposition::RejectProtectionSpaceAndContinue

Needs more indentation.

&gt; Source/WebKit/UIProcess/API/C/WKPage.cpp:2153
&gt; -                return authenticationChallenge.listener().rejectProtectionSpaceAndContinue();
&gt; +            return authenticationChallenge.listener().completeChallenge(WebKit::AuthenticationChallengeDisposition::RejectProtectionSpaceAndContinue);

Ditto.

&gt; Source/WebKit/UIProcess/Cocoa/NavigationState.mm:861
&gt; +    case NSURLSessionAuthChallengeCancelAuthenticationChallenge:
&gt; +        return AuthenticationChallengeDisposition::UseCredential;

Shouldn&apos;t this map to AuthenticationChallengeDisposition::Cancel?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461978</commentid>
    <comment_count>6</comment_count>
      <attachid>350398</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-21 11:57:40 -0700</bug_when>
    <thetext>Created attachment 350398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461994</commentid>
    <comment_count>7</comment_count>
      <attachid>350398</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-21 12:25:39 -0700</bug_when>
    <thetext>Comment on attachment 350398
Patch

http://trac.webkit.org/r236344</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461996</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-21 12:26:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/44688771&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350066</attachid>
            <date>2018-09-18 15:31:57 -0700</date>
            <delta_ts>2018-09-18 15:39:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189719-20180918153156.patch</filename>
            <type>text/plain</type>
            <size>31969</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzYxNTcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE4LTA5LTE4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2ltcGx5IGF1dGhl
bnRpY2F0aW9uIGNvZGUgZXZlbiBtb3JlIQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSnVzdCB3aGVuIHlvdSB0aG91Z2h0IGl0IGNvdWxkbid0IGdldCBz
aW1wbGVyIGFuZCBtb3JlIGVsZWdhbnQsIGl0IGNhbiEKKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06Cisg
ICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb24uaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFu
YWdlcjo6Y29tcGxldGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dXNlQ3JlZGVudGlh
bEZvclNpbmdsZUNoYWxsZW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRp
Y2F0aW9uTWFuYWdlcjo6Y29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxsZW5nZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y29udGludWVX
aXRob3V0Q3JlZGVudGlhbEZvclNpbmdsZUNoYWxsZW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsQ2hhbGxlbmdlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpjYW5jZWxTaW5nbGVDaGFs
bGVuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6
OnBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OnBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JTaW5nbGVDaGFsbGVu
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJl
amVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51
ZUZvclNpbmdsZUNoYWxsZW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogU2hh
cmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmluaXRpYWxpemVDb25uZWN0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXIuY3BwOgorICAgICAgICAoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJV
c2VDcmVkZW50aWFsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5tbToKKyAgICAgICAgKC1bV0tOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVu
dGljYXRpb25SZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1
ZXN0X2F1dGhlbnRpY2F0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyOjpBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpB
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6On5BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6
OnVzZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lcjo6cGVyZm9ybURlZmF1bHRIYW5kbGluZyk6CisgICAgICAgIChXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6cmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29u
dGludWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bkRlY2lzaW9uTGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25EZWNp
c2lvbkxpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE4LTA5LTE4ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQ3Jhc2ggdW5kZXIgV2Vi
UGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90V2FzUmVtb3ZlZCgpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuY3BwCShyZXZpc2lvbiAyMzYxNTApCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCIKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJz
LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNw
cAkocmV2aXNpb24gMjM2MTUwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgogCisjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFu
YWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmNwcAkocmV2aXNpb24gMjM2MTUwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QaW5nTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJQaW5nTG9hZC5oIgogCisjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFu
YWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZENoZWNr
ZXIuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5jcHAJKHJldmlzaW9uIDIzNjE1MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAK
KyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2aXNp
b24gMjM2MTUwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJOZXR3b3JrRGF0YVRhc2tDb2NvYS5oIgogCisjaW1wb3J0
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW1wb3J0ICJBdXRoZW50
aWNhdGlvbk1hbmFnZXIuaCIKICNpbXBvcnQgIkRvd25sb2FkLmgiCiAjaW1wb3J0ICJEb3dubG9h
ZFByb3h5TWVzc2FnZXMuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDIzNjE1
MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgiCiAKKyNpbXBvcnQgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFu
YWdlci5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRG93bmxvYWQuaCIK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9FbnVtVHJh
aXRzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIGNsYXNzIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24geworICAgIFVzZUNyZWRlbnRpYWwsCisgICAgUGVyZm9ybURl
ZmF1bHRIYW5kbGluZywKKyAgICBDYW5jZWwsCisgICAgUmVqZWN0UHJvdGVjdGlvblNwYWNlQW5k
Q29udGludWUKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAg
IFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwKKyAgICBXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwsCisgICAg
V2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVs
dEhhbmRsaW5nLAorICAgIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bjo6Q2FuY2VsLAorICAgIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUKKyAgICA+OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDIz
NjE1MykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwxMDEgKzEzNCwxNSBAQCB2b2lk
IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAgZG93bmxvYWQuc2VuZChN
ZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCkpOwogfQogCi12b2lkIEF1dGhl
bnRpY2F0aW9uTWFuYWdlcjo6dXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFs
bGVuZ2VJRCwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3ZvaWQgQXV0aGVudGljYXRp
b25NYW5hZ2VyOjpjb21wbGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxs
ZW5nZUlELCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBX
ZWJDb3JlOjpDcmVkZW50aWFsJiYgY3JlZGVudGlhbCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCi0gICAgZm9yIChhdXRvJiBjb2FsZXNjZWRDaGFsbGVuZ2VJRCA6IGNvYWxl
c2NlQ2hhbGxlbmdlc01hdGNoaW5nKGNoYWxsZW5nZUlEKSkKLSAgICAgICAgdXNlQ3JlZGVudGlh
bEZvclNpbmdsZUNoYWxsZW5nZShjb2FsZXNjZWRDaGFsbGVuZ2VJRCwgY3JlZGVudGlhbCk7Ci19
Ci0KLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDcmVkZW50aWFsRm9yU2luZ2xlQ2hh
bGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFs
KQotewotICAgIGF1dG8gY2hhbGxlbmdlID0gbV9jaGFsbGVuZ2VzLnRha2UoY2hhbGxlbmdlSUQp
OwotICAgIEFTU0VSVCghY2hhbGxlbmdlLmNoYWxsZW5nZS5pc051bGwoKSk7Ci0KLSAgICBhdXRv
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIp
OwotCi0gICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBjcmVk
ZW50aWFsKTsKLSAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12
b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNo
YWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwotCi0gICAgZm9yIChhdXRvJiBjb2FsZXNjZWRDaGFsbGVuZ2VJRCA6IGNvYWxlc2Nl
Q2hhbGxlbmdlc01hdGNoaW5nKGNoYWxsZW5nZUlEKSkKLSAgICAgICAgY29udGludWVXaXRob3V0
Q3JlZGVudGlhbEZvclNpbmdsZUNoYWxsZW5nZShjb2FsZXNjZWRDaGFsbGVuZ2VJRCk7Ci19Ci0K
LXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9y
U2luZ2xlQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKQotewotICAgIGF1dG8gY2hhbGxl
bmdlID0gbV9jaGFsbGVuZ2VzLnRha2UoY2hhbGxlbmdlSUQpOwotICAgIEFTU0VSVCghY2hhbGxl
bmdlLmNoYWxsZW5nZS5pc051bGwoKSk7Ci0KLSAgICBpZiAoY2hhbGxlbmdlLmNvbXBsZXRpb25I
YW5kbGVyKQotICAgICAgICBjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgQ3JlZGVudGlhbCgpKTsKLSAg
ICBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIEF1dGhlbnRp
Y2F0aW9uTWFuYWdlcjo6Y2FuY2VsQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKQotewot
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBmb3IgKGF1dG8mIGNvYWxlc2Nl
ZENoYWxsZW5nZUlEIDogY29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hpbmcoY2hhbGxlbmdlSUQpKQot
ICAgICAgICBjYW5jZWxTaW5nbGVDaGFsbGVuZ2UoY29hbGVzY2VkQ2hhbGxlbmdlSUQpOwotfQot
Ci12b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsU2luZ2xlQ2hhbGxlbmdlKHVpbnQ2
NF90IGNoYWxsZW5nZUlEKQotewotICAgIGF1dG8gY2hhbGxlbmdlID0gbV9jaGFsbGVuZ2VzLnRh
a2UoY2hhbGxlbmdlSUQpOwotICAgIEFTU0VSVCghY2hhbGxlbmdlLmNoYWxsZW5nZS5pc051bGwo
KSk7Ci0KLSAgICBpZiAoY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICBjaGFs
bGVuZ2UuY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bjo6Q2FuY2VsLCBDcmVkZW50aWFsKCkpOwotICAgIGVsc2UKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpwZXJmb3JtRGVmYXVs
dEhhbmRsaW5nKHVpbnQ2NF90IGNoYWxsZW5nZUlEKQotewotICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7Ci0KLSAgICBmb3IgKGF1dG8mIGNvYWxlc2NlZENoYWxsZW5nZUlEIDogY29hbGVz
Y2VDaGFsbGVuZ2VzTWF0Y2hpbmcoY2hhbGxlbmdlSUQpKQotICAgICAgICBwZXJmb3JtRGVmYXVs
dEhhbmRsaW5nRm9yU2luZ2xlQ2hhbGxlbmdlKGNvYWxlc2NlZENoYWxsZW5nZUlEKTsKLX0KLQot
dm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JTaW5n
bGVDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpCi17Ci0gICAgYXV0byBjaGFsbGVuZ2Ug
PSBtX2NoYWxsZW5nZXMudGFrZShjaGFsbGVuZ2VJRCk7Ci0gICAgQVNTRVJUKCFjaGFsbGVuZ2Uu
Y2hhbGxlbmdlLmlzTnVsbCgpKTsKLQotICAgIGlmIChjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRs
ZXIpCi0gICAgICAgIGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBDcmVkZW50aWFsKCkp
OwotICAgIGVsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjpyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSh1aW50
NjRfdCBjaGFsbGVuZ2VJRCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0g
ICAgZm9yIChhdXRvJiBjb2FsZXNjZWRDaGFsbGVuZ2VJRCA6IGNvYWxlc2NlQ2hhbGxlbmdlc01h
dGNoaW5nKGNoYWxsZW5nZUlEKSkKLSAgICAgICAgcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29u
dGludWVGb3JTaW5nbGVDaGFsbGVuZ2UoY29hbGVzY2VkQ2hhbGxlbmdlSUQpOwotfQotCi12b2lk
IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVG
b3JTaW5nbGVDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpCi17Ci0gICAgYXV0byBjaGFs
bGVuZ2UgPSBtX2NoYWxsZW5nZXMudGFrZShjaGFsbGVuZ2VJRCk7Ci0gICAgQVNTRVJUKCFjaGFs
bGVuZ2UuY2hhbGxlbmdlLmlzTnVsbCgpKTsKLQotICAgIGlmIChjaGFsbGVuZ2UuY29tcGxldGlv
bkhhbmRsZXIpCi0gICAgICAgIGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51
ZSwgeyB9KTsKLSAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGZv
ciAoYXV0byYgY29hbGVzY2VkQ2hhbGxlbmdlSUQgOiBjb2FsZXNjZUNoYWxsZW5nZXNNYXRjaGlu
ZyhjaGFsbGVuZ2VJRCkpIHsKKyAgICAgICAgYXV0byBjaGFsbGVuZ2UgPSBtX2NoYWxsZW5nZXMu
dGFrZShjb2FsZXNjZWRDaGFsbGVuZ2VJRCk7CisgICAgICAgIEFTU0VSVCghY2hhbGxlbmdlLmNo
YWxsZW5nZS5pc051bGwoKSk7CisgICAgICAgIGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxlcihk
aXNwb3NpdGlvbiwgY3JlZGVudGlhbCk7CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCShyZXZpc2lvbiAyMzYxNTMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUxLDcgQEAgY2xhc3MgRG93bmxvYWQ7CiBjbGFzcyBE
b3dubG9hZElEOwogY2xhc3MgV2ViRnJhbWU7CiAKLWVudW0gY2xhc3MgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbiB7Ci0gICAgVXNlQ3JlZGVudGlhbCwKLSAgICBQZXJmb3JtRGVm
YXVsdEhhbmRsaW5nLAotICAgIENhbmNlbCwKLSAgICBSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRD
b250aW51ZQotfTsKK2VudW0gY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bjsKIHVzaW5nIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpD
cmVkZW50aWFsJik+OwogCiBjbGFzcyBBdXRoZW50aWNhdGlvbk1hbmFnZXIgOiBwdWJsaWMgTmV0
d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxBdXRoZW50aWNhdGlvbk1hbmFnZXI+IHsKQEAgLTY5LDExICs2NCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSVBDOjpNZXNzYWdlU2VuZGVyJiBk
b3dubG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlciYmKTsKIAotICAgIHZvaWQgdXNlQ3JlZGVudGlhbEZvckNoYWxs
ZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpOwot
ICAgIHZvaWQgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRfdCBj
aGFsbGVuZ2VJRCk7Ci0gICAgdm9pZCBjYW5jZWxDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdl
SUQpOwotICAgIHZvaWQgcGVyZm9ybURlZmF1bHRIYW5kbGluZyh1aW50NjRfdCBjaGFsbGVuZ2VJ
RCk7Ci0gICAgdm9pZCByZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSh1aW50NjRfdCBj
aGFsbGVuZ2VJRCk7CisgICAgdm9pZCBjb21wbGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVp
bnQ2NF90IGNoYWxsZW5nZUlELCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBX
ZWJDb3JlOjpDcmVkZW50aWFsJiYpOwogCiAgICAgdWludDY0X3Qgb3V0c3RhbmRpbmdBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jaGFsbGVuZ2VzLnNpemUo
KTsgfQogCkBAIC05NSwxMiArODYsNiBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IGFkZENoYWxs
ZW5nZVRvQ2hhbGxlbmdlTWFwKENoYWxsZW5nZSYmKTsKICAgICBib29sIHNob3VsZENvYWxlc2Nl
Q2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgY29uc3Q7CiAKLSAgICB2b2lkIHVzZUNy
ZWRlbnRpYWxGb3JTaW5nbGVDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IFdl
YkNvcmU6OkNyZWRlbnRpYWwmKTsKLSAgICB2b2lkIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxG
b3JTaW5nbGVDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpOwotICAgIHZvaWQgY2FuY2Vs
U2luZ2xlQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKLSAgICB2b2lkIHBlcmZvcm1E
ZWZhdWx0SGFuZGxpbmdGb3JTaW5nbGVDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpOwot
ICAgIHZvaWQgcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVGb3JTaW5nbGVDaGFsbGVu
Z2UodWludDY0X3QgY2hhbGxlbmdlSUQpOwotCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBjb2FsZXNj
ZUNoYWxsZW5nZXNNYXRjaGluZyh1aW50NjRfdCBjaGFsbGVuZ2VJRCkgY29uc3Q7CiAKICAgICBD
aGlsZFByb2Nlc3MmIG1fcHJvY2VzczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzNjE1MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsOSArMjEsNSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBB
dXRoZW50aWNhdGlvbk1hbmFnZXIgewotICAgIHZvaWQgVXNlQ3JlZGVudGlhbEZvckNoYWxsZW5n
ZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgV2ViQ29yZTo6Q3JlZGVudGlhbCBjcmVkZW50aWFsKTsK
LSAgICB2b2lkIENvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWludDY0X3Qg
Y2hhbGxlbmdlSUQpOwotICAgIHZvaWQgQ2FuY2VsQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5n
ZUlEKTsKLSAgICB2b2lkIFBlcmZvcm1EZWZhdWx0SGFuZGxpbmcodWludDY0X3QgY2hhbGxlbmdl
SUQpOwotICAgIHZvaWQgUmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUodWludDY0X3Qg
Y2hhbGxlbmdlSUQpOworICAgIHZvaWQgQ29tcGxldGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1
aW50NjRfdCBjaGFsbGVuZ2VJRCwgZW51bSBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwgY3JlZGVudGlhbCk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRo
ZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbQko
cmV2aXNpb24gMjM2MTUwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24v
Y29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2lmIEhBVkUoU0VDX0tFWV9QUk9YWSkKIAorI2ltcG9ydCAiQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2ltcG9ydCAiQ2xpZW50Q2VydGlmaWNh
dGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oIgogI2ltcG9ydCAiQ29ubmVjdGlvbi5oIgog
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1hQQ0Nvbm5lY3Rpb25TUEkuaD4KQEAgLTk2LDcgKzk3
LDcgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmluaXRpYWxpemVDbwogICAgICAgICBp
ZiAocGVyc2lzdGVuY2UgPiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oTlNVUkxDcmVkZW50aWFsUGVy
c2lzdGVuY2VTeW5jaHJvbml6YWJsZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
d2Vha1RoaXMtPnVzZUNyZWRlbnRpYWxGb3JDaGFsbGVuZ2UoY2hhbGxlbmdlSUQsIFdlYkNvcmU6
OkNyZWRlbnRpYWwoYWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10gaW5pdFdpdGhJZGVu
dGl0eTppZGVudGl0eS5nZXQoKSBjZXJ0aWZpY2F0ZXM6Y2VydGlmaWNhdGVzIHBlcnNpc3RlbmNl
OihOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZSlwZXJzaXN0ZW5jZV0pLmdldCgpKSk7CisgICAg
ICAgIHdlYWtUaGlzLT5jb21wbGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZUlE
LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBXZWJD
b3JlOjpDcmVkZW50aWFsKGFkb3B0TlMoW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRo
SWRlbnRpdHk6aWRlbnRpdHkuZ2V0KCkgY2VydGlmaWNhdGVzOmNlcnRpZmljYXRlcyBwZXJzaXN0
ZW5jZTooTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UpcGVyc2lzdGVuY2VdKS5nZXQoKSkpOwog
ICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhl
bnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCShy
ZXZpc2lvbiAyMzYxNTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhl
bnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICsz
OSw3IEBAIFdLVHlwZUlEIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmUKIAogdm9pZCBX
S0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclVzZUNyZWRlbnRpYWwoV0tBdXRoZW50aWNh
dGlvbkRlY2lzaW9uTGlzdGVuZXJSZWYgYXV0aGVudGljYXRpb25MaXN0ZW5lciwgV0tDcmVkZW50
aWFsUmVmIGNyZWRlbnRpYWwpCiB7Ci0gICAgaWYgKGNyZWRlbnRpYWwpCi0gICAgICAgIHRvSW1w
bChhdXRoZW50aWNhdGlvbkxpc3RlbmVyKS0+dXNlQ3JlZGVudGlhbCh0b0ltcGwoY3JlZGVudGlh
bCktPmNyZWRlbnRpYWwoKSk7Ci0gICAgZWxzZQotICAgICAgICB0b0ltcGwoYXV0aGVudGljYXRp
b25MaXN0ZW5lciktPnVzZUNyZWRlbnRpYWwoc3RkOjpudWxsb3B0KTsKKyAgICB0b0ltcGwoYXV0
aGVudGljYXRpb25MaXN0ZW5lciktPnVzZUNyZWRlbnRpYWwoY3JlZGVudGlhbCA/IHRvSW1wbChj
cmVkZW50aWFsKS0+Y3JlZGVudGlhbCgpIDogV2ViQ29yZTo6Q3JlZGVudGlhbCgpKTsKIH0KIAog
dm9pZCBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lckNhbmNlbChXS0F1dGhlbnRpY2F0
aW9uRGVjaXNpb25MaXN0ZW5lclJlZiBhdXRoZW50aWNhdGlvbkxpc3RlbmVyKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm1tCShyZXZpc2lvbiAyMzYxNTMpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIC0gKHZvaWQpY29udGlu
dWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGgKIHsKICAgICBjaGVja0NoYWxsZW5nZShjaGFsbGVu
Z2UpOwogICAgIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgd2ViQ2hhbGxl
bmdlID0gKChXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UpLl93ZWJf
YXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKLSAgICB3ZWJDaGFsbGVuZ2UubGlzdGVuZXIo
KS51c2VDcmVkZW50aWFsKHN0ZDo6bnVsbG9wdCk7CisgICAgd2ViQ2hhbGxlbmdlLmxpc3RlbmVy
KCkudXNlQ3JlZGVudGlhbCh7IH0pOwogfQogCiAtICh2b2lkKXVzZUNyZWRlbnRpYWw6KE5TVVJM
Q3JlZGVudGlhbCAqKWNyZWRlbnRpYWwgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVudGlj
YXRpb25SZXF1ZXN0LmNwcAkocmV2aXNpb24gMjM2MTUzKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzE1LDEwICszMTUsNyBAQCB2b2lkIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1
ZXN0X2F1dGhlCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfQVVUSEVOVElDQVRJ
T05fUkVRVUVTVChyZXF1ZXN0KSk7CiAKLSAgICBpZiAoY3JlZGVudGlhbCkKLSAgICAgICAgcmVx
dWVzdC0+cHJpdi0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkudXNlQ3JlZGVu
dGlhbCh3ZWJraXRDcmVkZW50aWFsR2V0Q3JlZGVudGlhbChjcmVkZW50aWFsKSk7Ci0gICAgZWxz
ZQotICAgICAgICByZXF1ZXN0LT5wcml2LT5hdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+bGlzdGVu
ZXIoKS51c2VDcmVkZW50aWFsKHN0ZDo6bnVsbG9wdCk7CisgICAgcmVxdWVzdC0+cHJpdi0+YXV0
aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkudXNlQ3JlZGVudGlhbChjcmVkZW50aWFs
ID8gd2Via2l0Q3JlZGVudGlhbEdldENyZWRlbnRpYWwoY3JlZGVudGlhbCkgOiBXZWJDb3JlOjpD
cmVkZW50aWFsKCkpOwogCiAgICAgcmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3QgPSB0cnVl
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAJ
KHJldmlzaW9uIDIzNjE1MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwzMyArNDQsMTUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHk6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkoV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxl
bmdlSUQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2Vha1B0cjxTZWNLZXlQ
cm94eVN0b3JlPiYmIHNlY0tleVByb3h5U3RvcmUpCiAgICAgOiBtX2NvcmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShXVEZNb3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSkKLSAgICAsIG1fbGlz
dGVuZXIoQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjpjcmVhdGUoW2NoYWxsZW5nZUlE
LCBjb25uZWN0aW9uID0gV1RGTW92ZShjb25uZWN0aW9uKSwgc2VjS2V5UHJveHlTdG9yZSA9IFdU
Rk1vdmUoc2VjS2V5UHJveHlTdG9yZSldKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b24gZGlzcG9zaXRpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q3JlZGVudGlhbD4mJiBjcmVk
ZW50aWFsKSB7Ci0gICAgICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKLSAgICAgICAgY2FzZSBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWw6Ci0gICAgICAgICAgICBj
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OkNhbmNlbENo
YWxsZW5nZShjaGFsbGVuZ2VJRCksIDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5k
bGluZzoKLSAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkF1dGhlbnRpY2F0
aW9uTWFuYWdlcjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZyhjaGFsbGVuZ2VJRCksIDApOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWU6Ci0gICAgICAgICAgICBj
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OlJlamVjdFBy
b3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKGNoYWxsZW5nZUlEKSwgMCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpV
c2VDcmVkZW50aWFsOgotICAgICAgICAgICAgaWYgKCFjcmVkZW50aWFsKSB7Ci0gICAgICAgICAg
ICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpD
b250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKGNoYWxsZW5nZUlEKSwgMCk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKyAgICAs
IG1fbGlzdGVuZXIoQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjpjcmVhdGUoW2NoYWxs
ZW5nZUlELCBjb25uZWN0aW9uID0gV1RGTW92ZShjb25uZWN0aW9uKSwgc2VjS2V5UHJveHlTdG9y
ZSA9IFdURk1vdmUoc2VjS2V5UHJveHlTdG9yZSldKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRp
YWwpIHsKICNpZiBIQVZFKFNFQ19LRVlfUFJPWFkpCi0gICAgICAgICAgICBpZiAoc2VjS2V5UHJv
eHlTdG9yZSkgewotICAgICAgICAgICAgICAgIHNlY0tleVByb3h5U3RvcmUtPmluaXRpYWxpemUo
KmNyZWRlbnRpYWwpOwotICAgICAgICAgICAgICAgIHNlbmRDbGllbnRDZXJ0aWZpY2F0ZUNyZWRl
bnRpYWxPdmVyWHBjKGNvbm5lY3Rpb24sICpzZWNLZXlQcm94eVN0b3JlLCBjaGFsbGVuZ2VJRCwg
KmNyZWRlbnRpYWwpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotI2Vu
ZGlmCi0KLSAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkF1dGhlbnRpY2F0
aW9uTWFuYWdlcjo6VXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZShjaGFsbGVuZ2VJRCwgKmNyZWRl
bnRpYWwpLCAwKTsKKyAgICAgICAgaWYgKHNlY0tleVByb3h5U3RvcmUpIHsKKyAgICAgICAgICAg
IHNlY0tleVByb3h5U3RvcmUtPmluaXRpYWxpemUoY3JlZGVudGlhbCk7CisgICAgICAgICAgICBz
ZW5kQ2xpZW50Q2VydGlmaWNhdGVDcmVkZW50aWFsT3ZlclhwYyhjb25uZWN0aW9uLCAqc2VjS2V5
UHJveHlTdG9yZSwgY2hhbGxlbmdlSUQsIGNyZWRlbnRpYWwpOworICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
QXV0aGVudGljYXRpb25NYW5hZ2VyOjpDb21wbGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNo
YWxsZW5nZUlELCBkaXNwb3NpdGlvbiwgY3JlZGVudGlhbCksIDApOwogICAgIH0pKQogewogfQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25EZWNpc2lvbkxpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCShy
ZXZpc2lvbiAyMzYxNTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25EZWNpc2lvbkxpc3RlbmVyLmgiCiAKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5o
IgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCkBAIC0zNiw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OkF1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q3JlZGVudGlhbD4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCitBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OkF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7CiB9CkBAIC00NCwzMSArNDUsMzEgQEAgQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyOjpBdXRoZW50aQogQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyOjp+QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKCkKIHsKICAgICBpZiAobV9j
b21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwsIHN0ZDo6bnVsbG9wdCk7CisgICAgICAg
IG1fY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6
Q2FuY2VsLCB7IH0pOwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6
dXNlQ3JlZGVudGlhbChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNyZWRlbnRpYWw+JiYgY3JlZGVu
dGlhbCkKK3ZvaWQgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjp1c2VDcmVkZW50aWFs
KGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7CiAgICAgaWYgKG1fY29t
cGxldGlvbkhhbmRsZXIpCi0gICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgV1RGTW92ZShjcmVkZW50aWFs
KSk7CisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VE
aXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCk7CiB9CiAKIHZvaWQgQXV0aGVu
dGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjpjYW5jZWwoKQogewogICAgIGlmIChtX2NvbXBsZXRp
b25IYW5kbGVyKQotICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgbV9jb21w
bGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWws
IHsgfSk7CiB9CiAKIHZvaWQgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjpwZXJmb3Jt
RGVmYXVsdEhhbmRsaW5nKCkKIHsKICAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKLSAgICAg
ICAgbV9jb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBzdGQ6Om51bGxvcHQpOworICAgICAgICBtX2NvbXBs
ZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1E
ZWZhdWx0SGFuZGxpbmcsIHsgfSk7CiB9CiAKIHZvaWQgQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyOjpyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSgpCiB7CiAgICAgaWYgKG1f
Y29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGlu
dWUsIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGlu
dWUsIHsgfSk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0
ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oCShyZXZpc2lvbiAyMzYxNTMpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRl
Y2lzaW9uTGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjEgKzM3LDIxIEBAIGNsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uRGVj
aXNpb25MaXN0ZW5lciA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6
OkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcj4gewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyPiBjcmVhdGUoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkNyZWRlbnRpYWw+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHN0YXRp
YyBSZWY8QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyPiBjcmVhdGUoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJD
b3JlOjpDcmVkZW50aWFsJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKICAgICB9CiAgICAgfkF1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lcigpOwogICAgIAotICAgIHZvaWQgdXNlQ3JlZGVudGlhbChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkNyZWRlbnRpYWw+JiYpOworICAgIHZvaWQgdXNlQ3JlZGVudGlhbChjb25zdCBX
ZWJDb3JlOjpDcmVkZW50aWFsJik7CiAgICAgdm9pZCBjYW5jZWwoKTsKICAgICB2b2lkIHBlcmZv
cm1EZWZhdWx0SGFuZGxpbmcoKTsKICAgICB2b2lkIHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENv
bnRpbnVlKCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXV0aGVudGljYXRpb25EZWNpc2lv
bkxpc3RlbmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VE
aXNwb3NpdGlvbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDcmVkZW50aWFsPiYmKT4mJik7Cisg
ICAgZXhwbGljaXQgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29y
ZTo6Q3JlZGVudGlhbCYpPiYmKTsKIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDcmVk
ZW50aWFsPiYmKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNy
ZWRlbnRpYWwmKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRD
bGllbnQubW0JKHJldmlzaW9uIDIzNjE1MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0Rvd25sb2FkQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsMTAgKzEzMiw3IEBA
IHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICAgICAgY2hlY2tl
ci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHN3aXRjaCAoZGlzcG9zaXRp
b24pIHsKICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlh
bDoKLSAgICAgICAgICAgIGlmIChjcmVkZW50aWFsKQotICAgICAgICAgICAgICAgIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLT5saXN0ZW5lcigpLnVzZUNyZWRlbnRpYWwoV2ViQ29yZTo6Q3JlZGVu
dGlhbChjcmVkZW50aWFsKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkudXNlQ3JlZGVudGlhbChzdGQ6Om51bGxv
cHQpOworICAgICAgICAgICAgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkudXNl
Q3JlZGVudGlhbChjcmVkZW50aWFsID8gV2ViQ29yZTo6Q3JlZGVudGlhbChjcmVkZW50aWFsKSA6
IFdlYkNvcmU6OkNyZWRlbnRpYWwoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZzoKICAgICAg
ICAgICAgIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLT5saXN0ZW5lcigpLnBlcmZvcm1EZWZhdWx0
SGFuZGxpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW0JKHJldmlzaW9uIDIzNjE1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtODY2LDEw
ICs4NjYsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiAKICAg
ICAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewogICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsOgotICAgICAgICAgICAgaWYgKGNyZWRlbnRpYWwpCi0g
ICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLnVzZUNyZWRlbnRpYWwoQ3JlZGVu
dGlhbChjcmVkZW50aWFsKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY2hh
bGxlbmdlLT5saXN0ZW5lcigpLnVzZUNyZWRlbnRpYWwoc3RkOjpudWxsb3B0KTsKKyAgICAgICAg
ICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS51c2VDcmVkZW50aWFsKGNyZWRlbnRpYWwgPyBDcmVk
ZW50aWFsKGNyZWRlbnRpYWwpIDogQ3JlZGVudGlhbCgpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRs
aW5nOgogICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLnBlcmZvcm1EZWZhdWx0SGFu
ZGxpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjM2MTUyKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzQ0Myw2ICszNDQzLDcg
QEAKIAkJNUM5RTU2ODExREY3RjA1NTAwQzlFRTMzIC8qIFdLV2Vic2l0ZVBvbGljaWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZVBvbGljaWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTk4NTQ5MjEwQkVCNUEwMDU3RUI2QiAvKiBTYWZl
QnJvd3NpbmdSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FmZUJy
b3dzaW5nUmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTk4NTRCMjEw
QkVCNzMwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdSZXN1bHRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0FEREUwRDIxNTFBQTAxMDA2N0QzMDkgLyog
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmg7IHBhdGgg
PSBBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQUZERTQyMjEzMDg0MzUwMEIxRjdFMSAvKiBf
V0tJbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVj
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQUZERTQzMjEzMDg0MzYwMEIx
RjdFMSAvKiBfV0tJbnNwZWN0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBfV0tJbnNwZWN0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
QUZERTQ0MjEzMDg0MzYwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjU5NSw2ICs2NTk2LDcgQEAKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTdCNEI0NUMyMEI1MDQ4QjAwRDRBRDc5IC8qIGNv
Y29hICovLAorCQkJCTVDQURERTBEMjE1MUFBMDEwMDY3RDMwOSAvKiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZURpc3Bvc2l0aW9uLmggKi8sCiAJCQkJNTE4RThFRjMxNkIyMDkxQzAwRTkxNDI5IC8q
IEF1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgKi8sCiAJCQkJNTE4RThFRjQxNkIyMDkxQzAwRTkx
NDI5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5oICovLAogCQkJCTUxOEU4RUY1MTZCMjA5MUMw
MEU5MTQyOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350068</attachid>
            <date>2018-09-18 15:39:24 -0700</date>
            <delta_ts>2018-09-19 13:42:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189719-20180918153923.patch</filename>
            <type>text/plain</type>
            <size>32470</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzYxNTcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE4LTA5LTE4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2ltcGx5IGF1dGhl
bnRpY2F0aW9uIGNvZGUgZXZlbiBtb3JlIQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSnVzdCB3aGVuIHlvdSB0aG91Z2h0IGl0IGNvdWxkbid0IGdldCBz
aW1wbGVyIGFuZCBtb3JlIGVsZWdhbnQsIGl0IGNhbiEKKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06Cisg
ICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb24uaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFu
YWdlcjo6Y29tcGxldGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dXNlQ3JlZGVudGlh
bEZvclNpbmdsZUNoYWxsZW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRp
Y2F0aW9uTWFuYWdlcjo6Y29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxsZW5nZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y29udGludWVX
aXRob3V0Q3JlZGVudGlhbEZvclNpbmdsZUNoYWxsZW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsQ2hhbGxlbmdlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpjYW5jZWxTaW5nbGVDaGFs
bGVuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6
OnBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OnBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JTaW5nbGVDaGFsbGVu
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJl
amVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51
ZUZvclNpbmdsZUNoYWxsZW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogU2hh
cmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmluaXRpYWxpemVDb25uZWN0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXIuY3BwOgorICAgICAgICAoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJV
c2VDcmVkZW50aWFsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5tbToKKyAgICAgICAgKC1bV0tOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVu
dGljYXRpb25SZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1
ZXN0X2F1dGhlbnRpY2F0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyOjpBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpB
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6On5BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6
OnVzZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lcjo6cGVyZm9ybURlZmF1bHRIYW5kbGluZyk6CisgICAgICAgIChXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6cmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29u
dGludWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bkRlY2lzaW9uTGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25EZWNp
c2lvbkxpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE4LTA5LTE4ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQ3Jhc2ggdW5kZXIgV2Vi
UGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90V2FzUmVtb3ZlZCgpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuY3BwCShyZXZpc2lvbiAyMzYxNTApCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCIKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJz
LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNw
cAkocmV2aXNpb24gMjM2MTUwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgogCisjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFu
YWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmNwcAkocmV2aXNpb24gMjM2MTUwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QaW5nTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJQaW5nTG9hZC5oIgogCisjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFu
YWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZENoZWNr
ZXIuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5jcHAJKHJldmlzaW9uIDIzNjE1MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAK
KyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2aXNp
b24gMjM2MTUwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJOZXR3b3JrRGF0YVRhc2tDb2NvYS5oIgogCisjaW1wb3J0
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW1wb3J0ICJBdXRoZW50
aWNhdGlvbk1hbmFnZXIuaCIKICNpbXBvcnQgIkRvd25sb2FkLmgiCiAjaW1wb3J0ICJEb3dubG9h
ZFByb3h5TWVzc2FnZXMuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDIzNjE1
MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgiCiAKKyNpbXBvcnQgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFu
YWdlci5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRG93bmxvYWQuaCIK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHJldmlzaW9uIDIzNjE1MCkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtEYXRhVGFza1NvdXAuaCIKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb24uaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitlbnVtIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb24geworICAgIFVzZUNyZWRlbnRpYWwsCisgICAgUGVyZm9ybURlZmF1bHRIYW5kbGlu
ZywKKyAgICBDYW5jZWwsCisgICAgUmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwKKyAgICBXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwsCisgICAgV2ViS2l0OjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLAor
ICAgIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsLAor
ICAgIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJv
dGVjdGlvblNwYWNlQW5kQ29udGludWUKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDIzNjE1MykKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwxMDEgKzEzNCwxNSBAQCB2b2lkIEF1dGhlbnRpY2F0
aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAgZG93bmxvYWQuc2VuZChNZXNzYWdlczo6RG93
bmxvYWRQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCkpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uTWFu
YWdlcjo6dXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29u
c3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3ZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpj
b21wbGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlELCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBXZWJDb3JlOjpDcmVk
ZW50aWFsJiYgY3JlZGVudGlhbCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
Ci0gICAgZm9yIChhdXRvJiBjb2FsZXNjZWRDaGFsbGVuZ2VJRCA6IGNvYWxlc2NlQ2hhbGxlbmdl
c01hdGNoaW5nKGNoYWxsZW5nZUlEKSkKLSAgICAgICAgdXNlQ3JlZGVudGlhbEZvclNpbmdsZUNo
YWxsZW5nZShjb2FsZXNjZWRDaGFsbGVuZ2VJRCwgY3JlZGVudGlhbCk7Ci19Ci0KLXZvaWQgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDcmVkZW50aWFsRm9yU2luZ2xlQ2hhbGxlbmdlKHVpbnQ2
NF90IGNoYWxsZW5nZUlELCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotICAgIGF1
dG8gY2hhbGxlbmdlID0gbV9jaGFsbGVuZ2VzLnRha2UoY2hhbGxlbmdlSUQpOwotICAgIEFTU0VS
VCghY2hhbGxlbmdlLmNoYWxsZW5nZS5pc051bGwoKSk7Ci0KLSAgICBhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIpOwotCi0gICAgaWYg
KGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBjcmVkZW50aWFsKTsKLSAg
ICBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIEF1dGhlbnRp
Y2F0aW9uTWFuYWdlcjo6Y29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50
NjRfdCBjaGFsbGVuZ2VJRCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0g
ICAgZm9yIChhdXRvJiBjb2FsZXNjZWRDaGFsbGVuZ2VJRCA6IGNvYWxlc2NlQ2hhbGxlbmdlc01h
dGNoaW5nKGNoYWxsZW5nZUlEKSkKLSAgICAgICAgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZv
clNpbmdsZUNoYWxsZW5nZShjb2FsZXNjZWRDaGFsbGVuZ2VJRCk7Ci19Ci0KLXZvaWQgQXV0aGVu
dGljYXRpb25NYW5hZ2VyOjpjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yU2luZ2xlQ2hhbGxl
bmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKQotewotICAgIGF1dG8gY2hhbGxlbmdlID0gbV9jaGFs
bGVuZ2VzLnRha2UoY2hhbGxlbmdlSUQpOwotICAgIEFTU0VSVCghY2hhbGxlbmdlLmNoYWxsZW5n
ZS5pc051bGwoKSk7Ci0KLSAgICBpZiAoY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKQotICAg
ICAgICBjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VE
aXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgQ3JlZGVudGlhbCgpKTsKLSAgICBlbHNlCi0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6Y2FuY2VsQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKQotewotICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBmb3IgKGF1dG8mIGNvYWxlc2NlZENoYWxsZW5nZUlE
IDogY29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hpbmcoY2hhbGxlbmdlSUQpKQotICAgICAgICBjYW5j
ZWxTaW5nbGVDaGFsbGVuZ2UoY29hbGVzY2VkQ2hhbGxlbmdlSUQpOwotfQotCi12b2lkIEF1dGhl
bnRpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsU2luZ2xlQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5n
ZUlEKQotewotICAgIGF1dG8gY2hhbGxlbmdlID0gbV9jaGFsbGVuZ2VzLnRha2UoY2hhbGxlbmdl
SUQpOwotICAgIEFTU0VSVCghY2hhbGxlbmdlLmNoYWxsZW5nZS5pc051bGwoKSk7Ci0KLSAgICBp
ZiAoY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICBjaGFsbGVuZ2UuY29tcGxl
dGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsLCBD
cmVkZW50aWFsKCkpOwotICAgIGVsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpwZXJmb3JtRGVmYXVsdEhhbmRsaW5nKHVp
bnQ2NF90IGNoYWxsZW5nZUlEKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0K
LSAgICBmb3IgKGF1dG8mIGNvYWxlc2NlZENoYWxsZW5nZUlEIDogY29hbGVzY2VDaGFsbGVuZ2Vz
TWF0Y2hpbmcoY2hhbGxlbmdlSUQpKQotICAgICAgICBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9y
U2luZ2xlQ2hhbGxlbmdlKGNvYWxlc2NlZENoYWxsZW5nZUlEKTsKLX0KLQotdm9pZCBBdXRoZW50
aWNhdGlvbk1hbmFnZXI6OnBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JTaW5nbGVDaGFsbGVuZ2Uo
dWludDY0X3QgY2hhbGxlbmdlSUQpCi17Ci0gICAgYXV0byBjaGFsbGVuZ2UgPSBtX2NoYWxsZW5n
ZXMudGFrZShjaGFsbGVuZ2VJRCk7Ci0gICAgQVNTRVJUKCFjaGFsbGVuZ2UuY2hhbGxlbmdlLmlz
TnVsbCgpKTsKLQotICAgIGlmIChjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAg
IGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBDcmVkZW50aWFsKCkpOwotICAgIGVsc2UK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgQXV0aGVudGljYXRpb25N
YW5hZ2VyOjpyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSh1aW50NjRfdCBjaGFsbGVu
Z2VJRCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgZm9yIChhdXRv
JiBjb2FsZXNjZWRDaGFsbGVuZ2VJRCA6IGNvYWxlc2NlQ2hhbGxlbmdlc01hdGNoaW5nKGNoYWxs
ZW5nZUlEKSkKLSAgICAgICAgcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVGb3JTaW5n
bGVDaGFsbGVuZ2UoY29hbGVzY2VkQ2hhbGxlbmdlSUQpOwotfQotCi12b2lkIEF1dGhlbnRpY2F0
aW9uTWFuYWdlcjo6cmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVGb3JTaW5nbGVDaGFs
bGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpCi17Ci0gICAgYXV0byBjaGFsbGVuZ2UgPSBtX2No
YWxsZW5nZXMudGFrZShjaGFsbGVuZ2VJRCk7Ci0gICAgQVNTRVJUKCFjaGFsbGVuZ2UuY2hhbGxl
bmdlLmlzTnVsbCgpKTsKLQotICAgIGlmIChjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIpCi0g
ICAgICAgIGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSwgeyB9KTsKLSAg
ICBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGZvciAoYXV0byYgY29h
bGVzY2VkQ2hhbGxlbmdlSUQgOiBjb2FsZXNjZUNoYWxsZW5nZXNNYXRjaGluZyhjaGFsbGVuZ2VJ
RCkpIHsKKyAgICAgICAgYXV0byBjaGFsbGVuZ2UgPSBtX2NoYWxsZW5nZXMudGFrZShjb2FsZXNj
ZWRDaGFsbGVuZ2VJRCk7CisgICAgICAgIEFTU0VSVCghY2hhbGxlbmdlLmNoYWxsZW5nZS5pc051
bGwoKSk7CisgICAgICAgIGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxlcihkaXNwb3NpdGlvbiwg
Y3JlZGVudGlhbCk7CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5oCShyZXZpc2lvbiAyMzYxNTMpCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNTEsMTIgKzUxLDcgQEAgY2xhc3MgRG93bmxvYWQ7CiBjbGFzcyBEb3dubG9hZElEOwog
Y2xhc3MgV2ViRnJhbWU7CiAKLWVudW0gY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbiB7Ci0gICAgVXNlQ3JlZGVudGlhbCwKLSAgICBQZXJmb3JtRGVmYXVsdEhhbmRsaW5n
LAotICAgIENhbmNlbCwKLSAgICBSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZQotfTsK
K2VudW0gY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjsKIHVzaW5nIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+
OwogCiBjbGFzcyBBdXRoZW50aWNhdGlvbk1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxBdXRoZW50aWNhdGlvbk1hbmFnZXI+IHsKQEAgLTY5LDExICs2NCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSVBDOjpNZXNzYWdlU2VuZGVyJiBkb3dubG9hZCwgY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciYmKTsKIAotICAgIHZvaWQgdXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRf
dCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpOwotICAgIHZvaWQgY29u
dGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCk7
Ci0gICAgdm9pZCBjYW5jZWxDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpOwotICAgIHZv
aWQgcGVyZm9ybURlZmF1bHRIYW5kbGluZyh1aW50NjRfdCBjaGFsbGVuZ2VJRCk7Ci0gICAgdm9p
ZCByZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCk7
CisgICAgdm9pZCBjb21wbGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxs
ZW5nZUlELCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBXZWJDb3JlOjpDcmVk
ZW50aWFsJiYpOwogCiAgICAgdWludDY0X3Qgb3V0c3RhbmRpbmdBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jaGFsbGVuZ2VzLnNpemUoKTsgfQogCkBAIC05
NSwxMiArODYsNiBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IGFkZENoYWxsZW5nZVRvQ2hhbGxl
bmdlTWFwKENoYWxsZW5nZSYmKTsKICAgICBib29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJikgY29uc3Q7CiAKLSAgICB2b2lkIHVzZUNyZWRlbnRpYWxGb3JT
aW5nbGVDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IFdlYkNvcmU6OkNyZWRl
bnRpYWwmKTsKLSAgICB2b2lkIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JTaW5nbGVDaGFs
bGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpOwotICAgIHZvaWQgY2FuY2VsU2luZ2xlQ2hhbGxl
bmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKLSAgICB2b2lkIHBlcmZvcm1EZWZhdWx0SGFuZGxp
bmdGb3JTaW5nbGVDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpOwotICAgIHZvaWQgcmVq
ZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVGb3JTaW5nbGVDaGFsbGVuZ2UodWludDY0X3Qg
Y2hhbGxlbmdlSUQpOwotCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBjb2FsZXNjZUNoYWxsZW5nZXNN
YXRjaGluZyh1aW50NjRfdCBjaGFsbGVuZ2VJRCkgY29uc3Q7CiAKICAgICBDaGlsZFByb2Nlc3Mm
IG1fcHJvY2VzczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDIzNjE1MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MjEsOSArMjEsNSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBBdXRoZW50aWNhdGlv
bk1hbmFnZXIgewotICAgIHZvaWQgVXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRfdCBj
aGFsbGVuZ2VJRCwgV2ViQ29yZTo6Q3JlZGVudGlhbCBjcmVkZW50aWFsKTsKLSAgICB2b2lkIENv
bnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQp
OwotICAgIHZvaWQgQ2FuY2VsQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKLSAgICB2
b2lkIFBlcmZvcm1EZWZhdWx0SGFuZGxpbmcodWludDY0X3QgY2hhbGxlbmdlSUQpOwotICAgIHZv
aWQgUmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUodWludDY0X3QgY2hhbGxlbmdlSUQp
OworICAgIHZvaWQgQ29tcGxldGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBjaGFs
bGVuZ2VJRCwgZW51bSBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24g
ZGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwgY3JlZGVudGlhbCk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbk1h
bmFnZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50
aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbQkocmV2aXNpb24gMjM2
MTUwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVu
dGljYXRpb25NYW5hZ2VyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEhBVkUoU0VDX0tFWV9QUk9YWSkKIAorI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbi5oIgogI2ltcG9ydCAiQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNh
dGlvblhQQ0NvbnN0YW50cy5oIgogI2ltcG9ydCAiQ29ubmVjdGlvbi5oIgogI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9OU1hQQ0Nvbm5lY3Rpb25TUEkuaD4KQEAgLTk2LDcgKzk3LDcgQEAgdm9pZCBB
dXRoZW50aWNhdGlvbk1hbmFnZXI6OmluaXRpYWxpemVDbwogICAgICAgICBpZiAocGVyc2lzdGVu
Y2UgPiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VTeW5j
aHJvbml6YWJsZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgd2Vha1RoaXMtPnVz
ZUNyZWRlbnRpYWxGb3JDaGFsbGVuZ2UoY2hhbGxlbmdlSUQsIFdlYkNvcmU6OkNyZWRlbnRpYWwo
YWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10gaW5pdFdpdGhJZGVudGl0eTppZGVudGl0
eS5nZXQoKSBjZXJ0aWZpY2F0ZXM6Y2VydGlmaWNhdGVzIHBlcnNpc3RlbmNlOihOU1VSTENyZWRl
bnRpYWxQZXJzaXN0ZW5jZSlwZXJzaXN0ZW5jZV0pLmdldCgpKSk7CisgICAgICAgIHdlYWtUaGlz
LT5jb21wbGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZUlELCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBXZWJDb3JlOjpDcmVkZW50
aWFsKGFkb3B0TlMoW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRoSWRlbnRpdHk6aWRl
bnRpdHkuZ2V0KCkgY2VydGlmaWNhdGVzOmNlcnRpZmljYXRlcyBwZXJzaXN0ZW5jZTooTlNVUkxD
cmVkZW50aWFsUGVyc2lzdGVuY2UpcGVyc2lzdGVuY2VdKS5nZXQoKSkpOwogICAgIH0pOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uRGVj
aXNpb25MaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCShyZXZpc2lvbiAyMzYx
NTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uRGVj
aXNpb25MaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSw3IEBAIFdLVHlw
ZUlEIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmUKIAogdm9pZCBXS0F1dGhlbnRpY2F0
aW9uRGVjaXNpb25MaXN0ZW5lclVzZUNyZWRlbnRpYWwoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXJSZWYgYXV0aGVudGljYXRpb25MaXN0ZW5lciwgV0tDcmVkZW50aWFsUmVmIGNyZWRl
bnRpYWwpCiB7Ci0gICAgaWYgKGNyZWRlbnRpYWwpCi0gICAgICAgIHRvSW1wbChhdXRoZW50aWNh
dGlvbkxpc3RlbmVyKS0+dXNlQ3JlZGVudGlhbCh0b0ltcGwoY3JlZGVudGlhbCktPmNyZWRlbnRp
YWwoKSk7Ci0gICAgZWxzZQotICAgICAgICB0b0ltcGwoYXV0aGVudGljYXRpb25MaXN0ZW5lcikt
PnVzZUNyZWRlbnRpYWwoc3RkOjpudWxsb3B0KTsKKyAgICB0b0ltcGwoYXV0aGVudGljYXRpb25M
aXN0ZW5lciktPnVzZUNyZWRlbnRpYWwoY3JlZGVudGlhbCA/IHRvSW1wbChjcmVkZW50aWFsKS0+
Y3JlZGVudGlhbCgpIDogV2ViQ29yZTo6Q3JlZGVudGlhbCgpKTsKIH0KIAogdm9pZCBXS0F1dGhl
bnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lckNhbmNlbChXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25M
aXN0ZW5lclJlZiBhdXRoZW50aWNhdGlvbkxpc3RlbmVyKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLm1tCShyZXZpc2lvbiAyMzYxNTMpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIC0gKHZvaWQpY29udGludWVXaXRob3V0Q3Jl
ZGVudGlhbEZvckF1dGgKIHsKICAgICBjaGVja0NoYWxsZW5nZShjaGFsbGVuZ2UpOwogICAgIFdl
YktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgd2ViQ2hhbGxlbmdlID0gKChXS05T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UpLl93ZWJfYXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eTsKLSAgICB3ZWJDaGFsbGVuZ2UubGlzdGVuZXIoKS51c2VDcmVkZW50
aWFsKHN0ZDo6bnVsbG9wdCk7CisgICAgd2ViQ2hhbGxlbmdlLmxpc3RlbmVyKCkudXNlQ3JlZGVu
dGlhbCh7IH0pOwogfQogCiAtICh2b2lkKXVzZUNyZWRlbnRpYWw6KE5TVVJMQ3JlZGVudGlhbCAq
KWNyZWRlbnRpYWwgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0
LmNwcAkocmV2aXNpb24gMjM2MTUzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE1
LDEwICszMTUsNyBAQCB2b2lkIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2F1dGhlCiB7
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfQVVUSEVOVElDQVRJT05fUkVRVUVTVChy
ZXF1ZXN0KSk7CiAKLSAgICBpZiAoY3JlZGVudGlhbCkKLSAgICAgICAgcmVxdWVzdC0+cHJpdi0+
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkudXNlQ3JlZGVudGlhbCh3ZWJraXRD
cmVkZW50aWFsR2V0Q3JlZGVudGlhbChjcmVkZW50aWFsKSk7Ci0gICAgZWxzZQotICAgICAgICBy
ZXF1ZXN0LT5wcml2LT5hdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+bGlzdGVuZXIoKS51c2VDcmVk
ZW50aWFsKHN0ZDo6bnVsbG9wdCk7CisgICAgcmVxdWVzdC0+cHJpdi0+YXV0aGVudGljYXRpb25D
aGFsbGVuZ2UtPmxpc3RlbmVyKCkudXNlQ3JlZGVudGlhbChjcmVkZW50aWFsID8gd2Via2l0Q3Jl
ZGVudGlhbEdldENyZWRlbnRpYWwoY3JlZGVudGlhbCkgOiBXZWJDb3JlOjpDcmVkZW50aWFsKCkp
OwogCiAgICAgcmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3QgPSB0cnVlOwogfQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIz
NjE1MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCwzMyArNDQsMTUg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQsIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2Vha1B0cjxTZWNLZXlQcm94eVN0b3JlPiYm
IHNlY0tleVByb3h5U3RvcmUpCiAgICAgOiBtX2NvcmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShX
VEZNb3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSkKLSAgICAsIG1fbGlzdGVuZXIoQXV0aGVu
dGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjpjcmVhdGUoW2NoYWxsZW5nZUlELCBjb25uZWN0aW9u
ID0gV1RGTW92ZShjb25uZWN0aW9uKSwgc2VjS2V5UHJveHlTdG9yZSA9IFdURk1vdmUoc2VjS2V5
UHJveHlTdG9yZSldKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRp
b24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q3JlZGVudGlhbD4mJiBjcmVkZW50aWFsKSB7Ci0g
ICAgICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKLSAgICAgICAgY2FzZSBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWw6Ci0gICAgICAgICAgICBjb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OkNhbmNlbENoYWxsZW5nZShjaGFs
bGVuZ2VJRCksIDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZzoKLSAgICAg
ICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6
UGVyZm9ybURlZmF1bHRIYW5kbGluZyhjaGFsbGVuZ2VJRCksIDApOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVq
ZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWU6Ci0gICAgICAgICAgICBjb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OlJlamVjdFByb3RlY3Rpb25TcGFj
ZUFuZENvbnRpbnVlKGNoYWxsZW5nZUlEKSwgMCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFs
OgotICAgICAgICAgICAgaWYgKCFjcmVkZW50aWFsKSB7Ci0gICAgICAgICAgICAgICAgY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpDb250aW51ZVdpdGhv
dXRDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKGNoYWxsZW5nZUlEKSwgMCk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKyAgICAsIG1fbGlzdGVuZXIo
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjpjcmVhdGUoW2NoYWxsZW5nZUlELCBjb25u
ZWN0aW9uID0gV1RGTW92ZShjb25uZWN0aW9uKSwgc2VjS2V5UHJveHlTdG9yZSA9IFdURk1vdmUo
c2VjS2V5UHJveHlTdG9yZSldKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlz
cG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsKICNpZiBI
QVZFKFNFQ19LRVlfUFJPWFkpCi0gICAgICAgICAgICBpZiAoc2VjS2V5UHJveHlTdG9yZSkgewot
ICAgICAgICAgICAgICAgIHNlY0tleVByb3h5U3RvcmUtPmluaXRpYWxpemUoKmNyZWRlbnRpYWwp
OwotICAgICAgICAgICAgICAgIHNlbmRDbGllbnRDZXJ0aWZpY2F0ZUNyZWRlbnRpYWxPdmVyWHBj
KGNvbm5lY3Rpb24sICpzZWNLZXlQcm94eVN0b3JlLCBjaGFsbGVuZ2VJRCwgKmNyZWRlbnRpYWwp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAg
ICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6
VXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZShjaGFsbGVuZ2VJRCwgKmNyZWRlbnRpYWwpLCAwKTsK
KyAgICAgICAgaWYgKHNlY0tleVByb3h5U3RvcmUpIHsKKyAgICAgICAgICAgIHNlY0tleVByb3h5
U3RvcmUtPmluaXRpYWxpemUoY3JlZGVudGlhbCk7CisgICAgICAgICAgICBzZW5kQ2xpZW50Q2Vy
dGlmaWNhdGVDcmVkZW50aWFsT3ZlclhwYyhjb25uZWN0aW9uLCAqc2VjS2V5UHJveHlTdG9yZSwg
Y2hhbGxlbmdlSUQsIGNyZWRlbnRpYWwpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CisjZW5kaWYKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6QXV0aGVudGljYXRp
b25NYW5hZ2VyOjpDb21wbGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZUlELCBk
aXNwb3NpdGlvbiwgY3JlZGVudGlhbCksIDApOwogICAgIH0pKQogewogfQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCShyZXZpc2lvbiAyMzYx
NTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyLmgiCiAKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VzLmgiCkBAIC0zNiw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1B
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0
ZW5lcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q3JlZGVudGlhbD4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCitBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OkF1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCiB7CiB9CkBAIC00NCwzMSArNDUsMzEgQEAgQXV0aGVudGljYXRpb25EZWNpc2lv
bkxpc3RlbmVyOjpBdXRoZW50aQogQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjp+QXV0
aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKCkKIHsKICAgICBpZiAobV9jb21wbGV0aW9uSGFu
ZGxlcikKLSAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uOjpDYW5jZWwsIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIG1fY29tcGxldGlv
bkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsLCB7IH0p
OwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6dXNlQ3JlZGVudGlh
bChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNyZWRlbnRpYWw+JiYgY3JlZGVudGlhbCkKK3ZvaWQg
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjp1c2VDcmVkZW50aWFsKGNvbnN0IFdlYkNv
cmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7CiAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRs
ZXIpCi0gICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VE
aXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgV1RGTW92ZShjcmVkZW50aWFsKSk7CisgICAgICAg
IG1fY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6
VXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCk7CiB9CiAKIHZvaWQgQXV0aGVudGljYXRpb25EZWNp
c2lvbkxpc3RlbmVyOjpjYW5jZWwoKQogewogICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQot
ICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OkNhbmNlbCwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxl
cihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwsIHsgfSk7CiB9CiAK
IHZvaWQgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjpwZXJmb3JtRGVmYXVsdEhhbmRs
aW5nKCkKIHsKICAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgbV9jb21wbGV0
aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVm
YXVsdEhhbmRsaW5nLCBzdGQ6Om51bGxvcHQpOworICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVy
KEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxp
bmcsIHsgfSk7CiB9CiAKIHZvaWQgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjpyZWpl
Y3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSgpCiB7CiAgICAgaWYgKG1fY29tcGxldGlvbkhh
bmRsZXIpCi0gICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUsIHN0ZDo6bnVs
bG9wdCk7CisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUsIHsgfSk7CiB9
CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oCShyZXZpc2lvbiAyMzYxNTMpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVu
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjEgKzM3LDIxIEBAIGNsYXNzIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHk7CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5l
ciA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkF1dGhlbnRpY2F0
aW9uRGVjaXNpb25MaXN0ZW5lcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyPiBjcmVhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNy
ZWRlbnRpYWw+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHN0YXRpYyBSZWY8QXV0aGVu
dGljYXRpb25EZWNpc2lvbkxpc3RlbmVyPiBjcmVhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50
aWFsJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpKTsKICAgICB9CiAgICAgfkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcigp
OwogICAgIAotICAgIHZvaWQgdXNlQ3JlZGVudGlhbChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNy
ZWRlbnRpYWw+JiYpOworICAgIHZvaWQgdXNlQ3JlZGVudGlhbChjb25zdCBXZWJDb3JlOjpDcmVk
ZW50aWFsJik7CiAgICAgdm9pZCBjYW5jZWwoKTsKICAgICB2b2lkIHBlcmZvcm1EZWZhdWx0SGFu
ZGxpbmcoKTsKICAgICB2b2lkIHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKCk7CiAK
IHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDcmVkZW50aWFsPiYmKT4mJik7CisgICAgZXhwbGljaXQg
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlh
bCYpPiYmKTsKIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDcmVkZW50aWFsPiYmKT4g
bV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT4g
bV9jb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0JKHJl
dmlzaW9uIDIzNjE1MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2Fk
Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsMTAgKzEzMiw3IEBAIHZvaWQgRG93bmxv
YWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENv
bXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKICAgICAg
ICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbDoKLSAgICAgICAg
ICAgIGlmIChjcmVkZW50aWFsKQotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLT5saXN0ZW5lcigpLnVzZUNyZWRlbnRpYWwoV2ViQ29yZTo6Q3JlZGVudGlhbChjcmVkZW50
aWFsKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UtPmxpc3RlbmVyKCkudXNlQ3JlZGVudGlhbChzdGQ6Om51bGxvcHQpOworICAgICAg
ICAgICAgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkudXNlQ3JlZGVudGlhbChj
cmVkZW50aWFsID8gV2ViQ29yZTo6Q3JlZGVudGlhbChjcmVkZW50aWFsKSA6IFdlYkNvcmU6OkNy
ZWRlbnRpYWwoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZzoKICAgICAgICAgICAgIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLT5saXN0ZW5lcigpLnBlcmZvcm1EZWZhdWx0SGFuZGxpbmcoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0JKHJldmlzaW9uIDIzNjE1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtODY2LDEwICs4NjYsNyBAQCB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiAKICAgICAgICAgc3dpdGNo
IChkaXNwb3NpdGlvbikgewogICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VV
c2VDcmVkZW50aWFsOgotICAgICAgICAgICAgaWYgKGNyZWRlbnRpYWwpCi0gICAgICAgICAgICAg
ICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLnVzZUNyZWRlbnRpYWwoQ3JlZGVudGlhbChjcmVkZW50
aWFsKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0
ZW5lcigpLnVzZUNyZWRlbnRpYWwoc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgIGNoYWxsZW5n
ZS0+bGlzdGVuZXIoKS51c2VDcmVkZW50aWFsKGNyZWRlbnRpYWwgPyBDcmVkZW50aWFsKGNyZWRl
bnRpYWwpIDogQ3JlZGVudGlhbCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nOgogICAgICAg
ICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLnBlcmZvcm1EZWZhdWx0SGFuZGxpbmcoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjM2MTUyKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzQ0Myw2ICszNDQzLDcgQEAKIAkJNUM5RTU2
ODExREY3RjA1NTAwQzlFRTMzIC8qIFdLV2Vic2l0ZVBvbGljaWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZVBvbGljaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDQTk4NTQ5MjEwQkVCNUEwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdSZXN1
bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FmZUJyb3dzaW5nUmVzdWx0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTk4NTRCMjEwQkVCNzMwMDU3RUI2
QiAvKiBTYWZlQnJvd3NpbmdSZXN1bHRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFNhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1Q0FEREUwRDIxNTFBQTAxMDA2N0QzMDkgLyogQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmg7IHBhdGggPSBBdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDQUZERTQyMjEzMDg0MzUwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQUZERTQzMjEzMDg0MzYwMEIxRjdFMSAvKiBfV0tJ
bnNwZWN0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJ
bnNwZWN0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQUZERTQ0MjEzMDg0
MzYwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNjU5NSw2ICs2NTk2LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJNTdCNEI0NUMyMEI1MDQ4QjAwRDRBRDc5IC8qIGNvY29hICovLAorCQkJ
CTVDQURERTBEMjE1MUFBMDEwMDY3RDMwOSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uLmggKi8sCiAJCQkJNTE4RThFRjMxNkIyMDkxQzAwRTkxNDI5IC8qIEF1dGhlbnRpY2F0
aW9uTWFuYWdlci5jcHAgKi8sCiAJCQkJNTE4RThFRjQxNkIyMDkxQzAwRTkxNDI5IC8qIEF1dGhl
bnRpY2F0aW9uTWFuYWdlci5oICovLAogCQkJCTUxOEU4RUY1MTZCMjA5MUMwMEU5MTQyOSAvKiBB
dXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350148</attachid>
            <date>2018-09-19 13:42:06 -0700</date>
            <delta_ts>2018-09-21 11:57:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189719-20180919134205.patch</filename>
            <type>text/plain</type>
            <size>44165</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzYxNTcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE4LTA5LTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2ltcGx5IGF1dGhl
bnRpY2F0aW9uIGNvZGUgZXZlbiBtb3JlIQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSnVzdCB3aGVuIHlvdSB0aG91Z2h0IGl0IGNvdWxkbid0IGdldCBz
aW1wbGVyIGFuZCBtb3JlIGVsZWdhbnQsIGl0IGNhbiEKKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06Cisg
ICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb24uaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFu
YWdlcjo6Y29tcGxldGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dXNlQ3JlZGVudGlh
bEZvclNpbmdsZUNoYWxsZW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRp
Y2F0aW9uTWFuYWdlcjo6Y29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxsZW5nZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y29udGludWVX
aXRob3V0Q3JlZGVudGlhbEZvclNpbmdsZUNoYWxsZW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsQ2hhbGxlbmdlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpjYW5jZWxTaW5nbGVDaGFs
bGVuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6
OnBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OnBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JTaW5nbGVDaGFsbGVu
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJl
amVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51
ZUZvclNpbmdsZUNoYWxsZW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogU2hh
cmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmluaXRpYWxpemVDb25uZWN0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXIuY3BwOgorICAgICAgICAoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJV
c2VDcmVkZW50aWFsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5tbToKKyAgICAgICAgKC1bV0tOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVu
dGljYXRpb25SZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1
ZXN0X2F1dGhlbnRpY2F0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyOjpBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpB
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6On5BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6
OnVzZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lcjo6cGVyZm9ybURlZmF1bHRIYW5kbGluZyk6CisgICAgICAgIChXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6cmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29u
dGludWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bkRlY2lzaW9uTGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25EZWNp
c2lvbkxpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE4LTA5LTE4ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQ3Jhc2ggdW5kZXIgV2Vi
UGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90V2FzUmVtb3ZlZCgpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuY3BwCShyZXZpc2lvbiAyMzYxNTApCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCIKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJz
LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNw
cAkocmV2aXNpb24gMjM2MTUwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgogCisjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFu
YWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmNwcAkocmV2aXNpb24gMjM2MTUwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QaW5nTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJQaW5nTG9hZC5oIgogCisjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFu
YWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZENoZWNr
ZXIuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5jcHAJKHJldmlzaW9uIDIzNjE1MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAK
KyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2aXNp
b24gMjM2MTUwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJOZXR3b3JrRGF0YVRhc2tDb2NvYS5oIgogCisjaW1wb3J0
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW1wb3J0ICJBdXRoZW50
aWNhdGlvbk1hbmFnZXIuaCIKICNpbXBvcnQgIkRvd25sb2FkLmgiCiAjaW1wb3J0ICJEb3dubG9h
ZFByb3h5TWVzc2FnZXMuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDIzNjE1
MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgiCiAKKyNpbXBvcnQgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFu
YWdlci5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRG93bmxvYWQuaCIK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tD
dXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
TmV0d29ya0RhdGFUYXNrQ3VybC5jcHAJKHJldmlzaW9uIDIzNjE1MCkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtEYXRhVGFza0N1cmwuaCIKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb24uaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNs
dWRlICJOZXR3b3JrU2Vzc2lvbkN1cmwuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCShyZXZpc2lvbiAyMzYxNTAp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2tTb3VwLmgiCiAKKyNpbmNsdWRlICJBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25N
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2Fk
LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRW51
bVRyYWl0cy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIHsKKyAgICBVc2VDcmVkZW50aWFsLAorICAgIFBlcmZv
cm1EZWZhdWx0SGFuZGxpbmcsCisgICAgQ2FuY2VsLAorICAgIFJlamVjdFByb3RlY3Rpb25TcGFj
ZUFuZENvbnRpbnVlCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdU
RiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwK
KyAgICBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sCisgICAgV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLAor
ICAgIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURl
ZmF1bHRIYW5kbGluZywKKyAgICBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OkNhbmNlbCwKKyAgICBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlCisgICAgPjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCShyZXZpc2lv
biAyMzYxNTMpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTAxICsxMzQsMTUgQEAg
dm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdQogICAgIGRvd25sb2FkLnNl
bmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKIH0KIAotdm9pZCBB
dXRoZW50aWNhdGlvbk1hbmFnZXI6OnVzZUNyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWludDY0X3Qg
Y2hhbGxlbmdlSUQsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCit2b2lkIEF1dGhlbnRp
Y2F0aW9uTWFuYWdlcjo6Y29tcGxldGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBj
aGFsbGVuZ2VJRCwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlv
biwgV2ViQ29yZTo6Q3JlZGVudGlhbCYmIGNyZWRlbnRpYWwpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKIAotICAgIGZvciAoYXV0byYgY29hbGVzY2VkQ2hhbGxlbmdlSUQgOiBj
b2FsZXNjZUNoYWxsZW5nZXNNYXRjaGluZyhjaGFsbGVuZ2VJRCkpCi0gICAgICAgIHVzZUNyZWRl
bnRpYWxGb3JTaW5nbGVDaGFsbGVuZ2UoY29hbGVzY2VkQ2hhbGxlbmdlSUQsIGNyZWRlbnRpYWwp
OwotfQotCi12b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dXNlQ3JlZGVudGlhbEZvclNpbmds
ZUNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVu
dGlhbCkKLXsKLSAgICBhdXRvIGNoYWxsZW5nZSA9IG1fY2hhbGxlbmdlcy50YWtlKGNoYWxsZW5n
ZUlEKTsKLSAgICBBU1NFUlQoIWNoYWxsZW5nZS5jaGFsbGVuZ2UuaXNOdWxsKCkpOwotCi0gICAg
YXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5k
bGVyKTsKLQotICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwg
Y3JlZGVudGlhbCk7Ci0gICAgZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxG
b3JDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKLQotICAgIGZvciAoYXV0byYgY29hbGVzY2VkQ2hhbGxlbmdlSUQgOiBjb2Fs
ZXNjZUNoYWxsZW5nZXNNYXRjaGluZyhjaGFsbGVuZ2VJRCkpCi0gICAgICAgIGNvbnRpbnVlV2l0
aG91dENyZWRlbnRpYWxGb3JTaW5nbGVDaGFsbGVuZ2UoY29hbGVzY2VkQ2hhbGxlbmdlSUQpOwot
fQotCi12b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y29udGludWVXaXRob3V0Q3JlZGVudGlh
bEZvclNpbmdsZUNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCkKLXsKLSAgICBhdXRvIGNo
YWxsZW5nZSA9IG1fY2hhbGxlbmdlcy50YWtlKGNoYWxsZW5nZUlEKTsKLSAgICBBU1NFUlQoIWNo
YWxsZW5nZS5jaGFsbGVuZ2UuaXNOdWxsKCkpOwotCi0gICAgaWYgKGNoYWxsZW5nZS5jb21wbGV0
aW9uSGFuZGxlcikKLSAgICAgICAgY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwsIENyZWRlbnRpYWwoKSk7
Ci0gICAgZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OmNhbmNlbENoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCkK
LXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgZm9yIChhdXRvJiBjb2Fs
ZXNjZWRDaGFsbGVuZ2VJRCA6IGNvYWxlc2NlQ2hhbGxlbmdlc01hdGNoaW5nKGNoYWxsZW5nZUlE
KSkKLSAgICAgICAgY2FuY2VsU2luZ2xlQ2hhbGxlbmdlKGNvYWxlc2NlZENoYWxsZW5nZUlEKTsK
LX0KLQotdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmNhbmNlbFNpbmdsZUNoYWxsZW5nZSh1
aW50NjRfdCBjaGFsbGVuZ2VJRCkKLXsKLSAgICBhdXRvIGNoYWxsZW5nZSA9IG1fY2hhbGxlbmdl
cy50YWtlKGNoYWxsZW5nZUlEKTsKLSAgICBBU1NFUlQoIWNoYWxsZW5nZS5jaGFsbGVuZ2UuaXNO
dWxsKCkpOwotCi0gICAgaWYgKGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAg
Y2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OkNhbmNlbCwgQ3JlZGVudGlhbCgpKTsKLSAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cGVyZm9ybURl
ZmF1bHRIYW5kbGluZyh1aW50NjRfdCBjaGFsbGVuZ2VJRCkKLXsKLSAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwotCi0gICAgZm9yIChhdXRvJiBjb2FsZXNjZWRDaGFsbGVuZ2VJRCA6IGNv
YWxlc2NlQ2hhbGxlbmdlc01hdGNoaW5nKGNoYWxsZW5nZUlEKSkKLSAgICAgICAgcGVyZm9ybURl
ZmF1bHRIYW5kbGluZ0ZvclNpbmdsZUNoYWxsZW5nZShjb2FsZXNjZWRDaGFsbGVuZ2VJRCk7Ci19
Ci0KLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9y
U2luZ2xlQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKQotewotICAgIGF1dG8gY2hhbGxl
bmdlID0gbV9jaGFsbGVuZ2VzLnRha2UoY2hhbGxlbmdlSUQpOwotICAgIEFTU0VSVCghY2hhbGxl
bmdlLmNoYWxsZW5nZS5pc051bGwoKSk7Ci0KLSAgICBpZiAoY2hhbGxlbmdlLmNvbXBsZXRpb25I
YW5kbGVyKQotICAgICAgICBjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZywgQ3JlZGVudGlh
bCgpKTsKLSAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lk
IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUo
dWludDY0X3QgY2hhbGxlbmdlSUQpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
LQotICAgIGZvciAoYXV0byYgY29hbGVzY2VkQ2hhbGxlbmdlSUQgOiBjb2FsZXNjZUNoYWxsZW5n
ZXNNYXRjaGluZyhjaGFsbGVuZ2VJRCkpCi0gICAgICAgIHJlamVjdFByb3RlY3Rpb25TcGFjZUFu
ZENvbnRpbnVlRm9yU2luZ2xlQ2hhbGxlbmdlKGNvYWxlc2NlZENoYWxsZW5nZUlEKTsKLX0KLQot
dm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRp
bnVlRm9yU2luZ2xlQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKQotewotICAgIGF1dG8g
Y2hhbGxlbmdlID0gbV9jaGFsbGVuZ2VzLnRha2UoY2hhbGxlbmdlSUQpOwotICAgIEFTU0VSVCgh
Y2hhbGxlbmdlLmNoYWxsZW5nZS5pc051bGwoKSk7Ci0KLSAgICBpZiAoY2hhbGxlbmdlLmNvbXBs
ZXRpb25IYW5kbGVyKQotICAgICAgICBjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIoQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29u
dGludWUsIHsgfSk7Ci0gICAgZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBmb3IgKGF1dG8mIGNvYWxlc2NlZENoYWxsZW5nZUlEIDogY29hbGVzY2VDaGFsbGVuZ2VzTWF0
Y2hpbmcoY2hhbGxlbmdlSUQpKSB7CisgICAgICAgIGF1dG8gY2hhbGxlbmdlID0gbV9jaGFsbGVu
Z2VzLnRha2UoY29hbGVzY2VkQ2hhbGxlbmdlSUQpOworICAgICAgICBBU1NFUlQoIWNoYWxsZW5n
ZS5jaGFsbGVuZ2UuaXNOdWxsKCkpOworICAgICAgICBjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRs
ZXIoZGlzcG9zaXRpb24sIGNyZWRlbnRpYWwpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAkocmV2aXNpb24gMjM2MTUzKQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEyICs1MSw3IEBAIGNsYXNzIERvd25sb2FkOwogY2xh
c3MgRG93bmxvYWRJRDsKIGNsYXNzIFdlYkZyYW1lOwogCi1lbnVtIGNsYXNzIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gewotICAgIFVzZUNyZWRlbnRpYWwsCi0gICAgUGVyZm9y
bURlZmF1bHRIYW5kbGluZywKLSAgICBDYW5jZWwsCi0gICAgUmVqZWN0UHJvdGVjdGlvblNwYWNl
QW5kQ29udGludWUKLX07CitlbnVtIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb247CiB1c2luZyBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29y
ZTo6Q3JlZGVudGlhbCYpPjsKIAogY2xhc3MgQXV0aGVudGljYXRpb25NYW5hZ2VyIDogcHVibGlj
IE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXV0aGVudGljYXRpb25NYW5hZ2VyPiB7CkBAIC02OSwxMSAr
NjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRl
ciYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAKLSAgICB2b2lkIHVzZUNyZWRlbnRpYWxGb3JD
aGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwm
KTsKLSAgICB2b2lkIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWludDY0
X3QgY2hhbGxlbmdlSUQpOwotICAgIHZvaWQgY2FuY2VsQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxs
ZW5nZUlEKTsKLSAgICB2b2lkIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmcodWludDY0X3QgY2hhbGxl
bmdlSUQpOwotICAgIHZvaWQgcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUodWludDY0
X3QgY2hhbGxlbmdlSUQpOworICAgIHZvaWQgY29tcGxldGVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
biwgV2ViQ29yZTo6Q3JlZGVudGlhbCYmKTsKIAogICAgIHVpbnQ2NF90IG91dHN0YW5kaW5nQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbGxlbmdlcy5z
aXplKCk7IH0KIApAQCAtOTUsMTIgKzg2LDYgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBhZGRD
aGFsbGVuZ2VUb0NoYWxsZW5nZU1hcChDaGFsbGVuZ2UmJik7CiAgICAgYm9vbCBzaG91bGRDb2Fs
ZXNjZUNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIGNvbnN0OwogCi0gICAgdm9pZCB1
c2VDcmVkZW50aWFsRm9yU2luZ2xlQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25z
dCBXZWJDb3JlOjpDcmVkZW50aWFsJik7Ci0gICAgdm9pZCBjb250aW51ZVdpdGhvdXRDcmVkZW50
aWFsRm9yU2luZ2xlQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKLSAgICB2b2lkIGNh
bmNlbFNpbmdsZUNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCk7Ci0gICAgdm9pZCBwZXJm
b3JtRGVmYXVsdEhhbmRsaW5nRm9yU2luZ2xlQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlE
KTsKLSAgICB2b2lkIHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlRm9yU2luZ2xlQ2hh
bGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKLQogICAgIFZlY3Rvcjx1aW50NjRfdD4gY29h
bGVzY2VDaGFsbGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbGxlbmdlSUQpIGNvbnN0OwogCiAg
ICAgQ2hpbGRQcm9jZXNzJiBtX3Byb2Nlc3M7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25N
YW5hZ2VyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzYxNTApCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTIxLDkgKzIxLDUgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMg
LT4gQXV0aGVudGljYXRpb25NYW5hZ2VyIHsKLSAgICB2b2lkIFVzZUNyZWRlbnRpYWxGb3JDaGFs
bGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIFdlYkNvcmU6OkNyZWRlbnRpYWwgY3JlZGVudGlh
bCk7Ci0gICAgdm9pZCBDb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKHVpbnQ2
NF90IGNoYWxsZW5nZUlEKTsKLSAgICB2b2lkIENhbmNlbENoYWxsZW5nZSh1aW50NjRfdCBjaGFs
bGVuZ2VJRCk7Ci0gICAgdm9pZCBQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKHVpbnQ2NF90IGNoYWxs
ZW5nZUlEKTsKLSAgICB2b2lkIFJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKHVpbnQ2
NF90IGNoYWxsZW5nZUlEKTsKKyAgICB2b2lkIENvbXBsZXRlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UodWludDY0X3QgY2hhbGxlbmdlSUQsIGVudW0gV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBXZWJDb3JlOjpDcmVkZW50aWFsIGNyZWRlbnRp
YWwpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2Ev
QXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2Eu
bW0JKHJldmlzaW9uIDIzNjE1MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpZiBIQVZFKFNFQ19LRVlfUFJPWFkpCiAKKyNpbXBvcnQgIkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbXBvcnQgIkNsaWVudENlcnRp
ZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMuaCIKICNpbXBvcnQgIkNvbm5lY3Rpb24u
aCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNYUENDb25uZWN0aW9uU1BJLmg+CkBAIC05Niw3
ICs5Nyw3IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjppbml0aWFsaXplQ28KICAgICAg
ICAgaWYgKHBlcnNpc3RlbmNlID4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KE5TVVJMQ3JlZGVudGlh
bFBlcnNpc3RlbmNlU3luY2hyb25pemFibGUpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIHdlYWtUaGlzLT51c2VDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKGNoYWxsZW5nZUlELCBXZWJD
b3JlOjpDcmVkZW50aWFsKGFkb3B0TlMoW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRo
SWRlbnRpdHk6aWRlbnRpdHkuZ2V0KCkgY2VydGlmaWNhdGVzOmNlcnRpZmljYXRlcyBwZXJzaXN0
ZW5jZTooTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UpcGVyc2lzdGVuY2VdKS5nZXQoKSkpOwor
ICAgICAgICB3ZWFrVGhpcy0+Y29tcGxldGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVu
Z2VJRCwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwg
V2ViQ29yZTo6Q3JlZGVudGlhbChhZG9wdE5TKFtbTlNVUkxDcmVkZW50aWFsIGFsbG9jXSBpbml0
V2l0aElkZW50aXR5OmlkZW50aXR5LmdldCgpIGNlcnRpZmljYXRlczpjZXJ0aWZpY2F0ZXMgcGVy
c2lzdGVuY2U6KE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlKXBlcnNpc3RlbmNlXSkuZ2V0KCkp
KTsKICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDIzNjE1MykKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYkNyZWRlbnRpYWwuaCIKQEAg
LTk4LDExICs5OSwxMSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmRpZFJlY2Vp
CiAgICAgYXV0byYgcHJvdGVjdGlvblNwYWNlID0gY2hhbGxlbmdlLT5jb3JlKCkucHJvdGVjdGlv
blNwYWNlKCk7CiAgICAgaWYgKHByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvblNjaGVtZSgp
ID09IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lU2VydmVyVHJ1
c3RFdmFsdWF0aW9uUmVxdWVzdGVkICYmIHByb2Nlc3NQb29sKCkuYWxsb3dzQW55U1NMQ2VydGlm
aWNhdGVGb3JTZXJ2aWNlV29ya2VyKCkpIHsKICAgICAgICAgYXV0byBjcmVkZW50aWFsID0gV2Vi
Q29yZTo6Q3JlZGVudGlhbCgiYWNjZXB0IHNlcnZlciB0cnVzdCJfcywgZW1wdHlTdHJpbmcoKSwg
V2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7Ci0gICAgICAgIGNoYWxsZW5nZS0+
bGlzdGVuZXIoKS51c2VDcmVkZW50aWFsKGNyZWRlbnRpYWwpOworICAgICAgICBjaGFsbGVuZ2Ut
Pmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkucGVy
Zm9ybURlZmF1bHRIYW5kbGluZygpOworICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0
ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVm
YXVsdEhhbmRsaW5nKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRG
aW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyLmNwcAkocmV2aXNpb24gMjM2MTUzKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKIAorI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlv
bkRlY2lzaW9uTGlzdGVuZXIuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJX
ZWJDcmVkZW50aWFsLmgiCkBAIC0zOSwxOCArNDAsMTUgQEAgV0tUeXBlSUQgV0tBdXRoZW50aWNh
dGlvbkRlY2lzaW9uTGlzdGVuZQogCiB2b2lkIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyVXNlQ3JlZGVudGlhbChXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclJlZiBhdXRo
ZW50aWNhdGlvbkxpc3RlbmVyLCBXS0NyZWRlbnRpYWxSZWYgY3JlZGVudGlhbCkKIHsKLSAgICBp
ZiAoY3JlZGVudGlhbCkKLSAgICAgICAgdG9JbXBsKGF1dGhlbnRpY2F0aW9uTGlzdGVuZXIpLT51
c2VDcmVkZW50aWFsKHRvSW1wbChjcmVkZW50aWFsKS0+Y3JlZGVudGlhbCgpKTsKLSAgICBlbHNl
Ci0gICAgICAgIHRvSW1wbChhdXRoZW50aWNhdGlvbkxpc3RlbmVyKS0+dXNlQ3JlZGVudGlhbChz
dGQ6Om51bGxvcHQpOworICAgIHRvSW1wbChhdXRoZW50aWNhdGlvbkxpc3RlbmVyKS0+Y29tcGxl
dGVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVu
dGlhbCwgY3JlZGVudGlhbCA/IHRvSW1wbChjcmVkZW50aWFsKS0+Y3JlZGVudGlhbCgpIDogV2Vi
Q29yZTo6Q3JlZGVudGlhbCgpKTsKIH0KIAogdm9pZCBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25M
aXN0ZW5lckNhbmNlbChXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclJlZiBhdXRoZW50
aWNhdGlvbkxpc3RlbmVyKQogewotICAgIHRvSW1wbChhdXRoZW50aWNhdGlvbkxpc3RlbmVyKS0+
Y2FuY2VsKCk7CisgICAgdG9JbXBsKGF1dGhlbnRpY2F0aW9uTGlzdGVuZXIpLT5jb21wbGV0ZUNo
YWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwpOwogfQog
CiB2b2lkIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyUmVqZWN0UHJvdGVjdGlvblNw
YWNlQW5kQ29udGludWUoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJSZWYgYXV0aGVu
dGljYXRpb25MaXN0ZW5lcikKIHsKLSAgICB0b0ltcGwoYXV0aGVudGljYXRpb25MaXN0ZW5lcikt
PnJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKCk7CisgICAgdG9JbXBsKGF1dGhlbnRp
Y2F0aW9uTGlzdGVuZXIpLT5jb21wbGV0ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDIzNjE1
NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJBUElVSUNsaWVudC5oIgogI2luY2x1
ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIkFQSVdpbmRvd0ZlYXR1cmVzLmgi
CisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKICNpbmNsdWRlICJBdXRoZW50aWNh
dGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKICNpbmNsdWRlICJMZWdhY3lTZXNzaW9uU3RhdGVDb2Rp
bmcuaCIKQEAgLTIxNDksOSArMjE1MCw5IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25D
bGllbnQoV0tQYWcKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoV2ViUGFnZVByb3h5JiBwYWdlLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KG1fY2xpZW50LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UgJiYgIW1fY2xp
ZW50LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodG9BUEkoJnBhZ2UpLCB0
b0FQSShXZWJQcm90ZWN0aW9uU3BhY2U6OmNyZWF0ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5j
b3JlKCkucHJvdGVjdGlvblNwYWNlKCkpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYXV0aGVudGljYXRpb25DaGFsbGVuZ2UubGlzdGVu
ZXIoKS5yZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSgpOworICAgICAgICAgICAgcmV0
dXJuIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2Uo
V2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0
aW9uU3BhY2VBbmRDb250aW51ZSk7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UubGlzdGVuZXIoKS5wZXJmb3JtRGVmYXVsdEhhbmRsaW5nKCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmxpc3RlbmVyKCku
Y29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsKICAgICAgICAgICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0b0FQSSgmcGFnZSksIHRvQVBJKCZhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0K
IApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm1tCShyZXZpc2lvbiAy
MzYxNTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBXS19BUElfRU5BQkxFRAogCisjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIK
ICNpbXBvcnQgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2ltcG9ydCAiV2ViQ3JlZGVudGlhbC5o
IgpAQCAtNzAsMzUgKzcxLDM1IEBAIC0gKHZvaWQpY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6KE4KIHsKICAgICBjaGVja0NoYWxsZW5nZShjaGFsbGVuZ2UpOwogICAgIFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgd2ViQ2hhbGxlbmdlID0gKChXS05TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UpLl93ZWJfYXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eTsKLSAgICB3ZWJDaGFsbGVuZ2UubGlzdGVuZXIoKS5jYW5jZWwoKTsKKyAgICB3ZWJD
aGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCk7CiB9CiAKIC0gKHZvaWQpY29udGludWVX
aXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlCiB7CiAgICAgY2hlY2tDaGFsbGVuZ2UoY2hhbGxl
bmdlKTsKICAgICBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIHdlYkNoYWxs
ZW5nZSA9ICgoV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlKS5fd2Vi
X2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7Ci0gICAgd2ViQ2hhbGxlbmdlLmxpc3RlbmVy
KCkudXNlQ3JlZGVudGlhbChzdGQ6Om51bGxvcHQpOworICAgIHdlYkNoYWxsZW5nZS5saXN0ZW5l
cigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbjo6VXNlQ3JlZGVudGlhbCk7CiB9CiAKIC0gKHZvaWQpdXNlQ3JlZGVudGlhbDooTlNV
UkxDcmVkZW50aWFsICopY3JlZGVudGlhbCBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQogewogICAgIGNoZWNrQ2hhbGxl
bmdlKGNoYWxsZW5nZSk7CiAgICAgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
JiB3ZWJDaGFsbGVuZ2UgPSAoKFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxs
ZW5nZSkuX3dlYl9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OwotICAgIHdlYkNoYWxsZW5n
ZS5saXN0ZW5lcigpLnVzZUNyZWRlbnRpYWwoV2ViQ29yZTo6Q3JlZGVudGlhbChjcmVkZW50aWFs
KSk7CisgICAgd2ViQ2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBXZWJD
b3JlOjpDcmVkZW50aWFsKGNyZWRlbnRpYWwpKTsKIH0KIAogLSAodm9pZClwZXJmb3JtRGVmYXVs
dEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKiljaGFsbGVuZ2UKIHsKICAgICBjaGVja0NoYWxsZW5nZShjaGFsbGVuZ2UpOwog
ICAgIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgd2ViQ2hhbGxlbmdlID0g
KChXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UpLl93ZWJfYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eTsKLSAgICB3ZWJDaGFsbGVuZ2UubGlzdGVuZXIoKS5wZXJm
b3JtRGVmYXVsdEhhbmRsaW5nKCk7CisgICAgd2ViQ2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxl
dGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQ
ZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsKIH0KIAogLSAodm9pZClyZWplY3RQcm90ZWN0aW9uU3Bh
Y2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
KiljaGFsbGVuZ2UKIHsKICAgICBjaGVja0NoYWxsZW5nZShjaGFsbGVuZ2UpOwogICAgIFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgd2ViQ2hhbGxlbmdlID0gKChXS05TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UpLl93ZWJfYXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eTsKLSAgICB3ZWJDaGFsbGVuZ2UubGlzdGVuZXIoKS5yZWplY3RQcm90ZWN0
aW9uU3BhY2VBbmRDb250aW51ZSgpOworICAgIHdlYkNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBs
ZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6
UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUpOwogfQogCiBAZW5kCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIzNjE1MykKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuaCIKIAorI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlv
bkRlY2lzaW9uTGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJDcmVkZW50aWFsLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0UHJpdmF0ZS5oIgpAQCAtMzE1LDEwICszMTYs
NyBAQCB2b2lkIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2F1dGhlCiB7CiAgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfQVVUSEVOVElDQVRJT05fUkVRVUVTVChyZXF1ZXN0KSk7
CiAKLSAgICBpZiAoY3JlZGVudGlhbCkKLSAgICAgICAgcmVxdWVzdC0+cHJpdi0+YXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkudXNlQ3JlZGVudGlhbCh3ZWJraXRDcmVkZW50aWFs
R2V0Q3JlZGVudGlhbChjcmVkZW50aWFsKSk7Ci0gICAgZWxzZQotICAgICAgICByZXF1ZXN0LT5w
cml2LT5hdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+bGlzdGVuZXIoKS51c2VDcmVkZW50aWFsKHN0
ZDo6bnVsbG9wdCk7CisgICAgcmVxdWVzdC0+cHJpdi0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2Ut
Pmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBjcmVkZW50aWFsID8gd2Via2l0Q3JlZGVu
dGlhbEdldENyZWRlbnRpYWwoY3JlZGVudGlhbCkgOiBXZWJDb3JlOjpDcmVkZW50aWFsKCkpOwog
CiAgICAgcmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3QgPSB0cnVlOwogfQpAQCAtMzM2LDcg
KzMzNCw3IEBAIHZvaWQgd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfY2FuY2UKIHsKICAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19BVVRIRU5USUNBVElPTl9SRVFVRVNUKHJlcXVl
c3QpKTsKIAotICAgIHJlcXVlc3QtPnByaXYtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLT5saXN0
ZW5lcigpLmNhbmNlbCgpOworICAgIHJlcXVlc3QtPnByaXYtPmF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsKTsKIAogICAgIGdfc2lnbmFsX2VtaXQocmVxdWVz
dCwgc2lnbmFsc1tDQU5DRUxMRURdLCAwKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzYxNTMpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMzMgKzQ0LDE1IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5KFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlELCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNv
bm5lY3Rpb24sIFdlYWtQdHI8U2VjS2V5UHJveHlTdG9yZT4mJiBzZWNLZXlQcm94eVN0b3JlKQog
ICAgIDogbV9jb3JlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV1RGTW92ZShhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSkpCi0gICAgLCBtX2xpc3RlbmVyKEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0
ZW5lcjo6Y3JlYXRlKFtjaGFsbGVuZ2VJRCwgY29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlv
biksIHNlY0tleVByb3h5U3RvcmUgPSBXVEZNb3ZlKHNlY0tleVByb3h5U3RvcmUpXShBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkNyZWRlbnRpYWw+JiYgY3JlZGVudGlhbCkgewotICAgICAgICBzd2l0Y2ggKGRpc3Bv
c2l0aW9uKSB7Ci0gICAgICAgIGNhc2UgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bjo6Q2FuY2VsOgotICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6QXV0aGVu
dGljYXRpb25NYW5hZ2VyOjpDYW5jZWxDaGFsbGVuZ2UoY2hhbGxlbmdlSUQpLCAwKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmc6Ci0gICAgICAgICAgICBjb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OlBlcmZvcm1EZWZhdWx0SGFuZGxp
bmcoY2hhbGxlbmdlSUQpLCAwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFu
ZENvbnRpbnVlOgotICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6QXV0aGVu
dGljYXRpb25NYW5hZ2VyOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZShjaGFsbGVu
Z2VJRCksIDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbDoKLSAgICAgICAgICAgIGlmICgh
Y3JlZGVudGlhbCkgewotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Q29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxs
ZW5nZShjaGFsbGVuZ2VJRCksIDApOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgCisgICAgLCBtX2xpc3RlbmVyKEF1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lcjo6Y3JlYXRlKFtjaGFsbGVuZ2VJRCwgY29ubmVjdGlvbiA9IFdURk1vdmUoY29u
bmVjdGlvbiksIHNlY0tleVByb3h5U3RvcmUgPSBXVEZNb3ZlKHNlY0tleVByb3h5U3RvcmUpXShB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJD
b3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKSB7CiAjaWYgSEFWRShTRUNfS0VZX1BST1hZKQot
ICAgICAgICAgICAgaWYgKHNlY0tleVByb3h5U3RvcmUpIHsKLSAgICAgICAgICAgICAgICBzZWNL
ZXlQcm94eVN0b3JlLT5pbml0aWFsaXplKCpjcmVkZW50aWFsKTsKLSAgICAgICAgICAgICAgICBz
ZW5kQ2xpZW50Q2VydGlmaWNhdGVDcmVkZW50aWFsT3ZlclhwYyhjb25uZWN0aW9uLCAqc2VjS2V5
UHJveHlTdG9yZSwgY2hhbGxlbmdlSUQsICpjcmVkZW50aWFsKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgICAgICBjb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OlVzZUNyZWRlbnRpYWxGb3JDaGFs
bGVuZ2UoY2hhbGxlbmdlSUQsICpjcmVkZW50aWFsKSwgMCk7CisgICAgICAgIGlmIChzZWNLZXlQ
cm94eVN0b3JlKSB7CisgICAgICAgICAgICBzZWNLZXlQcm94eVN0b3JlLT5pbml0aWFsaXplKGNy
ZWRlbnRpYWwpOworICAgICAgICAgICAgc2VuZENsaWVudENlcnRpZmljYXRlQ3JlZGVudGlhbE92
ZXJYcGMoY29ubmVjdGlvbiwgKnNlY0tleVByb3h5U3RvcmUsIGNoYWxsZW5nZUlELCBjcmVkZW50
aWFsKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGNv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Q29tcGxldGVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2VJRCwgZGlzcG9zaXRpb24sIGNyZWRlbnRp
YWwpLCAwKTsKICAgICB9KSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25EZWNpc2lvbkxpc3RlbmVyLmNwcAkocmV2aXNpb24gMjM2MTUzKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogCisjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFn
ZXIuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgpAQCAtMzYs
NyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotQXV0aGVudGljYXRpb25EZWNpc2lv
bkxpc3RlbmVyOjpBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkNyZWRlbnRpYWw+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyOjpBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBj
b25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBt
X2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewogfQpAQCAt
NDQsMzEgKzQ1LDEzIEBAIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6QXV0aGVudGkK
IEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6fkF1dGhlbnRpY2F0aW9uRGVjaXNpb25M
aXN0ZW5lcigpCiB7CiAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIG1fY29t
cGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2Vs
LCBzdGQ6Om51bGxvcHQpOworICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCwgeyB9KTsKIH0KIAotdm9pZCBBdXRoZW50
aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OnVzZUNyZWRlbnRpYWwoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpDcmVkZW50aWFsPiYmIGNyZWRlbnRpYWwpCit2b2lkIEF1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lcjo6Y29tcGxldGVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlh
bCkKIHsKICAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgbV9jb21wbGV0aW9u
SGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFs
LCBXVEZNb3ZlKGNyZWRlbnRpYWwpKTsKKyAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihkaXNw
b3NpdGlvbiwgY3JlZGVudGlhbCk7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyOjpjYW5jZWwoKQotewotICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQotICAgICAg
ICBtX2NvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246
OkNhbmNlbCwgc3RkOjpudWxsb3B0KTsKLX0KLQotdm9pZCBBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXI6OnBlcmZvcm1EZWZhdWx0SGFuZGxpbmcoKQotewotICAgIGlmIChtX2NvbXBsZXRp
b25IYW5kbGVyKQotICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIHN0ZDo6bnVsbG9wdCk7
Ci19Ci0KLXZvaWQgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjpyZWplY3RQcm90ZWN0
aW9uU3BhY2VBbmRDb250aW51ZSgpCi17Ci0gICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCi0g
ICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUsIHN0ZDo6bnVsbG9wdCk7Ci19
Ci0gICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oCShyZXZpc2lvbiAyMzYxNTMpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVu
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjEgKzM3LDE4IEBAIGNsYXNzIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHk7CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5l
ciA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkF1dGhlbnRpY2F0
aW9uRGVjaXNpb25MaXN0ZW5lcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyPiBjcmVhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNy
ZWRlbnRpYWw+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHN0YXRpYyBSZWY8QXV0aGVu
dGljYXRpb25EZWNpc2lvbkxpc3RlbmVyPiBjcmVhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50
aWFsJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpKTsKICAgICB9CiAgICAgfkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcigp
OwogICAgIAotICAgIHZvaWQgdXNlQ3JlZGVudGlhbChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNy
ZWRlbnRpYWw+JiYpOwotICAgIHZvaWQgY2FuY2VsKCk7Ci0gICAgdm9pZCBwZXJmb3JtRGVmYXVs
dEhhbmRsaW5nKCk7Ci0gICAgdm9pZCByZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSgp
OworICAgIHZvaWQgY29tcGxldGVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgPSB7IH0pOwogCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6Q3JlZGVudGlhbD4mJik+JiYpOworICAgIGV4cGxpY2l0IEF1dGhlbnRpY2F0
aW9uRGVjaXNpb25MaXN0ZW5lcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT4mJik7CiAK
LSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q3JlZGVudGlhbD4mJik+IG1fY29tcGxldGlv
bkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+IG1fY29tcGxldGlv
bkhhbmRsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCShyZXZpc2lvbiAyMzYx
NTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAor
I2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2ltcG9ydCAi
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
LmgiCkBAIC0xMjIsNyArMTIzLDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1
dGhlbnRpYwogewogICAgIC8vIEZJWE1FOiBTeXN0ZW0gUHJldmlldyBuZWVkcyBjb2RlIGhlcmUu
CiAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSB7Ci0gICAgICAgIGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmxpc3RlbmVyKCkucGVyZm9ybURlZmF1bHRIYW5kbGluZygpOworICAgICAgICBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5k
bGluZyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzMiwyMSArMTMzLDE4IEBAIHZv
aWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICAgICAgY2hlY2tlci0+
ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHN3aXRjaCAoZGlzcG9zaXRpb24p
IHsKICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbDoK
LSAgICAgICAgICAgIGlmIChjcmVkZW50aWFsKQotICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLT5saXN0ZW5lcigpLnVzZUNyZWRlbnRpYWwoV2ViQ29yZTo6Q3JlZGVudGlh
bChjcmVkZW50aWFsKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkudXNlQ3JlZGVudGlhbChzdGQ6Om51bGxvcHQp
OworICAgICAgICAgICAgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxl
dGVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVu
dGlhbCwgY3JlZGVudGlhbCA/IFdlYkNvcmU6OkNyZWRlbnRpYWwoY3JlZGVudGlhbCkgOiBXZWJD
b3JlOjpDcmVkZW50aWFsKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmc6Ci0gICAgICAgICAg
ICBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+bGlzdGVuZXIoKS5wZXJmb3JtRGVmYXVsdEhhbmRs
aW5nKCk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+bGlzdGVuZXIoKS5j
b21wbGV0ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJm
b3JtRGVmYXVsdEhhbmRsaW5nKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOgotICAgICAgICAgICAgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVy
KCkuY2FuY2VsKCk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+bGlzdGVu
ZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpDYW5jZWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUmVqZWN0UHJvdGVjdGlvblNwYWNlOgotICAgICAg
ICAgICAgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkucmVqZWN0UHJvdGVjdGlv
blNwYWNlQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAy
MzYxNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIkFQSVN0cmluZy5o
IgogI2ltcG9ydCAiQVBJVVJMLmgiCiAjaW1wb3J0ICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisj
aW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW1wb3J0ICJB
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5k
bGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTg0OSw0MyArODUwLDM2
IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjoKICAgICBbc3RhdGlj
X2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0
ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IHJlbmRlcmluZ1By
b2dyZXNzRGlkQ2hhbmdlOnJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzKGxheW91dE1pbGVzdG9uZXMp
XTsKIH0KIAorc3RhdGljIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gdG9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VE
aXNwb3NpdGlvbiBkaXNwb3NpdGlvbikKK3sKKyAgICBzd2l0Y2ggKGRpc3Bvc2l0aW9uKSB7Cisg
ICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbDoKKyAgICAgICAg
cmV0dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWw7
CisgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGlu
ZzoKKyAgICAgICAgcmV0dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBl
cmZvcm1EZWZhdWx0SGFuZGxpbmc7CisgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
Q2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6CisgICAgICAgIHJldHVybiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsOworICAgIGNhc2UgTlNVUkxT
ZXNzaW9uQXV0aENoYWxsZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZToKKyAgICAgICAgcmV0dXJu
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFj
ZUFuZENvbnRpbnVlOworICAgIH0KKyAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJn
dW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW52YWxpZCBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
RGlzcG9zaXRpb24gKCVsZCkiLCAobG9uZylkaXNwb3NpdGlvbl07Cit9CisgICAgCiB2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFdlYlBhZ2VQcm94eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9u
YXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmxpc3RlbmVyKCkucGVyZm9ybURlZmF1bHRIYW5kbGluZygpOworICAgICAgICBy
ZXR1cm4gYXV0aGVudGljYXRpb25DaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5n
ZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZh
dWx0SGFuZGxpbmcpOwogCiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRp
b25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKICAgICBpZiAoIW5hdmlnYXRpb25E
ZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmxpc3RlbmVy
KCkucGVyZm9ybURlZmF1bHRIYW5kbGluZygpOworICAgICAgICByZXR1cm4gYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOwogCiAg
ICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG5h
dmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOikpOwogICAgIFtzdGF0aWNfY2Fz
dDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdl
dCgpKSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6d3JhcHBlcihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgY29tcGxl
dGlvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9z
aXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKT46OmZyb21DYWxsYWJsZShbY2hhbGxlbmdlID0gbWFr
ZVJlZihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIp
XShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJM
Q3JlZGVudGlhbCAqY3JlZGVudGlhbCkgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlv
bkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNo
ZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwotCi0gICAgICAgIHN3aXRjaCAoZGlz
cG9zaXRpb24pIHsKLSAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3Jl
ZGVudGlhbDoKLSAgICAgICAgICAgIGlmIChjcmVkZW50aWFsKQotICAgICAgICAgICAgICAgIGNo
YWxsZW5nZS0+bGlzdGVuZXIoKS51c2VDcmVkZW50aWFsKENyZWRlbnRpYWwoY3JlZGVudGlhbCkp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIo
KS51c2VDcmVkZW50aWFsKHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZzoK
LSAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5wZXJmb3JtRGVmYXVsdEhhbmRsaW5n
KCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhD
aGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZToKLSAgICAgICAgICAgIGNoYWxs
ZW5nZS0+bGlzdGVuZXIoKS5jYW5jZWwoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZToKLSAg
ICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5yZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRD
b250aW51ZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3Jt
YXQ6QCJJbnZhbGlkIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiAoJWxkKSIs
IChsb25nKWRpc3Bvc2l0aW9uXTsKLSAgICAgICAgfQorICAgICAgICBjaGFsbGVuZ2UtPmxpc3Rl
bmVyKCkuY29tcGxldGVDaGFsbGVuZ2UodG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uKGRpc3Bvc2l0aW9uKSwgQ3JlZGVudGlhbChjcmVkZW50aWFsKSk7CiAgICAgfSkuZ2V0KCld
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDIzNjE1MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0NDMsNiArMzQ0Myw3IEBA
CiAJCTVDOUU1NjgxMURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVQb2xpY2llcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0E5ODU0OTIxMEJFQjVBMDA1N0VCNkIgLyogU2FmZUJy
b3dzaW5nUmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhZmVCcm93
c2luZ1Jlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0E5ODU0QjIxMEJF
QjczMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nUmVzdWx0Q29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTYWZlQnJvd3NpbmdSZXN1bHRDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNBRERFMEQyMTUxQUEwMTAwNjdEMzA5IC8qIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oOyBwYXRoID0g
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0FGREU0MjIxMzA4NDM1MDBCMUY3RTEgLyogX1dL
SW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0FGREU0MzIxMzA4NDM2MDBCMUY3
RTEgLyogX1dLSW5zcGVjdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gX1dLSW5zcGVjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0FG
REU0NDIxMzA4NDM2MDBCMUY3RTEgLyogX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9ySW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1OTUsNiArNjU5Niw3IEBACiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTU3QjRCNDVDMjBCNTA0OEIwMEQ0QUQ3OSAvKiBjb2Nv
YSAqLywKKwkJCQk1Q0FEREUwRDIxNTFBQTAxMDA2N0QzMDkgLyogQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbi5oICovLAogCQkJCTUxOEU4RUYzMTZCMjA5MUMwMEU5MTQyOSAvKiBB
dXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwICovLAogCQkJCTUxOEU4RUY0MTZCMjA5MUMwMEU5MTQy
OSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCAqLywKIAkJCQk1MThFOEVGNTE2QjIwOTFDMDBF
OTE0MjkgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350398</attachid>
            <date>2018-09-21 11:57:40 -0700</date>
            <delta_ts>2018-09-21 12:25:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189719-20180921115739.patch</filename>
            <type>text/plain</type>
            <size>45375</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzYyOTUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE4LTA5LTIxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2ltcGx5IGF1dGhl
bnRpY2F0aW9uIGNvZGUgZXZlbiBtb3JlIQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rl
cy4KKworICAgICAgICBKdXN0IHdoZW4geW91IHRob3VnaHQgaXQgY291bGRuJ3QgZ2V0IHNpbXBs
ZXIgYW5kIG1vcmUgZWxlZ2FudCwgaXQgY2FuIQorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAg
ICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2Vy
Ojpjb21wbGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6QXV0
aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDcmVkZW50aWFsRm9y
U2luZ2xlQ2hhbGxlbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRp
b25NYW5hZ2VyOjpjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpjb250aW51ZVdpdGhv
dXRDcmVkZW50aWFsRm9yU2luZ2xlQ2hhbGxlbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpjYW5jZWxDaGFsbGVuZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmNhbmNlbFNpbmdsZUNoYWxsZW5n
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cGVy
Zm9ybURlZmF1bHRIYW5kbGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRp
Y2F0aW9uTWFuYWdlcjo6cGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvclNpbmdsZUNoYWxsZW5nZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVqZWN0
UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpB
dXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlRm9y
U2luZ2xlQ2hhbGxlbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQv
QXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0
ZW5lci5jcHA6CisgICAgICAgIChXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclVzZUNy
ZWRlbnRpYWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLm1tOgorICAgICAgICAoLVtXS05TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTZW5kZXIgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRoZW50aWNh
dGlvblJlcXVlc3QuY3BwOgorICAgICAgICAod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3Rf
YXV0aGVudGljYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHk6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVu
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6
OkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6fkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5l
cik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6dXNl
Q3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0
ZW5lcjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyOjpwZXJmb3JtRGVmYXVsdEhhbmRsaW5nKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVu
dGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjpyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uRGVj
aXNpb25MaXN0ZW5lci5oOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25D
bGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTgtMDktMjAgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IGFkZGl0aW9uYWwgcGx1Zy1p
bnMgdG8gcnVuIHVuc2FuZGJveGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCShyZXZp
c2lvbiAyMzYyODEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIu
aCIKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNpb24gMjM2MjgxKQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3Jr
TG9hZC5oIgogCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5o
IgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2Fk
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAkocmV2aXNpb24gMjM2MjgxKQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQaW5n
TG9hZC5oIgogCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5o
IgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZENoZWNrZXIuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAJKHJldmlzaW9u
IDIzNjI4MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2aXNpb24gMjM2MjgxKQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJOZXR3
b3JrRGF0YVRhc2tDb2NvYS5oIgogCisjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbXBvcnQg
IkRvd25sb2FkLmgiCiAjaW1wb3J0ICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDIzNjI4MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJOZXR3b3JrU2Vzc2lv
bkNvY29hLmgiCiAKKyNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24u
aCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2ltcG9ydCAiRGF0YVJlZmVy
ZW5jZS5oIgogI2ltcG9ydCAiRG93bmxvYWQuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAJKHJl
dmlzaW9uIDIzNjI4MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFza0N1cmwuaCIKIAorI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbmNsdWRlICJB
dXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkN1cmwuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuY3BwCShyZXZpc2lvbiAyMzYyODEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRh
c2tTb3VwLmgiCiAKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworZW51bSBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIHsK
KyAgICBVc2VDcmVkZW50aWFsLAorICAgIFBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsCisgICAgQ2Fu
Y2VsLAorICAgIFJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlCit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uPiB7Cisg
ICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLAorICAgICAgICBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwsCisgICAgICAgIFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZywK
KyAgICAgICAgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5j
ZWwsCisgICAgICAgIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6
UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUKKyAgICA+OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDIzNjI4
MSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9u
TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwxMDEgKzEzNCwxNSBAQCB2b2lkIEF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAgZG93bmxvYWQuc2VuZChNZXNz
YWdlczo6RG93bmxvYWRQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCkpOwogfQogCi12b2lkIEF1dGhlbnRp
Y2F0aW9uTWFuYWdlcjo6dXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVu
Z2VJRCwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3ZvaWQgQXV0aGVudGljYXRpb25N
YW5hZ2VyOjpjb21wbGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5n
ZUlELCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBXZWJD
b3JlOjpDcmVkZW50aWFsJiYgY3JlZGVudGlhbCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogCi0gICAgZm9yIChhdXRvJiBjb2FsZXNjZWRDaGFsbGVuZ2VJRCA6IGNvYWxlc2Nl
Q2hhbGxlbmdlc01hdGNoaW5nKGNoYWxsZW5nZUlEKSkKLSAgICAgICAgdXNlQ3JlZGVudGlhbEZv
clNpbmdsZUNoYWxsZW5nZShjb2FsZXNjZWRDaGFsbGVuZ2VJRCwgY3JlZGVudGlhbCk7Ci19Ci0K
LXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDcmVkZW50aWFsRm9yU2luZ2xlQ2hhbGxl
bmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQot
ewotICAgIGF1dG8gY2hhbGxlbmdlID0gbV9jaGFsbGVuZ2VzLnRha2UoY2hhbGxlbmdlSUQpOwot
ICAgIEFTU0VSVCghY2hhbGxlbmdlLmNoYWxsZW5nZS5pc051bGwoKSk7Ci0KLSAgICBhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIpOwot
Ci0gICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBjcmVkZW50
aWFsKTsKLSAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lk
IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxs
ZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwotCi0gICAgZm9yIChhdXRvJiBjb2FsZXNjZWRDaGFsbGVuZ2VJRCA6IGNvYWxlc2NlQ2hh
bGxlbmdlc01hdGNoaW5nKGNoYWxsZW5nZUlEKSkKLSAgICAgICAgY29udGludWVXaXRob3V0Q3Jl
ZGVudGlhbEZvclNpbmdsZUNoYWxsZW5nZShjb2FsZXNjZWRDaGFsbGVuZ2VJRCk7Ci19Ci0KLXZv
aWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yU2lu
Z2xlQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKQotewotICAgIGF1dG8gY2hhbGxlbmdl
ID0gbV9jaGFsbGVuZ2VzLnRha2UoY2hhbGxlbmdlSUQpOwotICAgIEFTU0VSVCghY2hhbGxlbmdl
LmNoYWxsZW5nZS5pc051bGwoKSk7Ci0KLSAgICBpZiAoY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5k
bGVyKQotICAgICAgICBjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgQ3JlZGVudGlhbCgpKTsKLSAgICBl
bHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIEF1dGhlbnRpY2F0
aW9uTWFuYWdlcjo6Y2FuY2VsQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKQotewotICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBmb3IgKGF1dG8mIGNvYWxlc2NlZENo
YWxsZW5nZUlEIDogY29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hpbmcoY2hhbGxlbmdlSUQpKQotICAg
ICAgICBjYW5jZWxTaW5nbGVDaGFsbGVuZ2UoY29hbGVzY2VkQ2hhbGxlbmdlSUQpOwotfQotCi12
b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsU2luZ2xlQ2hhbGxlbmdlKHVpbnQ2NF90
IGNoYWxsZW5nZUlEKQotewotICAgIGF1dG8gY2hhbGxlbmdlID0gbV9jaGFsbGVuZ2VzLnRha2Uo
Y2hhbGxlbmdlSUQpOwotICAgIEFTU0VSVCghY2hhbGxlbmdlLmNoYWxsZW5nZS5pc051bGwoKSk7
Ci0KLSAgICBpZiAoY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICBjaGFsbGVu
Z2UuY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6
Q2FuY2VsLCBDcmVkZW50aWFsKCkpOwotICAgIGVsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci19Ci0KLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpwZXJmb3JtRGVmYXVsdEhh
bmRsaW5nKHVpbnQ2NF90IGNoYWxsZW5nZUlEKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7Ci0KLSAgICBmb3IgKGF1dG8mIGNvYWxlc2NlZENoYWxsZW5nZUlEIDogY29hbGVzY2VD
aGFsbGVuZ2VzTWF0Y2hpbmcoY2hhbGxlbmdlSUQpKQotICAgICAgICBwZXJmb3JtRGVmYXVsdEhh
bmRsaW5nRm9yU2luZ2xlQ2hhbGxlbmdlKGNvYWxlc2NlZENoYWxsZW5nZUlEKTsKLX0KLQotdm9p
ZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JTaW5nbGVD
aGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpCi17Ci0gICAgYXV0byBjaGFsbGVuZ2UgPSBt
X2NoYWxsZW5nZXMudGFrZShjaGFsbGVuZ2VJRCk7Ci0gICAgQVNTRVJUKCFjaGFsbGVuZ2UuY2hh
bGxlbmdlLmlzTnVsbCgpKTsKLQotICAgIGlmIChjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIp
Ci0gICAgICAgIGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBDcmVkZW50aWFsKCkpOwot
ICAgIGVsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgQXV0aGVu
dGljYXRpb25NYW5hZ2VyOjpyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSh1aW50NjRf
dCBjaGFsbGVuZ2VJRCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAg
Zm9yIChhdXRvJiBjb2FsZXNjZWRDaGFsbGVuZ2VJRCA6IGNvYWxlc2NlQ2hhbGxlbmdlc01hdGNo
aW5nKGNoYWxsZW5nZUlEKSkKLSAgICAgICAgcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGlu
dWVGb3JTaW5nbGVDaGFsbGVuZ2UoY29hbGVzY2VkQ2hhbGxlbmdlSUQpOwotfQotCi12b2lkIEF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVGb3JT
aW5nbGVDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpCi17Ci0gICAgYXV0byBjaGFsbGVu
Z2UgPSBtX2NoYWxsZW5nZXMudGFrZShjaGFsbGVuZ2VJRCk7Ci0gICAgQVNTRVJUKCFjaGFsbGVu
Z2UuY2hhbGxlbmdlLmlzTnVsbCgpKTsKLQotICAgIGlmIChjaGFsbGVuZ2UuY29tcGxldGlvbkhh
bmRsZXIpCi0gICAgICAgIGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSwg
eyB9KTsKLSAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGZvciAo
YXV0byYgY29hbGVzY2VkQ2hhbGxlbmdlSUQgOiBjb2FsZXNjZUNoYWxsZW5nZXNNYXRjaGluZyhj
aGFsbGVuZ2VJRCkpIHsKKyAgICAgICAgYXV0byBjaGFsbGVuZ2UgPSBtX2NoYWxsZW5nZXMudGFr
ZShjb2FsZXNjZWRDaGFsbGVuZ2VJRCk7CisgICAgICAgIEFTU0VSVCghY2hhbGxlbmdlLmNoYWxs
ZW5nZS5pc051bGwoKSk7CisgICAgICAgIGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxlcihkaXNw
b3NpdGlvbiwgY3JlZGVudGlhbCk7CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9u
TWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCShyZXZpc2lvbiAyMzYyODEpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNTEsMTIgKzUxLDcgQEAgY2xhc3MgRG93bmxvYWQ7CiBjbGFzcyBEb3du
bG9hZElEOwogY2xhc3MgV2ViRnJhbWU7CiAKLWVudW0gY2xhc3MgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbiB7Ci0gICAgVXNlQ3JlZGVudGlhbCwKLSAgICBQZXJmb3JtRGVmYXVs
dEhhbmRsaW5nLAotICAgIENhbmNlbCwKLSAgICBSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250
aW51ZQotfTsKK2VudW0gY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjsK
IHVzaW5nIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVk
ZW50aWFsJik+OwogCiBjbGFzcyBBdXRoZW50aWNhdGlvbk1hbmFnZXIgOiBwdWJsaWMgTmV0d29y
a1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxBdXRoZW50aWNhdGlvbk1hbmFnZXI+IHsKQEAgLTY5LDExICs2NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSVBDOjpNZXNzYWdlU2VuZGVyJiBkb3du
bG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmKTsKIAotICAgIHZvaWQgdXNlQ3JlZGVudGlhbEZvckNoYWxsZW5n
ZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpOwotICAg
IHZvaWQgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFs
bGVuZ2VJRCk7Ci0gICAgdm9pZCBjYW5jZWxDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQp
OwotICAgIHZvaWQgcGVyZm9ybURlZmF1bHRIYW5kbGluZyh1aW50NjRfdCBjaGFsbGVuZ2VJRCk7
Ci0gICAgdm9pZCByZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSh1aW50NjRfdCBjaGFs
bGVuZ2VJRCk7CisgICAgdm9pZCBjb21wbGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2
NF90IGNoYWxsZW5nZUlELCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBXZWJD
b3JlOjpDcmVkZW50aWFsJiYpOwogCiAgICAgdWludDY0X3Qgb3V0c3RhbmRpbmdBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jaGFsbGVuZ2VzLnNpemUoKTsg
fQogCkBAIC05NSwxMiArODYsNiBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IGFkZENoYWxsZW5n
ZVRvQ2hhbGxlbmdlTWFwKENoYWxsZW5nZSYmKTsKICAgICBib29sIHNob3VsZENvYWxlc2NlQ2hh
bGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgY29uc3Q7CiAKLSAgICB2b2lkIHVzZUNyZWRl
bnRpYWxGb3JTaW5nbGVDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IFdlYkNv
cmU6OkNyZWRlbnRpYWwmKTsKLSAgICB2b2lkIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JT
aW5nbGVDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpOwotICAgIHZvaWQgY2FuY2VsU2lu
Z2xlQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKLSAgICB2b2lkIHBlcmZvcm1EZWZh
dWx0SGFuZGxpbmdGb3JTaW5nbGVDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpOwotICAg
IHZvaWQgcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVGb3JTaW5nbGVDaGFsbGVuZ2Uo
dWludDY0X3QgY2hhbGxlbmdlSUQpOwotCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBjb2FsZXNjZUNo
YWxsZW5nZXNNYXRjaGluZyh1aW50NjRfdCBjaGFsbGVuZ2VJRCkgY29uc3Q7CiAKICAgICBDaGls
ZFByb2Nlc3MmIG1fcHJvY2VzczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzNjI4MSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgkod29ya2luZyBj
b3B5KQpAQCAtMjEsOSArMjEsNSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBBdXRo
ZW50aWNhdGlvbk1hbmFnZXIgewotICAgIHZvaWQgVXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZSh1
aW50NjRfdCBjaGFsbGVuZ2VJRCwgV2ViQ29yZTo6Q3JlZGVudGlhbCBjcmVkZW50aWFsKTsKLSAg
ICB2b2lkIENvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWludDY0X3QgY2hh
bGxlbmdlSUQpOwotICAgIHZvaWQgQ2FuY2VsQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlE
KTsKLSAgICB2b2lkIFBlcmZvcm1EZWZhdWx0SGFuZGxpbmcodWludDY0X3QgY2hhbGxlbmdlSUQp
OwotICAgIHZvaWQgUmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUodWludDY0X3QgY2hh
bGxlbmdlSUQpOworICAgIHZvaWQgQ29tcGxldGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50
NjRfdCBjaGFsbGVuZ2VJRCwgZW51bSBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb24gZGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwgY3JlZGVudGlhbCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50
aWNhdGlvbk1hbmFnZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbQkocmV2
aXNpb24gMjM2MjgxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vY29j
b2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEhBVkUoU0VDX0tFWV9QUk9YWSkKIAorI2ltcG9ydCAiQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2ltcG9ydCAiQ2xpZW50Q2VydGlmaWNhdGVB
dXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oIgogI2ltcG9ydCAiQ29ubmVjdGlvbi5oIgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9OU1hQQ0Nvbm5lY3Rpb25TUEkuaD4KQEAgLTk2LDcgKzk3LDcg
QEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmluaXRpYWxpemVDbwogICAgICAgICBpZiAo
cGVyc2lzdGVuY2UgPiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oTlNVUkxDcmVkZW50aWFsUGVyc2lz
dGVuY2VTeW5jaHJvbml6YWJsZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgd2Vh
a1RoaXMtPnVzZUNyZWRlbnRpYWxGb3JDaGFsbGVuZ2UoY2hhbGxlbmdlSUQsIFdlYkNvcmU6OkNy
ZWRlbnRpYWwoYWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10gaW5pdFdpdGhJZGVudGl0
eTppZGVudGl0eS5nZXQoKSBjZXJ0aWZpY2F0ZXM6Y2VydGlmaWNhdGVzIHBlcnNpc3RlbmNlOihO
U1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZSlwZXJzaXN0ZW5jZV0pLmdldCgpKSk7CisgICAgICAg
IHdlYWtUaGlzLT5jb21wbGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZUlELCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBXZWJDb3Jl
OjpDcmVkZW50aWFsKGFkb3B0TlMoW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRoSWRl
bnRpdHk6aWRlbnRpdHkuZ2V0KCkgY2VydGlmaWNhdGVzOmNlcnRpZmljYXRlcyBwZXJzaXN0ZW5j
ZTooTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UpcGVyc2lzdGVuY2VdKS5nZXQoKSkpOwogICAg
IH0pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjM2MjgxKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbmNsdWRlICJB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2ViQ3JlZGVudGlhbC5oIgpAQCAtOTgsMTEg
Kzk5LDExIEBAIHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6ZGlkUmVjZWkKICAgICBh
dXRvJiBwcm90ZWN0aW9uU3BhY2UgPSBjaGFsbGVuZ2UtPmNvcmUoKS5wcm90ZWN0aW9uU3BhY2Uo
KTsKICAgICBpZiAocHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkgPT0gV2Vi
Q29yZTo6UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1
YXRpb25SZXF1ZXN0ZWQgJiYgcHJvY2Vzc1Bvb2woKS5hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZv
clNlcnZpY2VXb3JrZXIoKSkgewogICAgICAgICBhdXRvIGNyZWRlbnRpYWwgPSBXZWJDb3JlOjpD
cmVkZW50aWFsKCJhY2NlcHQgc2VydmVyIHRydXN0Il9zLCBlbXB0eVN0cmluZygpLCBXZWJDb3Jl
OjpDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKLSAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5l
cigpLnVzZUNyZWRlbnRpYWwoY3JlZGVudGlhbCk7CisgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVu
ZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpVc2VDcmVkZW50aWFsLCBjcmVkZW50aWFsKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5wZXJmb3JtRGVm
YXVsdEhhbmRsaW5nKCk7CisgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxl
bmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFu
ZGxpbmcpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExh
dW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgJKHJldmlzaW9uIDIzNjI4MSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNs
dWRlICJBUElTdHJpbmcuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2luY2x1ZGUgIlBsdWdp
bk1vZHVsZUluZm8uaCIKQEAgLTg3LDcgKzg4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2Vi
Q29yZTo6TGF5b3V0TWlsZXN0b25lcykgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsgY2hhbGxlbmdlLmxpc3Rl
bmVyKCkucGVyZm9ybURlZmF1bHRIYW5kbGluZygpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKSB7IGNoYWxsZW5nZS5s
aXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZyk7IH0KIAogICAgIC8vIEZJWE1F
OiBUaGVzZSBmdW5jdGlvbiBzaG91bGQgbm90IGJlIHBhcnQgb2YgdGhpcyBjbGllbnQuCiAgICAg
dmlydHVhbCBib29sIHByb2Nlc3NEaWRUZXJtaW5hdGUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBX
ZWJLaXQ6OlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbikgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAJKHJldmlzaW9uIDIzNjI4MSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAK
KyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCiAjaW5jbHVkZSAiV2ViQ3JlZGVudGlhbC5oIgpAQCAtMzksMTggKzQwLDE1IEBAIFdLVHlw
ZUlEIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmUKIAogdm9pZCBXS0F1dGhlbnRpY2F0
aW9uRGVjaXNpb25MaXN0ZW5lclVzZUNyZWRlbnRpYWwoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXJSZWYgYXV0aGVudGljYXRpb25MaXN0ZW5lciwgV0tDcmVkZW50aWFsUmVmIGNyZWRl
bnRpYWwpCiB7Ci0gICAgaWYgKGNyZWRlbnRpYWwpCi0gICAgICAgIHRvSW1wbChhdXRoZW50aWNh
dGlvbkxpc3RlbmVyKS0+dXNlQ3JlZGVudGlhbCh0b0ltcGwoY3JlZGVudGlhbCktPmNyZWRlbnRp
YWwoKSk7Ci0gICAgZWxzZQotICAgICAgICB0b0ltcGwoYXV0aGVudGljYXRpb25MaXN0ZW5lcikt
PnVzZUNyZWRlbnRpYWwoc3RkOjpudWxsb3B0KTsKKyAgICB0b0ltcGwoYXV0aGVudGljYXRpb25M
aXN0ZW5lciktPmNvbXBsZXRlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OlVzZUNyZWRlbnRpYWwsIGNyZWRlbnRpYWwgPyB0b0ltcGwoY3JlZGVudGlhbCktPmNy
ZWRlbnRpYWwoKSA6IFdlYkNvcmU6OkNyZWRlbnRpYWwoKSk7CiB9CiAKIHZvaWQgV0tBdXRoZW50
aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJDYW5jZWwoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXJSZWYgYXV0aGVudGljYXRpb25MaXN0ZW5lcikKIHsKLSAgICB0b0ltcGwoYXV0aGVudGlj
YXRpb25MaXN0ZW5lciktPmNhbmNlbCgpOworICAgIHRvSW1wbChhdXRoZW50aWNhdGlvbkxpc3Rl
bmVyKS0+Y29tcGxldGVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bjo6Q2FuY2VsKTsKIH0KIAogdm9pZCBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclJl
amVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyUmVmIGF1dGhlbnRpY2F0aW9uTGlzdGVuZXIpCiB7Ci0gICAgdG9JbXBsKGF1dGhlbnRp
Y2F0aW9uTGlzdGVuZXIpLT5yZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSgpOworICAg
IHRvSW1wbChhdXRoZW50aWNhdGlvbkxpc3RlbmVyKS0+Y29tcGxldGVDaGFsbGVuZ2UoQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29u
dGludWUpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CShyZXZpc2lvbiAyMzYyODEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiQVBJVUlD
bGllbnQuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJBUElX
aW5kb3dGZWF0dXJlcy5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb24uaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTGVnYWN5
U2Vzc2lvblN0YXRlQ29kaW5nLmgiCkBAIC0yMTQ5LDkgKzIxNTAsOSBAQCB2b2lkIFdLUGFnZVNl
dFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpIG92ZXJyaWRlCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmIChtX2NsaWVudC5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlICYmICFtX2NsaWVudC5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KHRvQVBJKCZwYWdlKSwgdG9BUEkoV2ViUHJvdGVjdGlvblNwYWNlOjpjcmVhdGUoYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuY29yZSgpLnByb3RlY3Rpb25TcGFjZSgpKS5wdHIoKSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmxpc3RlbmVyKCkucmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUoKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gYXV0aGVudGljYXRpb25DaGFsbGVuZ2UubGlzdGVuZXIo
KS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTsKICAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQotICAgICAgICAg
ICAgICAgIHJldHVybiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5saXN0ZW5lcigpLnBlcmZvcm1E
ZWZhdWx0SGFuZGxpbmcoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOwogICAgICAg
ICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRvQVBJKCZw
YWdlKSwgdG9BUEkoJmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UubW0JKHJldmlzaW9uIDIzNjI4MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKKyNpbXBvcnQgIkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lci5oIgogI2ltcG9ydCAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW1w
b3J0ICJXZWJDcmVkZW50aWFsLmgiCkBAIC03MCwzNSArNzEsMzUgQEAgLSAodm9pZCljYW5jZWxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTgogewogICAgIGNoZWNrQ2hhbGxlbmdlKGNoYWxsZW5n
ZSk7CiAgICAgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiB3ZWJDaGFsbGVu
Z2UgPSAoKFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSkuX3dlYl9h
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OwotICAgIHdlYkNoYWxsZW5nZS5saXN0ZW5lcigp
LmNhbmNlbCgpOworICAgIHdlYkNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdl
KFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsKTsKIH0K
IAogLSAodm9pZCljb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKIHsKICAgICBj
aGVja0NoYWxsZW5nZShjaGFsbGVuZ2UpOwogICAgIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYgd2ViQ2hhbGxlbmdlID0gKChXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKiljaGFsbGVuZ2UpLl93ZWJfYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKLSAgICB3
ZWJDaGFsbGVuZ2UubGlzdGVuZXIoKS51c2VDcmVkZW50aWFsKHN0ZDo6bnVsbG9wdCk7CisgICAg
d2ViQ2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsKTsKIH0KIAogLSAodm9p
ZCl1c2VDcmVkZW50aWFsOihOU1VSTENyZWRlbnRpYWwgKiljcmVkZW50aWFsIGZvckF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdl
CiB7CiAgICAgY2hlY2tDaGFsbGVuZ2UoY2hhbGxlbmdlKTsKICAgICBXZWJLaXQ6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkmIHdlYkNoYWxsZW5nZSA9ICgoV0tOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlKS5fd2ViX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHk7Ci0gICAgd2ViQ2hhbGxlbmdlLmxpc3RlbmVyKCkudXNlQ3JlZGVudGlhbChXZWJDb3JlOjpD
cmVkZW50aWFsKGNyZWRlbnRpYWwpKTsKKyAgICB3ZWJDaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21w
bGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246
OlVzZUNyZWRlbnRpYWwsIFdlYkNvcmU6OkNyZWRlbnRpYWwoY3JlZGVudGlhbCkpOwogfQogCiAt
ICh2b2lkKXBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZToo
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQogewogICAgIGNoZWNrQ2hh
bGxlbmdlKGNoYWxsZW5nZSk7CiAgICAgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5JiB3ZWJDaGFsbGVuZ2UgPSAoKFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNo
YWxsZW5nZSkuX3dlYl9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OwotICAgIHdlYkNoYWxs
ZW5nZS5saXN0ZW5lcigpLnBlcmZvcm1EZWZhdWx0SGFuZGxpbmcoKTsKKyAgICB3ZWJDaGFsbGVu
Z2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOwogfQogCiAtICh2b2lk
KXJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENoYWxsZW5nZTooTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQogewogICAgIGNoZWNrQ2hhbGxlbmdlKGNo
YWxsZW5nZSk7CiAgICAgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiB3ZWJD
aGFsbGVuZ2UgPSAoKFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSku
X3dlYl9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OwotICAgIHdlYkNoYWxsZW5nZS5saXN0
ZW5lcigpLnJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKCk7CisgICAgd2ViQ2hhbGxl
bmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSk7CiB9
CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1
dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcAkocmV2aXNpb24g
MjM2MjgxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVu
dGljYXRpb25SZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5o
IgogCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYkNy
ZWRlbnRpYWwuaCIKICNpbmNsdWRlICJXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3RQcml2YXRl
LmgiCkBAIC0zMTUsMTAgKzMxNiw3IEBAIHZvaWQgd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVl
c3RfYXV0aGUKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19BVVRIRU5USUNBVElP
Tl9SRVFVRVNUKHJlcXVlc3QpKTsKIAotICAgIGlmIChjcmVkZW50aWFsKQotICAgICAgICByZXF1
ZXN0LT5wcml2LT5hdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+bGlzdGVuZXIoKS51c2VDcmVkZW50
aWFsKHdlYmtpdENyZWRlbnRpYWxHZXRDcmVkZW50aWFsKGNyZWRlbnRpYWwpKTsKLSAgICBlbHNl
Ci0gICAgICAgIHJlcXVlc3QtPnByaXYtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLT5saXN0ZW5l
cigpLnVzZUNyZWRlbnRpYWwoc3RkOjpudWxsb3B0KTsKKyAgICByZXF1ZXN0LT5wcml2LT5hdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwsIGNyZWRl
bnRpYWwgPyB3ZWJraXRDcmVkZW50aWFsR2V0Q3JlZGVudGlhbChjcmVkZW50aWFsKSA6IFdlYkNv
cmU6OkNyZWRlbnRpYWwoKSk7CiAKICAgICByZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVxdWVzdCA9
IHRydWU7CiB9CkBAIC0zMzYsNyArMzM0LDcgQEAgdm9pZCB3ZWJraXRfYXV0aGVudGljYXRpb25f
cmVxdWVzdF9jYW5jZQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0FVVEhFTlRJ
Q0FUSU9OX1JFUVVFU1QocmVxdWVzdCkpOwogCi0gICAgcmVxdWVzdC0+cHJpdi0+YXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY2FuY2VsKCk7CisgICAgcmVxdWVzdC0+cHJpdi0+
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwpOwogCiAgICAg
Z19zaWduYWxfZW1pdChyZXF1ZXN0LCBzaWduYWxzW0NBTkNFTExFRF0sIDApOwogfQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIz
NjI4MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCwzMyArNDQsMTUg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQsIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2Vha1B0cjxTZWNLZXlQcm94eVN0b3JlPiYm
IHNlY0tleVByb3h5U3RvcmUpCiAgICAgOiBtX2NvcmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShX
VEZNb3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSkKLSAgICAsIG1fbGlzdGVuZXIoQXV0aGVu
dGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjpjcmVhdGUoW2NoYWxsZW5nZUlELCBjb25uZWN0aW9u
ID0gV1RGTW92ZShjb25uZWN0aW9uKSwgc2VjS2V5UHJveHlTdG9yZSA9IFdURk1vdmUoc2VjS2V5
UHJveHlTdG9yZSldKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRp
b24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q3JlZGVudGlhbD4mJiBjcmVkZW50aWFsKSB7Ci0g
ICAgICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKLSAgICAgICAgY2FzZSBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWw6Ci0gICAgICAgICAgICBjb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OkNhbmNlbENoYWxsZW5nZShjaGFs
bGVuZ2VJRCksIDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZzoKLSAgICAg
ICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6
UGVyZm9ybURlZmF1bHRIYW5kbGluZyhjaGFsbGVuZ2VJRCksIDApOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVq
ZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWU6Ci0gICAgICAgICAgICBjb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OlJlamVjdFByb3RlY3Rpb25TcGFj
ZUFuZENvbnRpbnVlKGNoYWxsZW5nZUlEKSwgMCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFs
OgotICAgICAgICAgICAgaWYgKCFjcmVkZW50aWFsKSB7Ci0gICAgICAgICAgICAgICAgY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpDb250aW51ZVdpdGhv
dXRDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKGNoYWxsZW5nZUlEKSwgMCk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKyAgICAsIG1fbGlzdGVuZXIo
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjpjcmVhdGUoW2NoYWxsZW5nZUlELCBjb25u
ZWN0aW9uID0gV1RGTW92ZShjb25uZWN0aW9uKSwgc2VjS2V5UHJveHlTdG9yZSA9IFdURk1vdmUo
c2VjS2V5UHJveHlTdG9yZSldKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlz
cG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsKICNpZiBI
QVZFKFNFQ19LRVlfUFJPWFkpCi0gICAgICAgICAgICBpZiAoc2VjS2V5UHJveHlTdG9yZSkgewot
ICAgICAgICAgICAgICAgIHNlY0tleVByb3h5U3RvcmUtPmluaXRpYWxpemUoKmNyZWRlbnRpYWwp
OwotICAgICAgICAgICAgICAgIHNlbmRDbGllbnRDZXJ0aWZpY2F0ZUNyZWRlbnRpYWxPdmVyWHBj
KGNvbm5lY3Rpb24sICpzZWNLZXlQcm94eVN0b3JlLCBjaGFsbGVuZ2VJRCwgKmNyZWRlbnRpYWwp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAg
ICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6
VXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZShjaGFsbGVuZ2VJRCwgKmNyZWRlbnRpYWwpLCAwKTsK
KyAgICAgICAgaWYgKHNlY0tleVByb3h5U3RvcmUpIHsKKyAgICAgICAgICAgIHNlY0tleVByb3h5
U3RvcmUtPmluaXRpYWxpemUoY3JlZGVudGlhbCk7CisgICAgICAgICAgICBzZW5kQ2xpZW50Q2Vy
dGlmaWNhdGVDcmVkZW50aWFsT3ZlclhwYyhjb25uZWN0aW9uLCAqc2VjS2V5UHJveHlTdG9yZSwg
Y2hhbGxlbmdlSUQsIGNyZWRlbnRpYWwpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CisjZW5kaWYKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6QXV0aGVudGljYXRp
b25NYW5hZ2VyOjpDb21wbGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZUlELCBk
aXNwb3NpdGlvbiwgY3JlZGVudGlhbCksIDApOwogICAgIH0pKQogewogfQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCShyZXZpc2lvbiAyMzYy
ODEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyLmgiCiAKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VzLmgiCkBAIC0zNiw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1B
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0
ZW5lcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q3JlZGVudGlhbD4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCitBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OkF1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCiB7CiB9CkBAIC00NCwzMSArNDUsMTMgQEAgQXV0aGVudGljYXRpb25EZWNpc2lv
bkxpc3RlbmVyOjpBdXRoZW50aQogQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjp+QXV0
aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKCkKIHsKICAgICBpZiAobV9jb21wbGV0aW9uSGFu
ZGxlcikKLSAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uOjpDYW5jZWwsIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIG1fY29tcGxldGlv
bkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsLCB7IH0p
OwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6dXNlQ3JlZGVudGlh
bChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNyZWRlbnRpYWw+JiYgY3JlZGVudGlhbCkKK3ZvaWQg
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjpjb21wbGV0ZUNoYWxsZW5nZShBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpD
cmVkZW50aWFsJiBjcmVkZW50aWFsKQogewogICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQot
ICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OlVzZUNyZWRlbnRpYWwsIFdURk1vdmUoY3JlZGVudGlhbCkpOworICAgICAgICBtX2Nv
bXBsZXRpb25IYW5kbGVyKGRpc3Bvc2l0aW9uLCBjcmVkZW50aWFsKTsKIH0KIAotdm9pZCBBdXRo
ZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OmNhbmNlbCgpCi17Ci0gICAgaWYgKG1fY29tcGxl
dGlvbkhhbmRsZXIpCi0gICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsLCBzdGQ6Om51bGxvcHQpOwotfQotCi12b2lkIEF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6cGVyZm9ybURlZmF1bHRIYW5kbGluZygpCi17
Ci0gICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIG1fY29tcGxldGlvbkhhbmRs
ZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5k
bGluZywgc3RkOjpudWxsb3B0KTsKLX0KLQotdm9pZCBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXI6OnJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKCkKLXsKLSAgICBpZiAobV9j
b21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51
ZSwgc3RkOjpudWxsb3B0KTsKLX0KLSAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNp
c2lvbkxpc3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgJKHJldmlzaW9uIDIz
NjI4MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyMSArMzcsMTgg
QEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKIAogY2xhc3MgQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVj
dDo6VHlwZTo6QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI+IGNyZWF0ZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6Q3JlZGVudGlhbD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgc3RhdGljIFJlZjxBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI+IGNyZWF0ZShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNv
bnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5l
cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogICAgIH0KICAgICB+QXV0aGVudGljYXRp
b25EZWNpc2lvbkxpc3RlbmVyKCk7CiAgICAgCi0gICAgdm9pZCB1c2VDcmVkZW50aWFsKHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6Q3JlZGVudGlhbD4mJik7Ci0gICAgdm9pZCBjYW5jZWwoKTsKLSAg
ICB2b2lkIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmcoKTsKLSAgICB2b2lkIHJlamVjdFByb3RlY3Rp
b25TcGFjZUFuZENvbnRpbnVlKCk7CisgICAgdm9pZCBjb21wbGV0ZUNoYWxsZW5nZShBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiA9
IHsgfSk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDcmVkZW50aWFsPiYmKT4mJik7CisgICAg
ZXhwbGljaXQgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6
Q3JlZGVudGlhbCYpPiYmKTsKIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDcmVkZW50
aWFsPiYmKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRl
bnRpYWwmKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGll
bnQubW0JKHJldmlzaW9uIDIzNjI4MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0Rvd25sb2FkQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
ZiBXS19BUElfRU5BQkxFRAogCisjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW1w
b3J0ICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKICNpbXBvcnQgIkNvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKQEAgLTEyMiw3ICsxMjMsNyBAQCB2b2lkIERvd25sb2Fk
Q2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljCiB7CiAgICAgLy8gRklYTUU6IFN5c3RlbSBQcmV2
aWV3IG5lZWRzIGNvZGUgaGVyZS4KICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2Fk
RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpIHsKLSAg
ICAgICAgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UubGlzdGVuZXIoKS5wZXJmb3JtRGVmYXVsdEhh
bmRsaW5nKCk7CisgICAgICAgIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmxpc3RlbmVyKCkuY29t
cGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MTMyLDIxICsxMzMsMTggQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRp
YwogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAg
c3dpdGNoIChkaXNwb3NpdGlvbikgewogICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VVc2VDcmVkZW50aWFsOgotICAgICAgICAgICAgaWYgKGNyZWRlbnRpYWwpCi0gICAgICAg
ICAgICAgICAgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkudXNlQ3JlZGVudGlh
bChXZWJDb3JlOjpDcmVkZW50aWFsKGNyZWRlbnRpYWwpKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+bGlzdGVuZXIoKS51c2VDcmVk
ZW50aWFsKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBjcmVkZW50aWFsID8gV2ViQ29yZTo6Q3JlZGVudGlh
bChjcmVkZW50aWFsKSA6IFdlYkNvcmU6OkNyZWRlbnRpYWwoKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRI
YW5kbGluZzoKLSAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLT5saXN0ZW5lcigp
LnBlcmZvcm1EZWZhdWx0SGFuZGxpbmcoKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
Q2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Ci0gICAgICAgICAgICBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jYW5jZWwoKTsKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90
ZWN0aW9uU3BhY2U6Ci0gICAgICAgICAgICBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+bGlzdGVu
ZXIoKS5yZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSgpOworICAgICAgICAgICAgYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29u
dGludWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVs
dDoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0JKHJldmlzaW9uIDIzNjI4MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAog
I2ltcG9ydCAiQVBJU3RyaW5nLmgiCiAjaW1wb3J0ICJBUElVUkwuaCIKICNpbXBvcnQgIkFQSVdl
YnNpdGVEYXRhU3RvcmUuaCIKKyNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb24uaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2lt
cG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgpAQCAtODQ5LDQzICs4NTAsMzYgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25D
bGllbnQ6OgogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
Pj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5t
X3dlYlZpZXcgcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2U6cmVuZGVyaW5nUHJvZ3Jlc3NFdmVu
dHMobGF5b3V0TWlsZXN0b25lcyldOwogfQogCitzdGF0aWMgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbiB0b0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24oTlNVUkxT
ZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uKQoreworICAgIHN3aXRj
aCAoZGlzcG9zaXRpb24pIHsKKyAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VD
cmVkZW50aWFsOgorICAgICAgICByZXR1cm4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbjo6VXNlQ3JlZGVudGlhbDsKKyAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQ
ZXJmb3JtRGVmYXVsdEhhbmRsaW5nOgorICAgICAgICByZXR1cm4gQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZzsKKyAgICBjYXNlIE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZToKKyAgICAg
ICAgcmV0dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbDsKKyAg
ICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2U6Cisg
ICAgICAgIHJldHVybiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQ
cm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZTsKKyAgICB9CisgICAgW05TRXhjZXB0aW9uIHJhaXNl
Ok5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQgTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uICglbGQpIiwgKGxvbmcpZGlzcG9zaXRpb25dOworfQor
ICAgIAogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQYWdlUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKICAgICBpZiAoIW1fbmF2aWdh
dGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIHJldHVybiBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5saXN0ZW5lcigpLnBlcmZvcm1EZWZhdWx0SGFuZGxpbmco
KTsKKyAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmxpc3RlbmVyKCkuY29t
cGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsKIAogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRl
ID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CiAgICAgaWYg
KCFuYXZpZ2F0aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVybiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5saXN0ZW5lcigpLnBlcmZvcm1EZWZhdWx0SGFuZGxpbmcoKTsKKyAgICAgICAgcmV0dXJu
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhh
bmRsaW5nKTsKIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNr
ZXI6OmNyZWF0ZShuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKICAg
ICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRp
b25EZWxlZ2F0ZS5nZXQoKSkgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOkJsb2NrUHRyPHZvaWQoTlNVUkxTZXNzaW9uQXV0aENo
YWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKik+Ojpmcm9tQ2FsbGFibGUoW2No
YWxsZW5nZSA9IG1ha2VSZWYoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpLCBjaGVja2VyID0gV1RG
TW92ZShjaGVja2VyKV0oTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bv
c2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpIHsKICAgICAgICAgaWYgKGNoZWNr
ZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKLQotICAgICAg
ICBzd2l0Y2ggKGRpc3Bvc2l0aW9uKSB7Ci0gICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENo
YWxsZW5nZVVzZUNyZWRlbnRpYWw6Ci0gICAgICAgICAgICBpZiAoY3JlZGVudGlhbCkKLSAgICAg
ICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkudXNlQ3JlZGVudGlhbChDcmVkZW50aWFs
KGNyZWRlbnRpYWwpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjaGFsbGVu
Z2UtPmxpc3RlbmVyKCkudXNlQ3JlZGVudGlhbChzdGQ6Om51bGxvcHQpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZh
dWx0SGFuZGxpbmc6Ci0gICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkucGVyZm9ybURl
ZmF1bHRIYW5kbGluZygpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBOU1VS
TFNlc3Npb25BdXRoQ2hhbGxlbmdlQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Ci0gICAg
ICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY2FuY2VsKCk7Ci0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0
aW9uU3BhY2U6Ci0gICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkucmVqZWN0UHJvdGVj
dGlvblNwYWNlQW5kQ29udGludWUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRF
eGNlcHRpb24gZm9ybWF0OkAiSW52YWxpZCBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9z
aXRpb24gKCVsZCkiLCAobG9uZylkaXNwb3NpdGlvbl07Ci0gICAgICAgIH0KKyAgICAgICAgY2hh
bGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKHRvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlvbiksIENyZWRlbnRpYWwoY3JlZGVudGlhbCkpOwog
ICAgIH0pLmdldCgpXTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMzYyODEpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQz
LDYgKzM0NDMsNyBAQAogCQk1QzlFNTY4MTFERjdGMDU1MDBDOUVFMzMgLyogV0tXZWJzaXRlUG9s
aWNpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlUG9saWNp
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBOTg1NDkyMTBCRUI1QTAwNTdF
QjZCIC8qIFNhZmVCcm93c2luZ1Jlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTYWZlQnJvd3NpbmdSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUNBOTg1NEIyMTBCRUI3MzAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2FmZUJyb3dzaW5nUmVzdWx0
Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQURERTBEMjE1MUFBMDEw
MDY3RDMwOSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b24uaDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBRkRFNDIyMTMwODQzNTAw
QjFGN0UxIC8qIF9XS0luc3BlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tJbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBRkRFNDMy
MTMwODQzNjAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IF9XS0luc3BlY3Rvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUNBRkRFNDQyMTMwODQzNjAwQjFGN0UxIC8qIF9XS0luc3BlY3RvckludGVybmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvckludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTk1LDYgKzY1OTYsNyBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1N0I0QjQ1QzIwQjUwNDhCMDBE
NEFENzkgLyogY29jb2EgKi8sCisJCQkJNUNBRERFMEQyMTUxQUEwMTAwNjdEMzA5IC8qIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCAqLywKIAkJCQk1MThFOEVGMzE2QjIwOTFD
MDBFOTE0MjkgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcCAqLywKIAkJCQk1MThFOEVGNDE2
QjIwOTFDMDBFOTE0MjkgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLmggKi8sCiAJCQkJNTE4RThF
RjUxNkIyMDkxQzAwRTkxNDI5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiAq
LywK
</data>

          </attachment>
      

    </bug>

</bugzilla>