<?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>182772</bug_id>
          
          <creation_ts>2018-02-13 22:15:23 -0800</creation_ts>
          <short_desc>[WebAuthN] Enable LocalAuthenticator for macOS</short_desc>
          <delta_ts>2019-08-13 15:31:13 -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>WebCore Misc.</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>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>alex.gaynor</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>chris</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>james</cc>
    
    <cc>jbedard</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>jonathan</cc>
    
    <cc>jschoi</cc>
    
    <cc>kieun.shin</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1398966</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-02-13 22:15:23 -0800</bug_when>
    <thetext>Implement macOS corresponding authenticator operations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405837</commentid>
    <comment_count>1</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-03-12 12:28:09 -0700</bug_when>
    <thetext>1. We could use kSecAttrNoLegacy=@YES SPI to enforce macOS Keychain to use the iOS Keychain. Such that we can unify the Keychain behaviors between iOS and macOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450437</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-15 13:41:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/43347920&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538608</commentid>
    <comment_count>3</comment_count>
      <attachid>370494</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-05-23 01:08:11 -0700</bug_when>
    <thetext>Created attachment 370494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538794</commentid>
    <comment_count>4</comment_count>
      <attachid>370522</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-05-23 14:53:52 -0700</bug_when>
    <thetext>Created attachment 370522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538830</commentid>
    <comment_count>5</comment_count>
      <attachid>370522</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-23 16:34:02 -0700</bug_when>
    <thetext>Comment on attachment 370522
Patch

Attachment 370522 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/12272517

New failing tests:
mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-baseline
apiTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538832</commentid>
    <comment_count>6</comment_count>
      <attachid>370531</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-05-23 16:35:03 -0700</bug_when>
    <thetext>Created attachment 370531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558145</commentid>
    <comment_count>7</comment_count>
      <attachid>375459</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-02 14:47:59 -0700</bug_when>
    <thetext>Created attachment 375459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558158</commentid>
    <comment_count>8</comment_count>
      <attachid>375459</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-08-02 15:07:04 -0700</bug_when>
    <thetext>Comment on attachment 375459
Patch

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

&gt; LayoutTests/platform/mac-wk2/TestExpectations:914
&gt; +http/wpt/webauthn/idl.https.html [ Failure ]

Will these ever be Successes in the open source test environment? Maybe we should wait to un-skip then until they have the ability to use the modern keychain?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558160</commentid>
    <comment_count>9</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-08-02 15:21:08 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #8)
&gt; Comment on attachment 375459 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=375459&amp;action=review
&gt; 
&gt; &gt; LayoutTests/platform/mac-wk2/TestExpectations:914
&gt; &gt; +http/wpt/webauthn/idl.https.html [ Failure ]
&gt; 
&gt; Will these ever be Successes in the open source test environment? Maybe we
&gt; should wait to un-skip then until they have the ability to use the modern
&gt; keychain?

I have a Catalina seed install...I&apos;d like to see what this patch does on that before landing it. I know especially that Jiewen was having trouble getting the keychain entitlements working, I&apos;d like to see if we can sort that out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558165</commentid>
    <comment_count>10</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-02 15:25:34 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #8)
&gt; Comment on attachment 375459 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=375459&amp;action=review
&gt; 
&gt; &gt; LayoutTests/platform/mac-wk2/TestExpectations:914
&gt; &gt; +http/wpt/webauthn/idl.https.html [ Failure ]
&gt; 
&gt; Will these ever be Successes in the open source test environment? Maybe we
&gt; should wait to un-skip then until they have the ability to use the modern
&gt; keychain?

Thanks Brent for r+ this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558166</commentid>
    <comment_count>11</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-02 15:25:51 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #9)
&gt; (In reply to Brent Fulgham from comment #8)
&gt; &gt; Comment on attachment 375459 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=375459&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; LayoutTests/platform/mac-wk2/TestExpectations:914
&gt; &gt; &gt; +http/wpt/webauthn/idl.https.html [ Failure ]
&gt; &gt; 
&gt; &gt; Will these ever be Successes in the open source test environment? Maybe we
&gt; &gt; should wait to un-skip then until they have the ability to use the modern
&gt; &gt; keychain?
&gt; 
&gt; I have a Catalina seed install...I&apos;d like to see what this patch does on
&gt; that before landing it. I know especially that Jiewen was having trouble
&gt; getting the keychain entitlements working, I&apos;d like to see if we can sort
&gt; that out.

Thanks Jonathan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558211</commentid>
    <comment_count>12</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-08-02 17:01:51 -0700</bug_when>
    <thetext>Someone broke Catalina builds on the seeds...I will get to this first thing Monday morning. It&apos;s not super urgent because we don&apos;t have any Catalina seed automation yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558782</commentid>
    <comment_count>13</comment_count>
      <attachid>375459</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-08-06 09:12:29 -0700</bug_when>
    <thetext>Comment on attachment 375459
Patch

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

&gt;&gt;&gt;&gt;&gt; LayoutTests/platform/mac-wk2/TestExpectations:914
&gt;&gt;&gt;&gt;&gt; +http/wpt/webauthn/idl.https.html [ Failure ]
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Will these ever be Successes in the open source test environment? Maybe we should wait to un-skip then until they have the ability to use the modern keychain?
&gt;&gt;&gt; 
&gt;&gt;&gt; I have a Catalina seed install...I&apos;d like to see what this patch does on that before landing it. I know especially that Jiewen was having trouble getting the keychain entitlements working, I&apos;d like to see if we can sort that out.
&gt;&gt; 
&gt;&gt; Thanks Brent for r+ this patch.
&gt; 
&gt; Thanks Jonathan.

I tried adopting the same code we use JSC tools, but no luck. 

I think we should change this comment to: &apos;Local authenticator tests require keychain entitlement&apos; or something to that effect....I don&apos;t think we will be able to give that entitlement with adhoc code signing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558860</commentid>
    <comment_count>14</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-06 11:56:16 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #13)
&gt; Comment on attachment 375459 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=375459&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt;&gt; LayoutTests/platform/mac-wk2/TestExpectations:914
&gt; &gt;&gt;&gt;&gt;&gt; +http/wpt/webauthn/idl.https.html [ Failure ]
&gt; &gt;&gt;&gt;&gt; 
&gt; &gt;&gt;&gt;&gt; Will these ever be Successes in the open source test environment? Maybe we should wait to un-skip then until they have the ability to use the modern keychain?
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; I have a Catalina seed install...I&apos;d like to see what this patch does on that before landing it. I know especially that Jiewen was having trouble getting the keychain entitlements working, I&apos;d like to see if we can sort that out.
&gt; &gt;&gt; 
&gt; &gt;&gt; Thanks Brent for r+ this patch.
&gt; &gt; 
&gt; &gt; Thanks Jonathan.
&gt; 
&gt; I tried adopting the same code we use JSC tools, but no luck. 
&gt; 
&gt; I think we should change this comment to: &apos;Local authenticator tests require
&gt; keychain entitlement&apos; or something to that effect....I don&apos;t think we will
&gt; be able to give that entitlement with adhoc code signing.

Sure, I will change the comment to something more clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558867</commentid>
    <comment_count>15</comment_count>
      <attachid>375641</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-06 12:08:57 -0700</bug_when>
    <thetext>Created attachment 375641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558869</commentid>
    <comment_count>16</comment_count>
      <attachid>375641</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-06 12:09:50 -0700</bug_when>
    <thetext>Comment on attachment 375641
Patch

I meant to land-safely...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558880</commentid>
    <comment_count>17</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-08-06 12:52:32 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #16)
&gt; Comment on attachment 375641 [details]
&gt; Patch
&gt; 
&gt; I meant to land-safely...

For future reference, commit queue should be smart enough to understand the &apos;Reviewed by&apos; line in your changelog, you don&apos;t need to r+ through the bugzilla UI (and in fact, I&apos;m actually not sure what that will do)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558883</commentid>
    <comment_count>18</comment_count>
      <attachid>375641</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-06 12:54:50 -0700</bug_when>
    <thetext>Comment on attachment 375641
Patch

Clearing flags on attachment: 375641

Committed r248308: &lt;https://trac.webkit.org/changeset/248308&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558884</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-06 12:54:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558891</commentid>
    <comment_count>20</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-06 13:03:55 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #17)
&gt; (In reply to Jiewen Tan from comment #16)
&gt; &gt; Comment on attachment 375641 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; I meant to land-safely...
&gt; 
&gt; For future reference, commit queue should be smart enough to understand the
&gt; &apos;Reviewed by&apos; line in your changelog, you don&apos;t need to r+ through the
&gt; bugzilla UI (and in fact, I&apos;m actually not sure what that will do)

Thanks. I didn&apos;t know that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558925</commentid>
    <comment_count>21</comment_count>
      <attachid>375641</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-06 14:29:47 -0700</bug_when>
    <thetext>Comment on attachment 375641
Patch

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

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:122
&gt; +            (id)kSecAttrNoLegacy: @YES

This is deprecated and should probably not be used in new code. This broke the build for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558928</commentid>
    <comment_count>22</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-06 14:40:27 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #21)
&gt; Comment on attachment 375641 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=375641&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:122
&gt; &gt; +            (id)kSecAttrNoLegacy: @YES
&gt; 
&gt; This is deprecated and should probably not be used in new code. This broke
&gt; the build for me.

But the new API is only available for iOS 13 and macOS Catalina. I guess we should use ALLOW_DEPRECATED_DECLARATIONS_BEGIN/ALLOW_DEPRECATED_DECLARATIONS_END to guard it for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558929</commentid>
    <comment_count>23</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-06 14:43:01 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #22)
&gt; (In reply to Chris Dumez from comment #21)
&gt; &gt; Comment on attachment 375641 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=375641&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:122
&gt; &gt; &gt; +            (id)kSecAttrNoLegacy: @YES
&gt; &gt; 
&gt; &gt; This is deprecated and should probably not be used in new code. This broke
&gt; &gt; the build for me.
&gt; 
&gt; But the new API is only available for iOS 13 and macOS Catalina. I guess we
&gt; should use
&gt; ALLOW_DEPRECATED_DECLARATIONS_BEGIN/ALLOW_DEPRECATED_DECLARATIONS_END to
&gt; guard it for now.

Sorry, I should probably guard it with OS Versions for the new API as a proper fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558941</commentid>
    <comment_count>24</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-06 15:13:07 -0700</bug_when>
    <thetext>Build fix:
Committed r248319: &lt;https://trac.webkit.org/changeset/248319&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558951</commentid>
    <comment_count>25</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-06 15:41:05 -0700</bug_when>
    <thetext>Committed r248324: &lt;https://trac.webkit.org/changeset/248324&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558977</commentid>
    <comment_count>26</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-06 16:21:06 -0700</bug_when>
    <thetext>Committed r248325: &lt;https://trac.webkit.org/changeset/248325&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559012</commentid>
    <comment_count>27</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-08-06 17:09:37 -0700</bug_when>
    <thetext>There are 8 webauthn tests failing an assertion on debug bots after r248308:

https://build.webkit.org/results/Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/r248311%20(8877)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560982</commentid>
    <comment_count>28</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-08-13 15:31:13 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #27)
&gt; There are 8 webauthn tests failing an assertion on debug bots after r248308:
&gt; 
&gt; https://build.webkit.org/results/
&gt; Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/r248311%20(8877)/results.html
Skipped these tests in https://trac.webkit.org/changeset/248639/webkit since they aren&apos;t expected to work in open source.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370494</attachid>
            <date>2019-05-23 01:08:11 -0700</date>
            <delta_ts>2019-05-23 14:53:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182772-20190523010810.patch</filename>
            <type>text/plain</type>
            <size>31593</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI3OGViYzBjZjY1ZTM0MDJmZDFkNDE1
OTE5Y2E5MTFhZjk0MTJlYmYuLmIxMzU0ODEzZWMzNzZjZjUyOWNkMmMyNmQ4ODJlYWJmYmQxZWVj
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDUtMjMgIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aE5dIEVuYWJsZSBMb2NhbEF1dGhlbnRp
Y2F0b3IgZm9yIG1hY09TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODI3NzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMzQ3OTIwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3Jt
Lmg6CisgICAgICAgIEFkZHMgSEFWRV9ERVZJQ0VfSURFTlRJVFkuCisKIDIwMTktMDUtMjEgIFJv
c3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFtQbGF5U3Rh
dGlvbl0gRG9uJ3QgY2FsbCBmY250bC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzc3NmQ2ZDQ5NDE3OTBjOTQ0Mjlh
ZjY1NWEyMjcyMDM4NjVmMjMzNy4uODlmNzI1ZTRlM2RkZTQyZmMwZDY0ODk2YmUyYjIyMzA3ZTE1
ZDE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxOS0wNS0yMyAgSmlld2VuIFRhbiAg
PGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gRW5hYmxlIExvY2Fs
QXV0aGVudGljYXRvciBmb3IgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4Mjc3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNDc5MjA+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBlbmFibGVzIExvY2FsQXV0aGVudGljYXRvciBmb3IgbWFjT1MuIFRoZSBtYWpvcml0eQor
ICAgICAgICBvZiB0aGlzIHBhdGNoIGlzIHRvIHR3ZWFrIG1hY09TIGtleWNoYWluIHRvIHVzZSB0
aGUgbW9kZXJuIG9uZS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZp
ZzoKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvQ29jb2EvRGV2aWNlSWRlbnRpdHlTUEkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNh
dG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDo6dG9W
ZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50
aWFsKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VD
cmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRo
ZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZCk6CisgICAgICAg
IChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNv
bnNlbnRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxDb25uZWN0aW9uOjpnZXRV
c2VyQ29uc2VudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6Z2V0
QXR0ZXN0YXRpb24gY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbFNlcnZpY2UubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU2VydmljZTo6
aXNBdmFpbGFibGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tMb2NhbENvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6Ok1vY2tMb2NhbENvbm5l
Y3Rpb246OmdldEF0dGVzdGF0aW9uIGNvbnN0KToKKwogMjAxOS0wNS0yMiAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtQYXN0ZV0gQWRkIHN1cHBvcnQgZm9yIHBy
ZWZlcnJlZCBwcmVzZW50YXRpb24gc2l6ZSB3aGVuIHBhc3RpbmcgYW4gaW1hZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CmluZGV4IDQ0N2JiMThhOGYwMjhjMjk1MDFkMzkzMWZiOTU1N2E4ZDUzYTI2MDcuLjU3YTFjZDNi
MzZhNGMzMDNiZDY1ODg1MzI5OWNiOTUxYzdkYmZmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTU1OSwz
ICsxNTU5LDYgQEAKICNkZWZpbmUgSEFWRV9DT1JFVEVYVF9BVVRPX09QVElDQUxfU0laSU5HIDEK
ICNlbmRpZgogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lN
VUxBVE9SKSkKKyNkZWZpbmUgSEFWRV9ERVZJQ0VfSURFTlRJVFkgMQorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZyBiL1NvdXJj
ZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnCmluZGV4IGZlZTE0NzkxYTgx
ZjJmMzZhMjVkM2FiNmI3ZmE1OTczMDJlNzJiNTYuLjdlMDRlMTBlNGZiZjg4ZjkyMTIzZTA0ZGVi
MDU4MjZlMDBmMzMxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMv
V2ViS2l0LnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0
LnhjY29uZmlnCkBAIC0xNjUsOCArMTY1LDEwIEBAIFdLX0ZSQU1FV09SS19IRUFERVJfUE9TVFBS
T0NFU1NJTkdfRElTQUJMRURbc2RrPWlwaG9uZSoxMi4qXSA9IFlFUzsKIFdLX1JFTE9DQVRBQkxF
X0ZSQU1FV09SS19MREZMQUdTID0gJChXS19SRUxPQ0FUQUJMRV9GUkFNRVdPUktfTERGTEFHU18k
KFdLX1JFTE9DQVRBQkxFX0ZSQU1FV09SS1MpKTsKIFdLX1JFTE9DQVRBQkxFX0ZSQU1FV09SS19M
REZMQUdTX1lFUyA9IC1XbCwtbm90X2Zvcl9keWxkX3NoYXJlZF9jYWNoZTsKIAotV0tfSEFWRV9E
RVZJQ0VfSURFTlRJVFkgPSAkKFdLX0hBVkVfREVWSUNFX0lERU5USVRZXyQoUExBVEZPUk1fTkFN
RSkpOworV0tfSEFWRV9ERVZJQ0VfSURFTlRJVFkgPSAkKFdLX0hBVkVfREVWSUNFX0lERU5USVRZ
XyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfSEFWRV9ERVZJQ0VfSURFTlRJVFlfaXBob25lb3Mg
PSBZRVM7CitXS19IQVZFX0RFVklDRV9JREVOVElUWV9tYWNvc3ggPSAkKFdLX0hBVkVfREVWSUNF
X0lERU5USVRZJChXS19NQUNPU18xMDE0KSk7CitXS19IQVZFX0RFVklDRV9JREVOVElUWV9NQUNP
U19TSU5DRV8xMDE0ID0gWUVTOwogCiBXS19IQVZFX1VSTF9GT1JNQVRUSU5HID0gJChXS19IQVZF
X1VSTF9GT1JNQVRUSU5HXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfSEFWRV9VUkxfRk9STUFU
VElOR19pcGhvbmVvcyA9ICQoV0tfSEFWRV9VUkxfRk9STUFUVElORyQoV0tfSU9TXzEyKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9EZXZpY2VJZGVudGl0
eVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvRGV2aWNlSWRlbnRpdHlT
UEkuaAppbmRleCAwMzIwM2UyNjA0MzIyYWE3YTI5ZDE4MzNlZGI3NTRiOWNjMjM1ZGNhLi43NDc3
ZTQwOTcyMWJlYTM2NzgxMTE0NWNjY2FiZmI2MDZkNTM5OGIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9EZXZpY2VJZGVudGl0eVNQSS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0RldmljZUlkZW50aXR5U1BJLmgKQEAgLTI3LDcg
KzI3LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCisjaWYgSEFWRShERVZJQ0Vf
SURFTlRJVFkpCiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCkBAIC01NCw2ICs1NCw2
IEBAIHZvaWQgRGV2aWNlSWRlbnRpdHlJc3N1ZUNsaWVudENlcnRpZmljYXRlV2l0aENvbXBsZXRp
b24oZGlzcGF0Y2hfcXVldWVfdCBfTnVsbGFiCiAKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElP
U19GQU1JTFlfU0lNVUxBVE9SKQorI2VuZGlmIC8vIEhBVkUoREVWSUNFX0lERU5USVRZKQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRvci5tbQppbmRleCA2OWZmZWRiYWNjNzk0ZTkyNjhjYTg2MzU3YzliMjg0N2FkYjdlMmE2
Li5kYTQyZjQ0NjE1MmMzYjE1ZDc4YTAwNzBkODRjMWRhOTc5MThiODhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhl
bnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5B
QkxFKFdFQl9BVVRITikKIAogI2ltcG9ydCA8U2VjdXJpdHkvU2VjSXRlbS5oPgorI2ltcG9ydCA8
U2VjdXJpdHkvU2VjSXRlbVByaXYuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ0JPUldyaXRlci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1B1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaD4KQEAgLTU0LDcgKzU1LDYgQEAgY29uc3Qg
dWludDhfdCBnZXRBc3NlcnRpb25GbGFncyA9IDBiMDAwMDAxMDE7IC8vIFVQIGFuZCBVViBhcmUg
c2V0LgogLy8gQ3JlZGVudGlhbCBJRCBpcyBjdXJyZW50bHkgU0hBLTEgb2YgdGhlIGNvcnJlc3Bv
bmRpbmcgcHVibGljIGtleS4KIGNvbnN0IHVpbnQxNl90IGNyZWRlbnRpYWxJZExlbmd0aCA9IDIw
OwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBpbmxpbmUgYm9vbCBlbXB0eVRy
YW5zcG9ydHNPckNvbnRhaW4oY29uc3QgVmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiB0
cmFuc3BvcnRzLCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0IHRhcmdldCkKIHsKICAgICByZXR1cm4g
dHJhbnNwb3J0cy5pc0VtcHR5KCkgPyB0cnVlIDogdHJhbnNwb3J0cy5jb250YWlucyh0YXJnZXQp
OwpAQCAtNzgsNyArNzgsNiBAQCBzdGF0aWMgaW5saW5lIFZlY3Rvcjx1aW50OF90PiB0b1ZlY3Rv
cihOU0RhdGEgKmRhdGEpCiAgICAgcmVzdWx0LmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGgpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIH0gLy8gTG9jYWxBdXRoZW50
aWNhdG9ySW50ZXJuYWwKIApAQCAtODksMTIgKzg4LDEwIEBAIExvY2FsQXV0aGVudGljYXRvcjo6
TG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJlZjxMb2NhbENvbm5lY3Rpb24+JiYgY29ubmVjdGlv
bikKIAogdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKIHsKLSAgICAv
LyBGSVhNRSgxODI3NzIpCiAgICAgdXNpbmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvcklu
dGVybmFsOwogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpJbml0KTsKICAgICBtX3N0YXRl
ID0gU3RhdGU6OlJlcXVlc3RSZWNlaXZlZDsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJh
dXRobi8jb3AtbWFrZS1jcmVkIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KICAgICAvLyBTa2lwIFN0
ZXAgNC01IGFzIHJlcXVpcmVSZXNpZGVudEtleSBhbmQgcmVxdWlyZVVzZXJWZXJpZmljYXRpb24g
YXJlIGVuZm9yY2VkLgogICAgIC8vIFNraXAgU3RlcCA5IGFzIGV4dGVuc2lvbnMgYXJlIG5vdCBz
dXBwb3J0ZWQgeWV0LgpAQCAtMTIyLDYgKzExOSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9y
OjptYWtlQ3JlZGVudGlhbCgpCiAgICAgICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogcmVxdWVz
dERhdGEoKS5jcmVhdGlvbk9wdGlvbnMucnAuaWQsCiAgICAgICAgICAgICAoaWQpa1NlY1JldHVy
bkF0dHJpYnV0ZXM6IEBZRVMsCiAgICAgICAgICAgICAoaWQpa1NlY01hdGNoTGltaXQ6IChpZClr
U2VjTWF0Y2hMaW1pdEFsbCwKKyAgICAgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVT
CiAgICAgICAgIH07CiAgICAgICAgIENGVHlwZVJlZiBhdHRyaWJ1dGVzQXJyYXlSZWYgPSBudWxs
cHRyOwogICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnksICZhdHRyaWJ1dGVzQXJyYXlSZWYpOwpAQCAtMTUy
LDE4ICsxNTAsMTUgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkK
ICAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50
ZWQoY29uc2VudCk7CiAgICAgfTsKICAgICBtX2Nvbm5lY3Rpb24tPmdldFVzZXJDb25zZW50KAot
ICAgICAgICAiQWxsb3cgIiArIHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLnJwLmlkICsg
IiB0byBjcmVhdGUgYSBwdWJsaWMga2V5IGNyZWRlbnRpYWwgZm9yICIgKyByZXF1ZXN0RGF0YSgp
LmNyZWF0aW9uT3B0aW9ucy51c2VyLm5hbWUsCisgICAgICAgICJhbGxvdyAiICsgcmVxdWVzdERh
dGEoKS5jcmVhdGlvbk9wdGlvbnMucnAuaWQgKyAiIHRvIGNyZWF0ZSBhIHB1YmxpYyBrZXkgY3Jl
ZGVudGlhbCBmb3IgIiArIHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLnVzZXIubmFtZSwK
ICAgICAgICAgV1RGTW92ZShjYWxsYmFjaykpOwotI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFN
SUxZKQogfQogCiB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlh
bEFmdGVyVXNlckNvbnNlbnRlZChMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50IGNvbnNlbnQp
CiB7Ci0gICAgLy8gRklYTUUoMTgyNzcyKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpS
ZXF1ZXN0UmVjZWl2ZWQpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRlZDsKIAot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGNvbnNlbnQgPT0gTG9jYWxDb25uZWN0
aW9uOjpVc2VyQ29uc2VudDo6Tm8pIHsKICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9u
RGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0p
OwogICAgICAgICByZXR1cm47CkBAIC0xNzYsNiArMTcxLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRp
Y2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoTG9jYWxDb25u
ZWN0aW8KICAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKICAgICAgICAg
KGlkKWtTZWNBdHRyTGFiZWw6IHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLnJwLmlkLAog
ICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZzogW05TRGF0YSBkYXRhV2l0aEJ5dGVz
OnJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLnVzZXIuaWRWZWN0b3IuZGF0YSgpIGxlbmd0
aDpyZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy51c2VyLmlkVmVjdG9yLnNpemUoKV0sCisg
ICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCiAgICAgfTsKICAgICBPU1N0YXR1cyBz
dGF0dXMgPSBTZWNJdGVtRGVsZXRlKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZGVsZXRlUXVl
cnkpOwogICAgIGlmIChzdGF0dXMgJiYgc3RhdHVzICE9IGVyclNlY0l0ZW1Ob3RGb3VuZCkgewpA
QCAtMTkyLDE4ICsxODgsMTUgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFr
ZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoTG9jYWxDb25uZWN0aW8KICAgICAgICAgd2Vh
a1RoaXMtPmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKHByaXZhdGVLZXksIGNl
cnRpZmljYXRlcywgZXJyb3IpOwogICAgIH07CiAgICAgbV9jb25uZWN0aW9uLT5nZXRBdHRlc3Rh
dGlvbihyZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5pZCwgcmVxdWVzdERhdGEoKS5j
cmVhdGlvbk9wdGlvbnMudXNlci5uYW1lLCByZXF1ZXN0RGF0YSgpLmhhc2gsIFdURk1vdmUoY2Fs
bGJhY2spKTsKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIH0KIAogdm9pZCBMb2Nh
bEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tl
eVJlZiBwcml2YXRlS2V5LCBOU0FycmF5ICpjZXJ0aWZpY2F0ZXMsIE5TRXJyb3IgKmVycm9yKQog
ewotICAgIC8vIEZJWE1FKDE4Mjc3MikKICAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRoZW50
aWNhdG9ySW50ZXJuYWw7CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6VXNlckNvbnNl
bnRlZCk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBdHRlc3RlZDsKIAotI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3Qg
YXR0ZXN0OiAlQCIsIGVycm9yKTsKICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0
YSB7IFVua25vd25FcnJvciwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwpAQCAtMjI3
LDEzICsyMjAsMTQgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRl
bnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJlZiBwcml2YXRlS2UKICAgICAvLyBGSVhNRSgxODM1
MzMpOiBEZXZpY2VJZGVudGl0eS5GcmFtZXdvcmsgd291bGQgaW5zZXJ0IGNlcnRpZmljYXRlcyBp
bnRvIEtleWNoYWluIGFzIHdlbGwuIFdlIHNob3VsZCB1cGRhdGUgdGhvc2UgYXMgd2VsbC4KICAg
ICBWZWN0b3I8dWludDhfdD4gY3JlZGVudGlhbElkOwogICAgIHsKLSAgICAgICAgLy8gLXJrIGlz
IGFkZGVkIGJ5IERldmljZUlkZW50aXR5LkZyYW1ld29yay4KLSAgICAgICAgU3RyaW5nIGxhYmVs
ID0gbWFrZVN0cmluZyhyZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy51c2VyLm5hbWUsICJA
IiwgcmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMucnAuaWQsICItcmsiKTsKKyAgICAgICAg
Ly8gLXJrLXVjcnQgaXMgYWRkZWQgYnkgRGV2aWNlSWRlbnRpdHkuRnJhbWV3b3JrLgorICAgICAg
ICBTdHJpbmcgbGFiZWwgPSBtYWtlU3RyaW5nKHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25z
LnVzZXIubmFtZSwgIkAiLCByZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5pZCwgIi1y
ay11Y3J0Iik7CiAgICAgICAgIE5TRGljdGlvbmFyeSAqY3JlZGVudGlhbElkUXVlcnkgPSBAewog
ICAgICAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKICAgICAgICAgICAg
IChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCiAgICAg
ICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogbGFiZWwsCi0gICAgICAgICAgICAoaWQpa1NlY1Jl
dHVybkF0dHJpYnV0ZXM6IEBZRVMKKyAgICAgICAgICAgIChpZClrU2VjUmV0dXJuQXR0cmlidXRl
czogQFlFUywKKyAgICAgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCiAgICAgICAg
IH07CiAgICAgICAgIENGVHlwZVJlZiBhdHRyaWJ1dGVzUmVmID0gbnVsbHB0cjsKICAgICAgICAg
T1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9u
YXJ5UmVmKWNyZWRlbnRpYWxJZFF1ZXJ5LCAmYXR0cmlidXRlc1JlZik7CkBAIC0yNTEsNiArMjQ1
LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRl
ckF0dGVzdGVkKFNlY0tleVJlZiBwcml2YXRlS2UKICAgICAgICAgICAgIChpZClrU2VjQ2xhc3M6
IChpZClrU2VjQ2xhc3NLZXksCiAgICAgICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlk
KWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAogICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGlj
YXRpb25MYWJlbDogbnNBdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdLAor
ICAgICAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKICAgICAgICAgfTsKICAgICAg
ICAgTlNEaWN0aW9uYXJ5ICp1cGRhdGVQYXJhbXMgPSBAewogICAgICAgICAgICAgKGlkKWtTZWNB
dHRyTGFiZWw6IHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLnJwLmlkLApAQCAtMzI3LDE3
ICszMjIsMTQgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRp
YWxBZnRlckF0dGVzdGVkKFNlY0tleVJlZiBwcml2YXRlS2UKICAgICBhdXRvIGF0dGVzdGF0aW9u
T2JqZWN0ID0gYnVpbGRBdHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF1dGhEYXRhKSwgIkFwcGxl
IiwgV1RGTW92ZShhdHRlc3RhdGlvblN0YXRlbWVudE1hcCkpOwogCiAgICAgcmVjZWl2ZVJlc3Bv
bmQoUHVibGljS2V5Q3JlZGVudGlhbERhdGEgeyBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNyZWRlbnRp
YWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5zaXplKCkpLCB0cnVlLCBudWxscHRyLCBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKGF0dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgYXR0ZXN0YXRpb25PYmplY3Qu
c2l6ZSgpKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGOjpudWxsb3B0IH0pOwotI2Vu
ZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogfQogCiB2b2lkIExvY2FsQXV0aGVudGljYXRv
cjo6Z2V0QXNzZXJ0aW9uKCkKIHsKLSAgICAvLyBGSVhNRSgxODI3NzIpCiAgICAgdXNpbmcgbmFt
ZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsOwogICAgIEFTU0VSVChtX3N0YXRlID09
IFN0YXRlOjpJbml0KTsKICAgICBtX3N0YXRlID0gU3RhdGU6OlJlcXVlc3RSZWNlaXZlZDsKIAot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRz
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jb3AtZ2V0LWFzc2VydGlvbiBhcyBvZiA1
IERlY2VtYmVyIDIwMTcuCiAgICAgLy8gU2tpcCBTdGVwIDIgYXMgcmVxdWlyZVVzZXJWZXJpZmlj
YXRpb24gaXMgZW5mb3JjZWQuCiAgICAgLy8gU2tpcCBTdGVwIDggYXMgZXh0ZW5zaW9ucyBhcmUg
bm90IHN1cHBvcnRlZCB5ZXQuCkBAIC0zNTUsNyArMzQ3LDggQEAgdm9pZCBMb2NhbEF1dGhlbnRp
Y2F0b3I6OmdldEFzc2VydGlvbigpCiAgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQp
a1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCiAgICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiByZXF1
ZXN0RGF0YSgpLnJlcXVlc3RPcHRpb25zLnJwSWQsCiAgICAgICAgIChpZClrU2VjUmV0dXJuQXR0
cmlidXRlczogQFlFUywKLSAgICAgICAgKGlkKWtTZWNNYXRjaExpbWl0OiAoaWQpa1NlY01hdGNo
TGltaXRBbGwKKyAgICAgICAgKGlkKWtTZWNNYXRjaExpbWl0OiAoaWQpa1NlY01hdGNoTGltaXRB
bGwsCisgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCiAgICAgfTsKICAgICBDRlR5
cGVSZWYgYXR0cmlidXRlc0FycmF5UmVmID0gbnVsbHB0cjsKICAgICBPU1N0YXR1cyBzdGF0dXMg
PSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnksICZh
dHRyaWJ1dGVzQXJyYXlSZWYpOwpAQCAtNDAxLDIyICszOTQsMTkgQEAgdm9pZCBMb2NhbEF1dGhl
bnRpY2F0b3I6OmdldEFzc2VydGlvbigpCiAgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZUdldEFz
c2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChjb25zZW50LCBjb250ZXh0LCBjcmVkZW50aWFsSWQs
IHVzZXJoYW5kbGUpOwogICAgIH07CiAgICAgTlNEYXRhICppZERhdGEgPSBzZWxlY3RlZENyZWRl
bnRpYWxBdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXTsKLSAgICBTdHJpbmdW
aWV3IGlkU3RyaW5nVmlldyB7IHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4oW2lkRGF0YSBieXRl
c10pLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oW2lkRGF0YSBsZW5ndGhdKSB9OworICAgIFN0cmlu
Z1ZpZXcgaWRTdHJpbmdWaWV3IHsgc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihbaWREYXRhIGJ5
dGVzXSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihbaWREYXRhIGxlbmd0aF0pIH07CiAgICAgbV9j
b25uZWN0aW9uLT5nZXRVc2VyQ29uc2VudCgKLSAgICAgICAgbWFrZVN0cmluZygiTG9nIGludG8g
IiwgcmVxdWVzdERhdGEoKS5yZXF1ZXN0T3B0aW9ucy5ycElkLCAiIHdpdGggIiwgaWRTdHJpbmdW
aWV3LCAnLicpLAorICAgICAgICBtYWtlU3RyaW5nKCJsb2cgaW50byAiLCByZXF1ZXN0RGF0YSgp
LnJlcXVlc3RPcHRpb25zLnJwSWQsICIgd2l0aCAiLCBpZFN0cmluZ1ZpZXcpLAogICAgICAgICAo
X19icmlkZ2UgU2VjQWNjZXNzQ29udHJvbFJlZilzZWxlY3RlZENyZWRlbnRpYWxBdHRyaWJ1dGVz
WyhpZClrU2VjQXR0ckFjY2Vzc0NvbnRyb2xdLAogICAgICAgICBXVEZNb3ZlKGNhbGxiYWNrKSk7
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIH0KIAogdm9pZCBMb2NhbEF1dGhlbnRp
Y2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVj
dGlvbjo6VXNlckNvbnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250ZXh0LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VyaGFu
ZGxlKQogewotICAgIC8vIEZJWE1FKDE4Mjc3MikKICAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxB
dXRoZW50aWNhdG9ySW50ZXJuYWw7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlcXVl
c3RSZWNlaXZlZCk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyQ29uc2VudGVkOwogCi0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoY29uc2VudCA9PSBMb2NhbENvbm5lY3Rpb246
OlVzZXJDb25zZW50OjpObykgewogICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRh
IHsgTm90QWxsb3dlZEVycm9yLCAiQ291bGRuJ3QgZ2V0IHVzZXIgY29uc2VudC4iX3MgfSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTQzNyw2ICs0MjcsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRv
cjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25zZW50ZWQoTG9jYWxDb25uZWN0aW9u
OgogICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbDogW05TRGF0YSBkYXRh
V2l0aEJ5dGVzOmNyZWRlbnRpYWxJZC5kYXRhKCkgbGVuZ3RoOmNyZWRlbnRpYWxJZC5zaXplKCld
LAogICAgICAgICAgICAgKGlkKWtTZWNVc2VBdXRoZW50aWNhdGlvbkNvbnRleHQ6IGNvbnRleHQs
CiAgICAgICAgICAgICAoaWQpa1NlY1JldHVyblJlZjogQFlFUywKKyAgICAgICAgICAgIChpZClr
U2VjQXR0ck5vTGVnYWN5OiBAWUVTCiAgICAgICAgIH07CiAgICAgICAgIENGVHlwZVJlZiBwcml2
YXRlS2V5UmVmID0gbnVsbHB0cjsKICAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNv
cHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmcHJpdmF0ZUtleVJl
Zik7CkBAIC00NjQsNyArNDU1LDYgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVl
R2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjoKIAogICAgIC8v
IFN0ZXAgMTMuCiAgICAgcmVjZWl2ZVJlc3BvbmQoUHVibGljS2V5Q3JlZGVudGlhbERhdGEgeyBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKGNyZWRlbnRpYWxJZC5kYXRhKCksIGNyZWRlbnRpYWxJZC5zaXpl
KCkpLCBmYWxzZSwgbnVsbHB0ciwgbnVsbHB0ciwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoRGF0
YS5kYXRhKCksIGF1dGhEYXRhLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoc2lnbmF0dXJl
LmRhdGEoKSwgc2lnbmF0dXJlLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUodXNlcmhhbmRs
ZS5kYXRhKCksIHVzZXJoYW5kbGUuc2l6ZSgpKSwgV1RGOjpudWxsb3B0IH0pOwotI2VuZGlmIC8v
ICFQTEFURk9STShJT1NfRkFNSUxZKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbQppbmRleCA5NDQ3MDVjMjY5Y2IxMzU2OTU4YmY3
NDY1ZGJmYzkwZDMwMDEyNTY1Li45Yzk4OTY5MTAzMDllM2U3MGQ1ZDFmODI1ZTFmYzI2ZTg5M2Y4
OGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tCkBAIC0zOSw4ICszOSw2
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIExvY2FsQ29ubmVjdGlvbjo6Z2V0VXNlckNv
bnNlbnQoY29uc3QgU3RyaW5nJiByZWFzb24sIFVzZXJDb25zZW50Q2FsbGJhY2smJiBjb21wbGV0
aW9uSGFuZGxlcikgY29uc3QKIHsKLSAgICAvLyBGSVhNRSgxODI3NzIpCi0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdE5TKFthbGxvY0xBQ29udGV4dElu
c3RhbmNlKCkgaW5pdF0pOwogICAgIGF1dG8gcmVwbHkgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChCT09MIHN1Y2Nlc3MsIE5T
RXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CkBAIC01NSwxMyArNTMsMTAgQEAgdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25z
ZW50KGNvbnN0IFN0cmluZyYgcmVhc29uLCBVc2VyQ29uc2VudENhbGxiYWNrJiYKICAgICAgICAg
fSk7CiAgICAgfSk7CiAgICAgW2NvbnRleHQgZXZhbHVhdGVQb2xpY3k6TEFQb2xpY3lEZXZpY2VP
d25lckF1dGhlbnRpY2F0aW9uV2l0aEJpb21ldHJpY3MgbG9jYWxpemVkUmVhc29uOnJlYXNvbiBy
ZXBseTpyZXBseS5nZXQoKV07Ci0jZW5kaWYKIH0KIAogdm9pZCBMb2NhbENvbm5lY3Rpb246Omdl
dFVzZXJDb25zZW50KGNvbnN0IFN0cmluZyYgcmVhc29uLCBTZWNBY2Nlc3NDb250cm9sUmVmIGFj
Y2Vzc0NvbnRyb2wsIFVzZXJDb25zZW50Q29udGV4dENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRs
ZXIpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUUoMTgyNzcyKQotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgYXV0byBjb250ZXh0ID0gYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5jZSgp
IGluaXRdKTsKICAgICBhdXRvIHJlcGx5ID0gbWFrZUJsb2NrUHRyKFtjb250ZXh0LCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9PTCBzdWNjZXNzLCBO
U0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwpAQCAtNzYsMTMgKzcxLDExIEBAIHZvaWQgTG9jYWxDb25uZWN0aW9uOjpnZXRVc2VyQ29u
c2VudChjb25zdCBTdHJpbmcmIHJlYXNvbiwgU2VjQWNjZXNzQ29udHJvbFJlZiBhCiAgICAgICAg
IH0pOwogICAgIH0pOwogICAgIFtjb250ZXh0IGV2YWx1YXRlQWNjZXNzQ29udHJvbDphY2Nlc3ND
b250cm9sIG9wZXJhdGlvbjpMQUFjY2Vzc0NvbnRyb2xPcGVyYXRpb25Vc2VLZXlTaWduIGxvY2Fs
aXplZFJlYXNvbjpyZWFzb24gcmVwbHk6cmVwbHkuZ2V0KCldOwotI2VuZGlmCiB9CiAKIHZvaWQg
TG9jYWxDb25uZWN0aW9uOjpnZXRBdHRlc3RhdGlvbihjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0
IFN0cmluZyYgdXNlcm5hbWUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgQXR0ZXN0YXRp
b25DYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewotICAgIC8vIERldmljZUlk
ZW50aXR5LkZyYW1ld29yayBpcyBub3QgYXZhbGlhYmxlIGluIGlPUyBzaW11bGF0b3IuCi0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQor
I2lmIEhBVkUoREVWSUNFX0lERU5USVRZKQogICAgIC8vIEFwcGxlIEF0dGVzdGF0aW9uCiAgICAg
QVNTRVJUKGhhc2guc2l6ZSgpIDw9IDMyKTsKIApAQCAtMTE0LDcgKzEwNyw3IEBAIHZvaWQgTG9j
YWxDb25uZWN0aW9uOjpnZXRBdHRlc3RhdGlvbihjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFN0
cmluZyYgdXNlcm5hbWUsCiAKICAgICAvLyBGSVhNRSgxODM2NTIpOiBSZWR1Y2UgcHJvbXB0IGZv
ciBiaW9tZXRyaWNzCiAgICAgRGV2aWNlSWRlbnRpdHlJc3N1ZUNsaWVudENlcnRpZmljYXRlV2l0
aENvbXBsZXRpb24oZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgb3B0aW9ucywgbWFrZUJsb2Nr
UHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5nZXQoKSk7Ci0jZW5kaWYKKyNlbmRpZiAv
LyBIQVZFKERFVklDRV9JREVOVElUWSkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9M
b2NhbFNlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0KaW5kZXggZjQwNjk2Y2QxMTJiMDc3NDlhNzVkNzdjZGMy
NzE3OTdkMDBmYWE4OC4uMzI0OWIwZTAxNzY3MjU2ZmY4ZTM0NDdkNmY0NGY1YTgwYWMxN2Y4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTG9jYWxTZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbQpAQCAtNDEsMTIgKzQxLDEwIEBAIExvY2Fs
U2VydmljZTo6TG9jYWxTZXJ2aWNlKE9ic2VydmVyJiBvYnNlcnZlcikKIHsKIH0KIAorLy8gRklY
TUUocmRhcjovL3Byb2JsZW0vNTEwNDg1NDIpCiBib29sIExvY2FsU2VydmljZTo6aXNBdmFpbGFi
bGUoKQogewotLy8gRklYTUUoMTgyNzcyKQotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IHJldHVybiBmYWxzZTsKLSNlbHNlCisgICAgLy8gRklYTUUoMTk4MTc2KQogICAgIGlmICghV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBdXRoZW50
aWNhdGlvbkxvY2FsQXV0aGVudGljYXRvckVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC01Nyw3ICs1NSw2IEBAIGJvb2wgTG9jYWxTZXJ2aWNlOjppc0F2YWlsYWJsZSgpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKIH0K
IAogdm9pZCBMb2NhbFNlcnZpY2U6OnN0YXJ0RGlzY292ZXJ5SW50ZXJuYWwoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9j
YWxDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCmluZGV4IGNhNzY1ZTU4MmE2YmI4NjQ2ZjNl
MDE3ZGI3NjQ2NjY5MmViNjE3YTcuLjg2ZTA3OTBkMTY4MDEyMWVlN2UxZmY3YmE2OTc2NjUxNGFk
ZjViOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KQEAgLTky
LDcgKzkyLDcgQEAgdm9pZCBNb2NrTG9jYWxDb25uZWN0aW9uOjpnZXRBdHRlc3RhdGlvbihjb25z
dCBTdHJpbmcmIHJwSWQsIGNvbnN0IFN0cmluZyYgdXNlcm4KICAgICAgICAgQVNTRVJUKCFlcnJv
clJlZik7CiAKICAgICAgICAgLy8gTW9jayB3aGF0IERldmljZUlkZW50aXR5IHdvdWxkIGRvLgot
ICAgICAgICBTdHJpbmcgbGFiZWwgPSBtYWtlU3RyaW5nKHVzZXJuYW1lLCAiQCIsIHJwSWQsICIt
cmsiKTsKKyAgICAgICAgU3RyaW5nIGxhYmVsID0gbWFrZVN0cmluZyh1c2VybmFtZSwgIkAiLCBy
cElkLCAiLXJrLXVjcnQiKTsKICAgICAgICAgTlNEaWN0aW9uYXJ5KiBhZGRRdWVyeSA9IEB7CiAg
ICAgICAgICAgICAoaWQpa1NlY1ZhbHVlUmVmOiAoaWQpa2V5LmdldCgpLAogICAgICAgICAgICAg
KGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjYTU3MmI4ZDViZGEyODliNTNkOTRhNWYwOTlk
NDAzYjI2Nzg2ZDA0Li5kYTZmZDNhMjUwMDNiOWJhZTg1OWVjYjcxYzM1OWVhMTFmZDQwNTBlIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMTktMDUtMjMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4K
KworICAgICAgICBbV2ViQXV0aE5dIEVuYWJsZSBMb2NhbEF1dGhlbnRpY2F0b3IgZm9yIG1hY09T
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI3NzIK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMzQ3OTIwPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBlbnRpdGxlbWVudCBmaWxlIHRvIFdl
YktpdFRlc3RSdW5uZXIgc3VjaCB0aGF0IGl0IGNhbiBhY2Nlc3MKKyAgICAgICAgdGhlIG1vZGVy
biBtYWNPUyBrZXljaGFpbi4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJh
dGlvbnMvV2ViS2l0VGVzdFJ1bm5lci5lbnRpdGxlbWVudHM6IEFkZGVkLgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvV2ViS2l0VGVzdFJ1bm5lci54Y2NvbmZpZzoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250
cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjphZGRUZXN0S2V5
VG9LZXljaGFpbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhblVwS2V5Y2hh
aW4pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6a2V5RXhpc3RzSW5LZXljaGFpbik6
CisKIDIwMTktMDUtMjIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbUGFzdGVdIEFkZCBzdXBwb3J0IGZvciBwcmVmZXJyZWQgcHJlc2VudGF0aW9uIHNpemUgd2hl
biBwYXN0aW5nIGFuIGltYWdlCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0Nv
bmZpZ3VyYXRpb25zL1dlYktpdFRlc3RSdW5uZXIuZW50aXRsZW1lbnRzIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVubmVyLmVudGl0bGVtZW50cwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xZmI0ODI3Nzk1NjU5Nzk0ZTg2MGJmZWMxYjI2NDA3NGExMWMyNDkyCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9XZWJL
aXRUZXN0UnVubmVyLmVudGl0bGVtZW50cwpAQCAtMCwwICsxLDEwIEBACis8P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBw
bGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0
eUxpc3QtMS4wLmR0ZCI+Cis8cGxpc3QgdmVyc2lvbj0iMS4wIj4KKyAgICA8ZGljdD4KKyAgICAg
ICAgPGtleT5rZXljaGFpbi1hY2Nlc3MtZ3JvdXBzPC9rZXk+CisgICAgICAgIDxhcnJheT4KKyAg
ICAgICAgICAgIDxzdHJpbmc+Y29tLmFwcGxlLldlYktpdFRlc3RSdW5uZXI8L3N0cmluZz4KKyAg
ICAgICAgPC9hcnJheT4KKyAgICA8L2RpY3Q+Cis8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVubmVyLnhjY29uZmln
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVubmVy
LnhjY29uZmlnCmluZGV4IGRmY2RmZDlkZTM4ZmRmOTM2ZGI1MjE1NWJlMDljMmMxMGQzZjk0MmMu
LjMzZWRlMDlmZjRjNTI2MDFiZTg3ZjFmNjc1ODEyOWFkMWVhYmViMDcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvV2ViS2l0VGVzdFJ1bm5lci54Y2Nv
bmZpZworKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL1dlYktpdFRl
c3RSdW5uZXIueGNjb25maWcKQEAgLTMzLDMgKzMzLDUgQEAgT1RIRVJfTERGTEFHU1tzZGs9bWFj
b3N4Kl0gPSAkKGluaGVyaXRlZCkgLWxXZWJLaXRUZXN0UnVubmVyIC1mcmFtZXdvcmsgQ2FyYm9u
IC0KIFNLSVBfSU5TVEFMTFtzZGs9aXBob25lKl0gPSBZRVM7CiBFWENMVURFRF9TT1VSQ0VfRklM
RV9OQU1FU1tzZGs9aXBob25lKl0gPSBtYWMvKjsKIElOQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVT
W3Nkaz1pcGhvbmUqXSA9IG1hYy9tYWluLm1tOworCitDT0RFX1NJR05fRU5USVRMRU1FTlRTW3Nk
az1tYWNvc3gqXSA9IENvbmZpZ3VyYXRpb25zL1dlYktpdFRlc3RSdW5uZXIuZW50aXRsZW1lbnRz
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRl
c3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0YjQ3ZTg5YTljZWI1M2Ey
NTk5NTJmMTZjYmFlMTFkYjA1MjVkMWJiLi5lZWM5MDRkMjRjODEzOGI5MGNjMmVjZjY2ZWJhZmE0
ZTQ5Zjc1ZjQ4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RS
dW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAyLDcg
KzEwMiw3IEBACiAJCTU2NDFFMkQwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU1RleHRJbnB1dENvbnRy
b2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTY0MUUyQ0UxNDMzNUU5NTAwODMwN0U1IC8qIEpTVGV4dElucHV0Q29udHJvbGxlci5jcHAgKi87
IH07CiAJCTU2NjRBNDlBMTQzMjYzODQwMDg4ODFCRSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU2NjRBNDk4
MTQzMjYzODQwMDg4ODFCRSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJNTY3
MEI4MjgxMzg2RkNBNTAwMkVCMzU1IC8qIEV2ZW50U2VuZGVyUHJveHkubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NjcwQjgyNzEzODZGQ0E1MDAyRUIz
NTUgLyogRXZlbnRTZW5kZXJQcm94eS5tbSAqLzsgfTsKLQkJNTcwRTc1QTgyMTUyREI0RjAwMzI0
QjZFIC8qIFNlY3VyaXR5LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3MEU3NUE0MjE1MkRBMkMwMDMyNEI2RSAvKiBTZWN1cml0eS5m
cmFtZXdvcmsgKi87IH07CisJCTU3MTRCNjBEMjFCMEJGMjMwMENEQ0NBQSAvKiBTZWN1cml0eS5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzBFNzVBNDIxNTJEQTJDMDAzMjRCNkUgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovOyB9Owog
CQk2NTEwQTc4MjExRUM2NDM4MDA0MTA4NjcgLyogQUhFTV9fX18uVFRGIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTEwQTc3NzExRUM2NDM4MDA0MTA4
NjcgLyogQUhFTV9fX18uVFRGICovOyB9OwogCQk2NTEwQTc4NDExRUM2NDM4MDA0MTA4NjcgLyog
V2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1MTBBNzc5MTFFQzY0MzgwMDQxMDg2NyAvKiBXZWJLaXRXZWln
aHRXYXRjaGVyMTAwLnR0ZiAqLzsgfTsKIAkJNjUxMEE3ODUxMUVDNjQzODAwNDEwODY3IC8qIFdl
YktpdFdlaWdodFdhdGNoZXIyMDAudHRmIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NTEwQTc3QTExRUM2NDM4MDA0MTA4NjcgLyogV2ViS2l0V2VpZ2h0
V2F0Y2hlcjIwMC50dGYgKi87IH07CkBAIC0zMTYsNiArMzE2LDcgQEAKIAkJNTY3MEI4MjYxMzg2
RkMxMzAwMkVCMzU1IC8qIEV2ZW50U2VuZGVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRXZlbnRTZW5kZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NjcwQjgyNzEzODZGQ0E1MDAyRUIzNTUgLyogRXZlbnRTZW5kZXJQcm94eS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEV2ZW50U2VuZGVyUHJveHkubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MEU3NUE0MjE1MkRBMkMwMDMyNEI2RSAv
KiBTZWN1cml0eS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFNlY3VyaXR5LmZyYW1ld29y
azsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrOyBz
b3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJNTcxNEI2MEUyMUIwQzk2NDAwQ0RDQ0FBIC8qIFdl
YktpdFRlc3RSdW5uZXIuZW50aXRsZW1lbnRzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5lbnRpdGxlbWVudHM7IHBhdGggPSBXZWJL
aXRUZXN0UnVubmVyLmVudGl0bGVtZW50czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTgzOTEzRDAxNDMzNUU5NTAwODMwN0U1IC8qIEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU4MzkxM0QxMTQzMzVF
OTUwMDgzMDdFNSAvKiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMEE3NzcxMUVDNjQzODAwNDEwODY3IC8qIEFIRU1fX19f
LlRURiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZp
bGU7IG5hbWUgPSAiQUhFTV9fX18uVFRGIjsgcGF0aCA9ICJmb250cy9BSEVNX19fXy5UVEYiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDEwLDcgKzQxMSw2IEBACiAJCQlpc2EgPSBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CiAJCQlmaWxlcyA9ICgKLQkJCQk1NzBFNzVBODIxNTJEQjRGMDAzMjRCNkUgLyogU2VjdXJpdHku
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC00MTksNiArNDE5LDcgQEAKIAkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQk1MTA1OEFENTFENjc4
ODIwMDA5QTUzOEMgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliIGluIEZyYW1ld29ya3Mg
Ki8sCisJCQkJNTcxNEI2MEQyMUIwQkYyMzAwQ0RDQ0FBIC8qIFNlY3VyaXR5LmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovLAogCQkJCTUxMDU4QUQ2MUQ2Nzg4MjUwMDlBNTM4QyAvKiBXZWJLaXQu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC03OTUsNiArNzk2LDcgQEAKIAkJCQlCQzc5MzQyNzEx
OEY3REFGMDA1RUE4RTIgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovLAogCQkJCUJDMjUxOTcx
MTFEMTVFNjEwMDJFQkMwMSAvKiBJbmplY3RlZEJ1bmRsZS54Y2NvbmZpZyAqLywKIAkJCQlBMUI4
OUI5NDIyMUUwMjZCMDBFQjRDRUEgLyogU0RLVmFyaWFudC54Y2NvbmZpZyAqLywKKwkJCQk1NzE0
QjYwRTIxQjBDOTY0MDBDRENDQUEgLyogV2ViS2l0VGVzdFJ1bm5lci5lbnRpdGxlbWVudHMgKi8s
CiAJCQkJQTE4NTEwMzgxQjlBREYyMjAwNzQ0QUVCIC8qIFdlYktpdFRlc3RSdW5uZXIueGNjb25m
aWcgKi8sCiAJCQkJOUIwRDEzMkUyMDM2RDM0NjAwOEZDOEZCIC8qIFdlYktpdFRlc3RSdW5uZXJB
cHAtaU9TLmVudGl0bGVtZW50cyAqLywKIAkJCQkzMTExODNBQTIxMkIxQUM3MDA3N0JDRTAgLyog
V2ViS2l0VGVzdFJ1bm5lckFwcC13YXRjaE9TLmVudGl0bGVtZW50cyAqLywKQEAgLTEyNDksNiAr
MTI1MSw4IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gQTE4NTEwMzgxQjlBREYyMjAwNzQ0QUVCIC8qIFdlYktpdFRlc3RS
dW5uZXIueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPREVfU0lHTl9J
REVOVElUWSA9ICJTYWZhcmkgRW5naW5lZXJpbmciOworCQkJCUNPREVfU0lHTl9TVFlMRSA9IE1h
bnVhbDsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC0xMjU2LDYgKzEyNjAsOCBA
QAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IEExODUxMDM4MUI5QURGMjIwMDc0NEFFQiAvKiBXZWJLaXRUZXN0UnVubmVyLnhj
Y29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT0RFX1NJR05fSURFTlRJVFkg
PSAiU2FmYXJpIEVuZ2luZWVyaW5nIjsKKwkJCQlDT0RFX1NJR05fU1RZTEUgPSBNYW51YWw7CiAJ
CQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkBAIC0xNDA0LDYgKzE0MTAsOCBAQAogCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5j
ZSA9IEExODUxMDM4MUI5QURGMjIwMDc0NEFFQiAvKiBXZWJLaXRUZXN0UnVubmVyLnhjY29uZmln
ICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT0RFX1NJR05fSURFTlRJVFkgPSAiU2Fm
YXJpIEVuZ2luZWVyaW5nIjsKKwkJCQlDT0RFX1NJR05fU1RZTEUgPSBNYW51YWw7CiAJCQl9Owog
CQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggNDA4NzczNWJhMjViYjg1M2Ey
ZTZjZmYwMDBmMmUwMzFhYmJjZmExMi4uOTIyN2U4NTM3ODIwODQzZGUzOGMwMDU1NWJkNjUyY2Zi
OTNlZWMzYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29u
dHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENv
bnRyb2xsZXJDb2NvYS5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiVGVzdFdlYnNpdGVE
YXRhU3RvcmVEZWxlZ2F0ZS5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAj
aW1wb3J0IDxTZWN1cml0eS9TZWNJdGVtLmg+CisjaW1wb3J0IDxTZWN1cml0eS9TZWNJdGVtUHJp
di5oPgogI2ltcG9ydCA8V2ViS2l0L1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaD4KICNpbXBv
cnQgPFdlYktpdC9XS0Nvb2tpZU1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVu
Y2VzUmVmUHJpdmF0ZS5oPgpAQCAtMzMwLDggKzMzMSw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6
OmluamVjdFVzZXJTY3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0KQogCiB2b2lkIFRlc3RDb250cm9s
bGVyOjphZGRUZXN0S2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlCYXNlNjQs
IGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFz
ZTY0KQogewotICAgIC8vIEZJWE1FKDE4Mjc3MikKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIE5TRGljdGlvbmFyeSogb3B0aW9ucyA9IEB7CiAgICAgICAgIChpZClrU2VjQXR0cktleVR5
cGU6IChpZClrU2VjQXR0cktleVR5cGVFQ1NFQ1ByaW1lUmFuZG9tLAogICAgICAgICAoaWQpa1Nl
Y0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLApAQCAtMzQ5LDQwICsz
NDgsMzYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6YWRkVGVzdEtleVRvS2V5Y2hhaW4oY29uc3Qg
U3RyaW5nJiBwcml2YXRlS2V5QmFzZTY0LCBjb25zdAogICAgICAgICAoaWQpa1NlY1ZhbHVlUmVm
OiAoaWQpa2V5LmdldCgpLAogICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5
LAogICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogYXR0ckxhYmVsLAotICAgICAgICAoaWQpa1Nl
Y0F0dHJBcHBsaWNhdGlvblRhZzogYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNl
NjRFbmNvZGVkU3RyaW5nOmFwcGxpY2F0aW9uVGFnQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0
RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpCisgICAgICAgIChpZClrU2Vj
QXR0ckFwcGxpY2F0aW9uVGFnOiBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2
NEVuY29kZWRTdHJpbmc6YXBwbGljYXRpb25UYWdCYXNlNjQgb3B0aW9uczpOU0RhdGFCYXNlNjRE
ZWNvZGluZ0lnbm9yZVVua25vd25DaGFyYWN0ZXJzXSkuZ2V0KCksCisgICAgICAgIChpZClrU2Vj
QXR0ck5vTGVnYWN5OiBAWUVTCiAgICAgfTsKICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVt
QWRkKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYWRkUXVlcnksIE5VTEwpOwogICAgIEFTU0VS
VF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsKLSNlbmRpZgogfQogCiB2b2lkIFRlc3RDb250cm9s
bGVyOjpjbGVhblVwS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwpCiB7Ci0gICAgLy8g
RklYTUUoMTgyNzcyKQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNEaWN0aW9uYXJ5
KiBkZWxldGVRdWVyeSA9IEB7CiAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NL
ZXksCi0gICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiBhdHRyTGFiZWwKKyAgICAgICAgKGlkKWtT
ZWNBdHRyTGFiZWw6IGF0dHJMYWJlbCwKKyAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZ
RVMKICAgICB9OwogICAgIFNlY0l0ZW1EZWxldGUoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilk
ZWxldGVRdWVyeSk7Ci0jZW5kaWYKIH0KIAogYm9vbCBUZXN0Q29udHJvbGxlcjo6a2V5RXhpc3Rz
SW5LZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJiBhcHBsaWNh
dGlvblRhZ0Jhc2U2NCkKIHsKLSAgICAvLyBGSVhNRSgxODI3NzIpCi0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBOU0RpY3Rpb25hcnkgKnF1ZXJ5ID0gQHsKICAgICAgICAgKGlkKWtTZWND
bGFzczogKGlkKWtTZWNDbGFzc0tleSwKICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChp
ZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKICAgICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6IGF0
dHJMYWJlbCwKICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6IGFkb3B0TlMoW1tO
U0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzphcHBsaWNhdGlvblRhZ0Jh
c2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNd
KS5nZXQoKSwKKyAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKICAgICB9OwogICAg
IE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlv
bmFyeVJlZilxdWVyeSwgTlVMTCk7CiAgICAgaWYgKCFzdGF0dXMpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIEFTU0VSVChzdGF0dXMgPT0gZXJyU2VjSXRlbU5vdEZvdW5kKTsKLSNlbmRpZgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDllZTk2YjYyMGM2MDQ4NDljYzMzZmFmYmVh
OTVkMzhmODNmNDc3NDUuLmM2NTI2ZDFkODc0OGZkMTUzMGMxYzMwZjY1YTVkYjQ5NzdhM2Q3ZDMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wNS0yMyAgSmlld2VuIFRhbiAgPGppZXdlbl90
YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gRW5hYmxlIExvY2FsQXV0aGVudGlj
YXRvciBmb3IgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4Mjc3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNDc5MjA+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIGV4aXN0aW5n
IGxvY2FsIGF1dGhlbnRpY2F0b3IgdGVzdHMgZm9yIG1hY09TLgorCisgICAgICAgICogcGxhdGZv
cm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE5LTA1LTIyICBKZXIgTm9ibGUgIDxq
ZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEhpZGUgTWVkaWFDYXBhYmlsaXRpZXMuZW5j
b2RpbmdJbmZvKCkgd2hlbiB0aGUgcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCBpdC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4YzgxNTAw
MDE1NmNlYThkYTJjYWI2YjNiZDVlZTBjMzNjYWZiYTc3Li5hODgzNmQ0ZmY3ZGY3Y2RlYzQ0ZjQw
NTkwY2YwNWVjNDI2N2VkZDgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC05MDEsMTUgKzkwMSw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0L3VzZXItYWNjZXB0cy1wYXltZW50LXJlcXVlc3Qt
YWxnCiAKIHdlYmtpdC5vcmcvYi8xODk1OTggY29tcG9zaXRpbmcvYmFja2luZy9iYWNraW5nLXN0
b3JlLWF0dGFjaG1lbnQtZmlsbC1mb3J3YXJkcy1hbmltYXRpb24uaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiAKLSMgU2tpcCBsb2NhbCBhdXRoZW50aWNhdG9yIHRlc3RzIGZvciBtYWMgbm93LgotaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2Fs
Lmh0dHBzLmh0bWwgWyBTa2lwIF0KLWh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sIFsgU2tpcCBdCi1odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRt
bCBbIFNraXAgXQotaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1z
dWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwgWyBTa2lwIF0KLSMgVGhlIGZvbGxvd2luZyB0ZXN0cyBy
ZXF1aXJlIFB1YmxpY0tleUNyZWRlbnRpYWwgb2JqZWN0cy4gV2UgY2FuIG9ubHkgcHJvZHVjZSB0
aGVtIHZpYSBsb2NhbCBhdXRoZW50aWNhdG9ycyBub3cuCi1odHRwL3dwdC9jcmVkZW50aWFsLW1h
bmFnZW1lbnQvY3JlZGVudGlhbHNjb250YWluZXItc3RvcmUtYmFzaWNzLmh0dHBzLmh0bWwgWyBT
a2lwIF0KLWh0dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sIFsgU2tpcCBdCi0KIHdlYmtp
dC5vcmcvYi8xODM4NzggbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3RyYWNrcy1wYW5lbC90
cmFja3MtcGFuZWwtdXAtY2xpY2stb3Zlci1tZWRpYS1kb2VzLW5vdC1kaW1pc3MtbWVkaWEtY29u
dHJvbHMtd2hlbi1tZWRpYS1pcy1wbGF5aW5nLmh0bWwgWyBQYXNzIFRpbWVvdXQgXSAKIAogd2Vi
a2l0Lm9yZy9iLzE5MTY1OCBbIFNpZXJyYSBSZWxlYXNlIF0gZmFzdC9sYXllcnMvbm8tY2xpcHBp
bmctb3ZlcmZsb3ctaGlkZGVuLWFkZGVkLWFmdGVyLXRyYW5zZm9ybS5odG1sIFsgUGFzcyBJbWFn
ZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370522</attachid>
            <date>2019-05-23 14:53:52 -0700</date>
            <delta_ts>2019-05-23 16:35:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182772-20190523145351.patch</filename>
            <type>text/plain</type>
            <size>32315</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI3OGViYzBjZjY1ZTM0MDJmZDFkNDE1
OTE5Y2E5MTFhZjk0MTJlYmYuLjMxNDYyODIzOWExMjU5OThlZWVhNmY1M2JlMTBlN2NjZGJhMWYw
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDUtMjMgIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aE5dIEVuYWJsZSBMb2NhbEF1dGhlbnRp
Y2F0b3IgZm9yIG1hY09TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODI3NzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMzQ3OTIwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3Jt
Lmg6CisgICAgICAgIEFkZHMgSEFWRV9ERVZJQ0VfSURFTlRJVFkuCisgICAgICAgICogd3RmL3Nw
aS9jb2NvYS9TZWN1cml0eVNQSS5oOgorICAgICAgICBBZGRzIGEgU1BJIGZvciB0ZWxsaW5nIG1h
Y09TIGtleWNoYWluIHRvIHVzZSB0aGUgbW9kZXJuIG9uZS4KKwogMjAxOS0wNS0yMSAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW1BsYXlTdGF0aW9u
XSBEb24ndCBjYWxsIGZjbnRsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzNzc2ZDZkNDk0MTc5MGM5NDQyOWFmNjU1
YTIyNzIwMzg2NWYyMzM3Li44OWY3MjVlNGUzZGRlNDJmYzBkNjQ4OTZiZTJiMjIzMDdlMTVkMTgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE5LTA1LTIzICBKaWV3ZW4gVGFuICA8amll
d2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBFbmFibGUgTG9jYWxBdXRo
ZW50aWNhdG9yIGZvciBtYWNPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgyNzcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzM0NzkyMD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGVuYWJsZXMgTG9jYWxBdXRoZW50aWNhdG9yIGZvciBtYWNPUy4gVGhlIG1ham9yaXR5CisgICAg
ICAgIG9mIHRoaXMgcGF0Y2ggaXMgdG8gdHdlYWsgbWFjT1Mga2V5Y2hhaW4gdG8gdXNlIHRoZSBt
b2Rlcm4gb25lLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnOgor
ICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9EZXZpY2VJZGVudGl0eVNQSS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3Iu
bW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvckludGVybmFsOjp0b1ZlY3Rv
cik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwp
OgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRl
bnRpYWxBZnRlclVzZXJDb25zZW50ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRp
Y2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKToKKyAgICAgICAgKFdl
YktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2Vu
dGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxD
b25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5lY3Rpb246OmdldFVzZXJD
b25zZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxDb25uZWN0aW9uOjpnZXRBdHRl
c3RhdGlvbiBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTZXJ2aWNlOjppc0F2
YWlsYWJsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVjdGlv
bjo6Z2V0QXR0ZXN0YXRpb24gY29uc3QpOgorCiAyMDE5LTA1LTIyICBaYWxhbiBCdWp0YXMgIDx6
YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1Bhc3RlXSBBZGQgc3VwcG9ydCBmb3IgcHJlZmVy
cmVkIHByZXNlbnRhdGlvbiBzaXplIHdoZW4gcGFzdGluZyBhbiBpbWFnZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5k
ZXggNDQ3YmIxOGE4ZjAyOGMyOTUwMWQzOTMxZmI5NTU3YThkNTNhMjYwNy4uNTdhMWNkM2IzNmE0
YzMwM2JkNjU4ODUzMjk5Y2I5NTFjN2RiZmY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xNTU5LDMgKzE1
NTksNiBAQAogI2RlZmluZSBIQVZFX0NPUkVURVhUX0FVVE9fT1BUSUNBTF9TSVpJTkcgMQogI2Vu
ZGlmCiAKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFU
T1IpKQorI2RlZmluZSBIQVZFX0RFVklDRV9JREVOVElUWSAxCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oIGIvU291cmNlL1dURi93dGYv
c3BpL2NvY29hL1NlY3VyaXR5U1BJLmgKaW5kZXggOTZlMzBhN2M3ZDI5NGY0NTVjMDNiMGRlMzdi
ZTBhNGQxMjEzNWU0Mi4uOWZmYThhZmY1MzJmNzA0N2U3ZmM0N2YxOTZhYzQzYTY5MzZiNGFiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmgKKysrIGIv
U291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQ2Vy
dGlmaWNhdGVQcml2Lmg+CisjaW5jbHVkZSA8U2VjdXJpdHkvU2VjSXRlbVByaXYuaD4KICNpbmNs
dWRlIDxTZWN1cml0eS9TZWNUYXNrLmg+CiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjVHJ1c3RQcml2
Lmg+CiAKQEAgLTg4LDQgKzg5LDYgQEAgZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtTZWNUcnVz
dEluZm9FeHRlbmRlZFZhbGlkYXRpb25LZXk7CiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1Nl
Y1RydXN0SW5mb0NvbXBhbnlOYW1lS2V5OwogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtTZWNU
cnVzdEluZm9SZXZvY2F0aW9uS2V5OwogCitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1NlY0F0
dHJOb0xlZ2FjeTsKKwogV1RGX0VYVEVSTl9DX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9Db25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3Vy
YXRpb25zL1dlYktpdC54Y2NvbmZpZwppbmRleCBmZWUxNDc5MWE4MWYyZjM2YTI1ZDNhYjZiN2Zh
NTk3MzAyZTcyYjU2Li43ZTA0ZTEwZTRmYmY4OGY5MjEyM2UwNGRlYjA1ODI2ZTAwZjMzMWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwpAQCAtMTY1
LDggKzE2NSwxMCBAQCBXS19GUkFNRVdPUktfSEVBREVSX1BPU1RQUk9DRVNTSU5HX0RJU0FCTEVE
W3Nkaz1pcGhvbmUqMTIuKl0gPSBZRVM7CiBXS19SRUxPQ0FUQUJMRV9GUkFNRVdPUktfTERGTEFH
UyA9ICQoV0tfUkVMT0NBVEFCTEVfRlJBTUVXT1JLX0xERkxBR1NfJChXS19SRUxPQ0FUQUJMRV9G
UkFNRVdPUktTKSk7CiBXS19SRUxPQ0FUQUJMRV9GUkFNRVdPUktfTERGTEFHU19ZRVMgPSAtV2ws
LW5vdF9mb3JfZHlsZF9zaGFyZWRfY2FjaGU7CiAKLVdLX0hBVkVfREVWSUNFX0lERU5USVRZID0g
JChXS19IQVZFX0RFVklDRV9JREVOVElUWV8kKFBMQVRGT1JNX05BTUUpKTsKK1dLX0hBVkVfREVW
SUNFX0lERU5USVRZID0gJChXS19IQVZFX0RFVklDRV9JREVOVElUWV8kKFdLX1BMQVRGT1JNX05B
TUUpKTsKIFdLX0hBVkVfREVWSUNFX0lERU5USVRZX2lwaG9uZW9zID0gWUVTOworV0tfSEFWRV9E
RVZJQ0VfSURFTlRJVFlfbWFjb3N4ID0gJChXS19IQVZFX0RFVklDRV9JREVOVElUWSQoV0tfTUFD
T1NfMTAxNCkpOworV0tfSEFWRV9ERVZJQ0VfSURFTlRJVFlfTUFDT1NfU0lOQ0VfMTAxNCA9IFlF
UzsKIAogV0tfSEFWRV9VUkxfRk9STUFUVElORyA9ICQoV0tfSEFWRV9VUkxfRk9STUFUVElOR18k
KFdLX1BMQVRGT1JNX05BTUUpKTsKIFdLX0hBVkVfVVJMX0ZPUk1BVFRJTkdfaXBob25lb3MgPSAk
KFdLX0hBVkVfVVJMX0ZPUk1BVFRJTkckKFdLX0lPU18xMikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvRGV2aWNlSWRlbnRpdHlTUEkuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0RldmljZUlkZW50aXR5U1BJLmgKaW5kZXggMDMyMDNl
MjYwNDMyMmFhN2EyOWQxODMzZWRiNzU0YjljYzIzNWRjYS4uNzQ3N2U0MDk3MjFiZWEzNjc4MTEx
NDVjY2NhYmZiNjA2ZDUzOThiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9z
cGkvQ29jb2EvRGV2aWNlSWRlbnRpdHlTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3NwaS9Db2NvYS9EZXZpY2VJZGVudGl0eVNQSS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBF
TkFCTEUoV0VCX0FVVEhOKQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JN
KElPU19GQU1JTFlfU0lNVUxBVE9SKQorI2lmIEhBVkUoREVWSUNFX0lERU5USVRZKQogCiAjaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKIApAQCAtNTQsNiArNTQsNiBAQCB2b2lkIERldmljZUlk
ZW50aXR5SXNzdWVDbGllbnRDZXJ0aWZpY2F0ZVdpdGhDb21wbGV0aW9uKGRpc3BhdGNoX3F1ZXVl
X3QgX051bGxhYgogCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAotI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRP
UikKKyNlbmRpZiAvLyBIQVZFKERFVklDRV9JREVOVElUWSkKIAogI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KaW5kZXgg
NjlmZmVkYmFjYzc5NGU5MjY4Y2E4NjM1N2M5YjI4NDdhZGI3ZTJhNi4uMDIyODA2NTU3YTllNTUw
MTA2MTNjNzE1MDkxOWE3OTA1NTg3MTI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0
aGVudGljYXRvci5tbQpAQCAtNDEsNiArNDEsNyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBv
cnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw3ICs1NSw2IEBAIGNvbnN0IHVp
bnQ4X3QgZ2V0QXNzZXJ0aW9uRmxhZ3MgPSAwYjAwMDAwMTAxOyAvLyBVUCBhbmQgVVYgYXJlIHNl
dC4KIC8vIENyZWRlbnRpYWwgSUQgaXMgY3VycmVudGx5IFNIQS0xIG9mIHRoZSBjb3JyZXNwb25k
aW5nIHB1YmxpYyBrZXkuCiBjb25zdCB1aW50MTZfdCBjcmVkZW50aWFsSWRMZW5ndGggPSAyMDsK
IAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgaW5saW5lIGJvb2wgZW1wdHlUcmFu
c3BvcnRzT3JDb250YWluKGNvbnN0IFZlY3RvcjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiYgdHJh
bnNwb3J0cywgQXV0aGVudGljYXRvclRyYW5zcG9ydCB0YXJnZXQpCiB7CiAgICAgcmV0dXJuIHRy
YW5zcG9ydHMuaXNFbXB0eSgpID8gdHJ1ZSA6IHRyYW5zcG9ydHMuY29udGFpbnModGFyZ2V0KTsK
QEAgLTc4LDcgKzc4LDYgQEAgc3RhdGljIGlubGluZSBWZWN0b3I8dWludDhfdD4gdG9WZWN0b3Io
TlNEYXRhICpkYXRhKQogICAgIHJlc3VsdC5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQotI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIExvY2FsQXV0aGVudGlj
YXRvckludGVybmFsCiAKQEAgLTg5LDEyICs4OCwxMCBAQCBMb2NhbEF1dGhlbnRpY2F0b3I6Okxv
Y2FsQXV0aGVudGljYXRvcihVbmlxdWVSZWY8TG9jYWxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24p
CiAKIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiB7Ci0gICAgLy8g
RklYTUUoMTgyNzcyKQogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRl
cm5hbDsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6SW5pdCk7CiAgICAgbV9zdGF0ZSA9
IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQ7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0
aG4vI29wLW1ha2UtY3JlZCBhcyBvZiA1IERlY2VtYmVyIDIwMTcuCiAgICAgLy8gU2tpcCBTdGVw
IDQtNSBhcyByZXF1aXJlUmVzaWRlbnRLZXkgYW5kIHJlcXVpcmVVc2VyVmVyaWZpY2F0aW9uIGFy
ZSBlbmZvcmNlZC4KICAgICAvLyBTa2lwIFN0ZXAgOSBhcyBleHRlbnNpb25zIGFyZSBub3Qgc3Vw
cG9ydGVkIHlldC4KQEAgLTEyMiw2ICsxMTksNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6
bWFrZUNyZWRlbnRpYWwoKQogICAgICAgICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6IHJlcXVlc3RE
YXRhKCkuY3JlYXRpb25PcHRpb25zLnJwLmlkLAogICAgICAgICAgICAgKGlkKWtTZWNSZXR1cm5B
dHRyaWJ1dGVzOiBAWUVTLAogICAgICAgICAgICAgKGlkKWtTZWNNYXRjaExpbWl0OiAoaWQpa1Nl
Y01hdGNoTGltaXRBbGwsCisgICAgICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwog
ICAgICAgICB9OwogICAgICAgICBDRlR5cGVSZWYgYXR0cmlidXRlc0FycmF5UmVmID0gbnVsbHB0
cjsKICAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlk
Z2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmYXR0cmlidXRlc0FycmF5UmVmKTsKQEAgLTE1Miwx
OCArMTUwLDE1IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiAg
ICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVk
KGNvbnNlbnQpOwogICAgIH07CiAgICAgbV9jb25uZWN0aW9uLT5nZXRVc2VyQ29uc2VudCgKLSAg
ICAgICAgIkFsbG93ICIgKyByZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5pZCArICIg
dG8gY3JlYXRlIGEgcHVibGljIGtleSBjcmVkZW50aWFsIGZvciAiICsgcmVxdWVzdERhdGEoKS5j
cmVhdGlvbk9wdGlvbnMudXNlci5uYW1lLAorICAgICAgICAiYWxsb3cgIiArIHJlcXVlc3REYXRh
KCkuY3JlYXRpb25PcHRpb25zLnJwLmlkICsgIiB0byBjcmVhdGUgYSBwdWJsaWMga2V5IGNyZWRl
bnRpYWwgZm9yICIgKyByZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy51c2VyLm5hbWUsCiAg
ICAgICAgIFdURk1vdmUoY2FsbGJhY2spKTsKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIH0KIAogdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxB
ZnRlclVzZXJDb25zZW50ZWQoTG9jYWxDb25uZWN0aW9uOjpVc2VyQ29uc2VudCBjb25zZW50KQog
ewotICAgIC8vIEZJWE1FKDE4Mjc3MikKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UmVx
dWVzdFJlY2VpdmVkKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OlVzZXJDb25zZW50ZWQ7CiAKLSNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChjb25zZW50ID09IExvY2FsQ29ubmVjdGlv
bjo6VXNlckNvbnNlbnQ6Ok5vKSB7CiAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRh
dGEgeyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50LiJfcyB9KTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTc2LDYgKzE3MSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVj
dGlvCiAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCiAgICAgICAgIChp
ZClrU2VjQXR0ckxhYmVsOiByZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5pZCwKICAg
ICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpy
ZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy51c2VyLmlkVmVjdG9yLmRhdGEoKSBsZW5ndGg6
cmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMudXNlci5pZFZlY3Rvci5zaXplKCldLAorICAg
ICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwogICAgIH07CiAgICAgT1NTdGF0dXMgc3Rh
dHVzID0gU2VjSXRlbURlbGV0ZSgoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWRlbGV0ZVF1ZXJ5
KTsKICAgICBpZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKQEAg
LTE5MiwxOCArMTg4LDE1IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VD
cmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvCiAgICAgICAgIHdlYWtU
aGlzLT5jb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChwcml2YXRlS2V5LCBjZXJ0
aWZpY2F0ZXMsIGVycm9yKTsKICAgICB9OwogICAgIG1fY29ubmVjdGlvbi0+Z2V0QXR0ZXN0YXRp
b24ocmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMucnAuaWQsIHJlcXVlc3REYXRhKCkuY3Jl
YXRpb25PcHRpb25zLnVzZXIubmFtZSwgcmVxdWVzdERhdGEoKS5oYXNoLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiB9CiAKIHZvaWQgTG9jYWxB
dXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlS
ZWYgcHJpdmF0ZUtleSwgTlNBcnJheSAqY2VydGlmaWNhdGVzLCBOU0Vycm9yICplcnJvcikKIHsK
LSAgICAvLyBGSVhNRSgxODI3NzIpCiAgICAgdXNpbmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGlj
YXRvckludGVybmFsOwogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlVzZXJDb25zZW50
ZWQpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6QXR0ZXN0ZWQ7CiAKLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGlmIChlcnJvcikgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGF0
dGVzdDogJUAiLCBlcnJvcik7CiAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEg
eyBVbmtub3duRXJyb3IsICJVbmtub3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKQEAgLTIyNywx
MyArMjIwLDE0IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYgcHJpdmF0ZUtlCiAgICAgLy8gRklYTUUoMTgzNTMz
KTogRGV2aWNlSWRlbnRpdHkuRnJhbWV3b3JrIHdvdWxkIGluc2VydCBjZXJ0aWZpY2F0ZXMgaW50
byBLZXljaGFpbiBhcyB3ZWxsLiBXZSBzaG91bGQgdXBkYXRlIHRob3NlIGFzIHdlbGwuCiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGNyZWRlbnRpYWxJZDsKICAgICB7Ci0gICAgICAgIC8vIC1yayBpcyBh
ZGRlZCBieSBEZXZpY2VJZGVudGl0eS5GcmFtZXdvcmsuCi0gICAgICAgIFN0cmluZyBsYWJlbCA9
IG1ha2VTdHJpbmcocmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMudXNlci5uYW1lLCAiQCIs
IHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLnJwLmlkLCAiLXJrIik7CisgICAgICAgIC8v
IC1yay11Y3J0IGlzIGFkZGVkIGJ5IERldmljZUlkZW50aXR5LkZyYW1ld29yay4KKyAgICAgICAg
U3RyaW5nIGxhYmVsID0gbWFrZVN0cmluZyhyZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy51
c2VyLm5hbWUsICJAIiwgcmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMucnAuaWQsICItcmst
dWNydCIpOwogICAgICAgICBOU0RpY3Rpb25hcnkgKmNyZWRlbnRpYWxJZFF1ZXJ5ID0gQHsKICAg
ICAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCiAgICAgICAgICAgICAo
aWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAogICAgICAg
ICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6IGxhYmVsLAotICAgICAgICAgICAgKGlkKWtTZWNSZXR1
cm5BdHRyaWJ1dGVzOiBAWUVTCisgICAgICAgICAgICAoaWQpa1NlY1JldHVybkF0dHJpYnV0ZXM6
IEBZRVMsCisgICAgICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwogICAgICAgICB9
OwogICAgICAgICBDRlR5cGVSZWYgYXR0cmlidXRlc1JlZiA9IG51bGxwdHI7CiAgICAgICAgIE9T
U3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFy
eVJlZiljcmVkZW50aWFsSWRRdWVyeSwgJmF0dHJpYnV0ZXNSZWYpOwpAQCAtMjUxLDYgKzI0NSw3
IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJB
dHRlc3RlZChTZWNLZXlSZWYgcHJpdmF0ZUtlCiAgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAo
aWQpa1NlY0NsYXNzS2V5LAogICAgICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClr
U2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKICAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0
aW9uTGFiZWw6IG5zQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsXSwKKyAg
ICAgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCiAgICAgICAgIH07CiAgICAgICAg
IE5TRGljdGlvbmFyeSAqdXBkYXRlUGFyYW1zID0gQHsKICAgICAgICAgICAgIChpZClrU2VjQXR0
ckxhYmVsOiByZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5pZCwKQEAgLTMyNywxNyAr
MzIyLDE0IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFs
QWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYgcHJpdmF0ZUtlCiAgICAgYXV0byBhdHRlc3RhdGlvbk9i
amVjdCA9IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJBcHBsZSIs
IFdURk1vdmUoYXR0ZXN0YXRpb25TdGF0ZW1lbnRNYXApKTsKIAogICAgIHJlY2VpdmVSZXNwb25k
KFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsgQXJyYXlCdWZmZXI6OmNyZWF0ZShjcmVkZW50aWFs
SWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSwgdHJ1ZSwgbnVsbHB0ciwgQXJyYXlCdWZm
ZXI6OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVjdC5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnNp
emUoKSksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIFdURjo6bnVsbG9wdCB9KTsKLSNlbmRp
ZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIH0KIAogdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6
OmdldEFzc2VydGlvbigpCiB7Ci0gICAgLy8gRklYTUUoMTgyNzcyKQogICAgIHVzaW5nIG5hbWVz
cGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBT
dGF0ZTo6SW5pdCk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQ7CiAKLSNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBo
dHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI29wLWdldC1hc3NlcnRpb24gYXMgb2YgNSBE
ZWNlbWJlciAyMDE3LgogICAgIC8vIFNraXAgU3RlcCAyIGFzIHJlcXVpcmVVc2VyVmVyaWZpY2F0
aW9uIGlzIGVuZm9yY2VkLgogICAgIC8vIFNraXAgU3RlcCA4IGFzIGV4dGVuc2lvbnMgYXJlIG5v
dCBzdXBwb3J0ZWQgeWV0LgpAQCAtMzU1LDcgKzM0Nyw4IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjpnZXRBc3NlcnRpb24oKQogICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtT
ZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAogICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogcmVxdWVz
dERhdGEoKS5yZXF1ZXN0T3B0aW9ucy5ycElkLAogICAgICAgICAoaWQpa1NlY1JldHVybkF0dHJp
YnV0ZXM6IEBZRVMsCi0gICAgICAgIChpZClrU2VjTWF0Y2hMaW1pdDogKGlkKWtTZWNNYXRjaExp
bWl0QWxsCisgICAgICAgIChpZClrU2VjTWF0Y2hMaW1pdDogKGlkKWtTZWNNYXRjaExpbWl0QWxs
LAorICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwogICAgIH07CiAgICAgQ0ZUeXBl
UmVmIGF0dHJpYnV0ZXNBcnJheVJlZiA9IG51bGxwdHI7CiAgICAgT1NTdGF0dXMgc3RhdHVzID0g
U2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmYXR0
cmlidXRlc0FycmF5UmVmKTsKQEAgLTQwMSwyMiArMzk0LDE5IEBAIHZvaWQgTG9jYWxBdXRoZW50
aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVHZXRBc3Nl
cnRpb25BZnRlclVzZXJDb25zZW50ZWQoY29uc2VudCwgY29udGV4dCwgY3JlZGVudGlhbElkLCB1
c2VyaGFuZGxlKTsKICAgICB9OwogICAgIE5TRGF0YSAqaWREYXRhID0gc2VsZWN0ZWRDcmVkZW50
aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZ107Ci0gICAgU3RyaW5nVmll
dyBpZFN0cmluZ1ZpZXcgeyBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KFtpZERhdGEgYnl0ZXNd
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFtpZERhdGEgbGVuZ3RoXSkgfTsKKyAgICBTdHJpbmdW
aWV3IGlkU3RyaW5nVmlldyB7IHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4oW2lkRGF0YSBieXRl
c10pLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oW2lkRGF0YSBsZW5ndGhdKSB9OwogICAgIG1fY29u
bmVjdGlvbi0+Z2V0VXNlckNvbnNlbnQoCi0gICAgICAgIG1ha2VTdHJpbmcoIkxvZyBpbnRvICIs
IHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMucnBJZCwgIiB3aXRoICIsIGlkU3RyaW5nVmll
dywgJy4nKSwKKyAgICAgICAgbWFrZVN0cmluZygibG9nIGludG8gIiwgcmVxdWVzdERhdGEoKS5y
ZXF1ZXN0T3B0aW9ucy5ycElkLCAiIHdpdGggIiwgaWRTdHJpbmdWaWV3KSwKICAgICAgICAgKF9f
YnJpZGdlIFNlY0FjY2Vzc0NvbnRyb2xSZWYpc2VsZWN0ZWRDcmVkZW50aWFsQXR0cmlidXRlc1so
aWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sXSwKICAgICAgICAgV1RGTW92ZShjYWxsYmFjaykpOwot
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiB9CiAKIHZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChMb2NhbENvbm5lY3Rp
b246OlVzZXJDb25zZW50IGNvbnNlbnQsIExBQ29udGV4dCAqY29udGV4dCwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlcmhhbmRs
ZSkKIHsKLSAgICAvLyBGSVhNRSgxODI3NzIpCiAgICAgdXNpbmcgbmFtZXNwYWNlIExvY2FsQXV0
aGVudGljYXRvckludGVybmFsOwogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0
UmVjZWl2ZWQpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRlZDsKIAotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGNvbnNlbnQgPT0gTG9jYWxDb25uZWN0aW9uOjpV
c2VyQ29uc2VudDo6Tm8pIHsKICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7
IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0pOwogICAg
ICAgICByZXR1cm47CkBAIC00MzcsNiArNDI3LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6
OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjoK
ICAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IFtOU0RhdGEgZGF0YVdp
dGhCeXRlczpjcmVkZW50aWFsSWQuZGF0YSgpIGxlbmd0aDpjcmVkZW50aWFsSWQuc2l6ZSgpXSwK
ICAgICAgICAgICAgIChpZClrU2VjVXNlQXV0aGVudGljYXRpb25Db250ZXh0OiBjb250ZXh0LAog
ICAgICAgICAgICAgKGlkKWtTZWNSZXR1cm5SZWY6IEBZRVMsCisgICAgICAgICAgICAoaWQpa1Nl
Y0F0dHJOb0xlZ2FjeTogQFlFUwogICAgICAgICB9OwogICAgICAgICBDRlR5cGVSZWYgcHJpdmF0
ZUtleVJlZiA9IG51bGxwdHI7CiAgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5
TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeSwgJnByaXZhdGVLZXlSZWYp
OwpAQCAtNDY0LDcgKzQ1NSw2IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdl
dEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChMb2NhbENvbm5lY3Rpb246CiAKICAgICAvLyBT
dGVwIDEzLgogICAgIHJlY2VpdmVSZXNwb25kKFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsgQXJy
YXlCdWZmZXI6OmNyZWF0ZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgp
KSwgZmFsc2UsIG51bGxwdHIsIG51bGxwdHIsIEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0aERhdGEu
ZGF0YSgpLCBhdXRoRGF0YS5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpZ25hdHVyZS5k
YXRhKCksIHNpZ25hdHVyZS5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVzZXJoYW5kbGUu
ZGF0YSgpLCB1c2VyaGFuZGxlLnNpemUoKSksIFdURjo6bnVsbG9wdCB9KTsKLSNlbmRpZiAvLyAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2Nh
bENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KaW5kZXggOTQ0NzA1YzI2OWNiMTM1Njk1OGJmNzQ2
NWRiZmM5MGQzMDAxMjU2NS4uOWM5ODk2OTEwMzA5ZTNlNzBkNWQxZjgyNWUxZmMyNmU4OTNmODhl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTG9jYWxDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbQpAQCAtMzksOCArMzksNiBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25z
ZW50KGNvbnN0IFN0cmluZyYgcmVhc29uLCBVc2VyQ29uc2VudENhbGxiYWNrJiYgY29tcGxldGlv
bkhhbmRsZXIpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUUoMTgyNzcyKQotI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgYXV0byBjb250ZXh0ID0gYWRvcHROUyhbYWxsb2NMQUNvbnRleHRJbnN0
YW5jZSgpIGluaXRdKTsKICAgICBhdXRvIHJlcGx5ID0gbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9PTCBzdWNjZXNzLCBOU0Vy
cm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwpAQCAtNTUsMTMgKzUzLDEwIEBAIHZvaWQgTG9jYWxDb25uZWN0aW9uOjpnZXRVc2VyQ29uc2Vu
dChjb25zdCBTdHJpbmcmIHJlYXNvbiwgVXNlckNvbnNlbnRDYWxsYmFjayYmCiAgICAgICAgIH0p
OwogICAgIH0pOwogICAgIFtjb250ZXh0IGV2YWx1YXRlUG9saWN5OkxBUG9saWN5RGV2aWNlT3du
ZXJBdXRoZW50aWNhdGlvbldpdGhCaW9tZXRyaWNzIGxvY2FsaXplZFJlYXNvbjpyZWFzb24gcmVw
bHk6cmVwbHkuZ2V0KCldOwotI2VuZGlmCiB9CiAKIHZvaWQgTG9jYWxDb25uZWN0aW9uOjpnZXRV
c2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNvbiwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nl
c3NDb250cm9sLCBVc2VyQ29uc2VudENvbnRleHRDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVy
KSBjb25zdAogewotICAgIC8vIEZJWE1FKDE4Mjc3MikKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW2FsbG9jTEFDb250ZXh0SW5zdGFuY2UoKSBp
bml0XSk7CiAgICAgYXV0byByZXBseSA9IG1ha2VCbG9ja1B0cihbY29udGV4dCwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEJPT0wgc3VjY2VzcywgTlNF
cnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKQEAgLTc2LDEzICs3MSwxMSBAQCB2b2lkIExvY2FsQ29ubmVjdGlvbjo6Z2V0VXNlckNvbnNl
bnQoY29uc3QgU3RyaW5nJiByZWFzb24sIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYQogICAgICAgICB9
KTsKICAgICB9KTsKICAgICBbY29udGV4dCBldmFsdWF0ZUFjY2Vzc0NvbnRyb2w6YWNjZXNzQ29u
dHJvbCBvcGVyYXRpb246TEFBY2Nlc3NDb250cm9sT3BlcmF0aW9uVXNlS2V5U2lnbiBsb2NhbGl6
ZWRSZWFzb246cmVhc29uIHJlcGx5OnJlcGx5LmdldCgpXTsKLSNlbmRpZgogfQogCiB2b2lkIExv
Y2FsQ29ubmVjdGlvbjo6Z2V0QXR0ZXN0YXRpb24oY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBT
dHJpbmcmIHVzZXJuYW1lLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIEF0dGVzdGF0aW9u
Q2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKLSAgICAvLyBEZXZpY2VJZGVu
dGl0eS5GcmFtZXdvcmsgaXMgbm90IGF2YWxpYWJsZSBpbiBpT1Mgc2ltdWxhdG9yLgotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKKyNp
ZiBIQVZFKERFVklDRV9JREVOVElUWSkKICAgICAvLyBBcHBsZSBBdHRlc3RhdGlvbgogICAgIEFT
U0VSVChoYXNoLnNpemUoKSA8PSAzMik7CiAKQEAgLTExNCw3ICsxMDcsNyBAQCB2b2lkIExvY2Fs
Q29ubmVjdGlvbjo6Z2V0QXR0ZXN0YXRpb24oY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBTdHJp
bmcmIHVzZXJuYW1lLAogCiAgICAgLy8gRklYTUUoMTgzNjUyKTogUmVkdWNlIHByb21wdCBmb3Ig
YmlvbWV0cmljcwogICAgIERldmljZUlkZW50aXR5SXNzdWVDbGllbnRDZXJ0aWZpY2F0ZVdpdGhD
b21wbGV0aW9uKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG9wdGlvbnMsIG1ha2VCbG9ja1B0
cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkuZ2V0KCkpOwotI2VuZGlmCisjZW5kaWYgLy8g
SEFWRShERVZJQ0VfSURFTlRJVFkpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTG9jYWxTZXJ2aWNlLm1tCmluZGV4IGY0MDY5NmNkMTEyYjA3NzQ5YTc1ZDc3Y2RjMjcx
Nzk3ZDAwZmFhODguLjMyNDliMGUwMTc2NzI1NmZmOGUzNDQ3ZDZmNDRmNWE4MGFjMTdmOGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsU2VydmljZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0KQEAgLTQxLDEyICs0MSwxMCBAQCBMb2NhbFNl
cnZpY2U6OkxvY2FsU2VydmljZShPYnNlcnZlciYgb2JzZXJ2ZXIpCiB7CiB9CiAKKy8vIEZJWE1F
KHJkYXI6Ly9wcm9ibGVtLzUxMDQ4NTQyKQogYm9vbCBMb2NhbFNlcnZpY2U6OmlzQXZhaWxhYmxl
KCkKIHsKLS8vIEZJWE1FKDE4Mjc3MikKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0jZWxzZQorICAgIC8vIEZJWE1FKDE5ODE3NikKICAgICBpZiAoIVdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQXV0aGVudGlj
YXRpb25Mb2NhbEF1dGhlbnRpY2F0b3JFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApAQCAtNTcsNyArNTUsNiBAQCBib29sIExvY2FsU2VydmljZTo6aXNBdmFpbGFibGUoKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiB9CiAK
IHZvaWQgTG9jYWxTZXJ2aWNlOjpzdGFydERpc2NvdmVyeUludGVybmFsKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2Fs
Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQppbmRleCBjYTc2NWU1ODJhNmJiODY0NmYzZTAx
N2RiNzY0NjY2OTJlYjYxN2E3Li44NmUwNzkwZDE2ODAxMjFlZTdlMWZmN2JhNjk3NjY1MTRhZGY1
Yjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCkBAIC05Miw3
ICs5Miw3IEBAIHZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6Z2V0QXR0ZXN0YXRpb24oY29uc3Qg
U3RyaW5nJiBycElkLCBjb25zdCBTdHJpbmcmIHVzZXJuCiAgICAgICAgIEFTU0VSVCghZXJyb3JS
ZWYpOwogCiAgICAgICAgIC8vIE1vY2sgd2hhdCBEZXZpY2VJZGVudGl0eSB3b3VsZCBkby4KLSAg
ICAgICAgU3RyaW5nIGxhYmVsID0gbWFrZVN0cmluZyh1c2VybmFtZSwgIkAiLCBycElkLCAiLXJr
Iik7CisgICAgICAgIFN0cmluZyBsYWJlbCA9IG1ha2VTdHJpbmcodXNlcm5hbWUsICJAIiwgcnBJ
ZCwgIi1yay11Y3J0Iik7CiAgICAgICAgIE5TRGljdGlvbmFyeSogYWRkUXVlcnkgPSBAewogICAg
ICAgICAgICAgKGlkKWtTZWNWYWx1ZVJlZjogKGlkKWtleS5nZXQoKSwKICAgICAgICAgICAgIChp
ZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2E1NzJiOGQ1YmRhMjg5YjUzZDk0YTVmMDk5ZDQw
M2IyNjc4NmQwNC4uZGE2ZmQzYTI1MDAzYjliYWU4NTllY2I3MWMzNTllYTExZmQ0MDUwZSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyIEBACisyMDE5LTA1LTIzICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dlYkF1dGhOXSBFbmFibGUgTG9jYWxBdXRoZW50aWNhdG9yIGZvciBtYWNPUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNzcyCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzM0NzkyMD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gZW50aXRsZW1lbnQgZmlsZSB0byBXZWJL
aXRUZXN0UnVubmVyIHN1Y2ggdGhhdCBpdCBjYW4gYWNjZXNzCisgICAgICAgIHRoZSBtb2Rlcm4g
bWFjT1Mga2V5Y2hhaW4uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRp
b25zL1dlYktpdFRlc3RSdW5uZXIuZW50aXRsZW1lbnRzOiBBZGRlZC4KKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL1dlYktpdFRlc3RSdW5uZXIueGNjb25maWc6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJv
bGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6YWRkVGVzdEtleVRv
S2V5Y2hhaW4pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYW5VcEtleWNoYWlu
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmtleUV4aXN0c0luS2V5Y2hhaW4pOgor
CiAyMDE5LTA1LTIyICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W1Bhc3RlXSBBZGQgc3VwcG9ydCBmb3IgcHJlZmVycmVkIHByZXNlbnRhdGlvbiBzaXplIHdoZW4g
cGFzdGluZyBhbiBpbWFnZQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25m
aWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVubmVyLmVudGl0bGVtZW50cyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvV2ViS2l0VGVzdFJ1bm5lci5lbnRpdGxlbWVudHMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWZiNDgyNzc5NTY1OTc5NGU4NjBiZmVjMWIyNjQwNzRhMTFjMjQ5MgotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvV2ViS2l0
VGVzdFJ1bm5lci5lbnRpdGxlbWVudHMKQEAgLTAsMCArMSwxMCBAQAorPD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxl
Ly9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlM
aXN0LTEuMC5kdGQiPgorPHBsaXN0IHZlcnNpb249IjEuMCI+CisgICAgPGRpY3Q+CisgICAgICAg
IDxrZXk+a2V5Y2hhaW4tYWNjZXNzLWdyb3Vwczwva2V5PgorICAgICAgICA8YXJyYXk+CisgICAg
ICAgICAgICA8c3RyaW5nPmNvbS5hcHBsZS5XZWJLaXRUZXN0UnVubmVyPC9zdHJpbmc+CisgICAg
ICAgIDwvYXJyYXk+CisgICAgPC9kaWN0PgorPC9wbGlzdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvV2ViS2l0VGVzdFJ1bm5lci54Y2NvbmZpZyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvV2ViS2l0VGVzdFJ1bm5lci54
Y2NvbmZpZwppbmRleCBkZmNkZmQ5ZGUzOGZkZjkzNmRiNTIxNTViZTA5YzJjMTBkM2Y5NDJjLi4z
M2VkZTA5ZmY0YzUyNjAxYmU4N2YxZjY3NTgxMjlhZDFlYWJlYjA3IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL1dlYktpdFRlc3RSdW5uZXIueGNjb25m
aWcKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9XZWJLaXRUZXN0
UnVubmVyLnhjY29uZmlnCkBAIC0zMywzICszMyw1IEBAIE9USEVSX0xERkxBR1Nbc2RrPW1hY29z
eCpdID0gJChpbmhlcml0ZWQpIC1sV2ViS2l0VGVzdFJ1bm5lciAtZnJhbWV3b3JrIENhcmJvbiAt
CiBTS0lQX0lOU1RBTExbc2RrPWlwaG9uZSpdID0gWUVTOwogRVhDTFVERURfU09VUkNFX0ZJTEVf
TkFNRVNbc2RrPWlwaG9uZSpdID0gbWFjLyo7CiBJTkNMVURFRF9TT1VSQ0VfRklMRV9OQU1FU1tz
ZGs9aXBob25lKl0gPSBtYWMvbWFpbi5tbTsKKworQ09ERV9TSUdOX0VOVElUTEVNRU5UU1tzZGs9
bWFjb3N4Kl0gPSBDb25maWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVubmVyLmVudGl0bGVtZW50czsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0
UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGI0N2U4OWE5Y2ViNTNhMjU5
OTUyZjE2Y2JhZTExZGIwNTI1ZDFiYi4uZWVjOTA0ZDI0YzgxMzhiOTBjYzJlY2Y2NmViYWZhNGU0
OWY3NWY0OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVu
bmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMiw3ICsx
MDIsNyBAQAogCQk1NjQxRTJEMDE0MzM1RTk1MDA4MzA3RTUgLyogSlNUZXh0SW5wdXRDb250cm9s
bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU2
NDFFMkNFMTQzMzVFOTUwMDgzMDdFNSAvKiBKU1RleHRJbnB1dENvbnRyb2xsZXIuY3BwICovOyB9
OwogCQk1NjY0QTQ5QTE0MzI2Mzg0MDA4ODgxQkUgLyogVGV4dElucHV0Q29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NjY0QTQ5ODE0
MzI2Mzg0MDA4ODgxQkUgLyogVGV4dElucHV0Q29udHJvbGxlci5jcHAgKi87IH07CiAJCTU2NzBC
ODI4MTM4NkZDQTUwMDJFQjM1NSAvKiBFdmVudFNlbmRlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTY3MEI4MjcxMzg2RkNBNTAwMkVCMzU1
IC8qIEV2ZW50U2VuZGVyUHJveHkubW0gKi87IH07Ci0JCTU3MEU3NUE4MjE1MkRCNEYwMDMyNEI2
RSAvKiBTZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzBFNzVBNDIxNTJEQTJDMDAzMjRCNkUgLyogU2VjdXJpdHkuZnJh
bWV3b3JrICovOyB9OworCQk1NzE0QjYwRDIxQjBCRjIzMDBDRENDQUEgLyogU2VjdXJpdHkuZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTcwRTc1QTQyMTUyREEyQzAwMzI0QjZFIC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLzsgfTsKIAkJ
NjUxMEE3ODIxMUVDNjQzODAwNDEwODY3IC8qIEFIRU1fX19fLlRURiBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxMEE3NzcxMUVDNjQzODAwNDEwODY3
IC8qIEFIRU1fX19fLlRURiAqLzsgfTsKIAkJNjUxMEE3ODQxMUVDNjQzODAwNDEwODY3IC8qIFdl
YktpdFdlaWdodFdhdGNoZXIxMDAudHRmIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NTEwQTc3OTExRUM2NDM4MDA0MTA4NjcgLyogV2ViS2l0V2VpZ2h0
V2F0Y2hlcjEwMC50dGYgKi87IH07CiAJCTY1MTBBNzg1MTFFQzY0MzgwMDQxMDg2NyAvKiBXZWJL
aXRXZWlnaHRXYXRjaGVyMjAwLnR0ZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjUxMEE3N0ExMUVDNjQzODAwNDEwODY3IC8qIFdlYktpdFdlaWdodFdh
dGNoZXIyMDAudHRmICovOyB9OwpAQCAtMzE2LDYgKzMxNiw3IEBACiAJCTU2NzBCODI2MTM4NkZD
MTMwMDJFQjM1NSAvKiBFdmVudFNlbmRlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEV2ZW50U2VuZGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTY3MEI4MjcxMzg2RkNBNTAwMkVCMzU1IC8qIEV2ZW50U2VuZGVyUHJveHkubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFdmVudFNlbmRlclByb3h5Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzBFNzVBNDIxNTJEQTJDMDAzMjRCNkUgLyog
U2VjdXJpdHkuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBTZWN1cml0eS5mcmFtZXdvcms7
IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yazsgc291
cmNlVHJlZSA9IFNES1JPT1Q7IH07CisJCTU3MTRCNjBFMjFCMEM5NjQwMENEQ0NBQSAvKiBXZWJL
aXRUZXN0UnVubmVyLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QuZW50aXRsZW1lbnRzOyBwYXRoID0gV2ViS2l0
VGVzdFJ1bm5lci5lbnRpdGxlbWVudHM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU4
MzkxM0QwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1ODM5MTNEMTE0MzM1RTk1
MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1MTBBNzc3MTFFQzY0MzgwMDQxMDg2NyAvKiBBSEVNX19fXy5U
VEYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxl
OyBuYW1lID0gIkFIRU1fX19fLlRURiI7IHBhdGggPSAiZm9udHMvQUhFTV9fX18uVFRGIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxMCw3ICs0MTEsNiBAQAogCQkJaXNhID0gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owog
CQkJZmlsZXMgPSAoCi0JCQkJNTcwRTc1QTgyMTUyREI0RjAwMzI0QjZFIC8qIFNlY3VyaXR5LmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDE5LDYgKzQxOSw3IEBACiAJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJNTEwNThBRDUxRDY3ODgy
MDAwOUE1MzhDIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiBpbiBGcmFtZXdvcmtzICov
LAorCQkJCTU3MTRCNjBEMjFCMEJGMjMwMENEQ0NBQSAvKiBTZWN1cml0eS5mcmFtZXdvcmsgaW4g
RnJhbWV3b3JrcyAqLywKIAkJCQk1MTA1OEFENjFENjc4ODI1MDA5QTUzOEMgLyogV2ViS2l0LmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtNzk1LDYgKzc5Niw3IEBACiAJCQkJQkM3OTM0MjcxMThG
N0RBRjAwNUVBOEUyIC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLywKIAkJCQlCQzI1MTk3MTEx
RDE1RTYxMDAyRUJDMDEgLyogSW5qZWN0ZWRCdW5kbGUueGNjb25maWcgKi8sCiAJCQkJQTFCODlC
OTQyMjFFMDI2QjAwRUI0Q0VBIC8qIFNES1ZhcmlhbnQueGNjb25maWcgKi8sCisJCQkJNTcxNEI2
MEUyMUIwQzk2NDAwQ0RDQ0FBIC8qIFdlYktpdFRlc3RSdW5uZXIuZW50aXRsZW1lbnRzICovLAog
CQkJCUExODUxMDM4MUI5QURGMjIwMDc0NEFFQiAvKiBXZWJLaXRUZXN0UnVubmVyLnhjY29uZmln
ICovLAogCQkJCTlCMEQxMzJFMjAzNkQzNDYwMDhGQzhGQiAvKiBXZWJLaXRUZXN0UnVubmVyQXBw
LWlPUy5lbnRpdGxlbWVudHMgKi8sCiAJCQkJMzExMTgzQUEyMTJCMUFDNzAwNzdCQ0UwIC8qIFdl
YktpdFRlc3RSdW5uZXJBcHAtd2F0Y2hPUy5lbnRpdGxlbWVudHMgKi8sCkBAIC0xMjQ5LDYgKzEy
NTEsOCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IEExODUxMDM4MUI5QURGMjIwMDc0NEFFQiAvKiBXZWJLaXRUZXN0UnVu
bmVyLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT0RFX1NJR05fSURF
TlRJVFkgPSAiU2FmYXJpIEVuZ2luZWVyaW5nIjsKKwkJCQlDT0RFX1NJR05fU1RZTEUgPSBNYW51
YWw7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtMTI1Niw2ICsxMjYwLDggQEAK
IAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSBBMTg1MTAzODFCOUFERjIyMDA3NDRBRUIgLyogV2ViS2l0VGVzdFJ1bm5lci54Y2Nv
bmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09ERV9TSUdOX0lERU5USVRZID0g
IlNhZmFyaSBFbmdpbmVlcmluZyI7CisJCQkJQ09ERV9TSUdOX1NUWUxFID0gTWFudWFsOwogCQkJ
fTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpAQCAtMTQwNCw2ICsxNDEwLDggQEAKIAkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSBBMTg1MTAzODFCOUFERjIyMDA3NDRBRUIgLyogV2ViS2l0VGVzdFJ1bm5lci54Y2NvbmZpZyAq
LzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09ERV9TSUdOX0lERU5USVRZID0gIlNhZmFy
aSBFbmdpbmVlcmluZyI7CisJCQkJQ09ERV9TSUdOX1NUWUxFID0gTWFudWFsOwogCQkJfTsKIAkJ
CW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDQwODc3MzViYTI1YmI4NTNhMmU2
Y2ZmMDAwZjJlMDMxYWJiY2ZhMTIuLjQzZmY0MGIzMGQyOWEyNzFhMDgzMTA4MzY4MTc1ODU3OWQ0
NzNlNTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRy
b2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250
cm9sbGVyQ29jb2EubW0KQEAgLTUxLDYgKzUxLDcgQEAKICNpbXBvcnQgPFdlYktpdC9fV0tVc2Vy
Q29udGVudEV4dGVuc2lvblN0b3JlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRF
eHRlbnNpb25TdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1w
b3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKIG5hbWVzcGFjZSBXVFIgewogCkBA
IC0zMzAsOCArMzMxLDYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5qZWN0VXNlclNjcmlwdChX
S1N0cmluZ1JlZiBzY3JpcHQpCiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmFkZFRlc3RLZXlUb0tl
eWNoYWluKGNvbnN0IFN0cmluZyYgcHJpdmF0ZUtleUJhc2U2NCwgY29uc3QgU3RyaW5nJiBhdHRy
TGFiZWwsIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25UYWdCYXNlNjQpCiB7Ci0gICAgLy8gRklY
TUUoMTgyNzcyKQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNEaWN0aW9uYXJ5KiBv
cHRpb25zID0gQHsKICAgICAgICAgKGlkKWtTZWNBdHRyS2V5VHlwZTogKGlkKWtTZWNBdHRyS2V5
VHlwZUVDU0VDUHJpbWVSYW5kb20sCiAgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQp
a1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCkBAIC0zNDksNDAgKzM0OCwzNiBAQCB2b2lkIFRlc3RD
b250cm9sbGVyOjphZGRUZXN0S2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlC
YXNlNjQsIGNvbnN0CiAgICAgICAgIChpZClrU2VjVmFsdWVSZWY6IChpZClrZXkuZ2V0KCksCiAg
ICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCiAgICAgICAgIChpZClrU2Vj
QXR0ckxhYmVsOiBhdHRyTGFiZWwsCi0gICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFn
OiBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6YXBw
bGljYXRpb25UYWdCYXNlNjQgb3B0aW9uczpOU0RhdGFCYXNlNjREZWNvZGluZ0lnbm9yZVVua25v
d25DaGFyYWN0ZXJzXSkuZ2V0KCkKKyAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6
IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzphcHBs
aWNhdGlvblRhZ0Jhc2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93
bkNoYXJhY3RlcnNdKS5nZXQoKSwKKyAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMK
ICAgICB9OwogICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1BZGQoKF9fYnJpZGdlIENGRGlj
dGlvbmFyeVJlZilhZGRRdWVyeSwgTlVMTCk7CiAgICAgQVNTRVJUX1VOVVNFRChzdGF0dXMsICFz
dGF0dXMpOwotI2VuZGlmCiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFuVXBLZXljaGFp
bihjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCkKIHsKLSAgICAvLyBGSVhNRSgxODI3NzIpCi0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU0RpY3Rpb25hcnkqIGRlbGV0ZVF1ZXJ5ID0gQHsK
ICAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKLSAgICAgICAgKGlkKWtT
ZWNBdHRyTGFiZWw6IGF0dHJMYWJlbAorICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogYXR0ckxh
YmVsLAorICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwogICAgIH07CiAgICAgU2Vj
SXRlbURlbGV0ZSgoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWRlbGV0ZVF1ZXJ5KTsKLSNlbmRp
ZgogfQogCiBib29sIFRlc3RDb250cm9sbGVyOjprZXlFeGlzdHNJbktleWNoYWluKGNvbnN0IFN0
cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KQogewot
ICAgIC8vIEZJWE1FKDE4Mjc3MikKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TRGlj
dGlvbmFyeSAqcXVlcnkgPSBAewogICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNz
S2V5LAogICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQ
cml2YXRlLAogICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogYXR0ckxhYmVsLAogICAgICAgICAo
aWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZzogYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdp
dGhCYXNlNjRFbmNvZGVkU3RyaW5nOmFwcGxpY2F0aW9uVGFnQmFzZTY0IG9wdGlvbnM6TlNEYXRh
QmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpLAorICAgICAgICAo
aWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwogICAgIH07CiAgICAgT1NTdGF0dXMgc3RhdHVzID0g
U2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCBOVUxM
KTsKICAgICBpZiAoIXN0YXR1cykKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgQVNTRVJUKHN0
YXR1cyA9PSBlcnJTZWNJdGVtTm90Rm91bmQpOwotI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggOWVlOTZiNjIwYzYwNDg0OWNjMzNmYWZiZWE5NWQzOGY4M2Y0Nzc0NS4uYzY1
MjZkMWQ4NzQ4ZmQxNTMwYzFjMzBmNjVhNWRiNDk3N2EzZDdkMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDE5LTA1LTIzICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dlYkF1dGhOXSBFbmFibGUgTG9jYWxBdXRoZW50aWNhdG9yIGZvciBtYWNPUworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNzcyCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80MzM0NzkyMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgZXhpc3RpbmcgbG9jYWwgYXV0aGVudGljYXRv
ciB0ZXN0cyBmb3IgbWFjT1MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnM6CisKIDIwMTktMDUtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgSGlkZSBNZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oKSB3aGVuIHRo
ZSBwbGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0IGl0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDhjODE1MDAwMTU2Y2VhOGRhMmNhYjZiM2Jk
NWVlMGMzM2NhZmJhNzcuLmE4ODM2ZDRmZjdkZjdjZGVjNDRmNDA1OTBjZjA1ZWM0MjY3ZWRkODMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTkwMSwxNSArOTAxLDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50
LXJlcXVlc3QvdXNlci1hY2NlcHRzLXBheW1lbnQtcmVxdWVzdC1hbGcKIAogd2Via2l0Lm9yZy9i
LzE4OTU5OCBjb21wb3NpdGluZy9iYWNraW5nL2JhY2tpbmctc3RvcmUtYXR0YWNobWVudC1maWxs
LWZvcndhcmRzLWFuaW1hdGlvbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotIyBTa2lwIGxvY2Fs
IGF1dGhlbnRpY2F0b3IgdGVzdHMgZm9yIG1hYyBub3cuCi1odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbCBbIFNraXAg
XQotaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNz
LWxvY2FsLmh0dHBzLmh0bWwgWyBTa2lwIF0KLWh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sIFsgU2tpcCBdCi1odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMu
aHRtbCBbIFNraXAgXQotIyBUaGUgZm9sbG93aW5nIHRlc3RzIHJlcXVpcmUgUHVibGljS2V5Q3Jl
ZGVudGlhbCBvYmplY3RzLiBXZSBjYW4gb25seSBwcm9kdWNlIHRoZW0gdmlhIGxvY2FsIGF1dGhl
bnRpY2F0b3JzIG5vdy4KLWh0dHAvd3B0L2NyZWRlbnRpYWwtbWFuYWdlbWVudC9jcmVkZW50aWFs
c2NvbnRhaW5lci1zdG9yZS1iYXNpY3MuaHR0cHMuaHRtbCBbIFNraXAgXQotaHR0cC93cHQvd2Vi
YXV0aG4vaWRsLmh0dHBzLmh0bWwgWyBTa2lwIF0KLQogd2Via2l0Lm9yZy9iLzE4Mzg3OCBtZWRp
YS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdHJhY2tzLXBhbmVsL3RyYWNrcy1wYW5lbC11cC1jbGlj
ay1vdmVyLW1lZGlhLWRvZXMtbm90LWRpbWlzcy1tZWRpYS1jb250cm9scy13aGVuLW1lZGlhLWlz
LXBsYXlpbmcuaHRtbCBbIFBhc3MgVGltZW91dCBdIAogCiB3ZWJraXQub3JnL2IvMTkxNjU4IFsg
U2llcnJhIFJlbGVhc2UgXSBmYXN0L2xheWVycy9uby1jbGlwcGluZy1vdmVyZmxvdy1oaWRkZW4t
YWRkZWQtYWZ0ZXItdHJhbnNmb3JtLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370531</attachid>
            <date>2019-05-23 16:35:03 -0700</date>
            <delta_ts>2019-08-02 14:47:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182772-20190523163502.patch</filename>
            <type>text/plain</type>
            <size>32388</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI3OGViYzBjZjY1ZTM0MDJmZDFkNDE1
OTE5Y2E5MTFhZjk0MTJlYmYuLjMxNDYyODIzOWExMjU5OThlZWVhNmY1M2JlMTBlN2NjZGJhMWYw
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDUtMjMgIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aE5dIEVuYWJsZSBMb2NhbEF1dGhlbnRp
Y2F0b3IgZm9yIG1hY09TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODI3NzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMzQ3OTIwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3Jt
Lmg6CisgICAgICAgIEFkZHMgSEFWRV9ERVZJQ0VfSURFTlRJVFkuCisgICAgICAgICogd3RmL3Nw
aS9jb2NvYS9TZWN1cml0eVNQSS5oOgorICAgICAgICBBZGRzIGEgU1BJIGZvciB0ZWxsaW5nIG1h
Y09TIGtleWNoYWluIHRvIHVzZSB0aGUgbW9kZXJuIG9uZS4KKwogMjAxOS0wNS0yMSAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW1BsYXlTdGF0aW9u
XSBEb24ndCBjYWxsIGZjbnRsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzNzc2ZDZkNDk0MTc5MGM5NDQyOWFmNjU1
YTIyNzIwMzg2NWYyMzM3Li44OWY3MjVlNGUzZGRlNDJmYzBkNjQ4OTZiZTJiMjIzMDdlMTVkMTgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE5LTA1LTIzICBKaWV3ZW4gVGFuICA8amll
d2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBFbmFibGUgTG9jYWxBdXRo
ZW50aWNhdG9yIGZvciBtYWNPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgyNzcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzM0NzkyMD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGVuYWJsZXMgTG9jYWxBdXRoZW50aWNhdG9yIGZvciBtYWNPUy4gVGhlIG1ham9yaXR5CisgICAg
ICAgIG9mIHRoaXMgcGF0Y2ggaXMgdG8gdHdlYWsgbWFjT1Mga2V5Y2hhaW4gdG8gdXNlIHRoZSBt
b2Rlcm4gb25lLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnOgor
ICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9EZXZpY2VJZGVudGl0eVNQSS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3Iu
bW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvckludGVybmFsOjp0b1ZlY3Rv
cik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwp
OgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRl
bnRpYWxBZnRlclVzZXJDb25zZW50ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRp
Y2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKToKKyAgICAgICAgKFdl
YktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2Vu
dGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxD
b25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5lY3Rpb246OmdldFVzZXJD
b25zZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxDb25uZWN0aW9uOjpnZXRBdHRl
c3RhdGlvbiBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTZXJ2aWNlOjppc0F2
YWlsYWJsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVjdGlv
bjo6Z2V0QXR0ZXN0YXRpb24gY29uc3QpOgorCiAyMDE5LTA1LTIyICBaYWxhbiBCdWp0YXMgIDx6
YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1Bhc3RlXSBBZGQgc3VwcG9ydCBmb3IgcHJlZmVy
cmVkIHByZXNlbnRhdGlvbiBzaXplIHdoZW4gcGFzdGluZyBhbiBpbWFnZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5k
ZXggNDQ3YmIxOGE4ZjAyOGMyOTUwMWQzOTMxZmI5NTU3YThkNTNhMjYwNy4uNTdhMWNkM2IzNmE0
YzMwM2JkNjU4ODUzMjk5Y2I5NTFjN2RiZmY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xNTU5LDMgKzE1
NTksNiBAQAogI2RlZmluZSBIQVZFX0NPUkVURVhUX0FVVE9fT1BUSUNBTF9TSVpJTkcgMQogI2Vu
ZGlmCiAKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFU
T1IpKQorI2RlZmluZSBIQVZFX0RFVklDRV9JREVOVElUWSAxCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oIGIvU291cmNlL1dURi93dGYv
c3BpL2NvY29hL1NlY3VyaXR5U1BJLmgKaW5kZXggOTZlMzBhN2M3ZDI5NGY0NTVjMDNiMGRlMzdi
ZTBhNGQxMjEzNWU0Mi4uMGUwZmE5NGNlMjEwMmM3MWI2ZjZiOTQyZTY4YWJiODhlNmE5OTE2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmgKKysrIGIv
U291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQ2Vy
dGlmaWNhdGVQcml2Lmg+CisjaW5jbHVkZSA8U2VjdXJpdHkvU2VjSXRlbVByaXYuaD4KICNpbmNs
dWRlIDxTZWN1cml0eS9TZWNUYXNrLmg+CiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjVHJ1c3RQcml2
Lmg+CiAKQEAgLTU1LDEwICs1NiwxMSBAQCBlbnVtIHsKIFdURl9FWFRFUk5fQ19CRUdJTgogCiBT
ZWNTaWduYXR1cmVIYXNoQWxnb3JpdGhtIFNlY0NlcnRpZmljYXRlR2V0U2lnbmF0dXJlSGFzaEFs
Z29yaXRobShTZWNDZXJ0aWZpY2F0ZVJlZik7CitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga1Nl
Y0F0dHJOb0xlZ2FjeTsKIAogV1RGX0VYVEVSTl9DX0VORAogCi0jZW5kaWYKKyNlbmRpZiAvLyBV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiB0eXBlZGVmIHN0cnVjdCBfX1NlY1Rhc2sgKlNlY1Rh
c2tSZWY7CiB0eXBlZGVmIHN0cnVjdCBfX1NlY1RydXN0ICpTZWNUcnVzdFJlZjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnIGIvU291cmNl
L1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWcKaW5kZXggZmVlMTQ3OTFhODFm
MmYzNmEyNWQzYWI2YjdmYTU5NzMwMmU3MmI1Ni4uN2UwNGUxMGU0ZmJmODhmOTIxMjNlMDRkZWIw
NTgyNmUwMGYzMzFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9X
ZWJLaXQueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJLaXQu
eGNjb25maWcKQEAgLTE2NSw4ICsxNjUsMTAgQEAgV0tfRlJBTUVXT1JLX0hFQURFUl9QT1NUUFJP
Q0VTU0lOR19ESVNBQkxFRFtzZGs9aXBob25lKjEyLipdID0gWUVTOwogV0tfUkVMT0NBVEFCTEVf
RlJBTUVXT1JLX0xERkxBR1MgPSAkKFdLX1JFTE9DQVRBQkxFX0ZSQU1FV09SS19MREZMQUdTXyQo
V0tfUkVMT0NBVEFCTEVfRlJBTUVXT1JLUykpOwogV0tfUkVMT0NBVEFCTEVfRlJBTUVXT1JLX0xE
RkxBR1NfWUVTID0gLVdsLC1ub3RfZm9yX2R5bGRfc2hhcmVkX2NhY2hlOwogCi1XS19IQVZFX0RF
VklDRV9JREVOVElUWSA9ICQoV0tfSEFWRV9ERVZJQ0VfSURFTlRJVFlfJChQTEFURk9STV9OQU1F
KSk7CitXS19IQVZFX0RFVklDRV9JREVOVElUWSA9ICQoV0tfSEFWRV9ERVZJQ0VfSURFTlRJVFlf
JChXS19QTEFURk9STV9OQU1FKSk7CiBXS19IQVZFX0RFVklDRV9JREVOVElUWV9pcGhvbmVvcyA9
IFlFUzsKK1dLX0hBVkVfREVWSUNFX0lERU5USVRZX21hY29zeCA9ICQoV0tfSEFWRV9ERVZJQ0Vf
SURFTlRJVFkkKFdLX01BQ09TXzEwMTQpKTsKK1dLX0hBVkVfREVWSUNFX0lERU5USVRZX01BQ09T
X1NJTkNFXzEwMTQgPSBZRVM7CiAKIFdLX0hBVkVfVVJMX0ZPUk1BVFRJTkcgPSAkKFdLX0hBVkVf
VVJMX0ZPUk1BVFRJTkdfJChXS19QTEFURk9STV9OQU1FKSk7CiBXS19IQVZFX1VSTF9GT1JNQVRU
SU5HX2lwaG9uZW9zID0gJChXS19IQVZFX1VSTF9GT1JNQVRUSU5HJChXS19JT1NfMTIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0RldmljZUlkZW50aXR5
U1BJLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9EZXZpY2VJZGVudGl0eVNQ
SS5oCmluZGV4IDAzMjAzZTI2MDQzMjJhYTdhMjlkMTgzM2VkYjc1NGI5Y2MyMzVkY2EuLjc0Nzdl
NDA5NzIxYmVhMzY3ODExMTQ1Y2NjYWJmYjYwNmQ1Mzk4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0RldmljZUlkZW50aXR5U1BJLmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvRGV2aWNlSWRlbnRpdHlTUEkuaApAQCAtMjcsNyAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKKyNpZiBIQVZFKERFVklDRV9J
REVOVElUWSkKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKQEAgLTU0LDYgKzU0LDYg
QEAgdm9pZCBEZXZpY2VJZGVudGl0eUlzc3VlQ2xpZW50Q2VydGlmaWNhdGVXaXRoQ29tcGxldGlv
bihkaXNwYXRjaF9xdWV1ZV90IF9OdWxsYWIKIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9T
X0ZBTUlMWV9TSU1VTEFUT1IpCisjZW5kaWYgLy8gSEFWRShERVZJQ0VfSURFTlRJVFkpCiAKICNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50
aWNhdG9yLm1tCmluZGV4IDY5ZmZlZGJhY2M3OTRlOTI2OGNhODYzNTdjOWIyODQ3YWRiN2UyYTYu
LjAyMjgwNjU1N2E5ZTU1MDEwNjEzYzcxNTA5MTlhNzkwNTU4NzEyNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTQxLDYgKzQxLDcgQEAKICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYv
VmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyAr
NTUsNiBAQCBjb25zdCB1aW50OF90IGdldEFzc2VydGlvbkZsYWdzID0gMGIwMDAwMDEwMTsgLy8g
VVAgYW5kIFVWIGFyZSBzZXQuCiAvLyBDcmVkZW50aWFsIElEIGlzIGN1cnJlbnRseSBTSEEtMSBv
ZiB0aGUgY29ycmVzcG9uZGluZyBwdWJsaWMga2V5LgogY29uc3QgdWludDE2X3QgY3JlZGVudGlh
bElkTGVuZ3RoID0gMjA7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIGlubGlu
ZSBib29sIGVtcHR5VHJhbnNwb3J0c09yQ29udGFpbihjb25zdCBWZWN0b3I8QXV0aGVudGljYXRv
clRyYW5zcG9ydD4mIHRyYW5zcG9ydHMsIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgdGFyZ2V0KQog
ewogICAgIHJldHVybiB0cmFuc3BvcnRzLmlzRW1wdHkoKSA/IHRydWUgOiB0cmFuc3BvcnRzLmNv
bnRhaW5zKHRhcmdldCk7CkBAIC03OCw3ICs3OCw2IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPHVp
bnQ4X3Q+IHRvVmVjdG9yKE5TRGF0YSAqZGF0YSkKICAgICByZXN1bHQuYXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfSAv
LyBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbAogCkBAIC04OSwxMiArODgsMTAgQEAgTG9jYWxB
dXRoZW50aWNhdG9yOjpMb2NhbEF1dGhlbnRpY2F0b3IoVW5pcXVlUmVmPExvY2FsQ29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uKQogCiB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRp
YWwoKQogewotICAgIC8vIEZJWE1FKDE4Mjc3MikKICAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxB
dXRoZW50aWNhdG9ySW50ZXJuYWw7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkluaXQp
OwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVxdWVzdFJlY2VpdmVkOwogCi0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAvLyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cu
dzMub3JnL1RSL3dlYmF1dGhuLyNvcC1tYWtlLWNyZWQgYXMgb2YgNSBEZWNlbWJlciAyMDE3Lgog
ICAgIC8vIFNraXAgU3RlcCA0LTUgYXMgcmVxdWlyZVJlc2lkZW50S2V5IGFuZCByZXF1aXJlVXNl
clZlcmlmaWNhdGlvbiBhcmUgZW5mb3JjZWQuCiAgICAgLy8gU2tpcCBTdGVwIDkgYXMgZXh0ZW5z
aW9ucyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuCkBAIC0xMjIsNiArMTE5LDcgQEAgdm9pZCBMb2Nh
bEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAgICAgICAgICAgIChpZClrU2VjQXR0
ckxhYmVsOiByZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5pZCwKICAgICAgICAgICAg
IChpZClrU2VjUmV0dXJuQXR0cmlidXRlczogQFlFUywKICAgICAgICAgICAgIChpZClrU2VjTWF0
Y2hMaW1pdDogKGlkKWtTZWNNYXRjaExpbWl0QWxsLAorICAgICAgICAgICAgKGlkKWtTZWNBdHRy
Tm9MZWdhY3k6IEBZRVMKICAgICAgICAgfTsKICAgICAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNB
cnJheVJlZiA9IG51bGxwdHI7CiAgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5
TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeSwgJmF0dHJpYnV0ZXNBcnJh
eVJlZik7CkBAIC0xNTIsMTggKzE1MCwxNSBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFr
ZUNyZWRlbnRpYWwoKQogICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVNYWtlQ3JlZGVudGlhbEFm
dGVyVXNlckNvbnNlbnRlZChjb25zZW50KTsKICAgICB9OwogICAgIG1fY29ubmVjdGlvbi0+Z2V0
VXNlckNvbnNlbnQoCi0gICAgICAgICJBbGxvdyAiICsgcmVxdWVzdERhdGEoKS5jcmVhdGlvbk9w
dGlvbnMucnAuaWQgKyAiIHRvIGNyZWF0ZSBhIHB1YmxpYyBrZXkgY3JlZGVudGlhbCBmb3IgIiAr
IHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLnVzZXIubmFtZSwKKyAgICAgICAgImFsbG93
ICIgKyByZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5pZCArICIgdG8gY3JlYXRlIGEg
cHVibGljIGtleSBjcmVkZW50aWFsIGZvciAiICsgcmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlv
bnMudXNlci5uYW1lLAogICAgICAgICBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0jZW5kaWYgLy8gIVBM
QVRGT1JNKElPU19GQU1JTFkpCiB9CiAKIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51
ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjo6VXNlckNv
bnNlbnQgY29uc2VudCkKIHsKLSAgICAvLyBGSVhNRSgxODI3NzIpCiAgICAgQVNTRVJUKG1fc3Rh
dGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNlaXZlZCk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2Vy
Q29uc2VudGVkOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoY29uc2VudCA9
PSBMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50OjpObykgewogICAgICAgICByZWNlaXZlUmVz
cG9uZChFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiQ291bGRuJ3QgZ2V0IHVzZXIg
Y29uc2VudC4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE3Niw2ICsxNzEsNyBAQCB2b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNl
bnRlZChMb2NhbENvbm5lY3RpbwogICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNz
S2V5LAogICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogcmVxdWVzdERhdGEoKS5jcmVhdGlvbk9w
dGlvbnMucnAuaWQsCiAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnOiBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6cmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMudXNlci5pZFZlY3Rv
ci5kYXRhKCkgbGVuZ3RoOnJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLnVzZXIuaWRWZWN0
b3Iuc2l6ZSgpXSwKKyAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKICAgICB9Owog
ICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1EZWxldGUoKF9fYnJpZGdlIENGRGljdGlvbmFy
eVJlZilkZWxldGVRdWVyeSk7CiAgICAgaWYgKHN0YXR1cyAmJiBzdGF0dXMgIT0gZXJyU2VjSXRl
bU5vdEZvdW5kKSB7CkBAIC0xOTIsMTggKzE4OCwxNSBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRv
cjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChMb2NhbENvbm5lY3Rp
bwogICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0ZWQo
cHJpdmF0ZUtleSwgY2VydGlmaWNhdGVzLCBlcnJvcik7CiAgICAgfTsKICAgICBtX2Nvbm5lY3Rp
b24tPmdldEF0dGVzdGF0aW9uKHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLnJwLmlkLCBy
ZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy51c2VyLm5hbWUsIHJlcXVlc3REYXRhKCkuaGFz
aCwgV1RGTW92ZShjYWxsYmFjaykpOwotI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQog
fQogCiB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVy
QXR0ZXN0ZWQoU2VjS2V5UmVmIHByaXZhdGVLZXksIE5TQXJyYXkgKmNlcnRpZmljYXRlcywgTlNF
cnJvciAqZXJyb3IpCiB7Ci0gICAgLy8gRklYTUUoMTgyNzcyKQogICAgIHVzaW5nIG5hbWVzcGFj
ZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsKIAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0
YXRlOjpVc2VyQ29uc2VudGVkKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OkF0dGVzdGVkOwogCi0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZG4ndCBhdHRlc3Q6ICVAIiwgZXJyb3IpOwogICAgICAgICByZWNlaXZlUmVzcG9u
ZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4i
X3MgfSk7CkBAIC0yMjcsMTMgKzIyMCwxNCBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0ZWQoU2VjS2V5UmVmIHByaXZhdGVLZQogICAg
IC8vIEZJWE1FKDE4MzUzMyk6IERldmljZUlkZW50aXR5LkZyYW1ld29yayB3b3VsZCBpbnNlcnQg
Y2VydGlmaWNhdGVzIGludG8gS2V5Y2hhaW4gYXMgd2VsbC4gV2Ugc2hvdWxkIHVwZGF0ZSB0aG9z
ZSBhcyB3ZWxsLgogICAgIFZlY3Rvcjx1aW50OF90PiBjcmVkZW50aWFsSWQ7CiAgICAgewotICAg
ICAgICAvLyAtcmsgaXMgYWRkZWQgYnkgRGV2aWNlSWRlbnRpdHkuRnJhbWV3b3JrLgotICAgICAg
ICBTdHJpbmcgbGFiZWwgPSBtYWtlU3RyaW5nKHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25z
LnVzZXIubmFtZSwgIkAiLCByZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5pZCwgIi1y
ayIpOworICAgICAgICAvLyAtcmstdWNydCBpcyBhZGRlZCBieSBEZXZpY2VJZGVudGl0eS5GcmFt
ZXdvcmsuCisgICAgICAgIFN0cmluZyBsYWJlbCA9IG1ha2VTdHJpbmcocmVxdWVzdERhdGEoKS5j
cmVhdGlvbk9wdGlvbnMudXNlci5uYW1lLCAiQCIsIHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRp
b25zLnJwLmlkLCAiLXJrLXVjcnQiKTsKICAgICAgICAgTlNEaWN0aW9uYXJ5ICpjcmVkZW50aWFs
SWRRdWVyeSA9IEB7CiAgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5
LAogICAgICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNz
UHJpdmF0ZSwKICAgICAgICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiBsYWJlbCwKLSAgICAgICAg
ICAgIChpZClrU2VjUmV0dXJuQXR0cmlidXRlczogQFlFUworICAgICAgICAgICAgKGlkKWtTZWNS
ZXR1cm5BdHRyaWJ1dGVzOiBAWUVTLAorICAgICAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6
IEBZRVMKICAgICAgICAgfTsKICAgICAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNSZWYgPSBudWxs
cHRyOwogICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpY3JlZGVudGlhbElkUXVlcnksICZhdHRyaWJ1dGVzUmVmKTsK
QEAgLTI1MSw2ICsyNDUsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyQXR0ZXN0ZWQoU2VjS2V5UmVmIHByaXZhdGVLZQogICAgICAgICAgICAg
KGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKICAgICAgICAgICAgIChpZClrU2VjQXR0
cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCiAgICAgICAgICAgICAoaWQp
a1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsOiBuc0F0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGlj
YXRpb25MYWJlbF0sCisgICAgICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwogICAg
ICAgICB9OwogICAgICAgICBOU0RpY3Rpb25hcnkgKnVwZGF0ZVBhcmFtcyA9IEB7CiAgICAgICAg
ICAgICAoaWQpa1NlY0F0dHJMYWJlbDogcmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMucnAu
aWQsCkBAIC0zMjcsMTcgKzMyMiwxNCBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGlu
dWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0ZWQoU2VjS2V5UmVmIHByaXZhdGVLZQogICAgIGF1
dG8gYXR0ZXN0YXRpb25PYmplY3QgPSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0
aERhdGEpLCAiQXBwbGUiLCBXVEZNb3ZlKGF0dGVzdGF0aW9uU3RhdGVtZW50TWFwKSk7CiAKICAg
ICByZWNlaXZlUmVzcG9uZChQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSB7IEFycmF5QnVmZmVyOjpj
cmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNpemUoKSksIHRydWUsIG51
bGxwdHIsIEFycmF5QnVmZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3QuZGF0YSgpLCBhdHRl
c3RhdGlvbk9iamVjdC5zaXplKCkpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBXVEY6Om51
bGxvcHQgfSk7Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiB9CiAKIHZvaWQgTG9j
YWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogewotICAgIC8vIEZJWE1FKDE4Mjc3MikK
ICAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw7CiAgICAgQVNT
RVJUKG1fc3RhdGUgPT0gU3RhdGU6OkluaXQpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVxdWVz
dFJlY2VpdmVkOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBUaGUgZm9sbG93
aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNvcC1nZXQtYXNz
ZXJ0aW9uIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KICAgICAvLyBTa2lwIFN0ZXAgMiBhcyByZXF1
aXJlVXNlclZlcmlmaWNhdGlvbiBpcyBlbmZvcmNlZC4KICAgICAvLyBTa2lwIFN0ZXAgOCBhcyBl
eHRlbnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KQEAgLTM1NSw3ICszNDcsOCBAQCB2b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKICAgICAgICAgKGlkKWtTZWNBdHRy
S2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKICAgICAgICAgKGlkKWtTZWNB
dHRyTGFiZWw6IHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMucnBJZCwKICAgICAgICAgKGlk
KWtTZWNSZXR1cm5BdHRyaWJ1dGVzOiBAWUVTLAotICAgICAgICAoaWQpa1NlY01hdGNoTGltaXQ6
IChpZClrU2VjTWF0Y2hMaW1pdEFsbAorICAgICAgICAoaWQpa1NlY01hdGNoTGltaXQ6IChpZClr
U2VjTWF0Y2hMaW1pdEFsbCwKKyAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKICAg
ICB9OwogICAgIENGVHlwZVJlZiBhdHRyaWJ1dGVzQXJyYXlSZWYgPSBudWxscHRyOwogICAgIE9T
U3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFy
eVJlZilxdWVyeSwgJmF0dHJpYnV0ZXNBcnJheVJlZik7CkBAIC00MDEsMjIgKzM5NCwxOSBAQCB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKICAgICAgICAgd2Vha1RoaXMt
PmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKGNvbnNlbnQsIGNvbnRleHQs
IGNyZWRlbnRpYWxJZCwgdXNlcmhhbmRsZSk7CiAgICAgfTsKICAgICBOU0RhdGEgKmlkRGF0YSA9
IHNlbGVjdGVkQ3JlZGVudGlhbEF0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWdd
OwotICAgIFN0cmluZ1ZpZXcgaWRTdHJpbmdWaWV3IHsgc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIq
PihbaWREYXRhIGJ5dGVzXSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihbaWREYXRhIGxlbmd0aF0p
IH07CisgICAgU3RyaW5nVmlldyBpZFN0cmluZ1ZpZXcgeyBzdGF0aWNfY2FzdDxjb25zdCBVQ2hh
cio+KFtpZERhdGEgYnl0ZXNdKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFtpZERhdGEgbGVuZ3Ro
XSkgfTsKICAgICBtX2Nvbm5lY3Rpb24tPmdldFVzZXJDb25zZW50KAotICAgICAgICBtYWtlU3Ry
aW5nKCJMb2cgaW50byAiLCByZXF1ZXN0RGF0YSgpLnJlcXVlc3RPcHRpb25zLnJwSWQsICIgd2l0
aCAiLCBpZFN0cmluZ1ZpZXcsICcuJyksCisgICAgICAgIG1ha2VTdHJpbmcoImxvZyBpbnRvICIs
IHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMucnBJZCwgIiB3aXRoICIsIGlkU3RyaW5nVmll
dyksCiAgICAgICAgIChfX2JyaWRnZSBTZWNBY2Nlc3NDb250cm9sUmVmKXNlbGVjdGVkQ3JlZGVu
dGlhbEF0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQWNjZXNzQ29udHJvbF0sCiAgICAgICAgIFdURk1v
dmUoY2FsbGJhY2spKTsKLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogfQogCiB2b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25zZW50
ZWQoTG9jYWxDb25uZWN0aW9uOjpVc2VyQ29uc2VudCBjb25zZW50LCBMQUNvbnRleHQgKmNvbnRl
eHQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVudGlhbElkLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHVzZXJoYW5kbGUpCiB7Ci0gICAgLy8gRklYTUUoMTgyNzcyKQogICAgIHVzaW5nIG5h
bWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsKICAgICBBU1NFUlQobV9zdGF0ZSA9
PSBTdGF0ZTo6UmVxdWVzdFJlY2VpdmVkKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OlVzZXJDb25z
ZW50ZWQ7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChjb25zZW50ID09IExv
Y2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQ6Ok5vKSB7CiAgICAgICAgIHJlY2VpdmVSZXNwb25k
KEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNlciBjb25z
ZW50LiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDM3LDYgKzQyNyw3IEBAIHZvaWQgTG9j
YWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChM
b2NhbENvbm5lY3Rpb246CiAgICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVs
OiBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Y3JlZGVudGlhbElkLmRhdGEoKSBsZW5ndGg6Y3JlZGVu
dGlhbElkLnNpemUoKV0sCiAgICAgICAgICAgICAoaWQpa1NlY1VzZUF1dGhlbnRpY2F0aW9uQ29u
dGV4dDogY29udGV4dCwKICAgICAgICAgICAgIChpZClrU2VjUmV0dXJuUmVmOiBAWUVTLAorICAg
ICAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKICAgICAgICAgfTsKICAgICAgICAg
Q0ZUeXBlUmVmIHByaXZhdGVLZXlSZWYgPSBudWxscHRyOwogICAgICAgICBPU1N0YXR1cyBzdGF0
dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnks
ICZwcml2YXRlS2V5UmVmKTsKQEAgLTQ2NCw3ICs0NTUsNiBAQCB2b2lkIExvY2FsQXV0aGVudGlj
YXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25zZW50ZWQoTG9jYWxDb25uZWN0
aW9uOgogCiAgICAgLy8gU3RlcCAxMy4KICAgICByZWNlaXZlUmVzcG9uZChQdWJsaWNLZXlDcmVk
ZW50aWFsRGF0YSB7IEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3Jl
ZGVudGlhbElkLnNpemUoKSksIGZhbHNlLCBudWxscHRyLCBudWxscHRyLCBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKGF1dGhEYXRhLmRhdGEoKSwgYXV0aERhdGEuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNy
ZWF0ZShzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNy
ZWF0ZSh1c2VyaGFuZGxlLmRhdGEoKSwgdXNlcmhhbmRsZS5zaXplKCkpLCBXVEY6Om51bGxvcHQg
fSk7Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tCmluZGV4IDk0NDcwNWMy
NjljYjEzNTY5NThiZjc0NjVkYmZjOTBkMzAwMTI1NjUuLjljOTg5NjkxMDMwOWUzZTcwZDVkMWY4
MjVlMWZjMjZlODkzZjg4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0K
QEAgLTM5LDggKzM5LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgTG9jYWxDb25uZWN0
aW9uOjpnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNvbiwgVXNlckNvbnNlbnRDYWxs
YmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewotICAgIC8vIEZJWE1FKDE4Mjc3MikK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW2Fs
bG9jTEFDb250ZXh0SW5zdGFuY2UoKSBpbml0XSk7CiAgICAgYXV0byByZXBseSA9IG1ha2VCbG9j
a1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEJP
T0wgc3VjY2VzcywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKQEAgLTU1LDEzICs1MywxMCBAQCB2b2lkIExvY2FsQ29ubmVjdGlv
bjo6Z2V0VXNlckNvbnNlbnQoY29uc3QgU3RyaW5nJiByZWFzb24sIFVzZXJDb25zZW50Q2FsbGJh
Y2smJgogICAgICAgICB9KTsKICAgICB9KTsKICAgICBbY29udGV4dCBldmFsdWF0ZVBvbGljeTpM
QVBvbGljeURldmljZU93bmVyQXV0aGVudGljYXRpb25XaXRoQmlvbWV0cmljcyBsb2NhbGl6ZWRS
ZWFzb246cmVhc29uIHJlcGx5OnJlcGx5LmdldCgpXTsKLSNlbmRpZgogfQogCiB2b2lkIExvY2Fs
Q29ubmVjdGlvbjo6Z2V0VXNlckNvbnNlbnQoY29uc3QgU3RyaW5nJiByZWFzb24sIFNlY0FjY2Vz
c0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbCwgVXNlckNvbnNlbnRDb250ZXh0Q2FsbGJhY2smJiBj
b21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKLSAgICAvLyBGSVhNRSgxODI3NzIpCi0jaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdE5TKFthbGxvY0xBQ29u
dGV4dEluc3RhbmNlKCkgaW5pdF0pOwogICAgIGF1dG8gcmVwbHkgPSBtYWtlQmxvY2tQdHIoW2Nv
bnRleHQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChC
T09MIHN1Y2Nlc3MsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CkBAIC03NiwxMyArNzEsMTEgQEAgdm9pZCBMb2NhbENvbm5lY3Rp
b246OmdldFVzZXJDb25zZW50KGNvbnN0IFN0cmluZyYgcmVhc29uLCBTZWNBY2Nlc3NDb250cm9s
UmVmIGEKICAgICAgICAgfSk7CiAgICAgfSk7CiAgICAgW2NvbnRleHQgZXZhbHVhdGVBY2Nlc3ND
b250cm9sOmFjY2Vzc0NvbnRyb2wgb3BlcmF0aW9uOkxBQWNjZXNzQ29udHJvbE9wZXJhdGlvblVz
ZUtleVNpZ24gbG9jYWxpemVkUmVhc29uOnJlYXNvbiByZXBseTpyZXBseS5nZXQoKV07Ci0jZW5k
aWYKIH0KIAogdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldEF0dGVzdGF0aW9uKGNvbnN0IFN0cmlu
ZyYgcnBJZCwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBo
YXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7Ci0g
ICAgLy8gRGV2aWNlSWRlbnRpdHkuRnJhbWV3b3JrIGlzIG5vdCBhdmFsaWFibGUgaW4gaU9TIHNp
bXVsYXRvci4KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WV9TSU1VTEFUT1IpCisjaWYgSEFWRShERVZJQ0VfSURFTlRJVFkpCiAgICAgLy8gQXBwbGUgQXR0
ZXN0YXRpb24KICAgICBBU1NFUlQoaGFzaC5zaXplKCkgPD0gMzIpOwogCkBAIC0xMTQsNyArMTA3
LDcgQEAgdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldEF0dGVzdGF0aW9uKGNvbnN0IFN0cmluZyYg
cnBJZCwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwKIAogICAgIC8vIEZJWE1FKDE4MzY1Mik6IFJl
ZHVjZSBwcm9tcHQgZm9yIGJpb21ldHJpY3MKICAgICBEZXZpY2VJZGVudGl0eUlzc3VlQ2xpZW50
Q2VydGlmaWNhdGVXaXRoQ29tcGxldGlvbihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBvcHRp
b25zLCBtYWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpLmdldCgpKTsKLSNl
bmRpZgorI2VuZGlmIC8vIEhBVkUoREVWSUNFX0lERU5USVRZKQogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbQppbmRleCBmNDA2OTZjZDExMmIw
Nzc0OWE3NWQ3N2NkYzI3MTc5N2QwMGZhYTg4Li4zMjQ5YjBlMDE3NjcyNTZmZjhlMzQ0N2Q2ZjQ0
ZjVhODBhYzE3ZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tCkBAIC00MSwxMiAr
NDEsMTAgQEAgTG9jYWxTZXJ2aWNlOjpMb2NhbFNlcnZpY2UoT2JzZXJ2ZXImIG9ic2VydmVyKQog
ewogfQogCisvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS81MTA0ODU0MikKIGJvb2wgTG9jYWxTZXJ2
aWNlOjppc0F2YWlsYWJsZSgpCiB7Ci0vLyBGSVhNRSgxODI3NzIpCi0jaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vsc2UKKyAgICAvLyBGSVhNRSgxOTgxNzYp
CiAgICAgaWYgKCFXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLndlYkF1dGhlbnRpY2F0aW9uTG9jYWxBdXRoZW50aWNhdG9yRW5hYmxlZCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTU3LDcgKzU1LDYgQEAgYm9vbCBMb2NhbFNlcnZpY2U6Omlz
QXZhaWxhYmxlKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1
ZTsKLSNlbmRpZgogfQogCiB2b2lkIExvY2FsU2VydmljZTo6c3RhcnREaXNjb3ZlcnlJbnRlcm5h
bCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KaW5kZXggY2E3NjVl
NTgyYTZiYjg2NDZmM2UwMTdkYjc2NDY2NjkyZWI2MTdhNy4uODZlMDc5MGQxNjgwMTIxZWU3ZTFm
ZjdiYTY5NzY2NTE0YWRmNWI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVj
dGlvbi5tbQpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIE1vY2tMb2NhbENvbm5lY3Rpb246OmdldEF0
dGVzdGF0aW9uKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgU3RyaW5nJiB1c2VybgogICAgICAg
ICBBU1NFUlQoIWVycm9yUmVmKTsKIAogICAgICAgICAvLyBNb2NrIHdoYXQgRGV2aWNlSWRlbnRp
dHkgd291bGQgZG8uCi0gICAgICAgIFN0cmluZyBsYWJlbCA9IG1ha2VTdHJpbmcodXNlcm5hbWUs
ICJAIiwgcnBJZCwgIi1yayIpOworICAgICAgICBTdHJpbmcgbGFiZWwgPSBtYWtlU3RyaW5nKHVz
ZXJuYW1lLCAiQCIsIHJwSWQsICItcmstdWNydCIpOwogICAgICAgICBOU0RpY3Rpb25hcnkqIGFk
ZFF1ZXJ5ID0gQHsKICAgICAgICAgICAgIChpZClrU2VjVmFsdWVSZWY6IChpZClrZXkuZ2V0KCks
CiAgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNhNTcyYjhkNWJkYTI4
OWI1M2Q5NGE1ZjA5OWQ0MDNiMjY3ODZkMDQuLmRhNmZkM2EyNTAwM2I5YmFlODU5ZWNiNzFjMzU5
ZWExMWZkNDA1MGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0wNS0yMyAgSmlld2VuIFRhbiAgPGppZXdlbl90
YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gRW5hYmxlIExvY2FsQXV0aGVudGlj
YXRvciBmb3IgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4Mjc3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNDc5MjA+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIGVudGl0bGVt
ZW50IGZpbGUgdG8gV2ViS2l0VGVzdFJ1bm5lciBzdWNoIHRoYXQgaXQgY2FuIGFjY2VzcworICAg
ICAgICB0aGUgbW9kZXJuIG1hY09TIGtleWNoYWluLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9Db25maWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVubmVyLmVudGl0bGVtZW50czogQWRkZWQu
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVu
bmVyLnhjY29uZmlnOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5l
ci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
Y29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OmFkZFRlc3RLZXlUb0tleWNoYWluKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OmNsZWFuVXBLZXljaGFpbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjprZXlFeGlz
dHNJbktleWNoYWluKToKKwogMjAxOS0wNS0yMiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtQYXN0ZV0gQWRkIHN1cHBvcnQgZm9yIHByZWZlcnJlZCBwcmVzZW50
YXRpb24gc2l6ZSB3aGVuIHBhc3RpbmcgYW4gaW1hZ2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvV2ViS2l0VGVzdFJ1bm5lci5lbnRpdGxlbWVudHMg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL1dlYktpdFRlc3RSdW5uZXIu
ZW50aXRsZW1lbnRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmYjQ4Mjc3OTU2NTk3OTRlODYwYmZlYzFiMjY0MDc0
YTExYzI0OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NvbmZp
Z3VyYXRpb25zL1dlYktpdFRlc3RSdW5uZXIuZW50aXRsZW1lbnRzCkBAIC0wLDAgKzEsMTAgQEAK
Kzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgcGxpc3Qg
UFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNv
bS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KKzxwbGlzdCB2ZXJzaW9uPSIxLjAiPgorICAg
IDxkaWN0PgorICAgICAgICA8a2V5PmtleWNoYWluLWFjY2Vzcy1ncm91cHM8L2tleT4KKyAgICAg
ICAgPGFycmF5PgorICAgICAgICAgICAgPHN0cmluZz5jb20uYXBwbGUuV2ViS2l0VGVzdFJ1bm5l
cjwvc3RyaW5nPgorICAgICAgICA8L2FycmF5PgorICAgIDwvZGljdD4KKzwvcGxpc3Q+CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL1dlYktpdFRlc3RS
dW5uZXIueGNjb25maWcgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL1dl
YktpdFRlc3RSdW5uZXIueGNjb25maWcKaW5kZXggZGZjZGZkOWRlMzhmZGY5MzZkYjUyMTU1YmUw
OWMyYzEwZDNmOTQyYy4uMzNlZGUwOWZmNGM1MjYwMWJlODdmMWY2NzU4MTI5YWQxZWFiZWIwNyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9XZWJLaXRU
ZXN0UnVubmVyLnhjY29uZmlnCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJh
dGlvbnMvV2ViS2l0VGVzdFJ1bm5lci54Y2NvbmZpZwpAQCAtMzMsMyArMzMsNSBAQCBPVEhFUl9M
REZMQUdTW3Nkaz1tYWNvc3gqXSA9ICQoaW5oZXJpdGVkKSAtbFdlYktpdFRlc3RSdW5uZXIgLWZy
YW1ld29yayBDYXJib24gLQogU0tJUF9JTlNUQUxMW3Nkaz1pcGhvbmUqXSA9IFlFUzsKIEVYQ0xV
REVEX1NPVVJDRV9GSUxFX05BTUVTW3Nkaz1pcGhvbmUqXSA9IG1hYy8qOwogSU5DTFVERURfU09V
UkNFX0ZJTEVfTkFNRVNbc2RrPWlwaG9uZSpdID0gbWFjL21haW4ubW07CisKK0NPREVfU0lHTl9F
TlRJVExFTUVOVFNbc2RrPW1hY29zeCpdID0gQ29uZmlndXJhdGlvbnMvV2ViS2l0VGVzdFJ1bm5l
ci5lbnRpdGxlbWVudHM7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktp
dFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRi
NDdlODlhOWNlYjUzYTI1OTk1MmYxNmNiYWUxMWRiMDUyNWQxYmIuLmVlYzkwNGQyNGM4MTM4Yjkw
Y2MyZWNmNjZlYmFmYTRlNDlmNzVmNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDIsNyArMTAyLDcgQEAKIAkJNTY0MUUyRDAxNDMzNUU5NTAwODMwN0U1IC8qIEpT
VGV4dElucHV0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NjQxRTJDRTE0MzM1RTk1MDA4MzA3RTUgLyogSlNUZXh0SW5wdXRDb250
cm9sbGVyLmNwcCAqLzsgfTsKIAkJNTY2NEE0OUExNDMyNjM4NDAwODg4MUJFIC8qIFRleHRJbnB1
dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTY2NEE0OTgxNDMyNjM4NDAwODg4MUJFIC8qIFRleHRJbnB1dENvbnRyb2xsZXIuY3Bw
ICovOyB9OwogCQk1NjcwQjgyODEzODZGQ0E1MDAyRUIzNTUgLyogRXZlbnRTZW5kZXJQcm94eS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU2NzBCODI3
MTM4NkZDQTUwMDJFQjM1NSAvKiBFdmVudFNlbmRlclByb3h5Lm1tICovOyB9OwotCQk1NzBFNzVB
ODIxNTJEQjRGMDAzMjRCNkUgLyogU2VjdXJpdHkuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwRTc1QTQyMTUyREEyQzAwMzI0QjZF
IC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLzsgfTsKKwkJNTcxNEI2MEQyMUIwQkYyMzAwQ0RDQ0FB
IC8qIFNlY3VyaXR5LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3MEU3NUE0MjE1MkRBMkMwMDMyNEI2RSAvKiBTZWN1cml0eS5mcmFt
ZXdvcmsgKi87IH07CiAJCTY1MTBBNzgyMTFFQzY0MzgwMDQxMDg2NyAvKiBBSEVNX19fXy5UVEYg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MTBBNzc3
MTFFQzY0MzgwMDQxMDg2NyAvKiBBSEVNX19fXy5UVEYgKi87IH07CiAJCTY1MTBBNzg0MTFFQzY0
MzgwMDQxMDg2NyAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZiBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxMEE3NzkxMUVDNjQzODAwNDEwODY3
IC8qIFdlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmICovOyB9OwogCQk2NTEwQTc4NTExRUM2NDM4
MDA0MTA4NjcgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGYgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MTBBNzdBMTFFQzY0MzgwMDQxMDg2NyAv
KiBXZWJLaXRXZWlnaHRXYXRjaGVyMjAwLnR0ZiAqLzsgfTsKQEAgLTMxNiw2ICszMTYsNyBAQAog
CQk1NjcwQjgyNjEzODZGQzEzMDAyRUIzNTUgLyogRXZlbnRTZW5kZXJQcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFNlbmRlclByb3h5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU2NzBCODI3MTM4NkZDQTUwMDJFQjM1NSAvKiBFdmVudFNlbmRl
clByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRXZlbnRT
ZW5kZXJQcm94eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcwRTc1QTQyMTUy
REEyQzAwMzI0QjZFIC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gU2Vj
dXJpdHkuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0
eS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworCQk1NzE0QjYwRTIxQjBDOTY0
MDBDRENDQUEgLyogV2ViS2l0VGVzdFJ1bm5lci5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LmVudGl0bGVtZW50
czsgcGF0aCA9IFdlYktpdFRlc3RSdW5uZXIuZW50aXRsZW1lbnRzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1ODM5MTNEMDE0MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTgzOTEzRDExNDMzNUU5NTAwODMwN0U1IC8qIEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTEwQTc3NzExRUM2NDM4MDA0MTA4
NjcgLyogQUhFTV9fX18uVFRGICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9ICJBSEVNX19fXy5UVEYiOyBwYXRoID0gImZvbnRzL0FI
RU1fX19fLlRURiI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTAsNyArNDExLDYg
QEAKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJCTU3MEU3NUE4MjE1MkRCNEYwMDMyNEI2
RSAvKiBTZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTQxOSw2ICs0MTks
NyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJ
CTUxMDU4QUQ1MUQ2Nzg4MjAwMDlBNTM4QyAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIg
aW4gRnJhbWV3b3JrcyAqLywKKwkJCQk1NzE0QjYwRDIxQjBCRjIzMDBDRENDQUEgLyogU2VjdXJp
dHkuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJNTEwNThBRDYxRDY3ODgyNTAwOUE1
MzhDIC8qIFdlYktpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTc5NSw2ICs3OTYsNyBAQAog
CQkJCUJDNzkzNDI3MTE4RjdEQUYwMDVFQThFMiAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8s
CiAJCQkJQkMyNTE5NzExMUQxNUU2MTAwMkVCQzAxIC8qIEluamVjdGVkQnVuZGxlLnhjY29uZmln
ICovLAogCQkJCUExQjg5Qjk0MjIxRTAyNkIwMEVCNENFQSAvKiBTREtWYXJpYW50LnhjY29uZmln
ICovLAorCQkJCTU3MTRCNjBFMjFCMEM5NjQwMENEQ0NBQSAvKiBXZWJLaXRUZXN0UnVubmVyLmVu
dGl0bGVtZW50cyAqLywKIAkJCQlBMTg1MTAzODFCOUFERjIyMDA3NDRBRUIgLyogV2ViS2l0VGVz
dFJ1bm5lci54Y2NvbmZpZyAqLywKIAkJCQk5QjBEMTMyRTIwMzZEMzQ2MDA4RkM4RkIgLyogV2Vi
S2l0VGVzdFJ1bm5lckFwcC1pT1MuZW50aXRsZW1lbnRzICovLAogCQkJCTMxMTE4M0FBMjEyQjFB
QzcwMDc3QkNFMCAvKiBXZWJLaXRUZXN0UnVubmVyQXBwLXdhdGNoT1MuZW50aXRsZW1lbnRzICov
LApAQCAtMTI0OSw2ICsxMjUxLDggQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwog
CQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBBMTg1MTAzODFCOUFERjIyMDA3NDRBRUIg
LyogV2ViS2l0VGVzdFJ1bm5lci54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJQ09ERV9TSUdOX0lERU5USVRZID0gIlNhZmFyaSBFbmdpbmVlcmluZyI7CisJCQkJQ09ERV9T
SUdOX1NUWUxFID0gTWFudWFsOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTEy
NTYsNiArMTI2MCw4IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlID0gQTE4NTEwMzgxQjlBREYyMjAwNzQ0QUVCIC8qIFdlYktp
dFRlc3RSdW5uZXIueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPREVf
U0lHTl9JREVOVElUWSA9ICJTYWZhcmkgRW5naW5lZXJpbmciOworCQkJCUNPREVfU0lHTl9TVFlM
RSA9IE1hbnVhbDsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTE0MDQsNiAr
MTQxMCw4IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gQTE4NTEwMzgxQjlBREYyMjAwNzQ0QUVCIC8qIFdlYktpdFRlc3RS
dW5uZXIueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPREVfU0lHTl9J
REVOVElUWSA9ICJTYWZhcmkgRW5naW5lZXJpbmciOworCQkJCUNPREVfU0lHTl9TVFlMRSA9IE1h
bnVhbDsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA0MDg3
NzM1YmEyNWJiODUzYTJlNmNmZjAwMGYyZTAzMWFiYmNmYTEyLi40M2ZmNDBiMzBkMjlhMjcxYTA4
MzEwODM2ODE3NTg1NzlkNDczZTUyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC01MSw2ICs1MSw3IEBACiAjaW1wb3J0
IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oPgogI2ltcG9ydCA8V2ViS2l0
L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvTWFp
blRocmVhZC5oPgorI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogCiBuYW1l
c3BhY2UgV1RSIHsKIApAQCAtMzMwLDggKzMzMSw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6Omlu
amVjdFVzZXJTY3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0KQogCiB2b2lkIFRlc3RDb250cm9sbGVy
OjphZGRUZXN0S2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlCYXNlNjQsIGNv
bnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFzZTY0
KQogewotICAgIC8vIEZJWE1FKDE4Mjc3MikKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IE5TRGljdGlvbmFyeSogb3B0aW9ucyA9IEB7CiAgICAgICAgIChpZClrU2VjQXR0cktleVR5cGU6
IChpZClrU2VjQXR0cktleVR5cGVFQ1NFQ1ByaW1lUmFuZG9tLAogICAgICAgICAoaWQpa1NlY0F0
dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLApAQCAtMzQ5LDQwICszNDgs
MzYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6YWRkVGVzdEtleVRvS2V5Y2hhaW4oY29uc3QgU3Ry
aW5nJiBwcml2YXRlS2V5QmFzZTY0LCBjb25zdAogICAgICAgICAoaWQpa1NlY1ZhbHVlUmVmOiAo
aWQpa2V5LmdldCgpLAogICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAog
ICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogYXR0ckxhYmVsLAotICAgICAgICAoaWQpa1NlY0F0
dHJBcHBsaWNhdGlvblRhZzogYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRF
bmNvZGVkU3RyaW5nOmFwcGxpY2F0aW9uVGFnQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVj
b2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpCisgICAgICAgIChpZClrU2VjQXR0
ckFwcGxpY2F0aW9uVGFnOiBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVu
Y29kZWRTdHJpbmc6YXBwbGljYXRpb25UYWdCYXNlNjQgb3B0aW9uczpOU0RhdGFCYXNlNjREZWNv
ZGluZ0lnbm9yZVVua25vd25DaGFyYWN0ZXJzXSkuZ2V0KCksCisgICAgICAgIChpZClrU2VjQXR0
ck5vTGVnYWN5OiBAWUVTCiAgICAgfTsKICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQWRk
KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYWRkUXVlcnksIE5VTEwpOwogICAgIEFTU0VSVF9V
TlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsKLSNlbmRpZgogfQogCiB2b2lkIFRlc3RDb250cm9sbGVy
OjpjbGVhblVwS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwpCiB7Ci0gICAgLy8gRklY
TUUoMTgyNzcyKQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNEaWN0aW9uYXJ5KiBk
ZWxldGVRdWVyeSA9IEB7CiAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXks
Ci0gICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiBhdHRyTGFiZWwKKyAgICAgICAgKGlkKWtTZWNB
dHRyTGFiZWw6IGF0dHJMYWJlbCwKKyAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMK
ICAgICB9OwogICAgIFNlY0l0ZW1EZWxldGUoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilkZWxl
dGVRdWVyeSk7Ci0jZW5kaWYKIH0KIAogYm9vbCBUZXN0Q29udHJvbGxlcjo6a2V5RXhpc3RzSW5L
ZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlv
blRhZ0Jhc2U2NCkKIHsKLSAgICAvLyBGSVhNRSgxODI3NzIpCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBOU0RpY3Rpb25hcnkgKnF1ZXJ5ID0gQHsKICAgICAgICAgKGlkKWtTZWNDbGFz
czogKGlkKWtTZWNDbGFzc0tleSwKICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClr
U2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKICAgICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6IGF0dHJM
YWJlbCwKICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6IGFkb3B0TlMoW1tOU0Rh
dGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzphcHBsaWNhdGlvblRhZ0Jhc2U2
NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdKS5n
ZXQoKSwKKyAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKICAgICB9OwogICAgIE9T
U3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFy
eVJlZilxdWVyeSwgTlVMTCk7CiAgICAgaWYgKCFzdGF0dXMpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIEFTU0VSVChzdGF0dXMgPT0gZXJyU2VjSXRlbU5vdEZvdW5kKTsKLSNlbmRpZgogICAg
IHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDllZTk2YjYyMGM2MDQ4NDljYzMzZmFmYmVhOTVk
MzhmODNmNDc3NDUuLmM2NTI2ZDFkODc0OGZkMTUzMGMxYzMwZjY1YTVkYjQ5NzdhM2Q3ZDMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wNS0yMyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gRW5hYmxlIExvY2FsQXV0aGVudGljYXRv
ciBmb3IgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4Mjc3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNDc5MjA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIGV4aXN0aW5nIGxv
Y2FsIGF1dGhlbnRpY2F0b3IgdGVzdHMgZm9yIG1hY09TLgorCisgICAgICAgICogcGxhdGZvcm0v
bWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE5LTA1LTIyICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEhpZGUgTWVkaWFDYXBhYmlsaXRpZXMuZW5jb2Rp
bmdJbmZvKCkgd2hlbiB0aGUgcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCBpdC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4YzgxNTAwMDE1
NmNlYThkYTJjYWI2YjNiZDVlZTBjMzNjYWZiYTc3Li5hODgzNmQ0ZmY3ZGY3Y2RlYzQ0ZjQwNTkw
Y2YwNWVjNDI2N2VkZDgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zCkBAIC05MDEsMTUgKzkwMSw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0L3VzZXItYWNjZXB0cy1wYXltZW50LXJlcXVlc3QtYWxn
CiAKIHdlYmtpdC5vcmcvYi8xODk1OTggY29tcG9zaXRpbmcvYmFja2luZy9iYWNraW5nLXN0b3Jl
LWF0dGFjaG1lbnQtZmlsbC1mb3J3YXJkcy1hbmltYXRpb24uaHRtbCBbIFBhc3MgRmFpbHVyZSBd
CiAKLSMgU2tpcCBsb2NhbCBhdXRoZW50aWNhdG9yIHRlc3RzIGZvciBtYWMgbm93LgotaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0
dHBzLmh0bWwgWyBTa2lwIF0KLWh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sIFsgU2tpcCBdCi1odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbCBb
IFNraXAgXQotaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNj
ZXNzLWxvY2FsLmh0dHBzLmh0bWwgWyBTa2lwIF0KLSMgVGhlIGZvbGxvd2luZyB0ZXN0cyByZXF1
aXJlIFB1YmxpY0tleUNyZWRlbnRpYWwgb2JqZWN0cy4gV2UgY2FuIG9ubHkgcHJvZHVjZSB0aGVt
IHZpYSBsb2NhbCBhdXRoZW50aWNhdG9ycyBub3cuCi1odHRwL3dwdC9jcmVkZW50aWFsLW1hbmFn
ZW1lbnQvY3JlZGVudGlhbHNjb250YWluZXItc3RvcmUtYmFzaWNzLmh0dHBzLmh0bWwgWyBTa2lw
IF0KLWh0dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sIFsgU2tpcCBdCi0KIHdlYmtpdC5v
cmcvYi8xODM4NzggbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3RyYWNrcy1wYW5lbC90cmFj
a3MtcGFuZWwtdXAtY2xpY2stb3Zlci1tZWRpYS1kb2VzLW5vdC1kaW1pc3MtbWVkaWEtY29udHJv
bHMtd2hlbi1tZWRpYS1pcy1wbGF5aW5nLmh0bWwgWyBQYXNzIFRpbWVvdXQgXSAKIAogd2Via2l0
Lm9yZy9iLzE5MTY1OCBbIFNpZXJyYSBSZWxlYXNlIF0gZmFzdC9sYXllcnMvbm8tY2xpcHBpbmct
b3ZlcmZsb3ctaGlkZGVuLWFkZGVkLWFmdGVyLXRyYW5zZm9ybS5odG1sIFsgUGFzcyBJbWFnZU9u
bHlGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375459</attachid>
            <date>2019-08-02 14:47:59 -0700</date>
            <delta_ts>2019-08-06 12:08:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182772-20190802144758.patch</filename>
            <type>text/plain</type>
            <size>33065</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJlY2RlMTYyM2YxOGZiYTRkZDE0NTg0
OTJlMmY3NTJkYWIyODlkY2YuLjFlYzI1YWZlMzVjNmQ2YzdhMGY1MGViMjdmMGU4ZDU1MmMxZGJi
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDUtMjMgIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aE5dIEVuYWJsZSBMb2NhbEF1dGhlbnRp
Y2F0b3IgZm9yIG1hY09TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODI3NzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMzQ3OTIwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3Jt
Lmg6CisgICAgICAgIEFkZHMgSEFWRV9ERVZJQ0VfSURFTlRJVFkuCisgICAgICAgICogd3RmL3Nw
aS9jb2NvYS9TZWN1cml0eVNQSS5oOgorICAgICAgICBBZGRzIGEgU1BJIGZvciB0ZWxsaW5nIG1h
Y09TIGtleWNoYWluIHRvIHVzZSB0aGUgbW9kZXJuIG9uZS4KKwogMjAxOS0wOC0wMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgRm9y
bURhdGEgemlwIGZpbGUgZ2VuZXJhdGlvbiB0byBOZXR3b3JrUHJvY2VzcyBhbmQgZW5hYmxlIGl0
IGZvciBhbGwgV2ViS2l0IGNsaWVudHMgZm9yIHVwbG9hZGluZyBkaXJlY3RvcmllcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCAzNDY2MTM3N2RmYjU3ZjE1MjdjYzFhZTUzOTNjMTNjYjVjODAxOTFjLi4yZjU1ZGM4MzYw
M2Y0ZjdjMWVmNzRkM2RhZjQ1MTMwZjk5NDljN2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBA
CisyMDE5LTA1LTIzICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYkF1dGhOXSBFbmFibGUgTG9jYWxBdXRoZW50aWNhdG9yIGZvciBtYWNPUworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNzcyCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS80MzM0NzkyMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgTG9jYWxBdXRoZW50aWNhdG9y
IGZvciBtYWNPUy4gVGhlIG1ham9yaXR5CisgICAgICAgIG9mIHRoaXMgcGF0Y2ggaXMgdG8gdHdl
YWsgbWFjT1Mga2V5Y2hhaW4gdG8gdXNlIHRoZSBtb2Rlcm4gb25lLgorCisgICAgICAgICogQ29u
ZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnOgorICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2Nv
YS9EZXZpY2VJZGVudGl0eVNQSS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2Fs
QXV0aGVudGljYXRvckludGVybmFsOjp0b1ZlY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OkxvY2Fs
QXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQpOgor
ICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRp
YWxBZnRlckF0dGVzdGVkKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpn
ZXRBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TG9jYWxDb25uZWN0aW9uOjpnZXRBdHRlc3RhdGlvbiBjb25zdCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TG9jYWxTZXJ2aWNlOjppc0F2YWlsYWJsZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAg
ICAgKFdlYktpdDo6TW9ja0xvY2FsQ29ubmVjdGlvbjo6Z2V0QXR0ZXN0YXRpb24gY29uc3QpOgor
ICAgICAgICAqIGNvbmZpZy5oOgorCiAyMDE5LTA4LTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSBGb3JtRGF0YSB6aXAgZmlsZSBn
ZW5lcmF0aW9uIHRvIE5ldHdvcmtQcm9jZXNzIGFuZCBlbmFibGUgaXQgZm9yIGFsbCBXZWJLaXQg
Y2xpZW50cyBmb3IgdXBsb2FkaW5nIGRpcmVjdG9yaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA5ODM2YzI5
MGUxYTU3ZmY0OWY3MTIzNWZkOWVmZmE0M2Y5ODRhMmQyLi4zN2U4YmU3NmFkZjBlZDNiM2ExYmI4
M2E4NTQ2M2ViZTZjZjM4NTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTE2MjQsMyArMTYyNCw3IEBACiAj
aWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEzMDAwMCkgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gNjAwMDApIHx8IChQTEFURk9STShBUFBMRVRWKSAmJiBfX1RWX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkKICNkZWZpbmUgVVNFX0hJUkFHSU5PX1NB
TlNfV09SS0FST1VORCAxCiAjZW5kaWYKKworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiAh
UExBVEZPUk0oSU9TX1NJTVVMQVRPUikpCisjZGVmaW5lIEhBVkVfREVWSUNFX0lERU5USVRZIDEK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJ
LmggYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaAppbmRleCBlM2Y2YWVl
YzQ0N2M4MjIyNzRhYWM0ZmY2MDQxZjMxY2M2ODBkNTQ2Li43N2RjODMwYTNlZWU2YmRhYjYwY2Jh
Y2YzNjQxNDk2ZDRmMzgyM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvY29jb2Ev
U2VjdXJpdHlTUEkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEku
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPFNlY3VyaXR5L1NlY0FjY2Vzc0NvbnRyb2xQ
cml2Lmg+CiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQ2VydGlmaWNhdGVQcml2Lmg+CiAjaW5jbHVk
ZSA8U2VjdXJpdHkvU2VjSWRlbnRpdHlQcml2Lmg+CisjaW5jbHVkZSA8U2VjdXJpdHkvU2VjSXRl
bVByaXYuaD4KICNpbmNsdWRlIDxTZWN1cml0eS9TZWNLZXlQcml2Lmg+CiAjaW5jbHVkZSA8U2Vj
dXJpdHkvU2VjVGFzay5oPgogI2luY2x1ZGUgPFNlY3VyaXR5L1NlY1RydXN0UHJpdi5oPgpAQCAt
NjIsMTAgKzYzLDExIEBAIE9TU3RhdHVzIFNlY1RydXN0ZWRBcHBsaWNhdGlvbkNyZWF0ZUZyb21Q
YXRoKGNvbnN0IGNoYXIqIHBhdGgsIFNlY1RydXN0ZWRBcHBsaWNhCiAjZW5kaWYKIAogU2VjU2ln
bmF0dXJlSGFzaEFsZ29yaXRobSBTZWNDZXJ0aWZpY2F0ZUdldFNpZ25hdHVyZUhhc2hBbGdvcml0
aG0oU2VjQ2VydGlmaWNhdGVSZWYpOworZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtTZWNBdHRy
Tm9MZWdhY3k7CiAKIFdURl9FWFRFUk5fQ19FTkQKIAotI2VuZGlmCisjZW5kaWYgLy8gVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKIAogdHlwZWRlZiBzdHJ1Y3QgX19TZWNUYXNrICpTZWNUYXNrUmVm
OwogdHlwZWRlZiBzdHJ1Y3QgX19TZWNUcnVzdCAqU2VjVHJ1c3RSZWY7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZyBiL1NvdXJjZS9XZWJL
aXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnCmluZGV4IGUxMjk3NjIyNjkyYTliNDg1
Mzg1MGFkNmYzMzA3M2VmOWUyODdjNTAuLjIwZjM1NDI3ODk2ODhiZGNhN2I1NDg3YzJjYmMzNjUx
MjU5YzQ1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0
LnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29u
ZmlnCkBAIC0xNzIsOCArMTcyLDEwIEBAIFdLX0ZSQU1FV09SS19IRUFERVJfUE9TVFBST0NFU1NJ
TkdfRElTQUJMRURbc2RrPWlwaG9uZSoxMi4qXSA9IFlFUzsKIFdLX1JFTE9DQVRBQkxFX0ZSQU1F
V09SS19MREZMQUdTID0gJChXS19SRUxPQ0FUQUJMRV9GUkFNRVdPUktfTERGTEFHU18kKFdLX1JF
TE9DQVRBQkxFX0ZSQU1FV09SS1MpXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfUkVMT0NBVEFC
TEVfRlJBTUVXT1JLX0xERkxBR1NfWUVTX21hY29zeCA9IC1XbCwtbm90X2Zvcl9keWxkX3NoYXJl
ZF9jYWNoZTsKIAotV0tfSEFWRV9ERVZJQ0VfSURFTlRJVFkgPSAkKFdLX0hBVkVfREVWSUNFX0lE
RU5USVRZXyQoUExBVEZPUk1fTkFNRSkpOworV0tfSEFWRV9ERVZJQ0VfSURFTlRJVFkgPSAkKFdL
X0hBVkVfREVWSUNFX0lERU5USVRZXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfSEFWRV9ERVZJ
Q0VfSURFTlRJVFlfaXBob25lb3MgPSBZRVM7CitXS19IQVZFX0RFVklDRV9JREVOVElUWV9tYWNv
c3ggPSAkKFdLX0hBVkVfREVWSUNFX0lERU5USVRZJChXS19NQUNPU18xMDE0KSk7CitXS19IQVZF
X0RFVklDRV9JREVOVElUWV9NQUNPU19TSU5DRV8xMDE0ID0gWUVTOwogCiBXS19IQVZFX1VSTF9G
T1JNQVRUSU5HID0gJChXS19IQVZFX1VSTF9GT1JNQVRUSU5HXyQoV0tfUExBVEZPUk1fTkFNRSkp
OwogV0tfSEFWRV9VUkxfRk9STUFUVElOR19pcGhvbmVvcyA9ICQoV0tfSEFWRV9VUkxfRk9STUFU
VElORyQoV0tfSU9TXzEyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3Nw
aS9Db2NvYS9EZXZpY2VJZGVudGl0eVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
Q29jb2EvRGV2aWNlSWRlbnRpdHlTUEkuaAppbmRleCAwMzIwM2UyNjA0MzIyYWE3YTI5ZDE4MzNl
ZGI3NTRiOWNjMjM1ZGNhLi43NDc3ZTQwOTcyMWJlYTM2NzgxMTE0NWNjY2FiZmI2MDZkNTM5OGIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9EZXZpY2VJZGVu
dGl0eVNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0RldmljZUlk
ZW50aXR5U1BJLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFU
T1IpCisjaWYgSEFWRShERVZJQ0VfSURFTlRJVFkpCiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQogCkBAIC01NCw2ICs1NCw2IEBAIHZvaWQgRGV2aWNlSWRlbnRpdHlJc3N1ZUNsaWVudENl
cnRpZmljYXRlV2l0aENvbXBsZXRpb24oZGlzcGF0Y2hfcXVldWVfdCBfTnVsbGFiCiAKICNlbmRp
ZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQorI2VuZGlmIC8vIEhBVkUo
REVWSUNFX0lERU5USVRZKQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2Fs
QXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCA5YzAzMTRmOWIzZjY4OWNhMjE0
OGEzNjkzNzM3MTdmZWM5M2UyMGFlLi43ZDdhMjcwNTBhNGI0NDk1ODYzN2YwNTNlNTAxNmQ1NTY2
ODY0ZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC00
MSw2ICs0MSw3IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVu
TG9vcC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9T
ZWN1cml0eVNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU1LDYgQEAgY29uc3QgdWludDhfdCBnZXRBc3NlcnRpb25G
bGFncyA9IDBiMDAwMDAxMDE7IC8vIFVQIGFuZCBVViBhcmUgc2V0LgogLy8gQ3JlZGVudGlhbCBJ
RCBpcyBjdXJyZW50bHkgU0hBLTEgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcHVibGljIGtleS4KIGNv
bnN0IHVpbnQxNl90IGNyZWRlbnRpYWxJZExlbmd0aCA9IDIwOwogCi0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIHN0YXRpYyBpbmxpbmUgYm9vbCBlbXB0eVRyYW5zcG9ydHNPckNvbnRhaW4oY29u
c3QgVmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiB0cmFuc3BvcnRzLCBBdXRoZW50aWNh
dG9yVHJhbnNwb3J0IHRhcmdldCkKIHsKICAgICByZXR1cm4gdHJhbnNwb3J0cy5pc0VtcHR5KCkg
PyB0cnVlIDogdHJhbnNwb3J0cy5jb250YWlucyh0YXJnZXQpOwpAQCAtNzgsNyArNzgsNiBAQCBz
dGF0aWMgaW5saW5lIFZlY3Rvcjx1aW50OF90PiB0b1ZlY3RvcihOU0RhdGEgKmRhdGEpCiAgICAg
cmVzdWx0LmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVz
KSwgZGF0YS5sZW5ndGgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9Ci0jZW5kaWYgLy8gIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAKIH0gLy8gTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWwKIApAQCAt
ODksMTIgKzg4LDEwIEBAIExvY2FsQXV0aGVudGljYXRvcjo6TG9jYWxBdXRoZW50aWNhdG9yKFVu
aXF1ZVJlZjxMb2NhbENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKIAogdm9pZCBMb2NhbEF1dGhl
bnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKIHsKLSAgICAvLyBGSVhNRSgxODI3NzIpCiAgICAg
dXNpbmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsOwogICAgIEFTU0VSVCht
X3N0YXRlID09IFN0YXRlOjpJbml0KTsKICAgICBtX3N0YXRlID0gU3RhdGU6OlJlcXVlc3RSZWNl
aXZlZDsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gVGhlIGZvbGxvd2luZyBp
bXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jb3AtbWFrZS1jcmVkIGFz
IG9mIDUgRGVjZW1iZXIgMjAxNy4KICAgICAvLyBTa2lwIFN0ZXAgNC01IGFzIHJlcXVpcmVSZXNp
ZGVudEtleSBhbmQgcmVxdWlyZVVzZXJWZXJpZmljYXRpb24gYXJlIGVuZm9yY2VkLgogICAgIC8v
IFNraXAgU3RlcCA5IGFzIGV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LgpAQCAtMTIy
LDYgKzExOSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiAg
ICAgICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogcmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlv
bnMucnAuaWQsCiAgICAgICAgICAgICAoaWQpa1NlY1JldHVybkF0dHJpYnV0ZXM6IEBZRVMsCiAg
ICAgICAgICAgICAoaWQpa1NlY01hdGNoTGltaXQ6IChpZClrU2VjTWF0Y2hMaW1pdEFsbCwKKyAg
ICAgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCiAgICAgICAgIH07CiAgICAgICAg
IENGVHlwZVJlZiBhdHRyaWJ1dGVzQXJyYXlSZWYgPSBudWxscHRyOwogICAgICAgICBPU1N0YXR1
cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYp
cXVlcnksICZhdHRyaWJ1dGVzQXJyYXlSZWYpOwpAQCAtMTUyLDE4ICsxNTAsMTUgQEAgdm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAgICAgICAgd2Vha1RoaXMtPmNv
bnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoY29uc2VudCk7CiAgICAgfTsK
ICAgICBtX2Nvbm5lY3Rpb24tPmdldFVzZXJDb25zZW50KAotICAgICAgICAiQWxsb3cgIiArIHJl
cXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLnJwLmlkICsgIiB0byBjcmVhdGUgYSBwdWJsaWMg
a2V5IGNyZWRlbnRpYWwgZm9yICIgKyByZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy51c2Vy
Lm5hbWUsCisgICAgICAgICJhbGxvdyAiICsgcmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMu
cnAuaWQgKyAiIHRvIGNyZWF0ZSBhIHB1YmxpYyBrZXkgY3JlZGVudGlhbCBmb3IgIiArIHJlcXVl
c3REYXRhKCkuY3JlYXRpb25PcHRpb25zLnVzZXIubmFtZSwKICAgICAgICAgV1RGTW92ZShjYWxs
YmFjaykpOwotI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogfQogCiB2b2lkIExvY2Fs
QXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChM
b2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50IGNvbnNlbnQpCiB7Ci0gICAgLy8gRklYTUUoMTgy
NzcyKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQpOwogICAg
IG1fc3RhdGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRlZDsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgaWYgKGNvbnNlbnQgPT0gTG9jYWxDb25uZWN0aW9uOjpVc2VyQ29uc2VudDo6Tm8p
IHsKICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJv
ciwgIkNvdWxkbid0IGdldCB1c2VyIGNvbnNlbnQuIl9zIH0pOwogICAgICAgICByZXR1cm47CkBA
IC0xNzYsNiArMTcxLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNy
ZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoTG9jYWxDb25uZWN0aW8KICAgICAgICAgKGlkKWtT
ZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKICAgICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6IHJl
cXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLnJwLmlkLAogICAgICAgICAoaWQpa1NlY0F0dHJB
cHBsaWNhdGlvblRhZzogW05TRGF0YSBkYXRhV2l0aEJ5dGVzOnJlcXVlc3REYXRhKCkuY3JlYXRp
b25PcHRpb25zLnVzZXIuaWRWZWN0b3IuZGF0YSgpIGxlbmd0aDpyZXF1ZXN0RGF0YSgpLmNyZWF0
aW9uT3B0aW9ucy51c2VyLmlkVmVjdG9yLnNpemUoKV0sCisgICAgICAgIChpZClrU2VjQXR0ck5v
TGVnYWN5OiBAWUVTCiAgICAgfTsKICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtRGVsZXRl
KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZGVsZXRlUXVlcnkpOwogICAgIGlmIChzdGF0dXMg
JiYgc3RhdHVzICE9IGVyclNlY0l0ZW1Ob3RGb3VuZCkgewpAQCAtMTkyLDE4ICsxODgsMTUgQEAg
dm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJD
b25zZW50ZWQoTG9jYWxDb25uZWN0aW8KICAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlTWFrZUNy
ZWRlbnRpYWxBZnRlckF0dGVzdGVkKHByaXZhdGVLZXksIGNlcnRpZmljYXRlcywgZXJyb3IpOwog
ICAgIH07CiAgICAgbV9jb25uZWN0aW9uLT5nZXRBdHRlc3RhdGlvbihyZXF1ZXN0RGF0YSgpLmNy
ZWF0aW9uT3B0aW9ucy5ycC5pZCwgcmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMudXNlci5u
YW1lLCByZXF1ZXN0RGF0YSgpLmhhc2gsIFdURk1vdmUoY2FsbGJhY2spKTsKLSNlbmRpZiAvLyAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIH0KIAogdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRp
bnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJlZiBwcml2YXRlS2V5LCBOU0Fy
cmF5ICpjZXJ0aWZpY2F0ZXMsIE5TRXJyb3IgKmVycm9yKQogewotICAgIC8vIEZJWE1FKDE4Mjc3
MikKICAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw7CiAKICAg
ICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6VXNlckNvbnNlbnRlZCk7CiAgICAgbV9zdGF0ZSA9
IFN0YXRlOjpBdHRlc3RlZDsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGVy
cm9yKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgYXR0ZXN0OiAlQCIsIGVycm9yKTsK
ICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIlVu
a25vd24gaW50ZXJuYWwgZXJyb3IuIl9zIH0pOwpAQCAtMjI3LDEzICsyMjAsMTQgQEAgdm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNl
Y0tleVJlZiBwcml2YXRlS2UKICAgICAvLyBGSVhNRSgxODM1MzMpOiBEZXZpY2VJZGVudGl0eS5G
cmFtZXdvcmsgd291bGQgaW5zZXJ0IGNlcnRpZmljYXRlcyBpbnRvIEtleWNoYWluIGFzIHdlbGwu
IFdlIHNob3VsZCB1cGRhdGUgdGhvc2UgYXMgd2VsbC4KICAgICBWZWN0b3I8dWludDhfdD4gY3Jl
ZGVudGlhbElkOwogICAgIHsKLSAgICAgICAgLy8gLXJrIGlzIGFkZGVkIGJ5IERldmljZUlkZW50
aXR5LkZyYW1ld29yay4KLSAgICAgICAgU3RyaW5nIGxhYmVsID0gbWFrZVN0cmluZyhyZXF1ZXN0
RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy51c2VyLm5hbWUsICJAIiwgcmVxdWVzdERhdGEoKS5jcmVh
dGlvbk9wdGlvbnMucnAuaWQsICItcmsiKTsKKyAgICAgICAgLy8gLXJrLXVjcnQgaXMgYWRkZWQg
YnkgRGV2aWNlSWRlbnRpdHkuRnJhbWV3b3JrLgorICAgICAgICBTdHJpbmcgbGFiZWwgPSBtYWtl
U3RyaW5nKHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLnVzZXIubmFtZSwgIkAiLCByZXF1
ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5pZCwgIi1yay11Y3J0Iik7CiAgICAgICAgIE5T
RGljdGlvbmFyeSAqY3JlZGVudGlhbElkUXVlcnkgPSBAewogICAgICAgICAgICAgKGlkKWtTZWND
bGFzczogKGlkKWtTZWNDbGFzc0tleSwKICAgICAgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNz
OiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCiAgICAgICAgICAgICAoaWQpa1NlY0F0dHJM
YWJlbDogbGFiZWwsCi0gICAgICAgICAgICAoaWQpa1NlY1JldHVybkF0dHJpYnV0ZXM6IEBZRVMK
KyAgICAgICAgICAgIChpZClrU2VjUmV0dXJuQXR0cmlidXRlczogQFlFUywKKyAgICAgICAgICAg
IChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCiAgICAgICAgIH07CiAgICAgICAgIENGVHlwZVJl
ZiBhdHRyaWJ1dGVzUmVmID0gbnVsbHB0cjsKICAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2Vj
SXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNyZWRlbnRpYWxJZFF1
ZXJ5LCAmYXR0cmlidXRlc1JlZik7CkBAIC0yNTEsNiArMjQ1LDcgQEAgdm9pZCBMb2NhbEF1dGhl
bnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJlZiBw
cml2YXRlS2UKICAgICAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCiAg
ICAgICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2
YXRlLAogICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbDogbnNBdHRyaWJ1
dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdLAorICAgICAgICAgICAgKGlkKWtTZWNB
dHRyTm9MZWdhY3k6IEBZRVMKICAgICAgICAgfTsKICAgICAgICAgTlNEaWN0aW9uYXJ5ICp1cGRh
dGVQYXJhbXMgPSBAewogICAgICAgICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6IHJlcXVlc3REYXRh
KCkuY3JlYXRpb25PcHRpb25zLnJwLmlkLApAQCAtMzI3LDE3ICszMjIsMTQgQEAgdm9pZCBMb2Nh
bEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tl
eVJlZiBwcml2YXRlS2UKICAgICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0ID0gYnVpbGRBdHRlc3Rh
dGlvbk9iamVjdChXVEZNb3ZlKGF1dGhEYXRhKSwgIkFwcGxlIiwgV1RGTW92ZShhdHRlc3RhdGlv
blN0YXRlbWVudE1hcCksIHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLmF0dGVzdGF0aW9u
KTsKIAogICAgIHJlY2VpdmVSZXNwb25kKFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsgQXJyYXlC
dWZmZXI6OmNyZWF0ZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSwg
dHJ1ZSwgbnVsbHB0ciwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVjdC5kYXRh
KCksIGF0dGVzdGF0aW9uT2JqZWN0LnNpemUoKSksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IFdURjo6bnVsbG9wdCB9KTsKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIH0KIAog
dm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCiB7Ci0gICAgLy8gRklYTUUo
MTgyNzcyKQogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsK
ICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6SW5pdCk7CiAgICAgbV9zdGF0ZSA9IFN0YXRl
OjpSZXF1ZXN0UmVjZWl2ZWQ7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRo
ZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI29w
LWdldC1hc3NlcnRpb24gYXMgb2YgNSBEZWNlbWJlciAyMDE3LgogICAgIC8vIFNraXAgU3RlcCAy
IGFzIHJlcXVpcmVVc2VyVmVyaWZpY2F0aW9uIGlzIGVuZm9yY2VkLgogICAgIC8vIFNraXAgU3Rl
cCA4IGFzIGV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LgpAQCAtMzU1LDcgKzM0Nyw4
IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogICAgICAgICAoaWQp
a1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAogICAgICAgICAo
aWQpa1NlY0F0dHJMYWJlbDogcmVxdWVzdERhdGEoKS5yZXF1ZXN0T3B0aW9ucy5ycElkLAogICAg
ICAgICAoaWQpa1NlY1JldHVybkF0dHJpYnV0ZXM6IEBZRVMsCi0gICAgICAgIChpZClrU2VjTWF0
Y2hMaW1pdDogKGlkKWtTZWNNYXRjaExpbWl0QWxsCisgICAgICAgIChpZClrU2VjTWF0Y2hMaW1p
dDogKGlkKWtTZWNNYXRjaExpbWl0QWxsLAorICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTog
QFlFUwogICAgIH07CiAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJheVJlZiA9IG51bGxwdHI7
CiAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZE
aWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmYXR0cmlidXRlc0FycmF5UmVmKTsKQEAgLTQwMSwyMiArMzk0
LDE5IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogICAgICAgICB3
ZWFrVGhpcy0+Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25zZW50ZWQoY29uc2VudCwg
Y29udGV4dCwgY3JlZGVudGlhbElkLCB1c2VyaGFuZGxlKTsKICAgICB9OwogICAgIE5TRGF0YSAq
aWREYXRhID0gc2VsZWN0ZWRDcmVkZW50aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNh
dGlvblRhZ107Ci0gICAgU3RyaW5nVmlldyBpZFN0cmluZ1ZpZXcgeyBzdGF0aWNfY2FzdDxjb25z
dCBMQ2hhcio+KFtpZERhdGEgYnl0ZXNdKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFtpZERhdGEg
bGVuZ3RoXSkgfTsKKyAgICBTdHJpbmdWaWV3IGlkU3RyaW5nVmlldyB7IHN0YXRpY19jYXN0PGNv
bnN0IFVDaGFyKj4oW2lkRGF0YSBieXRlc10pLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oW2lkRGF0
YSBsZW5ndGhdKSB9OwogICAgIG1fY29ubmVjdGlvbi0+Z2V0VXNlckNvbnNlbnQoCi0gICAgICAg
IG1ha2VTdHJpbmcoIkxvZyBpbnRvICIsIHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMucnBJ
ZCwgIiB3aXRoICIsIGlkU3RyaW5nVmlldywgJy4nKSwKKyAgICAgICAgbWFrZVN0cmluZygibG9n
IGludG8gIiwgcmVxdWVzdERhdGEoKS5yZXF1ZXN0T3B0aW9ucy5ycElkLCAiIHdpdGggIiwgaWRT
dHJpbmdWaWV3KSwKICAgICAgICAgKF9fYnJpZGdlIFNlY0FjY2Vzc0NvbnRyb2xSZWYpc2VsZWN0
ZWRDcmVkZW50aWFsQXR0cmlidXRlc1soaWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sXSwKICAgICAg
ICAgV1RGTW92ZShjYWxsYmFjaykpOwotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiB9
CiAKIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNl
ckNvbnNlbnRlZChMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50IGNvbnNlbnQsIExBQ29udGV4
dCAqY29udGV4dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgdXNlcmhhbmRsZSkKIHsKLSAgICAvLyBGSVhNRSgxODI3NzIpCiAgICAg
dXNpbmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsOwogICAgIEFTU0VSVCht
X3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6
VXNlckNvbnNlbnRlZDsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGNvbnNl
bnQgPT0gTG9jYWxDb25uZWN0aW9uOjpVc2VyQ29uc2VudDo6Tm8pIHsKICAgICAgICAgcmVjZWl2
ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIkNvdWxkbid0IGdldCB1
c2VyIGNvbnNlbnQuIl9zIH0pOwogICAgICAgICByZXR1cm47CkBAIC00MzcsNiArNDI3LDcgQEAg
dm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29u
c2VudGVkKExvY2FsQ29ubmVjdGlvbjoKICAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0
aW9uTGFiZWw6IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpjcmVkZW50aWFsSWQuZGF0YSgpIGxlbmd0
aDpjcmVkZW50aWFsSWQuc2l6ZSgpXSwKICAgICAgICAgICAgIChpZClrU2VjVXNlQXV0aGVudGlj
YXRpb25Db250ZXh0OiBjb250ZXh0LAogICAgICAgICAgICAgKGlkKWtTZWNSZXR1cm5SZWY6IEBZ
RVMsCisgICAgICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwogICAgICAgICB9Owog
ICAgICAgICBDRlR5cGVSZWYgcHJpdmF0ZUtleVJlZiA9IG51bGxwdHI7CiAgICAgICAgIE9TU3Rh
dHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJl
ZilxdWVyeSwgJnByaXZhdGVLZXlSZWYpOwpAQCAtNDY0LDcgKzQ1NSw2IEBAIHZvaWQgTG9jYWxB
dXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChMb2Nh
bENvbm5lY3Rpb246CiAKICAgICAvLyBTdGVwIDEzLgogICAgIHJlY2VpdmVSZXNwb25kKFB1Ymxp
Y0tleUNyZWRlbnRpYWxEYXRhIHsgQXJyYXlCdWZmZXI6OmNyZWF0ZShjcmVkZW50aWFsSWQuZGF0
YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSwgZmFsc2UsIG51bGxwdHIsIG51bGxwdHIsIEFycmF5
QnVmZmVyOjpjcmVhdGUoYXV0aERhdGEuZGF0YSgpLCBhdXRoRGF0YS5zaXplKCkpLCBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHNpZ25hdHVyZS5kYXRhKCksIHNpZ25hdHVyZS5zaXplKCkpLCBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHVzZXJoYW5kbGUuZGF0YSgpLCB1c2VyaGFuZGxlLnNpemUoKSksIFdURjo6
bnVsbG9wdCB9KTsKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KaW5kZXgg
OTQ0NzA1YzI2OWNiMTM1Njk1OGJmNzQ2NWRiZmM5MGQzMDAxMjU2NS4uOWM5ODk2OTEwMzA5ZTNl
NzBkNWQxZjgyNWUxZmMyNmU4OTNmODhlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVj
dGlvbi5tbQpAQCAtMzksOCArMzksNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBMb2Nh
bENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50KGNvbnN0IFN0cmluZyYgcmVhc29uLCBVc2VyQ29u
c2VudENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUUo
MTgyNzcyKQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0byBjb250ZXh0ID0gYWRv
cHROUyhbYWxsb2NMQUNvbnRleHRJbnN0YW5jZSgpIGluaXRdKTsKICAgICBhdXRvIHJlcGx5ID0g
bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNTUsMTMgKzUzLDEwIEBAIHZvaWQgTG9jYWxD
b25uZWN0aW9uOjpnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNvbiwgVXNlckNvbnNl
bnRDYWxsYmFjayYmCiAgICAgICAgIH0pOwogICAgIH0pOwogICAgIFtjb250ZXh0IGV2YWx1YXRl
UG9saWN5OkxBUG9saWN5RGV2aWNlT3duZXJBdXRoZW50aWNhdGlvbldpdGhCaW9tZXRyaWNzIGxv
Y2FsaXplZFJlYXNvbjpyZWFzb24gcmVwbHk6cmVwbHkuZ2V0KCldOwotI2VuZGlmCiB9CiAKIHZv
aWQgTG9jYWxDb25uZWN0aW9uOjpnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNvbiwg
U2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sLCBVc2VyQ29uc2VudENvbnRleHRDYWxs
YmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewotICAgIC8vIEZJWE1FKDE4Mjc3MikK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW2Fs
bG9jTEFDb250ZXh0SW5zdGFuY2UoKSBpbml0XSk7CiAgICAgYXV0byByZXBseSA9IG1ha2VCbG9j
a1B0cihbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTc2LDEzICs3MSwxMSBAQCB2b2lkIExvY2Fs
Q29ubmVjdGlvbjo6Z2V0VXNlckNvbnNlbnQoY29uc3QgU3RyaW5nJiByZWFzb24sIFNlY0FjY2Vz
c0NvbnRyb2xSZWYgYQogICAgICAgICB9KTsKICAgICB9KTsKICAgICBbY29udGV4dCBldmFsdWF0
ZUFjY2Vzc0NvbnRyb2w6YWNjZXNzQ29udHJvbCBvcGVyYXRpb246TEFBY2Nlc3NDb250cm9sT3Bl
cmF0aW9uVXNlS2V5U2lnbiBsb2NhbGl6ZWRSZWFzb246cmVhc29uIHJlcGx5OnJlcGx5LmdldCgp
XTsKLSNlbmRpZgogfQogCiB2b2lkIExvY2FsQ29ubmVjdGlvbjo6Z2V0QXR0ZXN0YXRpb24oY29u
c3QgU3RyaW5nJiBycElkLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGhhc2gsIEF0dGVzdGF0aW9uQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikgY29u
c3QKIHsKLSAgICAvLyBEZXZpY2VJZGVudGl0eS5GcmFtZXdvcmsgaXMgbm90IGF2YWxpYWJsZSBp
biBpT1Mgc2ltdWxhdG9yLgotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJ
T1NfRkFNSUxZX1NJTVVMQVRPUikKKyNpZiBIQVZFKERFVklDRV9JREVOVElUWSkKICAgICAvLyBB
cHBsZSBBdHRlc3RhdGlvbgogICAgIEFTU0VSVChoYXNoLnNpemUoKSA8PSAzMik7CiAKQEAgLTEx
NCw3ICsxMDcsNyBAQCB2b2lkIExvY2FsQ29ubmVjdGlvbjo6Z2V0QXR0ZXN0YXRpb24oY29uc3Qg
U3RyaW5nJiBycElkLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lLAogCiAgICAgLy8gRklYTUUoMTgz
NjUyKTogUmVkdWNlIHByb21wdCBmb3IgYmlvbWV0cmljcwogICAgIERldmljZUlkZW50aXR5SXNz
dWVDbGllbnRDZXJ0aWZpY2F0ZVdpdGhDb21wbGV0aW9uKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIG9wdGlvbnMsIG1ha2VCbG9ja1B0cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkuZ2V0
KCkpOwotI2VuZGlmCisjZW5kaWYgLy8gSEFWRShERVZJQ0VfSURFTlRJVFkpCiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tCmluZGV4IGY0MDY5
NmNkMTEyYjA3NzQ5YTc1ZDc3Y2RjMjcxNzk3ZDAwZmFhODguLjMyNDliMGUwMTc2NzI1NmZmOGUz
NDQ3ZDZmNDRmNWE4MGFjMTdmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0KQEAg
LTQxLDEyICs0MSwxMCBAQCBMb2NhbFNlcnZpY2U6OkxvY2FsU2VydmljZShPYnNlcnZlciYgb2Jz
ZXJ2ZXIpCiB7CiB9CiAKKy8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzUxMDQ4NTQyKQogYm9vbCBM
b2NhbFNlcnZpY2U6OmlzQXZhaWxhYmxlKCkKIHsKLS8vIEZJWE1FKDE4Mjc3MikKLSNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQorICAgIC8vIEZJWE1F
KDE5ODE3NikKICAgICBpZiAoIVdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkud2ViQXV0aGVudGljYXRpb25Mb2NhbEF1dGhlbnRpY2F0b3JFbmFibGVkKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTcsNyArNTUsNiBAQCBib29sIExvY2FsU2Vy
dmljZTo6aXNBdmFpbGFibGUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJl
dHVybiB0cnVlOwotI2VuZGlmCiB9CiAKIHZvaWQgTG9jYWxTZXJ2aWNlOjpzdGFydERpc2NvdmVy
eUludGVybmFsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQppbmRl
eCBjYTc2NWU1ODJhNmJiODY0NmYzZTAxN2RiNzY0NjY2OTJlYjYxN2E3Li44NmUwNzkwZDE2ODAx
MjFlZTdlMWZmN2JhNjk3NjY1MTRhZGY1Yjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9j
YWxDb25uZWN0aW9uLm1tCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgTW9ja0xvY2FsQ29ubmVjdGlv
bjo6Z2V0QXR0ZXN0YXRpb24oY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBTdHJpbmcmIHVzZXJu
CiAgICAgICAgIEFTU0VSVCghZXJyb3JSZWYpOwogCiAgICAgICAgIC8vIE1vY2sgd2hhdCBEZXZp
Y2VJZGVudGl0eSB3b3VsZCBkby4KLSAgICAgICAgU3RyaW5nIGxhYmVsID0gbWFrZVN0cmluZyh1
c2VybmFtZSwgIkAiLCBycElkLCAiLXJrIik7CisgICAgICAgIFN0cmluZyBsYWJlbCA9IG1ha2VT
dHJpbmcodXNlcm5hbWUsICJAIiwgcnBJZCwgIi1yay11Y3J0Iik7CiAgICAgICAgIE5TRGljdGlv
bmFyeSogYWRkUXVlcnkgPSBAewogICAgICAgICAgICAgKGlkKWtTZWNWYWx1ZVJlZjogKGlkKWtl
eS5nZXQoKSwKICAgICAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWE1MDlk
NDI0ZDE4YjUzNzgyYjFhZWIwNTM5Y2JmMGE1MjRmOGZkNi4uOTFiMDQzYWNiZTRkMTc4NmQ3NDIz
MTQwMjc5N2NmMDBkZmU1YmM2YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA1LTIzICBKaWV3ZW4gVGFuICA8
amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBFbmFibGUgTG9jYWxB
dXRoZW50aWNhdG9yIGZvciBtYWNPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgyNzcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzM0NzkyMD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4g
ZW50aXRsZW1lbnQgZmlsZSB0byBXZWJLaXRUZXN0UnVubmVyIHN1Y2ggdGhhdCBpdCBjYW4gYWNj
ZXNzCisgICAgICAgIHRoZSBtb2Rlcm4gbWFjT1Mga2V5Y2hhaW4uCisKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL1dlYktpdFRlc3RSdW5uZXIuZW50aXRsZW1lbnRz
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL1dlYktp
dFRlc3RSdW5uZXIueGNjb25maWc6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRU
ZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6YWRkVGVzdEtleVRvS2V5Y2hhaW4pOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6Y2xlYW5VcEtleWNoYWluKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OmtleUV4aXN0c0luS2V5Y2hhaW4pOgorCiAyMDE5LTA4LTAxICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSBGb3JtRGF0YSB6aXAgZmls
ZSBnZW5lcmF0aW9uIHRvIE5ldHdvcmtQcm9jZXNzIGFuZCBlbmFibGUgaXQgZm9yIGFsbCBXZWJL
aXQgY2xpZW50cyBmb3IgdXBsb2FkaW5nIGRpcmVjdG9yaWVzCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL1dlYktpdFRlc3RSdW5uZXIuZW50aXRsZW1l
bnRzIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVu
bmVyLmVudGl0bGVtZW50cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmI0ODI3Nzk1NjU5Nzk0ZTg2MGJmZWMxYjI2
NDA3NGExMWMyNDkyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9D
b25maWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVubmVyLmVudGl0bGVtZW50cwpAQCAtMCwwICsxLDEw
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHBs
aXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBs
ZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+Cis8cGxpc3QgdmVyc2lvbj0iMS4wIj4K
KyAgICA8ZGljdD4KKyAgICAgICAgPGtleT5rZXljaGFpbi1hY2Nlc3MtZ3JvdXBzPC9rZXk+Cisg
ICAgICAgIDxhcnJheT4KKyAgICAgICAgICAgIDxzdHJpbmc+Y29tLmFwcGxlLldlYktpdFRlc3RS
dW5uZXI8L3N0cmluZz4KKyAgICAgICAgPC9hcnJheT4KKyAgICA8L2RpY3Q+Cis8L3BsaXN0Pgpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9XZWJLaXRU
ZXN0UnVubmVyLnhjY29uZmlnIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9u
cy9XZWJLaXRUZXN0UnVubmVyLnhjY29uZmlnCmluZGV4IDRlNTE5MjM3YmZiMWFkOTI2ODY2ZTI1
OTZmNTQ1M2QxNzQ2Y2M3ODEuLmZhNjJlYjQzODUxYTliNTM3NmFmYmY0YjFmOGY1N2U3M2UyYmUz
MTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvV2Vi
S2l0VGVzdFJ1bm5lci54Y2NvbmZpZworKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NvbmZp
Z3VyYXRpb25zL1dlYktpdFRlc3RSdW5uZXIueGNjb25maWcKQEAgLTM0LDMgKzM0LDggQEAgU1RS
SVBfU1RZTEUgPSBkZWJ1Z2dpbmc7CiBTS0lQX0lOU1RBTExbc2RrPWlwaG9uZSpdID0gWUVTOwog
RVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNbc2RrPWlwaG9uZSpdID0gbWFjLyo7CiBJTkNMVURF
RF9TT1VSQ0VfRklMRV9OQU1FU1tzZGs9aXBob25lKl0gPSBtYWMvbWFpbi5tbTsKKworQ09ERV9T
SUdOX0VOVElUTEVNRU5UU1tzZGs9bWFjb3N4Kl0gPSBDb25maWd1cmF0aW9ucy9XZWJLaXRUZXN0
UnVubmVyLmVudGl0bGVtZW50czsKKworQ09ERV9TSUdOX0lERU5USVRZW3Nkaz1tYWNvc3gqXSA9
ICQoQ09ERV9TSUdOX0lERU5USVRZXyQoVVNFX0lOVEVSTkFMX1NESykpOworQ09ERV9TSUdOX0lE
RU5USVRZX1lFUyA9ICQoV0tfRU5HSU5FRVJJTkdfQ09ERV9TSUdOX0lERU5USVRZKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTQzZGRiMjVlNGMyMjkzMzBjM2M3NjBi
YzVkNTA1ZDhiOGM5MjlmMS4uMTY0M2Q0MDBkMDMwZjgyZjk3NTlmODI5ZjAzZjk4YzFjOTU2NjQ2
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJL
aXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNSw3ICsxMDUsOCBA
QAogCQk1NjQxRTJEMDE0MzM1RTk1MDA4MzA3RTUgLyogSlNUZXh0SW5wdXRDb250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU2NDFFMkNF
MTQzMzVFOTUwMDgzMDdFNSAvKiBKU1RleHRJbnB1dENvbnRyb2xsZXIuY3BwICovOyB9OwogCQk1
NjY0QTQ5QTE0MzI2Mzg0MDA4ODgxQkUgLyogVGV4dElucHV0Q29udHJvbGxlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NjY0QTQ5ODE0MzI2Mzg0
MDA4ODgxQkUgLyogVGV4dElucHV0Q29udHJvbGxlci5jcHAgKi87IH07CiAJCTU2NzBCODI4MTM4
NkZDQTUwMDJFQjM1NSAvKiBFdmVudFNlbmRlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTY3MEI4MjcxMzg2RkNBNTAwMkVCMzU1IC8qIEV2
ZW50U2VuZGVyUHJveHkubW0gKi87IH07Ci0JCTU3MEU3NUE4MjE1MkRCNEYwMDMyNEI2RSAvKiBT
ZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzBFNzVBNDIxNTJEQTJDMDAzMjRCNkUgLyogU2VjdXJpdHkuZnJhbWV3b3Jr
ICovOyB9OworCQk1N0EwMDYyRTIyOTc2RUVCMDBBRDA4QkQgLyogU2VjdXJpdHkuZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwRTc1
QTQyMTUyREEyQzAwMzI0QjZFIC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLzsgfTsKKwkJNTdBMDA2
MkYyMjk3NkVGODAwQUQwOEJEIC8qIFNlY3VyaXR5LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MEU3NUE0MjE1MkRBMkMwMDMyNEI2
RSAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi87IH07CiAJCTY1MTBBNzgyMTFFQzY0MzgwMDQxMDg2
NyAvKiBBSEVNX19fXy5UVEYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1MTBBNzc3MTFFQzY0MzgwMDQxMDg2NyAvKiBBSEVNX19fXy5UVEYgKi87IH07
CiAJCTY1MTBBNzg0MTFFQzY0MzgwMDQxMDg2NyAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0
ZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxMEE3
NzkxMUVDNjQzODAwNDEwODY3IC8qIFdlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmICovOyB9Owog
CQk2NTEwQTc4NTExRUM2NDM4MDA0MTA4NjcgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGYg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MTBBNzdB
MTFFQzY0MzgwMDQxMDg2NyAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyMjAwLnR0ZiAqLzsgfTsKQEAg
LTMyMyw2ICszMjQsNyBAQAogCQk1NjcwQjgyNjEzODZGQzEzMDAyRUIzNTUgLyogRXZlbnRTZW5k
ZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFNlbmRlclBy
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU2NzBCODI3MTM4NkZDQTUwMDJF
QjM1NSAvKiBFdmVudFNlbmRlclByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gRXZlbnRTZW5kZXJQcm94eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTcwRTc1QTQyMTUyREEyQzAwMzI0QjZFIC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJh
bWV3b3JrOyBuYW1lID0gU2VjdXJpdHkuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9Owor
CQk1N0EwMDYyQzIyOTc2RTREMDBBRDA4QkQgLyogV2ViS2l0VGVzdFJ1bm5lci5lbnRpdGxlbWVu
dHMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LmVudGl0bGVtZW50czsgcGF0aCA9IFdlYktpdFRlc3RS
dW5uZXIuZW50aXRsZW1lbnRzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1ODM5MTNE
MDE0MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTgzOTEzRDExNDMzNUU5NTAwODMw
N0U1IC8qIEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2NTEwQTc3NzExRUM2NDM4MDA0MTA4NjcgLyogQUhFTV9fX18uVFRGICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFt
ZSA9ICJBSEVNX19fXy5UVEYiOyBwYXRoID0gImZvbnRzL0FIRU1fX19fLlRURiI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTcsNyArNDE5LDcgQEAKIAkJCWlzYSA9IFBCWEZyYW1l
d29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZp
bGVzID0gKAotCQkJCTU3MEU3NUE4MjE1MkRCNEYwMDMyNEI2RSAvKiBTZWN1cml0eS5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQk1N0EwMDYyRjIyOTc2RUY4MDBBRDA4QkQgLyogU2Vj
dXJpdHkuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC00MjYsNiArNDI4LDcgQEAKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQk1MTA1OEFE
NTFENjc4ODIwMDA5QTUzOEMgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliIGluIEZyYW1l
d29ya3MgKi8sCisJCQkJNTdBMDA2MkUyMjk3NkVFQjAwQUQwOEJEIC8qIFNlY3VyaXR5LmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTUxMDU4QUQ2MUQ2Nzg4MjUwMDlBNTM4QyAvKiBX
ZWJLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC04MDYsNiArODA5LDcgQEAKIAkJCQlCQzc5
MzQyNzExOEY3REFGMDA1RUE4RTIgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovLAogCQkJCUJD
MjUxOTcxMTFEMTVFNjEwMDJFQkMwMSAvKiBJbmplY3RlZEJ1bmRsZS54Y2NvbmZpZyAqLywKIAkJ
CQlBMUI4OUI5NDIyMUUwMjZCMDBFQjRDRUEgLyogU0RLVmFyaWFudC54Y2NvbmZpZyAqLywKKwkJ
CQk1N0EwMDYyQzIyOTc2RTREMDBBRDA4QkQgLyogV2ViS2l0VGVzdFJ1bm5lci5lbnRpdGxlbWVu
dHMgKi8sCiAJCQkJQTE4NTEwMzgxQjlBREYyMjAwNzQ0QUVCIC8qIFdlYktpdFRlc3RSdW5uZXIu
eGNjb25maWcgKi8sCiAJCQkJOUIwRDEzMkUyMDM2RDM0NjAwOEZDOEZCIC8qIFdlYktpdFRlc3RS
dW5uZXJBcHAtaU9TLmVudGl0bGVtZW50cyAqLywKIAkJCQkzMTExODNBQTIxMkIxQUM3MDA3N0JD
RTAgLyogV2ViS2l0VGVzdFJ1bm5lckFwcC13YXRjaE9TLmVudGl0bGVtZW50cyAqLywKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5t
bSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpp
bmRleCBmZDI4NzU4ZGUzZGY2NDYzNGFjZGNlZDc5Y2U1ZTE0ZmU1YTY0NGIzLi5hYWEzOGIxNjli
MjJlOTYyNjY2ZGYwYTZjMTZhOTFlNjc5NGE3NGUwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC01MSw2ICs1MSw3IEBA
CiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oPgogI2ltcG9y
dCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5o
PgogCiBuYW1lc3BhY2UgV1RSIHsKIApAQCAtMzI5LDggKzMzMCw2IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmluamVjdFVzZXJTY3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0KQogCiB2b2lkIFRlc3RD
b250cm9sbGVyOjphZGRUZXN0S2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlC
YXNlNjQsIGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9u
VGFnQmFzZTY0KQogewotICAgIC8vIEZJWE1FKDE4Mjc3MikKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIE5TRGljdGlvbmFyeSogb3B0aW9ucyA9IEB7CiAgICAgICAgIChpZClrU2VjQXR0
cktleVR5cGU6IChpZClrU2VjQXR0cktleVR5cGVFQ1NFQ1ByaW1lUmFuZG9tLAogICAgICAgICAo
aWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLApAQCAtMzQ4
LDQwICszNDcsMzYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6YWRkVGVzdEtleVRvS2V5Y2hhaW4o
Y29uc3QgU3RyaW5nJiBwcml2YXRlS2V5QmFzZTY0LCBjb25zdAogICAgICAgICAoaWQpa1NlY1Zh
bHVlUmVmOiAoaWQpa2V5LmdldCgpLAogICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0Ns
YXNzS2V5LAogICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogYXR0ckxhYmVsLAotICAgICAgICAo
aWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZzogYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdp
dGhCYXNlNjRFbmNvZGVkU3RyaW5nOmFwcGxpY2F0aW9uVGFnQmFzZTY0IG9wdGlvbnM6TlNEYXRh
QmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpCisgICAgICAgIChp
ZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnOiBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0
aEJhc2U2NEVuY29kZWRTdHJpbmc6YXBwbGljYXRpb25UYWdCYXNlNjQgb3B0aW9uczpOU0RhdGFC
YXNlNjREZWNvZGluZ0lnbm9yZVVua25vd25DaGFyYWN0ZXJzXSkuZ2V0KCksCisgICAgICAgIChp
ZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCiAgICAgfTsKICAgICBPU1N0YXR1cyBzdGF0dXMgPSBT
ZWNJdGVtQWRkKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYWRkUXVlcnksIE5VTEwpOwogICAg
IEFTU0VSVF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsKLSNlbmRpZgogfQogCiB2b2lkIFRlc3RD
b250cm9sbGVyOjpjbGVhblVwS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwpCiB7Ci0g
ICAgLy8gRklYTUUoMTgyNzcyKQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNEaWN0
aW9uYXJ5KiBkZWxldGVRdWVyeSA9IEB7CiAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2Vj
Q2xhc3NLZXksCi0gICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiBhdHRyTGFiZWwKKyAgICAgICAg
KGlkKWtTZWNBdHRyTGFiZWw6IGF0dHJMYWJlbCwKKyAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdh
Y3k6IEBZRVMKICAgICB9OwogICAgIFNlY0l0ZW1EZWxldGUoKF9fYnJpZGdlIENGRGljdGlvbmFy
eVJlZilkZWxldGVRdWVyeSk7Ci0jZW5kaWYKIH0KIAogYm9vbCBUZXN0Q29udHJvbGxlcjo6a2V5
RXhpc3RzSW5LZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJiBh
cHBsaWNhdGlvblRhZ0Jhc2U2NCkKIHsKLSAgICAvLyBGSVhNRSgxODI3NzIpCi0jaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBOU0RpY3Rpb25hcnkgKnF1ZXJ5ID0gQHsKICAgICAgICAgKGlk
KWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xh
c3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKICAgICAgICAgKGlkKWtTZWNBdHRyTGFi
ZWw6IGF0dHJMYWJlbCwKICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6IGFkb3B0
TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzphcHBsaWNhdGlv
blRhZ0Jhc2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJh
Y3RlcnNdKS5nZXQoKSwKKyAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKICAgICB9
OwogICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENG
RGljdGlvbmFyeVJlZilxdWVyeSwgTlVMTCk7CiAgICAgaWYgKCFzdGF0dXMpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIEFTU0VSVChzdGF0dXMgPT0gZXJyU2VjSXRlbU5vdEZvdW5kKTsKLSNl
bmRpZgogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJkOTRiZjQxMDQ1MjUzODEyZWM2
YWRlNzY5MjZjNTY1YzA5NDZjMDkuLmM5ZWFiODY2OWI1MzNjZDkxNjNkN2Y1YTk3ZGExOGVjOWY0
ZjE3MDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wNS0yMyAgSmlld2VuIFRhbiAgPGpp
ZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gRW5hYmxlIExvY2FsQXV0
aGVudGljYXRvciBmb3IgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4Mjc3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNDc5MjA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIGV4
aXN0aW5nIGxvY2FsIGF1dGhlbnRpY2F0b3IgdGVzdHMgZm9yIG1hY09TLiBTaW5jZSBPcGVuU291
cmNlIGJvdHMKKyAgICAgICAgZG9uJ3QgaGF2ZSB0aGUgaW50ZXJuYWwgc2V0dGluZyB0byBpbmNs
dWRlIHJlc3RyaWN0ZWQgZW50aXRsZW1lbnRzLCB0ZXN0cworICAgICAgICB3aWxsIGZhaWwgb24g
T3BlblNvdXJjZSBib3RzLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0
YXRpb25zOgorCiAyMDE5LTA4LTAxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtUZXh0IGF1dG9zaXppbmddIFtpUGFkT1NdIEFkZCB0YXJnZXRlZCBo
YWNrcyB0byBhZGRyZXNzIHNvbWUgcmVtYWluaW5nIHRleHQgYXV0b3NpemluZyBpc3N1ZXMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzMDdl
Y2JlZmFkYjdhZjhiNzZmOTFhNWUwMDNjZjVkOWQ5OGE3MWZkLi45ZDVjZmY1MzFlNWM3ODg0NTA2
ODE3ZTNiM2IwNjEzMzNiNGE0YjdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCkBAIC05MDUsMTQgKzkwNSwxMyBAQCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3BheW1lbnQtcmVxdWVzdC91c2VyLWFjY2VwdHMtcGF5bWVudC1yZXF1
ZXN0LWFsZwogCiB3ZWJraXQub3JnL2IvMTg5NTk4IGNvbXBvc2l0aW5nL2JhY2tpbmcvYmFja2lu
Zy1zdG9yZS1hdHRhY2htZW50LWZpbGwtZm9yd2FyZHMtYW5pbWF0aW9uLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogCi0jIFNraXAgbG9jYWwgYXV0aGVudGljYXRvciB0ZXN0cyBmb3IgbWFjIG5vdy4K
LWh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1s
b2NhbC5odHRwcy5odG1sIFsgU2tpcCBdCi1odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbCBbIFNraXAgXQotaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLmh0dHBz
Lmh0bWwgWyBTa2lwIF0KLWh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sIFsgU2tpcCBdCi0jIFRoZSBmb2xsb3dpbmcgdGVz
dHMgcmVxdWlyZSBQdWJsaWNLZXlDcmVkZW50aWFsIG9iamVjdHMuIFdlIGNhbiBvbmx5IHByb2R1
Y2UgdGhlbSB2aWEgbG9jYWwgYXV0aGVudGljYXRvcnMgbm93LgotaHR0cC93cHQvY3JlZGVudGlh
bC1tYW5hZ2VtZW50L2NyZWRlbnRpYWxzY29udGFpbmVyLXN0b3JlLWJhc2ljcy5odHRwcy5odG1s
IFsgU2tpcCBdCi1odHRwL3dwdC93ZWJhdXRobi9pZGwuaHR0cHMuaHRtbCBbIFNraXAgXQorIyBM
b2NhbCBhdXRoZW50aWNhdG9yIHRlc3RzIGZhaWwgb24gT3BlblNvdXJjZS4KK2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5o
dG1sIFsgRmFpbHVyZSBdCitodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbCBbIEZhaWx1cmUgXQoraHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwg
WyBGYWlsdXJlIF0KK2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
c3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sIFsgRmFpbHVyZSBdCitodHRwL3dwdC9jcmVkZW50aWFs
LW1hbmFnZW1lbnQvY3JlZGVudGlhbHNjb250YWluZXItc3RvcmUtYmFzaWNzLmh0dHBzLmh0bWwg
WyBGYWlsdXJlIF0KK2h0dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sIFsgRmFpbHVyZSBd
CiAKIHdlYmtpdC5vcmcvYi8xODM4NzggbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3RyYWNr
cy1wYW5lbC90cmFja3MtcGFuZWwtdXAtY2xpY2stb3Zlci1tZWRpYS1kb2VzLW5vdC1kaW1pc3Mt
bWVkaWEtY29udHJvbHMtd2hlbi1tZWRpYS1pcy1wbGF5aW5nLmh0bWwgWyBQYXNzIFRpbWVvdXQg
XSAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375641</attachid>
            <date>2019-08-06 12:08:57 -0700</date>
            <delta_ts>2019-08-06 12:54:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182772-20190806120857.patch</filename>
            <type>text/plain</type>
            <size>33210</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJlY2RlMTYyM2YxOGZiYTRkZDE0NTg0
OTJlMmY3NTJkYWIyODlkY2YuLjYyZTdiNmNhNDg0MzdkNWQ1YTYxMjg0ZGU5Zjk3MGYxMDhhZjgz
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDUtMjMgIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aE5dIEVuYWJsZSBMb2NhbEF1dGhlbnRp
Y2F0b3IgZm9yIG1hY09TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODI3NzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMzQ3OTIwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0u
aDoKKyAgICAgICAgQWRkcyBIQVZFX0RFVklDRV9JREVOVElUWS4KKyAgICAgICAgKiB3dGYvc3Bp
L2NvY29hL1NlY3VyaXR5U1BJLmg6CisgICAgICAgIEFkZHMgYSBTUEkgZm9yIHRlbGxpbmcgbWFj
T1Mga2V5Y2hhaW4gdG8gdXNlIHRoZSBtb2Rlcm4gb25lLgorCiAyMDE5LTA4LTAxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSBGb3Jt
RGF0YSB6aXAgZmlsZSBnZW5lcmF0aW9uIHRvIE5ldHdvcmtQcm9jZXNzIGFuZCBlbmFibGUgaXQg
Zm9yIGFsbCBXZWJLaXQgY2xpZW50cyBmb3IgdXBsb2FkaW5nIGRpcmVjdG9yaWVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDM0NjYxMzc3ZGZiNTdmMTUyN2NjMWFlNTM5M2MxM2NiNWM4MDE5MWMuLjZiZTEzMGFjNTcx
N2UxYjQ1YWEyMTI0ZmNlMDc2OWYyNmQzZGNiNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTktMDUtMjMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV2ViQXV0aE5dIEVuYWJsZSBMb2NhbEF1dGhlbnRpY2F0b3IgZm9yIG1hY09TCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI3NzIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQzMzQ3OTIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1
bGdoYW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBlbmFibGVzIExvY2FsQXV0aGVudGljYXRvciBm
b3IgbWFjT1MuIFRoZSBtYWpvcml0eQorICAgICAgICBvZiB0aGlzIHBhdGNoIGlzIHRvIHR3ZWFr
IG1hY09TIGtleWNoYWluIHRvIHVzZSB0aGUgbW9kZXJuIG9uZS4KKworICAgICAgICAqIENvbmZp
Z3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZzoKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvQ29jb2Ev
RGV2aWNlSWRlbnRpdHlTUEkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1
dGhlbnRpY2F0b3JJbnRlcm5hbDo6dG9WZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1
dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRo
ZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKToKKyAg
ICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFs
QWZ0ZXJBdHRlc3RlZCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Z2V0
QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51
ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktp
dDo6TG9jYWxDb25uZWN0aW9uOjpnZXRVc2VyQ29uc2VudCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OkxvY2FsQ29ubmVjdGlvbjo6Z2V0QXR0ZXN0YXRpb24gY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW06CisgICAgICAg
IChXZWJLaXQ6OkxvY2FsU2VydmljZTo6aXNBdmFpbGFibGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW06CisgICAgICAg
IChXZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmdldEF0dGVzdGF0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiBjb25maWcuaDoKKwogMjAxOS0wOC0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgRm9ybURhdGEgemlwIGZpbGUgZ2Vu
ZXJhdGlvbiB0byBOZXR3b3JrUHJvY2VzcyBhbmQgZW5hYmxlIGl0IGZvciBhbGwgV2ViS2l0IGNs
aWVudHMgZm9yIHVwbG9hZGluZyBkaXJlY3RvcmllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggOTgzNmMyOTBl
MWE1N2ZmNDlmNzEyMzVmZDllZmZhNDNmOTg0YTJkMi4uMzdlOGJlNzZhZGYwZWQzYjNhMWJiODNh
ODU0NjNlYmU2Y2YzODU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xNjI0LDMgKzE2MjQsNyBAQAogI2lm
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMzAwMDApIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDYwMDAwKSB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgX19UVl9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDApCiAjZGVmaW5lIFVTRV9ISVJBR0lOT19TQU5T
X1dPUktBUk9VTkQgMQogI2VuZGlmCisKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgIVBM
QVRGT1JNKElPU19TSU1VTEFUT1IpKQorI2RlZmluZSBIQVZFX0RFVklDRV9JREVOVElUWSAxCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5o
IGIvU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmgKaW5kZXggZTNmNmFlZWM0
NDdjODIyMjc0YWFjNGZmNjA0MWYzMWNjNjgwZDU0Ni4uNzdkYzgzMGEzZWVlNmJkYWI2MGNiYWNm
MzY0MTQ5NmQ0ZjM4MjNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvc3BpL2NvY29hL1Nl
Y3VyaXR5U1BJLmgKKysrIGIvU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmgK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxTZWN1cml0eS9TZWNBY2Nlc3NDb250cm9sUHJp
di5oPgogI2luY2x1ZGUgPFNlY3VyaXR5L1NlY0NlcnRpZmljYXRlUHJpdi5oPgogI2luY2x1ZGUg
PFNlY3VyaXR5L1NlY0lkZW50aXR5UHJpdi5oPgorI2luY2x1ZGUgPFNlY3VyaXR5L1NlY0l0ZW1Q
cml2Lmg+CiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjS2V5UHJpdi5oPgogI2luY2x1ZGUgPFNlY3Vy
aXR5L1NlY1Rhc2suaD4KICNpbmNsdWRlIDxTZWN1cml0eS9TZWNUcnVzdFByaXYuaD4KQEAgLTYy
LDEwICs2MywxMSBAQCBPU1N0YXR1cyBTZWNUcnVzdGVkQXBwbGljYXRpb25DcmVhdGVGcm9tUGF0
aChjb25zdCBjaGFyKiBwYXRoLCBTZWNUcnVzdGVkQXBwbGljYQogI2VuZGlmCiAKIFNlY1NpZ25h
dHVyZUhhc2hBbGdvcml0aG0gU2VjQ2VydGlmaWNhdGVHZXRTaWduYXR1cmVIYXNoQWxnb3JpdGht
KFNlY0NlcnRpZmljYXRlUmVmKTsKK2V4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrU2VjQXR0ck5v
TGVnYWN5OwogCiBXVEZfRVhURVJOX0NfRU5ECiAKLSNlbmRpZgorI2VuZGlmIC8vIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCiAKIHR5cGVkZWYgc3RydWN0IF9fU2VjVGFzayAqU2VjVGFza1JlZjsK
IHR5cGVkZWYgc3RydWN0IF9fU2VjVHJ1c3QgKlNlY1RydXN0UmVmOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0
L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwppbmRleCBlMTI5NzYyMjY5MmE5YjQ4NTM4
NTBhZDZmMzMwNzNlZjllMjg3YzUwLi4yMGYzNTQyNzg5Njg4YmRjYTdiNTQ4N2MyY2JjMzY1MTI1
OWM0NTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54
Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZp
ZwpAQCAtMTcyLDggKzE3MiwxMCBAQCBXS19GUkFNRVdPUktfSEVBREVSX1BPU1RQUk9DRVNTSU5H
X0RJU0FCTEVEW3Nkaz1pcGhvbmUqMTIuKl0gPSBZRVM7CiBXS19SRUxPQ0FUQUJMRV9GUkFNRVdP
UktfTERGTEFHUyA9ICQoV0tfUkVMT0NBVEFCTEVfRlJBTUVXT1JLX0xERkxBR1NfJChXS19SRUxP
Q0FUQUJMRV9GUkFNRVdPUktTKV8kKFdLX1BMQVRGT1JNX05BTUUpKTsKIFdLX1JFTE9DQVRBQkxF
X0ZSQU1FV09SS19MREZMQUdTX1lFU19tYWNvc3ggPSAtV2wsLW5vdF9mb3JfZHlsZF9zaGFyZWRf
Y2FjaGU7CiAKLVdLX0hBVkVfREVWSUNFX0lERU5USVRZID0gJChXS19IQVZFX0RFVklDRV9JREVO
VElUWV8kKFBMQVRGT1JNX05BTUUpKTsKK1dLX0hBVkVfREVWSUNFX0lERU5USVRZID0gJChXS19I
QVZFX0RFVklDRV9JREVOVElUWV8kKFdLX1BMQVRGT1JNX05BTUUpKTsKIFdLX0hBVkVfREVWSUNF
X0lERU5USVRZX2lwaG9uZW9zID0gWUVTOworV0tfSEFWRV9ERVZJQ0VfSURFTlRJVFlfbWFjb3N4
ID0gJChXS19IQVZFX0RFVklDRV9JREVOVElUWSQoV0tfTUFDT1NfMTAxNCkpOworV0tfSEFWRV9E
RVZJQ0VfSURFTlRJVFlfTUFDT1NfU0lOQ0VfMTAxNCA9IFlFUzsKIAogV0tfSEFWRV9VUkxfRk9S
TUFUVElORyA9ICQoV0tfSEFWRV9VUkxfRk9STUFUVElOR18kKFdLX1BMQVRGT1JNX05BTUUpKTsK
IFdLX0hBVkVfVVJMX0ZPUk1BVFRJTkdfaXBob25lb3MgPSAkKFdLX0hBVkVfVVJMX0ZPUk1BVFRJ
TkckKFdLX0lPU18xMikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
Q29jb2EvRGV2aWNlSWRlbnRpdHlTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0Nv
Y29hL0RldmljZUlkZW50aXR5U1BJLmgKaW5kZXggMDMyMDNlMjYwNDMyMmFhN2EyOWQxODMzZWRi
NzU0YjljYzIzNWRjYS4uNzQ3N2U0MDk3MjFiZWEzNjc4MTExNDVjY2NhYmZiNjA2ZDUzOThiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvRGV2aWNlSWRlbnRp
dHlTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9EZXZpY2VJZGVu
dGl0eVNQSS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCi0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9S
KQorI2lmIEhBVkUoREVWSUNFX0lERU5USVRZKQogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKIApAQCAtNTQsNiArNTQsNiBAQCB2b2lkIERldmljZUlkZW50aXR5SXNzdWVDbGllbnRDZXJ0
aWZpY2F0ZVdpdGhDb21wbGV0aW9uKGRpc3BhdGNoX3F1ZXVlX3QgX051bGxhYgogCiAjZW5kaWYg
Ly8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKKyNlbmRpZiAvLyBIQVZFKERF
VklDRV9JREVOVElUWSkKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KaW5kZXggOWMwMzE0ZjliM2Y2ODljYTIxNDhh
MzY5MzczNzE3ZmVjOTNlMjBhZS4uN2Q3YTI3MDUwYTRiNDQ5NTg2MzdmMDUzZTUwMTZkNTU2Njg2
NGZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQpAQCAtNDEs
NiArNDEsNyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxv
b3AuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2Vj
dXJpdHlTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC01NCw3ICs1NSw2IEBAIGNvbnN0IHVpbnQ4X3QgZ2V0QXNzZXJ0aW9uRmxh
Z3MgPSAwYjAwMDAwMTAxOyAvLyBVUCBhbmQgVVYgYXJlIHNldC4KIC8vIENyZWRlbnRpYWwgSUQg
aXMgY3VycmVudGx5IFNIQS0xIG9mIHRoZSBjb3JyZXNwb25kaW5nIHB1YmxpYyBrZXkuCiBjb25z
dCB1aW50MTZfdCBjcmVkZW50aWFsSWRMZW5ndGggPSAyMDsKIAotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiBzdGF0aWMgaW5saW5lIGJvb2wgZW1wdHlUcmFuc3BvcnRzT3JDb250YWluKGNvbnN0
IFZlY3RvcjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiYgdHJhbnNwb3J0cywgQXV0aGVudGljYXRv
clRyYW5zcG9ydCB0YXJnZXQpCiB7CiAgICAgcmV0dXJuIHRyYW5zcG9ydHMuaXNFbXB0eSgpID8g
dHJ1ZSA6IHRyYW5zcG9ydHMuY29udGFpbnModGFyZ2V0KTsKQEAgLTc4LDcgKzc4LDYgQEAgc3Rh
dGljIGlubGluZSBWZWN0b3I8dWludDhfdD4gdG9WZWN0b3IoTlNEYXRhICpkYXRhKQogICAgIHJl
c3VsdC5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyks
IGRhdGEubGVuZ3RoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQotI2VuZGlmIC8vICFQTEFURk9S
TShJT1NfRkFNSUxZKQogCiB9IC8vIExvY2FsQXV0aGVudGljYXRvckludGVybmFsCiAKQEAgLTg5
LDEyICs4OCwxMCBAQCBMb2NhbEF1dGhlbnRpY2F0b3I6OkxvY2FsQXV0aGVudGljYXRvcihVbmlx
dWVSZWY8TG9jYWxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCiAKIHZvaWQgTG9jYWxBdXRoZW50
aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiB7Ci0gICAgLy8gRklYTUUoMTgyNzcyKQogICAgIHVz
aW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsKICAgICBBU1NFUlQobV9z
dGF0ZSA9PSBTdGF0ZTo6SW5pdCk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZXF1ZXN0UmVjZWl2
ZWQ7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1w
bGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI29wLW1ha2UtY3JlZCBhcyBv
ZiA1IERlY2VtYmVyIDIwMTcuCiAgICAgLy8gU2tpcCBTdGVwIDQtNSBhcyByZXF1aXJlUmVzaWRl
bnRLZXkgYW5kIHJlcXVpcmVVc2VyVmVyaWZpY2F0aW9uIGFyZSBlbmZvcmNlZC4KICAgICAvLyBT
a2lwIFN0ZXAgOSBhcyBleHRlbnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KQEAgLTEyMiw2
ICsxMTksNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQogICAg
ICAgICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6IHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25z
LnJwLmlkLAogICAgICAgICAgICAgKGlkKWtTZWNSZXR1cm5BdHRyaWJ1dGVzOiBAWUVTLAogICAg
ICAgICAgICAgKGlkKWtTZWNNYXRjaExpbWl0OiAoaWQpa1NlY01hdGNoTGltaXRBbGwsCisgICAg
ICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwogICAgICAgICB9OwogICAgICAgICBD
RlR5cGVSZWYgYXR0cmlidXRlc0FycmF5UmVmID0gbnVsbHB0cjsKICAgICAgICAgT1NTdGF0dXMg
c3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1
ZXJ5LCAmYXR0cmlidXRlc0FycmF5UmVmKTsKQEAgLTE1MiwxOCArMTUwLDE1IEBAIHZvaWQgTG9j
YWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiAgICAgICAgIHdlYWtUaGlzLT5jb250
aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKGNvbnNlbnQpOwogICAgIH07CiAg
ICAgbV9jb25uZWN0aW9uLT5nZXRVc2VyQ29uc2VudCgKLSAgICAgICAgIkFsbG93ICIgKyByZXF1
ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5pZCArICIgdG8gY3JlYXRlIGEgcHVibGljIGtl
eSBjcmVkZW50aWFsIGZvciAiICsgcmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMudXNlci5u
YW1lLAorICAgICAgICAiYWxsb3cgIiArIHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLnJw
LmlkICsgIiB0byBjcmVhdGUgYSBwdWJsaWMga2V5IGNyZWRlbnRpYWwgZm9yICIgKyByZXF1ZXN0
RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy51c2VyLm5hbWUsCiAgICAgICAgIFdURk1vdmUoY2FsbGJh
Y2spKTsKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIH0KIAogdm9pZCBMb2NhbEF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoTG9j
YWxDb25uZWN0aW9uOjpVc2VyQ29uc2VudCBjb25zZW50KQogewotICAgIC8vIEZJWE1FKDE4Mjc3
MikKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UmVxdWVzdFJlY2VpdmVkKTsKICAgICBt
X3N0YXRlID0gU3RhdGU6OlVzZXJDb25zZW50ZWQ7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGlmIChjb25zZW50ID09IExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQ6Ok5vKSB7
CiAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3Is
ICJDb3VsZG4ndCBnZXQgdXNlciBjb25zZW50LiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MTc2LDYgKzE3MSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVk
ZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvCiAgICAgICAgIChpZClrU2Vj
Q2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCiAgICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiByZXF1
ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5pZCwKICAgICAgICAgKGlkKWtTZWNBdHRyQXBw
bGljYXRpb25UYWc6IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpyZXF1ZXN0RGF0YSgpLmNyZWF0aW9u
T3B0aW9ucy51c2VyLmlkVmVjdG9yLmRhdGEoKSBsZW5ndGg6cmVxdWVzdERhdGEoKS5jcmVhdGlv
bk9wdGlvbnMudXNlci5pZFZlY3Rvci5zaXplKCldLAorICAgICAgICAoaWQpa1NlY0F0dHJOb0xl
Z2FjeTogQFlFUwogICAgIH07CiAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbURlbGV0ZSgo
X19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWRlbGV0ZVF1ZXJ5KTsKICAgICBpZiAoc3RhdHVzICYm
IHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKQEAgLTE5MiwxOCArMTg4LDE1IEBAIHZv
aWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29u
c2VudGVkKExvY2FsQ29ubmVjdGlvCiAgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1ha2VDcmVk
ZW50aWFsQWZ0ZXJBdHRlc3RlZChwcml2YXRlS2V5LCBjZXJ0aWZpY2F0ZXMsIGVycm9yKTsKICAg
ICB9OwogICAgIG1fY29ubmVjdGlvbi0+Z2V0QXR0ZXN0YXRpb24ocmVxdWVzdERhdGEoKS5jcmVh
dGlvbk9wdGlvbnMucnAuaWQsIHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLnVzZXIubmFt
ZSwgcmVxdWVzdERhdGEoKS5oYXNoLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0jZW5kaWYgLy8gIVBM
QVRGT1JNKElPU19GQU1JTFkpCiB9CiAKIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51
ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYgcHJpdmF0ZUtleSwgTlNBcnJh
eSAqY2VydGlmaWNhdGVzLCBOU0Vycm9yICplcnJvcikKIHsKLSAgICAvLyBGSVhNRSgxODI3NzIp
CiAgICAgdXNpbmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsOwogCiAgICAg
QVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlVzZXJDb25zZW50ZWQpOwogICAgIG1fc3RhdGUgPSBT
dGF0ZTo6QXR0ZXN0ZWQ7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChlcnJv
cikgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGF0dGVzdDogJUAiLCBlcnJvcik7CiAg
ICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJVbmtu
b3duIGludGVybmFsIGVycm9yLiJfcyB9KTsKQEAgLTIyNywxMyArMjIwLDE0IEBAIHZvaWQgTG9j
YWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNL
ZXlSZWYgcHJpdmF0ZUtlCiAgICAgLy8gRklYTUUoMTgzNTMzKTogRGV2aWNlSWRlbnRpdHkuRnJh
bWV3b3JrIHdvdWxkIGluc2VydCBjZXJ0aWZpY2F0ZXMgaW50byBLZXljaGFpbiBhcyB3ZWxsLiBX
ZSBzaG91bGQgdXBkYXRlIHRob3NlIGFzIHdlbGwuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNyZWRl
bnRpYWxJZDsKICAgICB7Ci0gICAgICAgIC8vIC1yayBpcyBhZGRlZCBieSBEZXZpY2VJZGVudGl0
eS5GcmFtZXdvcmsuCi0gICAgICAgIFN0cmluZyBsYWJlbCA9IG1ha2VTdHJpbmcocmVxdWVzdERh
dGEoKS5jcmVhdGlvbk9wdGlvbnMudXNlci5uYW1lLCAiQCIsIHJlcXVlc3REYXRhKCkuY3JlYXRp
b25PcHRpb25zLnJwLmlkLCAiLXJrIik7CisgICAgICAgIC8vIC1yay11Y3J0IGlzIGFkZGVkIGJ5
IERldmljZUlkZW50aXR5LkZyYW1ld29yay4KKyAgICAgICAgU3RyaW5nIGxhYmVsID0gbWFrZVN0
cmluZyhyZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy51c2VyLm5hbWUsICJAIiwgcmVxdWVz
dERhdGEoKS5jcmVhdGlvbk9wdGlvbnMucnAuaWQsICItcmstdWNydCIpOwogICAgICAgICBOU0Rp
Y3Rpb25hcnkgKmNyZWRlbnRpYWxJZFF1ZXJ5ID0gQHsKICAgICAgICAgICAgIChpZClrU2VjQ2xh
c3M6IChpZClrU2VjQ2xhc3NLZXksCiAgICAgICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczog
KGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAogICAgICAgICAgICAgKGlkKWtTZWNBdHRyTGFi
ZWw6IGxhYmVsLAotICAgICAgICAgICAgKGlkKWtTZWNSZXR1cm5BdHRyaWJ1dGVzOiBAWUVTCisg
ICAgICAgICAgICAoaWQpa1NlY1JldHVybkF0dHJpYnV0ZXM6IEBZRVMsCisgICAgICAgICAgICAo
aWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwogICAgICAgICB9OwogICAgICAgICBDRlR5cGVSZWYg
YXR0cmlidXRlc1JlZiA9IG51bGxwdHI7CiAgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0
ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZiljcmVkZW50aWFsSWRRdWVy
eSwgJmF0dHJpYnV0ZXNSZWYpOwpAQCAtMjUxLDYgKzI0NSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50
aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYgcHJp
dmF0ZUtlCiAgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAogICAg
ICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0
ZSwKICAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IG5zQXR0cmlidXRl
c1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsXSwKKyAgICAgICAgICAgIChpZClrU2VjQXR0
ck5vTGVnYWN5OiBAWUVTCiAgICAgICAgIH07CiAgICAgICAgIE5TRGljdGlvbmFyeSAqdXBkYXRl
UGFyYW1zID0gQHsKICAgICAgICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiByZXF1ZXN0RGF0YSgp
LmNyZWF0aW9uT3B0aW9ucy5ycC5pZCwKQEAgLTMyNywxNyArMzIyLDE0IEBAIHZvaWQgTG9jYWxB
dXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlS
ZWYgcHJpdmF0ZUtlCiAgICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxkQXR0ZXN0YXRp
b25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJBcHBsZSIsIFdURk1vdmUoYXR0ZXN0YXRpb25T
dGF0ZW1lbnRNYXApLCByZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5hdHRlc3RhdGlvbik7
CiAKICAgICByZWNlaXZlUmVzcG9uZChQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSB7IEFycmF5QnVm
ZmVyOjpjcmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNpemUoKSksIHRy
dWUsIG51bGxwdHIsIEFycmF5QnVmZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3QuZGF0YSgp
LCBhdHRlc3RhdGlvbk9iamVjdC5zaXplKCkpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBX
VEY6Om51bGxvcHQgfSk7Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiB9CiAKIHZv
aWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogewotICAgIC8vIEZJWE1FKDE4
Mjc3MikKICAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw7CiAg
ICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkluaXQpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6
UmVxdWVzdFJlY2VpdmVkOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBUaGUg
Zm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNvcC1n
ZXQtYXNzZXJ0aW9uIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KICAgICAvLyBTa2lwIFN0ZXAgMiBh
cyByZXF1aXJlVXNlclZlcmlmaWNhdGlvbiBpcyBlbmZvcmNlZC4KICAgICAvLyBTa2lwIFN0ZXAg
OCBhcyBleHRlbnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KQEAgLTM1NSw3ICszNDcsOCBA
QCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKICAgICAgICAgKGlkKWtT
ZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKICAgICAgICAgKGlk
KWtTZWNBdHRyTGFiZWw6IHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMucnBJZCwKICAgICAg
ICAgKGlkKWtTZWNSZXR1cm5BdHRyaWJ1dGVzOiBAWUVTLAotICAgICAgICAoaWQpa1NlY01hdGNo
TGltaXQ6IChpZClrU2VjTWF0Y2hMaW1pdEFsbAorICAgICAgICAoaWQpa1NlY01hdGNoTGltaXQ6
IChpZClrU2VjTWF0Y2hMaW1pdEFsbCwKKyAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZ
RVMKICAgICB9OwogICAgIENGVHlwZVJlZiBhdHRyaWJ1dGVzQXJyYXlSZWYgPSBudWxscHRyOwog
ICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGlj
dGlvbmFyeVJlZilxdWVyeSwgJmF0dHJpYnV0ZXNBcnJheVJlZik7CkBAIC00MDEsMjIgKzM5NCwx
OSBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKICAgICAgICAgd2Vh
a1RoaXMtPmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyQ29uc2VudGVkKGNvbnNlbnQsIGNv
bnRleHQsIGNyZWRlbnRpYWxJZCwgdXNlcmhhbmRsZSk7CiAgICAgfTsKICAgICBOU0RhdGEgKmlk
RGF0YSA9IHNlbGVjdGVkQ3JlZGVudGlhbEF0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGljYXRp
b25UYWddOwotICAgIFN0cmluZ1ZpZXcgaWRTdHJpbmdWaWV3IHsgc3RhdGljX2Nhc3Q8Y29uc3Qg
TENoYXIqPihbaWREYXRhIGJ5dGVzXSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihbaWREYXRhIGxl
bmd0aF0pIH07CisgICAgU3RyaW5nVmlldyBpZFN0cmluZ1ZpZXcgeyBzdGF0aWNfY2FzdDxjb25z
dCBVQ2hhcio+KFtpZERhdGEgYnl0ZXNdKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFtpZERhdGEg
bGVuZ3RoXSkgfTsKICAgICBtX2Nvbm5lY3Rpb24tPmdldFVzZXJDb25zZW50KAotICAgICAgICBt
YWtlU3RyaW5nKCJMb2cgaW50byAiLCByZXF1ZXN0RGF0YSgpLnJlcXVlc3RPcHRpb25zLnJwSWQs
ICIgd2l0aCAiLCBpZFN0cmluZ1ZpZXcsICcuJyksCisgICAgICAgIG1ha2VTdHJpbmcoImxvZyBp
bnRvICIsIHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMucnBJZCwgIiB3aXRoICIsIGlkU3Ry
aW5nVmlldyksCiAgICAgICAgIChfX2JyaWRnZSBTZWNBY2Nlc3NDb250cm9sUmVmKXNlbGVjdGVk
Q3JlZGVudGlhbEF0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQWNjZXNzQ29udHJvbF0sCiAgICAgICAg
IFdURk1vdmUoY2FsbGJhY2spKTsKLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogfQog
CiB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJD
b25zZW50ZWQoTG9jYWxDb25uZWN0aW9uOjpVc2VyQ29uc2VudCBjb25zZW50LCBMQUNvbnRleHQg
KmNvbnRleHQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3JlZGVudGlhbElkLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHVzZXJoYW5kbGUpCiB7Ci0gICAgLy8gRklYTUUoMTgyNzcyKQogICAgIHVz
aW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsKICAgICBBU1NFUlQobV9z
dGF0ZSA9PSBTdGF0ZTo6UmVxdWVzdFJlY2VpdmVkKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OlVz
ZXJDb25zZW50ZWQ7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChjb25zZW50
ID09IExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQ6Ok5vKSB7CiAgICAgICAgIHJlY2VpdmVS
ZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJDb3VsZG4ndCBnZXQgdXNl
ciBjb25zZW50LiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDM3LDYgKzQyNyw3IEBAIHZv
aWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNl
bnRlZChMb2NhbENvbm5lY3Rpb246CiAgICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlv
bkxhYmVsOiBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Y3JlZGVudGlhbElkLmRhdGEoKSBsZW5ndGg6
Y3JlZGVudGlhbElkLnNpemUoKV0sCiAgICAgICAgICAgICAoaWQpa1NlY1VzZUF1dGhlbnRpY2F0
aW9uQ29udGV4dDogY29udGV4dCwKICAgICAgICAgICAgIChpZClrU2VjUmV0dXJuUmVmOiBAWUVT
LAorICAgICAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKICAgICAgICAgfTsKICAg
ICAgICAgQ0ZUeXBlUmVmIHByaXZhdGVLZXlSZWYgPSBudWxscHRyOwogICAgICAgICBPU1N0YXR1
cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYp
cXVlcnksICZwcml2YXRlS2V5UmVmKTsKQEAgLTQ2NCw3ICs0NTUsNiBAQCB2b2lkIExvY2FsQXV0
aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJDb25zZW50ZWQoTG9jYWxD
b25uZWN0aW9uOgogCiAgICAgLy8gU3RlcCAxMy4KICAgICByZWNlaXZlUmVzcG9uZChQdWJsaWNL
ZXlDcmVkZW50aWFsRGF0YSB7IEFycmF5QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlhbElkLmRhdGEo
KSwgY3JlZGVudGlhbElkLnNpemUoKSksIGZhbHNlLCBudWxscHRyLCBudWxscHRyLCBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKGF1dGhEYXRhLmRhdGEoKSwgYXV0aERhdGEuc2l6ZSgpKSwgQXJyYXlCdWZm
ZXI6OmNyZWF0ZShzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgQXJyYXlCdWZm
ZXI6OmNyZWF0ZSh1c2VyaGFuZGxlLmRhdGEoKSwgdXNlcmhhbmRsZS5zaXplKCkpLCBXVEY6Om51
bGxvcHQgfSk7Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tCmluZGV4IDk0
NDcwNWMyNjljYjEzNTY5NThiZjc0NjVkYmZjOTBkMzAwMTI1NjUuLjljOTg5NjkxMDMwOWUzZTcw
ZDVkMWY4MjVlMWZjMjZlODkzZjg4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rp
b24ubW0KQEAgLTM5LDggKzM5LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgTG9jYWxD
b25uZWN0aW9uOjpnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNvbiwgVXNlckNvbnNl
bnRDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewotICAgIC8vIEZJWE1FKDE4
Mjc3MikKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gY29udGV4dCA9IGFkb3B0
TlMoW2FsbG9jTEFDb250ZXh0SW5zdGFuY2UoKSBpbml0XSk7CiAgICAgYXV0byByZXBseSA9IG1h
a2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTU1LDEzICs1MywxMCBAQCB2b2lkIExvY2FsQ29u
bmVjdGlvbjo6Z2V0VXNlckNvbnNlbnQoY29uc3QgU3RyaW5nJiByZWFzb24sIFVzZXJDb25zZW50
Q2FsbGJhY2smJgogICAgICAgICB9KTsKICAgICB9KTsKICAgICBbY29udGV4dCBldmFsdWF0ZVBv
bGljeTpMQVBvbGljeURldmljZU93bmVyQXV0aGVudGljYXRpb25XaXRoQmlvbWV0cmljcyBsb2Nh
bGl6ZWRSZWFzb246cmVhc29uIHJlcGx5OnJlcGx5LmdldCgpXTsKLSNlbmRpZgogfQogCiB2b2lk
IExvY2FsQ29ubmVjdGlvbjo6Z2V0VXNlckNvbnNlbnQoY29uc3QgU3RyaW5nJiByZWFzb24sIFNl
Y0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbCwgVXNlckNvbnNlbnRDb250ZXh0Q2FsbGJh
Y2smJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKLSAgICAvLyBGSVhNRSgxODI3NzIpCi0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdE5TKFthbGxv
Y0xBQ29udGV4dEluc3RhbmNlKCkgaW5pdF0pOwogICAgIGF1dG8gcmVwbHkgPSBtYWtlQmxvY2tQ
dHIoW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIChCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC03NiwxMyArNzEsMTEgQEAgdm9pZCBMb2NhbENv
bm5lY3Rpb246OmdldFVzZXJDb25zZW50KGNvbnN0IFN0cmluZyYgcmVhc29uLCBTZWNBY2Nlc3ND
b250cm9sUmVmIGEKICAgICAgICAgfSk7CiAgICAgfSk7CiAgICAgW2NvbnRleHQgZXZhbHVhdGVB
Y2Nlc3NDb250cm9sOmFjY2Vzc0NvbnRyb2wgb3BlcmF0aW9uOkxBQWNjZXNzQ29udHJvbE9wZXJh
dGlvblVzZUtleVNpZ24gbG9jYWxpemVkUmVhc29uOnJlYXNvbiByZXBseTpyZXBseS5nZXQoKV07
Ci0jZW5kaWYKIH0KIAogdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldEF0dGVzdGF0aW9uKGNvbnN0
IFN0cmluZyYgcnBJZCwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBoYXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0
CiB7Ci0gICAgLy8gRGV2aWNlSWRlbnRpdHkuRnJhbWV3b3JrIGlzIG5vdCBhdmFsaWFibGUgaW4g
aU9TIHNpbXVsYXRvci4KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9T
X0ZBTUlMWV9TSU1VTEFUT1IpCisjaWYgSEFWRShERVZJQ0VfSURFTlRJVFkpCiAgICAgLy8gQXBw
bGUgQXR0ZXN0YXRpb24KICAgICBBU1NFUlQoaGFzaC5zaXplKCkgPD0gMzIpOwogCkBAIC0xMTQs
NyArMTA3LDcgQEAgdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldEF0dGVzdGF0aW9uKGNvbnN0IFN0
cmluZyYgcnBJZCwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwKIAogICAgIC8vIEZJWE1FKDE4MzY1
Mik6IFJlZHVjZSBwcm9tcHQgZm9yIGJpb21ldHJpY3MKICAgICBEZXZpY2VJZGVudGl0eUlzc3Vl
Q2xpZW50Q2VydGlmaWNhdGVXaXRoQ29tcGxldGlvbihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBvcHRpb25zLCBtYWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpLmdldCgp
KTsKLSNlbmRpZgorI2VuZGlmIC8vIEhBVkUoREVWSUNFX0lERU5USVRZKQogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbQppbmRleCBmNDA2OTZj
ZDExMmIwNzc0OWE3NWQ3N2NkYzI3MTc5N2QwMGZhYTg4Li4zMjQ5YjBlMDE3NjcyNTZmZjhlMzQ0
N2Q2ZjQ0ZjVhODBhYzE3ZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tCkBAIC00
MSwxMiArNDEsMTAgQEAgTG9jYWxTZXJ2aWNlOjpMb2NhbFNlcnZpY2UoT2JzZXJ2ZXImIG9ic2Vy
dmVyKQogewogfQogCisvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS81MTA0ODU0MikKIGJvb2wgTG9j
YWxTZXJ2aWNlOjppc0F2YWlsYWJsZSgpCiB7Ci0vLyBGSVhNRSgxODI3NzIpCi0jaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vsc2UKKyAgICAvLyBGSVhNRSgx
OTgxNzYpCiAgICAgaWYgKCFXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLndlYkF1dGhlbnRpY2F0aW9uTG9jYWxBdXRoZW50aWNhdG9yRW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTU3LDcgKzU1LDYgQEAgYm9vbCBMb2NhbFNlcnZp
Y2U6OmlzQXZhaWxhYmxlKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1
cm4gdHJ1ZTsKLSNlbmRpZgogfQogCiB2b2lkIExvY2FsU2VydmljZTo6c3RhcnREaXNjb3ZlcnlJ
bnRlcm5hbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KaW5kZXgg
Y2E3NjVlNTgyYTZiYjg2NDZmM2UwMTdkYjc2NDY2NjkyZWI2MTdhNy4uODZlMDc5MGQxNjgwMTIx
ZWU3ZTFmZjdiYTY5NzY2NTE0YWRmNWI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2Fs
Q29ubmVjdGlvbi5tbQpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIE1vY2tMb2NhbENvbm5lY3Rpb246
OmdldEF0dGVzdGF0aW9uKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgU3RyaW5nJiB1c2Vybgog
ICAgICAgICBBU1NFUlQoIWVycm9yUmVmKTsKIAogICAgICAgICAvLyBNb2NrIHdoYXQgRGV2aWNl
SWRlbnRpdHkgd291bGQgZG8uCi0gICAgICAgIFN0cmluZyBsYWJlbCA9IG1ha2VTdHJpbmcodXNl
cm5hbWUsICJAIiwgcnBJZCwgIi1yayIpOworICAgICAgICBTdHJpbmcgbGFiZWwgPSBtYWtlU3Ry
aW5nKHVzZXJuYW1lLCAiQCIsIHJwSWQsICItcmstdWNydCIpOwogICAgICAgICBOU0RpY3Rpb25h
cnkqIGFkZFF1ZXJ5ID0gQHsKICAgICAgICAgICAgIChpZClrU2VjVmFsdWVSZWY6IChpZClrZXku
Z2V0KCksCiAgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDlhNTA5ZDQy
NGQxOGI1Mzc4MmIxYWViMDUzOWNiZjBhNTI0ZjhmZDYuLjlkMmNkYzAzNDgwZGE3MGQ3NTI2M2Ez
MTc1MjAyZmEwMWVjMWM2ZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0wNS0yMyAgSmlld2VuIFRhbiAgPGpp
ZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gRW5hYmxlIExvY2FsQXV0
aGVudGljYXRvciBmb3IgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4Mjc3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNDc5MjA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICBBZGQgYW4gZW50
aXRsZW1lbnQgZmlsZSB0byBXZWJLaXRUZXN0UnVubmVyIHN1Y2ggdGhhdCBpdCBjYW4gYWNjZXNz
CisgICAgICAgIHRoZSBtb2Rlcm4gbWFjT1Mga2V5Y2hhaW4uCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL1dlYktpdFRlc3RSdW5uZXIuZW50aXRsZW1lbnRzOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL1dlYktpdFRl
c3RSdW5uZXIueGNjb25maWc6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0
UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6YWRkVGVzdEtleVRvS2V5Y2hhaW4pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6Y2xlYW5VcEtleWNoYWluKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Omtl
eUV4aXN0c0luS2V5Y2hhaW4pOgorCiAyMDE5LTA4LTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSBGb3JtRGF0YSB6aXAgZmlsZSBn
ZW5lcmF0aW9uIHRvIE5ldHdvcmtQcm9jZXNzIGFuZCBlbmFibGUgaXQgZm9yIGFsbCBXZWJLaXQg
Y2xpZW50cyBmb3IgdXBsb2FkaW5nIGRpcmVjdG9yaWVzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL1dlYktpdFRlc3RSdW5uZXIuZW50aXRsZW1lbnRz
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVubmVy
LmVudGl0bGVtZW50cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmI0ODI3Nzk1NjU5Nzk0ZTg2MGJmZWMxYjI2NDA3
NGExMWMyNDkyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25m
aWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVubmVyLmVudGl0bGVtZW50cwpAQCAtMCwwICsxLDEwIEBA
Cis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHBsaXN0
IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5j
b20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+Cis8cGxpc3QgdmVyc2lvbj0iMS4wIj4KKyAg
ICA8ZGljdD4KKyAgICAgICAgPGtleT5rZXljaGFpbi1hY2Nlc3MtZ3JvdXBzPC9rZXk+CisgICAg
ICAgIDxhcnJheT4KKyAgICAgICAgICAgIDxzdHJpbmc+Y29tLmFwcGxlLldlYktpdFRlc3RSdW5u
ZXI8L3N0cmluZz4KKyAgICAgICAgPC9hcnJheT4KKyAgICA8L2RpY3Q+Cis8L3BsaXN0PgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9XZWJLaXRUZXN0
UnVubmVyLnhjY29uZmlnIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9X
ZWJLaXRUZXN0UnVubmVyLnhjY29uZmlnCmluZGV4IDRlNTE5MjM3YmZiMWFkOTI2ODY2ZTI1OTZm
NTQ1M2QxNzQ2Y2M3ODEuLmZhNjJlYjQzODUxYTliNTM3NmFmYmY0YjFmOGY1N2U3M2UyYmUzMTUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvV2ViS2l0
VGVzdFJ1bm5lci54Y2NvbmZpZworKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3Vy
YXRpb25zL1dlYktpdFRlc3RSdW5uZXIueGNjb25maWcKQEAgLTM0LDMgKzM0LDggQEAgU1RSSVBf
U1RZTEUgPSBkZWJ1Z2dpbmc7CiBTS0lQX0lOU1RBTExbc2RrPWlwaG9uZSpdID0gWUVTOwogRVhD
TFVERURfU09VUkNFX0ZJTEVfTkFNRVNbc2RrPWlwaG9uZSpdID0gbWFjLyo7CiBJTkNMVURFRF9T
T1VSQ0VfRklMRV9OQU1FU1tzZGs9aXBob25lKl0gPSBtYWMvbWFpbi5tbTsKKworQ09ERV9TSUdO
X0VOVElUTEVNRU5UU1tzZGs9bWFjb3N4Kl0gPSBDb25maWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVu
bmVyLmVudGl0bGVtZW50czsKKworQ09ERV9TSUdOX0lERU5USVRZW3Nkaz1tYWNvc3gqXSA9ICQo
Q09ERV9TSUdOX0lERU5USVRZXyQoVVNFX0lOVEVSTkFMX1NESykpOworQ09ERV9TSUdOX0lERU5U
SVRZX1lFUyA9ICQoV0tfRU5HSU5FRVJJTkdfQ09ERV9TSUdOX0lERU5USVRZKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTQzZGRiMjVlNGMyMjkzMzBjM2M3NjBiYzVk
NTA1ZDhiOGM5MjlmMS4uMTY0M2Q0MDBkMDMwZjgyZjk3NTlmODI5ZjAzZjk4YzFjOTU2NjQ2ZSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRU
ZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNSw3ICsxMDUsOCBAQAog
CQk1NjQxRTJEMDE0MzM1RTk1MDA4MzA3RTUgLyogSlNUZXh0SW5wdXRDb250cm9sbGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU2NDFFMkNFMTQz
MzVFOTUwMDgzMDdFNSAvKiBKU1RleHRJbnB1dENvbnRyb2xsZXIuY3BwICovOyB9OwogCQk1NjY0
QTQ5QTE0MzI2Mzg0MDA4ODgxQkUgLyogVGV4dElucHV0Q29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NjY0QTQ5ODE0MzI2Mzg0MDA4
ODgxQkUgLyogVGV4dElucHV0Q29udHJvbGxlci5jcHAgKi87IH07CiAJCTU2NzBCODI4MTM4NkZD
QTUwMDJFQjM1NSAvKiBFdmVudFNlbmRlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTY3MEI4MjcxMzg2RkNBNTAwMkVCMzU1IC8qIEV2ZW50
U2VuZGVyUHJveHkubW0gKi87IH07Ci0JCTU3MEU3NUE4MjE1MkRCNEYwMDMyNEI2RSAvKiBTZWN1
cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzBFNzVBNDIxNTJEQTJDMDAzMjRCNkUgLyogU2VjdXJpdHkuZnJhbWV3b3JrICov
OyB9OworCQk1N0EwMDYyRTIyOTc2RUVCMDBBRDA4QkQgLyogU2VjdXJpdHkuZnJhbWV3b3JrIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwRTc1QTQy
MTUyREEyQzAwMzI0QjZFIC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLzsgfTsKKwkJNTdBMDA2MkYy
Mjk3NkVGODAwQUQwOEJEIC8qIFNlY3VyaXR5LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MEU3NUE0MjE1MkRBMkMwMDMyNEI2RSAv
KiBTZWN1cml0eS5mcmFtZXdvcmsgKi87IH07CiAJCTY1MTBBNzgyMTFFQzY0MzgwMDQxMDg2NyAv
KiBBSEVNX19fXy5UVEYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1MTBBNzc3MTFFQzY0MzgwMDQxMDg2NyAvKiBBSEVNX19fXy5UVEYgKi87IH07CiAJ
CTY1MTBBNzg0MTFFQzY0MzgwMDQxMDg2NyAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZiBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxMEE3Nzkx
MUVDNjQzODAwNDEwODY3IC8qIFdlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmICovOyB9OwogCQk2
NTEwQTc4NTExRUM2NDM4MDA0MTA4NjcgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGYgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MTBBNzdBMTFF
QzY0MzgwMDQxMDg2NyAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyMjAwLnR0ZiAqLzsgfTsKQEAgLTMy
Myw2ICszMjQsNyBAQAogCQk1NjcwQjgyNjEzODZGQzEzMDAyRUIzNTUgLyogRXZlbnRTZW5kZXJQ
cm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFNlbmRlclByb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU2NzBCODI3MTM4NkZDQTUwMDJFQjM1
NSAvKiBFdmVudFNlbmRlclByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRXZlbnRTZW5kZXJQcm94eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTcwRTc1QTQyMTUyREEyQzAwMzI0QjZFIC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3
b3JrOyBuYW1lID0gU2VjdXJpdHkuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworCQk1
N0EwMDYyQzIyOTc2RTREMDBBRDA4QkQgLyogV2ViS2l0VGVzdFJ1bm5lci5lbnRpdGxlbWVudHMg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnBsaXN0LmVudGl0bGVtZW50czsgcGF0aCA9IFdlYktpdFRlc3RSdW5u
ZXIuZW50aXRsZW1lbnRzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1ODM5MTNEMDE0
MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTgzOTEzRDExNDMzNUU5NTAwODMwN0U1
IC8qIEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTEwQTc3NzExRUM2NDM4MDA0MTA4NjcgLyogQUhFTV9fX18uVFRGICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9
ICJBSEVNX19fXy5UVEYiOyBwYXRoID0gImZvbnRzL0FIRU1fX19fLlRURiI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00MTcsNyArNDE5LDcgQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29y
a3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVz
ID0gKAotCQkJCTU3MEU3NUE4MjE1MkRCNEYwMDMyNEI2RSAvKiBTZWN1cml0eS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLywKKwkJCQk1N0EwMDYyRjIyOTc2RUY4MDBBRDA4QkQgLyogU2VjdXJp
dHkuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC00MjYsNiArNDI4LDcgQEAKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQk1MTA1OEFENTFE
Njc4ODIwMDA5QTUzOEMgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliIGluIEZyYW1ld29y
a3MgKi8sCisJCQkJNTdBMDA2MkUyMjk3NkVFQjAwQUQwOEJEIC8qIFNlY3VyaXR5LmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTUxMDU4QUQ2MUQ2Nzg4MjUwMDlBNTM4QyAvKiBXZWJL
aXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC04MDYsNiArODA5LDcgQEAKIAkJCQlCQzc5MzQy
NzExOEY3REFGMDA1RUE4RTIgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovLAogCQkJCUJDMjUx
OTcxMTFEMTVFNjEwMDJFQkMwMSAvKiBJbmplY3RlZEJ1bmRsZS54Y2NvbmZpZyAqLywKIAkJCQlB
MUI4OUI5NDIyMUUwMjZCMDBFQjRDRUEgLyogU0RLVmFyaWFudC54Y2NvbmZpZyAqLywKKwkJCQk1
N0EwMDYyQzIyOTc2RTREMDBBRDA4QkQgLyogV2ViS2l0VGVzdFJ1bm5lci5lbnRpdGxlbWVudHMg
Ki8sCiAJCQkJQTE4NTEwMzgxQjlBREYyMjAwNzQ0QUVCIC8qIFdlYktpdFRlc3RSdW5uZXIueGNj
b25maWcgKi8sCiAJCQkJOUIwRDEzMkUyMDM2RDM0NjAwOEZDOEZCIC8qIFdlYktpdFRlc3RSdW5u
ZXJBcHAtaU9TLmVudGl0bGVtZW50cyAqLywKIAkJCQkzMTExODNBQTIxMkIxQUM3MDA3N0JDRTAg
LyogV2ViS2l0VGVzdFJ1bm5lckFwcC13YXRjaE9TLmVudGl0bGVtZW50cyAqLywKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRl
eCBmZDI4NzU4ZGUzZGY2NDYzNGFjZGNlZDc5Y2U1ZTE0ZmU1YTY0NGIzLi5hYWEzOGIxNjliMjJl
OTYyNjY2ZGYwYTZjMTZhOTFlNjc5NGE3NGUwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC01MSw2ICs1MSw3IEBACiAj
aW1wb3J0IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oPgogI2ltcG9ydCA8
V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgog
CiBuYW1lc3BhY2UgV1RSIHsKIApAQCAtMzI5LDggKzMzMCw2IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OmluamVjdFVzZXJTY3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0KQogCiB2b2lkIFRlc3RDb250
cm9sbGVyOjphZGRUZXN0S2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlCYXNl
NjQsIGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFn
QmFzZTY0KQogewotICAgIC8vIEZJWE1FKDE4Mjc3MikKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIE5TRGljdGlvbmFyeSogb3B0aW9ucyA9IEB7CiAgICAgICAgIChpZClrU2VjQXR0cktl
eVR5cGU6IChpZClrU2VjQXR0cktleVR5cGVFQ1NFQ1ByaW1lUmFuZG9tLAogICAgICAgICAoaWQp
a1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLApAQCAtMzQ4LDQw
ICszNDcsMzYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6YWRkVGVzdEtleVRvS2V5Y2hhaW4oY29u
c3QgU3RyaW5nJiBwcml2YXRlS2V5QmFzZTY0LCBjb25zdAogICAgICAgICAoaWQpa1NlY1ZhbHVl
UmVmOiAoaWQpa2V5LmdldCgpLAogICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNz
S2V5LAogICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogYXR0ckxhYmVsLAotICAgICAgICAoaWQp
a1NlY0F0dHJBcHBsaWNhdGlvblRhZzogYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhC
YXNlNjRFbmNvZGVkU3RyaW5nOmFwcGxpY2F0aW9uVGFnQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFz
ZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpCisgICAgICAgIChpZClr
U2VjQXR0ckFwcGxpY2F0aW9uVGFnOiBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJh
c2U2NEVuY29kZWRTdHJpbmc6YXBwbGljYXRpb25UYWdCYXNlNjQgb3B0aW9uczpOU0RhdGFCYXNl
NjREZWNvZGluZ0lnbm9yZVVua25vd25DaGFyYWN0ZXJzXSkuZ2V0KCksCisgICAgICAgIChpZClr
U2VjQXR0ck5vTGVnYWN5OiBAWUVTCiAgICAgfTsKICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJ
dGVtQWRkKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYWRkUXVlcnksIE5VTEwpOwogICAgIEFT
U0VSVF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsKLSNlbmRpZgogfQogCiB2b2lkIFRlc3RDb250
cm9sbGVyOjpjbGVhblVwS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwpCiB7Ci0gICAg
Ly8gRklYTUUoMTgyNzcyKQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNEaWN0aW9u
YXJ5KiBkZWxldGVRdWVyeSA9IEB7CiAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xh
c3NLZXksCi0gICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiBhdHRyTGFiZWwKKyAgICAgICAgKGlk
KWtTZWNBdHRyTGFiZWw6IGF0dHJMYWJlbCwKKyAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6
IEBZRVMKICAgICB9OwogICAgIFNlY0l0ZW1EZWxldGUoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJl
ZilkZWxldGVRdWVyeSk7Ci0jZW5kaWYKIH0KIAogYm9vbCBUZXN0Q29udHJvbGxlcjo6a2V5RXhp
c3RzSW5LZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJiBhcHBs
aWNhdGlvblRhZ0Jhc2U2NCkKIHsKLSAgICAvLyBGSVhNRSgxODI3NzIpCi0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBOU0RpY3Rpb25hcnkgKnF1ZXJ5ID0gQHsKICAgICAgICAgKGlkKWtT
ZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6
IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKICAgICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6
IGF0dHJMYWJlbCwKICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6IGFkb3B0TlMo
W1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzphcHBsaWNhdGlvblRh
Z0Jhc2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3Rl
cnNdKS5nZXQoKSwKKyAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKICAgICB9Owog
ICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGlj
dGlvbmFyeVJlZilxdWVyeSwgTlVMTCk7CiAgICAgaWYgKCFzdGF0dXMpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIEFTU0VSVChzdGF0dXMgPT0gZXJyU2VjSXRlbU5vdEZvdW5kKTsKLSNlbmRp
ZgogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJkOTRiZjQxMDQ1MjUzODEyZWM2YWRl
NzY5MjZjNTY1YzA5NDZjMDkuLjVhZjEyMzNiNjI0OWZhMjlkNGJkYWVlNjMxZDNjMzU3NDk5YmEw
MjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wNS0yMyAgSmlld2VuIFRhbiAgPGppZXdl
bl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gRW5hYmxlIExvY2FsQXV0aGVu
dGljYXRvciBmb3IgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4Mjc3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNDc5MjA+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICBFbmFibGUgZXhpc3Rp
bmcgbG9jYWwgYXV0aGVudGljYXRvciB0ZXN0cyBmb3IgbWFjT1MuIFNpbmNlIE9wZW5Tb3VyY2Ug
Ym90cworICAgICAgICBkb24ndCBoYXZlIHRoZSBpbnRlcm5hbCBzZXR0aW5nIHRvIGluY2x1ZGUg
cmVzdHJpY3RlZCBlbnRpdGxlbWVudHMsIHRlc3RzCisgICAgICAgIHdpbGwgZmFpbCBvbiBPcGVu
U291cmNlIGJvdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnM6CisKIDIwMTktMDgtMDEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgW1RleHQgYXV0b3NpemluZ10gW2lQYWRPU10gQWRkIHRhcmdldGVkIGhhY2tz
IHRvIGFkZHJlc3Mgc29tZSByZW1haW5pbmcgdGV4dCBhdXRvc2l6aW5nIGlzc3VlcwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDMwN2VjYmVm
YWRiN2FmOGI3NmY5MWE1ZTAwM2NmNWQ5ZDk4YTcxZmQuLjI5YzY3MmNhMDE2OWY0YTY4YzljZjRh
ZTg4NTI5ZTNiZGY5NjIzYWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTkwNSwxNCArOTA1LDE0IEBAIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0L3VzZXItYWNjZXB0cy1wYXltZW50LXJlcXVlc3Qt
YWxnCiAKIHdlYmtpdC5vcmcvYi8xODk1OTggY29tcG9zaXRpbmcvYmFja2luZy9iYWNraW5nLXN0
b3JlLWF0dGFjaG1lbnQtZmlsbC1mb3J3YXJkcy1hbmltYXRpb24uaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiAKLSMgU2tpcCBsb2NhbCBhdXRoZW50aWNhdG9yIHRlc3RzIGZvciBtYWMgbm93LgotaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2Fs
Lmh0dHBzLmh0bWwgWyBTa2lwIF0KLWh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sIFsgU2tpcCBdCi1odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRt
bCBbIFNraXAgXQotaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1z
dWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwgWyBTa2lwIF0KLSMgVGhlIGZvbGxvd2luZyB0ZXN0cyBy
ZXF1aXJlIFB1YmxpY0tleUNyZWRlbnRpYWwgb2JqZWN0cy4gV2UgY2FuIG9ubHkgcHJvZHVjZSB0
aGVtIHZpYSBsb2NhbCBhdXRoZW50aWNhdG9ycyBub3cuCi1odHRwL3dwdC9jcmVkZW50aWFsLW1h
bmFnZW1lbnQvY3JlZGVudGlhbHNjb250YWluZXItc3RvcmUtYmFzaWNzLmh0dHBzLmh0bWwgWyBT
a2lwIF0KLWh0dHAvd3B0L3dlYmF1dGhuL2lkbC5odHRwcy5odG1sIFsgU2tpcCBdCisjIExvY2Fs
IGF1dGhlbnRpY2F0b3IgdGVzdHMgcmVxdWlyZSByZXN0cmljdGVkIGtleWNoYWluIGVudGl0bGVt
ZW50LCB3aGljaCBjYW5ub3QgYmUgc2lnbmVkIHdpdGggYWQgaG9jIHNpZ25pbmcuCisjIFRoZXJl
Zm9yZSwgdGVzdHMgZmFpbCBvbiBPcGVuU291cmNlIGJvdHMuIFRoZXkgd2lsbCBiZSBjb3ZlcmVk
IGJ5IEludGVybmFsIGJvdHMuCitodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbCBbIEZhaWx1cmUgXQoraHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBz
Lmh0bWwgWyBGYWlsdXJlIF0KK2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sIFsgRmFpbHVyZSBdCitodHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbCBb
IEZhaWx1cmUgXQoraHR0cC93cHQvY3JlZGVudGlhbC1tYW5hZ2VtZW50L2NyZWRlbnRpYWxzY29u
dGFpbmVyLXN0b3JlLWJhc2ljcy5odHRwcy5odG1sIFsgRmFpbHVyZSBdCitodHRwL3dwdC93ZWJh
dXRobi9pZGwuaHR0cHMuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTgzODc4IG1l
ZGlhL21vZGVybi1tZWRpYS1jb250cm9scy90cmFja3MtcGFuZWwvdHJhY2tzLXBhbmVsLXVwLWNs
aWNrLW92ZXItbWVkaWEtZG9lcy1ub3QtZGltaXNzLW1lZGlhLWNvbnRyb2xzLXdoZW4tbWVkaWEt
aXMtcGxheWluZy5odG1sIFsgUGFzcyBUaW1lb3V0IF0gCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>