<?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>215027</bug_id>
          
          <creation_ts>2020-07-31 11:49:23 -0700</creation_ts>
          <short_desc>Clean up App-Bound Domains code to only compile for IOS with its own macro</short_desc>
          <delta_ts>2020-09-10 10:51:01 -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>WebKit 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>216373</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1676900</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-31 11:49:23 -0700</bug_when>
    <thetext>This should replace the IOS, COCOA, or IOS_FAMILY macros to be more consistent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676902</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-31 11:49:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/63688232&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676934</commentid>
    <comment_count>2</comment_count>
      <attachid>405727</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-31 13:02:51 -0700</bug_when>
    <thetext>Created attachment 405727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676986</commentid>
    <comment_count>3</comment_count>
      <attachid>405745</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-31 15:07:35 -0700</bug_when>
    <thetext>Created attachment 405745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677023</commentid>
    <comment_count>4</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-31 15:54:27 -0700</bug_when>
    <thetext>This was inspired by a comment from Darin on Bug 212426</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677033</commentid>
    <comment_count>5</comment_count>
      <attachid>405756</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-31 16:27:13 -0700</bug_when>
    <thetext>Created attachment 405756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687154</commentid>
    <comment_count>6</comment_count>
      <attachid>408372</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-09-09 15:19:53 -0700</bug_when>
    <thetext>Created attachment 408372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687155</commentid>
    <comment_count>7</comment_count>
      <attachid>408373</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-09-09 15:23:54 -0700</bug_when>
    <thetext>Created attachment 408373
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687257</commentid>
    <comment_count>8</comment_count>
      <attachid>408373</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-09 20:24:30 -0700</bug_when>
    <thetext>Comment on attachment 408373
Patch

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

Looks fine like this. Some opportunity to slightly improve, maybe could do separately as a follow-up?

&gt; Source/WTF/wtf/PlatformEnable.h:198
&gt; +#if !defined(ENABLE_APP_BOUND_DOMAINS)
&gt; +#define ENABLE_APP_BOUND_DOMAINS 0
&gt; +#endif

This should not be needed. All enable flags are off by default and we should not add zero defaults here (even though there are some existing ones).

&gt; Source/WebCore/platform/network/NetworkStorageSession.h:218
&gt; +#if ENABLE(APP_BOUND_DOMAINS)
&gt;      WEBCORE_EXPORT void setAppBoundDomains(HashSet&lt;RegistrableDomain&gt;&amp;&amp;);
&gt;      WEBCORE_EXPORT void resetAppBoundDomains();
&gt;  #endif

I don’t think this should be nested inside the #if PLATFORM(COCOA) || USE(CFURLCONNECTION) section. Nested #if is hard to read and doesn’t provide additional value here.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2525
&gt; +#if ENABLE(APP_BOUND_DOMAINS)
&gt;          }, [this, sessionID](auto&amp;&amp; completionHandler) {
&gt;              parentProcessConnection()-&gt;sendWithAsyncReply(Messages::NetworkProcessProxy::GetAppBoundDomains { sessionID }, WTFMove(completionHandler), 0);
&gt; +#else
&gt; +        }, [] (auto&amp;&amp; completionHandler) {
&gt; +            completionHandler({ });
&gt; +#endif
&gt;          });

Seems like we could do this more elegantly with a local variable to avoid the #if bracketing a strange subexpression.

&gt; LayoutTests/platform/mac-wk2/TestExpectations:1293
&gt; +# App Bound Domains is for iOS only
&gt; +http/tests/resourceLoadStatistics/exemptDomains/ [ Skip ]

Normally we’d want to skip this in the main LayoutTests/TestExpectations and then unskip in an iOS family TestExpectations. But maybe this is a more expedient way to do this for now, or even more elegant. Seems particularly strange to skip only in WK2, but I’m guessing maybe it’s un-skipped in a WK2-specific file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687395</commentid>
    <comment_count>9</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-09-10 08:58:44 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #8)
&gt; Comment on attachment 408373 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=408373&amp;action=review
&gt; 
&gt; Looks fine like this. Some opportunity to slightly improve, maybe could do
&gt; separately as a follow-up?
&gt; 

Thanks for the review! Good call, tracking the followup here: rdar://68645704.

&gt; &gt; Source/WTF/wtf/PlatformEnable.h:198
&gt; &gt; +#if !defined(ENABLE_APP_BOUND_DOMAINS)
&gt; &gt; +#define ENABLE_APP_BOUND_DOMAINS 0
&gt; &gt; +#endif
&gt; 
&gt; This should not be needed. All enable flags are off by default and we should
&gt; not add zero defaults here (even though there are some existing ones).
&gt; 

Will fix in the followup.

&gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.h:218
&gt; &gt; +#if ENABLE(APP_BOUND_DOMAINS)
&gt; &gt;      WEBCORE_EXPORT void setAppBoundDomains(HashSet&lt;RegistrableDomain&gt;&amp;&amp;);
&gt; &gt;      WEBCORE_EXPORT void resetAppBoundDomains();
&gt; &gt;  #endif
&gt; 
&gt; I don’t think this should be nested inside the #if PLATFORM(COCOA) ||
&gt; USE(CFURLCONNECTION) section. Nested #if is hard to read and doesn’t provide
&gt; additional value here.
&gt; 

Ditto.

&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2525
&gt; &gt; +#if ENABLE(APP_BOUND_DOMAINS)
&gt; &gt;          }, [this, sessionID](auto&amp;&amp; completionHandler) {
&gt; &gt;              parentProcessConnection()-&gt;sendWithAsyncReply(Messages::NetworkProcessProxy::GetAppBoundDomains { sessionID }, WTFMove(completionHandler), 0);
&gt; &gt; +#else
&gt; &gt; +        }, [] (auto&amp;&amp; completionHandler) {
&gt; &gt; +            completionHandler({ });
&gt; &gt; +#endif
&gt; &gt;          });
&gt; 
&gt; Seems like we could do this more elegantly with a local variable to avoid
&gt; the #if bracketing a strange subexpression.
&gt; 

Ditto.

&gt; &gt; LayoutTests/platform/mac-wk2/TestExpectations:1293
&gt; &gt; +# App Bound Domains is for iOS only
&gt; &gt; +http/tests/resourceLoadStatistics/exemptDomains/ [ Skip ]
&gt; 
&gt; Normally we’d want to skip this in the main LayoutTests/TestExpectations and
&gt; then unskip in an iOS family TestExpectations. But maybe this is a more
&gt; expedient way to do this for now, or even more elegant. Seems particularly
&gt; strange to skip only in WK2, but I’m guessing maybe it’s un-skipped in a
&gt; WK2-specific file?

Yes, all resourceLoadStatistics tests are set to &apos;pass&apos; in the main TestExpectations, so I skipped the app-bound domains tests specifically here. In the followup I&apos;ll change the exemptDomains directory to be skipped in the main TestExpectations and un-skipped in the iOS-family expectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687405</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-10 09:26:48 -0700</bug_when>
    <thetext>Committed r266829: &lt;https://trac.webkit.org/changeset/266829&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408373.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405727</attachid>
            <date>2020-07-31 13:02:51 -0700</date>
            <delta_ts>2020-07-31 15:07:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215027-20200731130250.patch</filename>
            <type>text/plain</type>
            <size>22727</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDViNTRkNmQxMTM0ZmU4YTkxMzU0Nzk0
MDU2Y2FhMzc4OTAyZmNkY2IuLjNiMjYyMjZkZTUxODE2Y2U0NzhmNzNlMDM3NjFhZjg1MzFiZTQ4
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDctMzEgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGFuIEFQUF9CT1VORF9ET01B
SU5TIGVuYWJsZSBtYWNybworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE1MDI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzY4ODIzMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWZpbmUgYSBuZXcg
QVBQX0JPVU5EX1NFU1NJT05TIHByZXByb2Nlc3NvciBtYWNybyB0byBtb3JlIGFwdGx5IGdhdGUK
KyAgICAgICAgQXBwIEJvdW5kIERvbWFpbnMgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3dGYvUGxh
dGZvcm1FbmFibGUuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oOgorCiAy
MDIwLTA3LTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEhhdmUgVGltaW5nU2NvcGUgdHJhY2sgdGhlIG1heCBldmVudCBkdXJhdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA2NWNhM2Y2ODk4NzRlZTExN2MxZGExYTkwOGZlNWUyNzExMTFlNWJkLi45NTkzMWYzNmU0
YmNiYWU1MzAxM2U0NGM1MmYwMjI4OWU0ZTQ0NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBA
CisyMDIwLTA3LTMxICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgor
CisgICAgICAgIENyZWF0ZSBhbiBBUFBfQk9VTkRfRE9NQUlOUyBlbmFibGUgbWFjcm8KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTAyNworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjM2ODgyMzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBleGlzdGluZyBJT1NfRkFNSUxZIHBsYXRmb3Jt
IGNoZWNrcyB3aXRoIGEgbmV3CisgICAgICAgIEFQUF9CT1VORF9ET01BSU5TIG1hY3JvLiBBZGRp
dGlvbmFsbHksIG1hbnkgYXBwLWJvdW5kIGRvbWFpbnMgY29kZQorICAgICAgICBjaGVja2VkIGZv
ciBjb2NvYSBwbGF0Zm9ybXMsIGJ1dCB0aGlzIGNhbiBiZSBtb3JlIHNwZWNpZmljYWxseQorICAg
ICAgICBjb21waWxlZCB1c2luZyB0aGUgQVBQX0JPVU5EX0RPTUFJTlMgbWFjcm8uCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2spOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcDoKKyAgICAgICAg
KEFQSTo6SFRUUENvb2tpZVN0b3JlOjpmaWx0ZXJBcHBCb3VuZENvb2tpZXMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcpOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBcHBCb3VuZFNlc3Npb24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0
b3JlUmVpbml0aWFsaXplQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIF9hcHBCb3VuZERvbWFpbnM6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBf
YXBwQm91bmRTY2hlbWVzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpn
ZXRBcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hl
Y2tJZlBlcm1pdHRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzYWJsZVNl
cnZpY2VXb3JrZXJFbnRpdGxlbWVudEluTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBsYXRm
b3JtSW5pdGlhbGl6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0
ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVuYW1lT3JpZ2luSW5X
ZWJzaXRlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaDoKKwogMjAyMC0wNy0zMSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkIENhdGFseXN0IGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUVuYWJsZS5oCmluZGV4IDUxNGUyMjRkODI1N2NhODI0NmVmMTM5OWJhZTI2MDliMWIxMWFmZjUu
LjlhODJkMzIyMGUzNjc2MTcwNTUzYTU1ZTE2YjE3YjkxNzVhZTNmYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZv
cm1FbmFibGUuaApAQCAtMTkzLDYgKzE5MywxMCBAQAogI2RlZmluZSBFTkFCTEVfQVBORyAxCiAj
ZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9BUFBfQk9VTkRfRE9NQUlOUykKKyNkZWZpbmUg
RU5BQkxFX0FQUF9CT1VORF9ET01BSU5TIDAKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKQogI2RlZmluZSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgMQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgKaW5kZXggYjcxZDQ0MzIwNzMz
OTlhYjRhMTJlMGUxMDg1NTkzMmZmYTI5MDhiYy4uZTY0ZDY1ZjVlMDIyOGFiYTkzNTJhZjYyYThi
YzgzNTMzYWFhYWMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVD
b2NvYS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaApAQCAtNzUs
NiArNzUsMTAgQEAKICNkZWZpbmUgRU5BQkxFX0FQUExJQ0FUSU9OX01BTklGRVNUIDEKICNlbmRp
ZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0FQUF9CT1VORF9ET01BSU5TKSAmJiBQTEFURk9STShJ
T1NfRkFNSUxZKQorI2RlZmluZSBFTkFCTEVfQVBQX0JPVU5EX0RPTUFJTlMgMQorI2VuZGlmCisK
ICNpZiAhZGVmaW5lZChFTkFCTEVfQVNZTkNfU0NST0xMSU5HKQogI2RlZmluZSBFTkFCTEVfQVNZ
TkNfU0NST0xMSU5HIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDkzMWI5NTYzYmY1
YzcyNTI5MTRkZjBkMTUyNWYwZjY4OWZjZDQ0M2IuLmExN2M4YTcyYzI1MjZlNGU4NGM3MzAwYmU2
MGVmNzFlMWRhODg5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTEzMjYsNyArMTMyNiw3IEBA
IFNlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRh
c2soY29uc3QgV2ViQ29yZTo6UmVzb3VyCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKICAgICBpZiAoc2hvdWxkQmVDb25zaWRlcmVkQXBwQm91bmQgPT0gTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW46OlllcykKICAgICAgICAgcmV0dXJuIGFwcEJvdW5kU2Vzc2lvbihz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKaW5kZXggYTZlMTU5MWU1NTA0OWQy
OWU3NzYxNDE5YWEzMThkZjAwYTQ3Nzk4Yy4uMDRkNDY3OGMxNWNkYzdkYzVlMmM1YmE0M2JmOGVm
YWZhMzRkY2VlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgSFRUUENvb2tpZVN0b3JlOjp+SFRU
UENvb2tpZVN0b3JlKCkKIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpmaWx0ZXJBcHBCb3VuZENvb2tp
ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gYXBwQm91bmRDb29raWVzOwotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIG1f
b3duaW5nRGF0YVN0b3JlLT5nZXRBcHBCb3VuZERvbWFpbnMoW2Nvb2tpZXMsIGFwcEJvdW5kQ29v
a2llcyA9IFdURk1vdmUoYXBwQm91bmRDb29raWVzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mIGRvbWFpbnMpIG11dGFibGUgewogICAgICAg
ICBpZiAoIWRvbWFpbnMuaXNFbXB0eSgpICYmICFpc0Z1bGxXZWJCcm93c2VyKCkpIHsKICAgICAg
ICAgICAgIGZvciAoYXV0byYgY29va2llIDogY29va2llcykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXgg
ODAwZTc1NDllYTE3OTZmM2U3ZGIxMzVkNmIxNzA0ZDBkOGZiOTYzZC4uNTU1YTEwYzhlNGJjYzk4
MzNiMzhjYTIzNzIxNTUyYWYyZjFmODk5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC01NzksOSArNTc5
LDExIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lv
bihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
SGFzQXBwQm91bmRTZXNzaW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vzc2lvbkZ1bmN0aW9u
IGNhbGxiYWNrKQogeworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5oYXNBcHBCb3VuZFNlc3Npb24oW2NvbnRleHQsIGNhbGxi
YWNrXShib29sIGhhc0FwcEJvdW5kU2Vzc2lvbikgewogICAgICAgICBjYWxsYmFjayhoYXNBcHBC
b3VuZFNlc3Npb24sIGNvbnRleHQpOwogICAgIH0pOworI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVy
cmVyRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVu
YWJsZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0
aW9uSGFuZGxlcikKQEAgLTYzMCw3ICs2MzIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rpbgog
CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoV0tB
cnJheVJlZiBvcmlnaW5VUkxzUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAg
IFJlZlB0cjxBUEk6OkFycmF5PiBvcmlnaW5VUkxzQXJyYXkgPSB0b0ltcGwob3JpZ2luVVJMc1Jl
Zik7CiAgICAgc2l6ZV90IG5ld1NpemUgPSBvcmlnaW5VUkxzQXJyYXkgPyBvcmlnaW5VUkxzQXJy
YXktPnNpemUoKSA6IDA7CiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
ZG9tYWluczsKQEAgLTc5MywxNCArNzk1LDE2IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVz
ZXRRdW90YShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250CiAK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBcHBCb3VuZFNlc3Npb24oV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
Q2xlYXJBcHBCb3VuZFNlc3Npb25GdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyNpZiBF
TkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+Y2xlYXJBcHBCb3VuZFNlc3Npb24oW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOworI2VuZGlmCiB9CiAK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVpbml0aWFsaXplQXBwQm91bmREb21haW5zKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisj
aWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPnJlaW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucygpOwogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbQppbmRleCAyYjViZWE1YTFhMjI4MGRjODEwODYzZjQ5Y2M5OGZhM2RhNDY5ZTBkLi5iMzlh
Y2QzMWZlOGZmYmUyODY5YjJkZTI1MDE2Mjk0MWI0ODNmM2NmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAg
LTYzMyw2ICs2MzMsNyBAQCAtIChfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqKV9j
b25maWd1cmF0aW9uCiAKIC0gKHZvaWQpX2FwcEJvdW5kRG9tYWluczoodm9pZCAoXikoTlNBcnJh
eTxOU1N0cmluZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgogeworI2lmIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+Z2V0QXBwQm91bmREb21haW5zKFtj
b21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8m
IGRvbWFpbnMpIG11dGFibGUgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4g
YXBpRG9tYWluczsKICAgICAgICAgYXBpRG9tYWlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRv
bWFpbnMuc2l6ZSgpKTsKQEAgLTY0MCwxMCArNjQxLDE0IEBAIC0gKHZvaWQpX2FwcEJvdW5kRG9t
YWluczoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgog
ICAgICAgICAgICAgYXBpRG9tYWlucy51bmNoZWNrZWRBcHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0
ZShkb21haW4uc3RyaW5nKCkpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihB
UEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcGlEb21haW5zKSkpKTsKICAgICB9KTsKKyNlbHNl
CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyNlbmRpZgogfQogCiAtICh2b2lkKV9hcHBC
b3VuZFNjaGVtZXM6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgX3dlYnNpdGVEYXRh
U3RvcmUtPmdldEFwcEJvdW5kU2NoZW1lcyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiBzY2hlbWVzKSBtdXRhYmxlIHsKICAgICAgICAg
VmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFwaVNjaGVtZXM7CiAgICAgICAgIGFwaVNjaGVt
ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzY2hlbWVzLnNpemUoKSk7CkBAIC02NTEsNiArNjU2
LDkgQEAgLSAodm9pZClfYXBwQm91bmRTY2hlbWVzOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5n
ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICBhcGlTY2hlbWVzLnVuY2hlY2tl
ZEFwcGVuZChBUEk6OlN0cmluZzo6Y3JlYXRlKHNjaGVtZSkpOwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih3cmFwcGVyKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFwaVNjaGVtZXMpKSkp
OwogICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworI2VuZGlmCiB9
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDIyN2M1ZGM0YmNkNmZkMmM1NTI5NzMwOWM2ZjNl
MmE4ZjhhOGYyN2IuLjRmYjM5N2Y2NzRjOGJiYzZhNmM1MWFkYWExMTk5OWIzOTc1Nzk0MTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtMTU1MCw3ICsxNTUwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpjbGVhckFwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRBcHBCb3VuZERvbWFpbnMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlm
IChhdXRvKiBzdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKHNlc3Npb25JRCkp
IHsKICAgICAgICAgc3RvcmUtPmdldEFwcEJvdW5kRG9tYWlucyhbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mIGFwcEJvdW5kRG9tYWlucykgbXV0
YWJsZSB7CiAgICAgICAgICAgICBhdXRvIGFwcEJvdW5kRG9tYWluc0NvcHkgPSBhcHBCb3VuZERv
bWFpbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAwNzcw
YjEzMWExMGNjNmQzOTQxM2NhODA1YjJhMGUxNzM1ZDM4OGY3Li5jOTk2ZGExM2E3YjZhNjkxZDkx
OTBkNTZjMmExNDc5NjQyZjEzZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTQ4OCw3ICs0ODgsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQ
YWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogICAg
ICwgbV9yZXNldFJlY2VudENyYXNoQ291bnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZX
ZWJQYWdlUHJveHk6OnJlc2V0UmVjZW50Q3Jhc2hDb3VudCkKICAgICAsIG1fdHJ5Q2xvc2VUaW1l
b3V0VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZVByb3h5Ojp0cnlDbG9zZVRp
bWVkT3V0KQogICAgICwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMobV9jb25maWd1cmF0aW9uLT5j
b3JzRGlzYWJsaW5nUGF0dGVybnMoKSkKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgLCBtX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMobV9jb25m
aWd1cmF0aW9uLT5pZ25vcmVzQXBwQm91bmREb21haW5zKCkpCiAgICAgLCBtX2xpbWl0c05hdmln
YXRpb25zVG9BcHBCb3VuZERvbWFpbnMobV9jb25maWd1cmF0aW9uLT5saW1pdHNOYXZpZ2F0aW9u
c1RvQXBwQm91bmREb21haW5zKCkpCiAjZW5kaWYKQEAgLTEzOTIsNyArMTM5Miw3IEBAIFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhLCBjCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibG9hZERhdGE6Iik7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2lmIEVOQUJMRShB
UFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAoTUlNRVR5cGUgPT0gInRleHQvaHRtbCJfcyAmJiAh
aXNGdWxsV2ViQnJvd3NlcigpKQogICAgICAgICBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3Vu
ZERvbWFpbnMgPSB0cnVlOwogI2VuZGlmCkBAIC0zMTI1LDcgKzMxMjUsNyBAQCBwcml2YXRlOgog
ICAgIFBvbGljeUNoZWNrSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCi0jaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiBzdGF0aWMgYm9v
bCBzaG91bGRUcmVhdFVSTFByb3RvY29sQXNBcHBCb3VuZChjb25zdCBVUkwmIHJlcXVlc3RVUkwp
CiB7CiAgICAgcmV0dXJuIHJlcXVlc3RVUkwucHJvdG9jb2xJc0Fib3V0KCkgfHwgcmVxdWVzdFVS
TC5wcm90b2NvbElzRGF0YSgpIHx8IHJlcXVlc3RVUkwucHJvdG9jb2xJc0Jsb2IoKSB8fCByZXF1
ZXN0VVJMLmlzTG9jYWxGaWxlKCkgfHwgcmVxdWVzdFVSTC5wcm90b2NvbElzSmF2YVNjcmlwdCgp
OwpAQCAtMzEzNCw3ICszMTM0LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRVUkxQcm90b2Nv
bEFzQXBwQm91bmQoY29uc3QgVVJMJiByZXF1ZXN0VVJMKQogCiBib29sIFdlYlBhZ2VQcm94eTo6
c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQoYm9vbCBp
c01haW5GcmFtZSwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIHsKLSNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAo
aXNGdWxsV2ViQnJvd3NlcigpKSB7CiAgICAgICAgIGlmIChoYXNQcm9oaWJpdGVkVXNhZ2VTdHJp
bmdzKCkpCiAgICAgICAgICAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm87CkBAIC0zMTg4LDcgKzMxODgsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6aXNGb3JjZWRJbnRvQXBwQm91bmRNb2RlVGVzdGluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzYWJsZVNlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudEluTmV0d29ya1Byb2Nlc3MoKQogewotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJ
TlMpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nl
c3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkubmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAg
ICBpZiAoIW5ldHdvcmtQcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzE5OSw3ICszMTk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc2FibGVTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnRJbk5ldHdvcmtQcm9jZXNzKCkKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJ
TlMpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRv
ciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkNsZWFyU2Vydmlj
ZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoKSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsK
ICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
bmV0d29ya1Byb2Nlc3MoKSkgewpAQCAtNTE3OSw3ICs1MTc5LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXMKICAgICAgICAgc2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0ID0gU2hvdWxk
RXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObzsKIAogICAgIFNob3VsZEV4cGVjdEFwcEJvdW5k
RG9tYWluUmVzdWx0IHNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0ID0gU2hvdWxkRXhw
ZWN0QXBwQm91bmREb21haW5SZXN1bHQ6Ok5vOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHNob3VsZEV4cGVjdEFwcEJvdW5kRG9t
YWluUmVzdWx0ID0gU2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQ6OlllczsKICNlbmRp
ZgogICAgIApAQCAtNTE5OCw3ICs1MTk4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAg
ICAgICAgICAgIHJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwg
bmF2aWdhdGlvbi5nZXQoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgZnJhbWUsIFdU
Rk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgICAgICB9OwogCi0jaWYgUExB
VEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgICAgICBpZiAo
cG9saWN5QWN0aW9uICE9IFBvbGljeUFjdGlvbjo6SWdub3JlKSB7CiAgICAgICAgICAgICBpZiAo
IXNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5BbmRDaGVja0lmUGVybWl0dGVkKGZyYW1l
LT5pc01haW5GcmFtZSgpLCBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBpc0Fw
cEJvdW5kRG9tYWluKSkgewogICAgICAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBlcnJvckZvclVu
cGVybWl0dGVkQXBwQm91bmREb21haW5OYXZpZ2F0aW9uKG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1
ZXN0KCkudXJsKCkpOwpAQCAtNTI1Niw3ICs1MjU2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXMKICAgICB9LCBzaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQsIHNob3VsZEV4cGVjdEFw
cEJvdW5kRG9tYWluUmVzdWx0KSk7CiAgICAgaWYgKHNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jl
c3VsdCA9PSBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6OlllcykKICAgICAgICAgYmVn
aW5TYWZlQnJvd3NpbmdDaGVjayhyZXF1ZXN0LnVybCgpLCBmcmFtZS5pc01haW5GcmFtZSgpLCBs
aXN0ZW5lcik7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBFTkFCTEUoQVBQX0JPVU5E
X0RPTUFJTlMpCiAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5iZWdpbkFwcEJvdW5kRG9tYWluQ2hl
Y2socmVxdWVzdC51cmwoKSwgbGlzdGVuZXIpOwogI2VuZGlmCiAgICAgQVBJOjpOYXZpZ2F0aW9u
KiBtYWluRnJhbWVOYXZpZ2F0aW9uID0gZnJhbWUuaXNNYWluRnJhbWUoKSA/IG5hdmlnYXRpb24u
Z2V0KCkgOiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4
IGZiM2IyMWZkOTM2MjhhMzRhZTNkNGRlY2ZkNGU3OTdjZjY1MzFmNjUuLmQxOGY5OGE3MjBhNDk3
YmM0OWJiNWQ3YzBlYmRiZGM4ZWVmOTZmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW0KQEAgLTYzLDExICs2MywxMyBAQCBzdGF0aWMgSGFzaFNldDxXZWJzaXRlRGF0YVN0
b3JlKj4mIGRhdGFTdG9yZXMoKQogCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJLaXROZXR3
b3JrTG9hZFRocm90dGxlTGF0ZW5jeU1pbGxpc2Vjb25kc0RlZmF1bHRzS2V5ID0gQCJXZWJLaXRO
ZXR3b3JrTG9hZFRocm90dGxlTGF0ZW5jeU1pbGxpc2Vjb25kcyI7CiAKKyNpZiBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCiBzdGF0aWMgV29ya1F1ZXVlJiBhcHBCb3VuZERvbWFpblF1ZXVlKCkK
IHsKICAgICBzdGF0aWMgYXV0byYgcXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxl
LldlYktpdC5BcHBCb3VuZERvbWFpbnMiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCkubGVha1Jl
ZigpOwogICAgIHJldHVybiBxdWV1ZTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgc3RkOjphdG9taWM8
Ym9vbD4gaGFzSW5pdGlhbGl6ZWRBcHBCb3VuZERvbWFpbnMgPSBmYWxzZTsKIHN0YXRpYyBzdGQ6
OmF0b21pYzxib29sPiBrZXlFeGlzdHMgPSBmYWxzZTsKQEAgLTIxNSw4ICsyMTcsOSBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7CiAgICAgQVNTRVJUKCFk
YXRhU3RvcmVzKCkuY29udGFpbnModGhpcykpOwogICAgIGRhdGFTdG9yZXMoKS5hZGQodGhpcyk7
Ci0KKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaW5pdGlhbGl6ZUFwcEJvdW5k
RG9tYWlucygpOworI2VuZGlmCiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1E
ZXN0cm95KCkKQEAgLTM5Myw2ICszOTYsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
Ojp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdAogICAg
IHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247CiB9
CiAKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiBzdGF0aWMgSGFzaFNldDxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4mIGFwcEJvdW5kRG9tYWlucygpCiB7CiAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKQEAgLTU1OCw1ICs1NjIsNiBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnJlaW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucygpCiAgICAgaGFzSW5pdGlhbGl6ZWRBcHBC
b3VuZERvbWFpbnMgPSBmYWxzZTsKICAgICBpbml0aWFsaXplQXBwQm91bmREb21haW5zKEZvcmNl
UmVpbml0aWFsaXphdGlvbjo6WWVzKTsKIH0KKyNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmlu
ZGV4IDFkYWFjNTQwMjA1ODFmN2FhN2Y4MTliNGI0NTAyY2U2Yzc5OGI4OTIuLmExYjQ4M2I5NGQy
MmIxNGU1MmE1NjBjZjZiOGRhMzc4ZTM5YWFkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0yMjYy
LDcgKzIyNjIsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3Jl
OjpwYXJhbWV0ZXJzKCkKICAgICBhdXRvIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
ID0gV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tp
ZXM7CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9u
RG9tYWluOwogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFwcEJvdW5k
RG9tYWluczsKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJ
TlMpCiAgICAgaWYgKGlzQXBwQm91bmRJVFBSZWxheGF0aW9uRW5hYmxlZCkKICAgICAgICAgYXBw
Qm91bmREb21haW5zID0gYXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpLnZhbHVlT3IoSGFz
aFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4geyB9KTsKICNlbmRpZgpAQCAtMjQzNyw2
ICsyNDM3LDE4IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJ
ZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQogfQogI2VuZGlmCiAKK3ZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShVUkwmJiBvbGROYW1lLCBVUkwmJiBu
ZXdOYW1lLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGNhbGxiYWNr
QWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6
OmFsbFByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9
IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKSB7CisgICAgICAgICAgICBuZXR3b3JrUHJv
Y2Vzcy0+YWRkU2Vzc2lvbigqdGhpcyk7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+cmVu
YW1lT3JpZ2luSW5XZWJzaXRlRGF0YShtX3Nlc3Npb25JRCwgb2xkTmFtZSwgbmV3TmFtZSwgZGF0
YVR5cGVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgICAgICB9CisgICAgfQorfQor
CisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpo
YXNBcHBCb3VuZFNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vz
c1Bvb2xzKCkpIHsKQEAgLTI0NTgsMTggKzI0NzAsNiBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OmNsZWFyQXBwQm91bmRTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aQogICAgIH0KIH0KIAotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW5hbWVPcmlnaW5JbldlYnNp
dGVEYXRhKFVSTCYmIG9sZE5hbWUsIFVSTCYmIG5ld05hbWUsIE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IGRhdGFUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQotewotICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdh
dG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGZvciAoYXV0byYg
cHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNz
KCkpIHsKLSAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5hZGRTZXNzaW9uKCp0aGlzKTsKLSAg
ICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5yZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKG1fc2Vz
c2lvbklELCBvbGROYW1lLCBuZXdOYW1lLCBkYXRhVHlwZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6Zm9yd2FyZEFwcEJvdW5kRG9tYWluc1RvSVRQSWZJbml0aWFsaXpl
ZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
YXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMGE3ZjgzZDJiN2RjNjM1
MzhjODU3ODgwMGU2MTdhZmZjNWQzZjE5ZC4uODk0OThjZTQ5NTAwMTYxZTk2ZDZjN2EzN2Q5NTE1
ZmU0Nzk1MWM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjk3LDE1ICsyOTcsMTcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIGh0dHAzRW5hYmxlZCgpOwogCiAgICAgdm9pZCByZXNldFF1b3RhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJ
TlMpCiAgICAgdm9pZCBoYXNBcHBCb3VuZFNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJikgY29uc3Q7CiAgICAgdm9pZCBjbGVhckFwcEJvdW5kU2Vzc2lvbihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotCiAgICAgdm9pZCBiZWdpbkFwcEJvdW5kRG9tYWluQ2hlY2so
Y29uc3QgVVJMJiwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7CiAgICAgdm9pZCBnZXRB
cHBCb3VuZERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKSBjb25zdDsKICAgICB2b2lkIGdldEFwcEJvdW5k
U2NoZW1lcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYpPiYm
KSBjb25zdDsKICAgICB2b2lkIGVuc3VyZUFwcEJvdW5kRG9tYWlucyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiwgY29uc3Qg
SGFzaFNldDxTdHJpbmc+Jik+JiYpIGNvbnN0OwogICAgIHZvaWQgcmVpbml0aWFsaXplQXBwQm91
bmREb21haW5zKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0QXBwQm91bmREb21haW5zRm9yVGVzdGlu
ZyhIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworI2VuZGlmCiAgICAgdm9pZCB1cGRhdGVCdW5kbGVJZGVudGlmaWVySW5O
ZXR3b3JrUHJvY2Vzcyhjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgY2xlYXJCdW5kbGVJZGVudGlmaWVySW5OZXR3b3JrUHJvY2VzcyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIApAQCAtMzQ0LDcgKzM0Niw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIG1heWJlUmVnaXN0ZXJXaXRoU2Vzc2lvbklETWFwKCk7CiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgc3RhdGljIE9w
dGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBhcHBCb3VuZERvbWFp
bnNJZkluaXRpYWxpemVkKCk7CiAgICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBzdGQ6OmF0b21p
Yzxib29sPiBpc0FwcEJvdW5kSVRQUmVsYXhhdGlvbkVuYWJsZWQgPSBmYWxzZTsKICAgICBzdGF0
aWMgdm9pZCBmb3J3YXJkQXBwQm91bmREb21haW5zVG9JVFBJZkluaXRpYWxpemVkKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggYWNhZTYyMjg1MTM2N2E3ZTYwZmJhMTRlNGQzM2M4YTAyMjY5OThj
Ni4uMDZkMGI5ODA3NmQ0MjEwNDE3MTg4MjAyZmZlZmFhYWZjMGM2ZmFhNCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDIwLTA3LTMxICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisg
ICAgICAgIENyZWF0ZSBhbiBBUFBfQk9VTkRfRE9NQUlOUy1zcGVjaWZpYyBlbmFibGUgbWFjcm8K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTAyNwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM2ODgyMzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBjaGVjayBmb3IgSU9TX0ZBTUlMWSB3
aXRoIG1vcmUgYXB0bHkgbmFtZWQgQVBQX0JPVU5EX0RPTUFJTlMKKyAgICAgICAgbWFjcm8uCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclBy
aXZhY3kubW06CisKIDIwMjAtMDctMzEgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFt3ZWJraXRjb3JlcHldIENoYW5nZXMgdG8gVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMgc2hvdWxkIHRyaWdnZXIgRVdTCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXgg
MzY5ZmZlNTIzMThlMDc0YjBmNDRmMWNkMDYzNmUzODk5NmQzMTczNC4uNzg0YWZhNmM4NWM0OGRk
ZDczNzNmMzI2MTM1ZGI3MjgxOGRkZDZkNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAt
NDMsNyArNDMsNyBAQAogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCiAKIHN0YXRpYyBib29sIGlzRG9uZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405745</attachid>
            <date>2020-07-31 15:07:35 -0700</date>
            <delta_ts>2020-07-31 16:27:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215027-20200731150734.patch</filename>
            <type>text/plain</type>
            <size>22842</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDViNTRkNmQxMTM0ZmU4YTkxMzU0Nzk0
MDU2Y2FhMzc4OTAyZmNkY2IuLjNiMjYyMjZkZTUxODE2Y2U0NzhmNzNlMDM3NjFhZjg1MzFiZTQ4
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDctMzEgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGFuIEFQUF9CT1VORF9ET01B
SU5TIGVuYWJsZSBtYWNybworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE1MDI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzY4ODIzMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWZpbmUgYSBuZXcg
QVBQX0JPVU5EX1NFU1NJT05TIHByZXByb2Nlc3NvciBtYWNybyB0byBtb3JlIGFwdGx5IGdhdGUK
KyAgICAgICAgQXBwIEJvdW5kIERvbWFpbnMgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3dGYvUGxh
dGZvcm1FbmFibGUuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oOgorCiAy
MDIwLTA3LTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEhhdmUgVGltaW5nU2NvcGUgdHJhY2sgdGhlIG1heCBldmVudCBkdXJhdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA2NWNhM2Y2ODk4NzRlZTExN2MxZGExYTkwOGZlNWUyNzExMTFlNWJkLi45NTkzMWYzNmU0
YmNiYWU1MzAxM2U0NGM1MmYwMjI4OWU0ZTQ0NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBA
CisyMDIwLTA3LTMxICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgor
CisgICAgICAgIENyZWF0ZSBhbiBBUFBfQk9VTkRfRE9NQUlOUyBlbmFibGUgbWFjcm8KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTAyNworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjM2ODgyMzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBleGlzdGluZyBJT1NfRkFNSUxZIHBsYXRmb3Jt
IGNoZWNrcyB3aXRoIGEgbmV3CisgICAgICAgIEFQUF9CT1VORF9ET01BSU5TIG1hY3JvLiBBZGRp
dGlvbmFsbHksIG1hbnkgYXBwLWJvdW5kIGRvbWFpbnMgY29kZQorICAgICAgICBjaGVja2VkIGZv
ciBjb2NvYSBwbGF0Zm9ybXMsIGJ1dCB0aGlzIGNhbiBiZSBtb3JlIHNwZWNpZmljYWxseQorICAg
ICAgICBjb21waWxlZCB1c2luZyB0aGUgQVBQX0JPVU5EX0RPTUFJTlMgbWFjcm8uCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2spOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcDoKKyAgICAgICAg
KEFQSTo6SFRUUENvb2tpZVN0b3JlOjpmaWx0ZXJBcHBCb3VuZENvb2tpZXMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcpOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBcHBCb3VuZFNlc3Npb24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0
b3JlUmVpbml0aWFsaXplQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIF9hcHBCb3VuZERvbWFpbnM6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBf
YXBwQm91bmRTY2hlbWVzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpn
ZXRBcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hl
Y2tJZlBlcm1pdHRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzYWJsZVNl
cnZpY2VXb3JrZXJFbnRpdGxlbWVudEluTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBsYXRm
b3JtSW5pdGlhbGl6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0
ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVuYW1lT3JpZ2luSW5X
ZWJzaXRlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaDoKKwogMjAyMC0wNy0zMSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkIENhdGFseXN0IGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUVuYWJsZS5oCmluZGV4IDUxNGUyMjRkODI1N2NhODI0NmVmMTM5OWJhZTI2MDliMWIxMWFmZjUu
LjlhODJkMzIyMGUzNjc2MTcwNTUzYTU1ZTE2YjE3YjkxNzVhZTNmYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZv
cm1FbmFibGUuaApAQCAtMTkzLDYgKzE5MywxMCBAQAogI2RlZmluZSBFTkFCTEVfQVBORyAxCiAj
ZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9BUFBfQk9VTkRfRE9NQUlOUykKKyNkZWZpbmUg
RU5BQkxFX0FQUF9CT1VORF9ET01BSU5TIDAKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKQogI2RlZmluZSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgMQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgKaW5kZXggYjcxZDQ0MzIwNzMz
OTlhYjRhMTJlMGUxMDg1NTkzMmZmYTI5MDhiYy4uZTY0ZDY1ZjVlMDIyOGFiYTkzNTJhZjYyYThi
YzgzNTMzYWFhYWMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVD
b2NvYS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaApAQCAtNzUs
NiArNzUsMTAgQEAKICNkZWZpbmUgRU5BQkxFX0FQUExJQ0FUSU9OX01BTklGRVNUIDEKICNlbmRp
ZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0FQUF9CT1VORF9ET01BSU5TKSAmJiBQTEFURk9STShJ
T1NfRkFNSUxZKQorI2RlZmluZSBFTkFCTEVfQVBQX0JPVU5EX0RPTUFJTlMgMQorI2VuZGlmCisK
ICNpZiAhZGVmaW5lZChFTkFCTEVfQVNZTkNfU0NST0xMSU5HKQogI2RlZmluZSBFTkFCTEVfQVNZ
TkNfU0NST0xMSU5HIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDkzMWI5NTYzYmY1
YzcyNTI5MTRkZjBkMTUyNWYwZjY4OWZjZDQ0M2IuLmExN2M4YTcyYzI1MjZlNGU4NGM3MzAwYmU2
MGVmNzFlMWRhODg5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTEzMjYsNyArMTMyNiw3IEBA
IFNlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRh
c2soY29uc3QgV2ViQ29yZTo6UmVzb3VyCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKICAgICBpZiAoc2hvdWxkQmVDb25zaWRlcmVkQXBwQm91bmQgPT0gTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW46OlllcykKICAgICAgICAgcmV0dXJuIGFwcEJvdW5kU2Vzc2lvbihz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKaW5kZXggYTZlMTU5MWU1NTA0OWQy
OWU3NzYxNDE5YWEzMThkZjAwYTQ3Nzk4Yy4uMDRkNDY3OGMxNWNkYzdkYzVlMmM1YmE0M2JmOGVm
YWZhMzRkY2VlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgSFRUUENvb2tpZVN0b3JlOjp+SFRU
UENvb2tpZVN0b3JlKCkKIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpmaWx0ZXJBcHBCb3VuZENvb2tp
ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gYXBwQm91bmRDb29raWVzOwotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIG1f
b3duaW5nRGF0YVN0b3JlLT5nZXRBcHBCb3VuZERvbWFpbnMoW2Nvb2tpZXMsIGFwcEJvdW5kQ29v
a2llcyA9IFdURk1vdmUoYXBwQm91bmRDb29raWVzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mIGRvbWFpbnMpIG11dGFibGUgewogICAgICAg
ICBpZiAoIWRvbWFpbnMuaXNFbXB0eSgpICYmICFpc0Z1bGxXZWJCcm93c2VyKCkpIHsKICAgICAg
ICAgICAgIGZvciAoYXV0byYgY29va2llIDogY29va2llcykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXgg
ODAwZTc1NDllYTE3OTZmM2U3ZGIxMzVkNmIxNzA0ZDBkOGZiOTYzZC4uZGY3N2IzYzAwODllMmZh
MjJjZjM3YWY1MDRkNzkyZDhiZTc2NGUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC01NzksOSArNTc5
LDExIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lv
bihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
SGFzQXBwQm91bmRTZXNzaW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vzc2lvbkZ1bmN0aW9u
IGNhbGxiYWNrKQogeworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5oYXNBcHBCb3VuZFNlc3Npb24oW2NvbnRleHQsIGNhbGxi
YWNrXShib29sIGhhc0FwcEJvdW5kU2Vzc2lvbikgewogICAgICAgICBjYWxsYmFjayhoYXNBcHBC
b3VuZFNlc3Npb24sIGNvbnRleHQpOwogICAgIH0pOworI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVy
cmVyRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVu
YWJsZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0
aW9uSGFuZGxlcikKQEAgLTYzMCw3ICs2MzIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rpbgog
CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoV0tB
cnJheVJlZiBvcmlnaW5VUkxzUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAg
IFJlZlB0cjxBUEk6OkFycmF5PiBvcmlnaW5VUkxzQXJyYXkgPSB0b0ltcGwob3JpZ2luVVJMc1Jl
Zik7CiAgICAgc2l6ZV90IG5ld1NpemUgPSBvcmlnaW5VUkxzQXJyYXkgPyBvcmlnaW5VUkxzQXJy
YXktPnNpemUoKSA6IDA7CiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
ZG9tYWluczsKQEAgLTc5MywxNSArNzk1LDIyIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVz
ZXRRdW90YShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250CiAK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBcHBCb3VuZFNlc3Npb24oV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
Q2xlYXJBcHBCb3VuZFNlc3Npb25GdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyNpZiBF
TkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+Y2xlYXJBcHBCb3VuZFNlc3Npb24oW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oZGF0YVN0b3JlUmVmKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0
KTsKKyNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlaW5pdGlhbGl6ZUFwcEJv
dW5kRG9tYWlucyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKQogewotI2lmIFBM
QVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZWluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKGRhdGFTdG9yZVJlZik7CiAjZW5kaWYKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0KaW5kZXggMmI1YmVhNWExYTIyODBkYzgxMDg2M2Y0OWNjOThmYTNkYTQ2OWUwZC4uYjM5
YWNkMzFmZThmZmJlMjg2OWIyZGUyNTAxNjI5NDFiNDgzZjNjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBA
IC02MzMsNiArNjMzLDcgQEAgLSAoX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKilf
Y29uZmlndXJhdGlvbgogCiAtICh2b2lkKV9hcHBCb3VuZERvbWFpbnM6KHZvaWQgKF4pKE5TQXJy
YXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyNpZiBFTkFCTEUoQVBQX0JP
VU5EX0RPTUFJTlMpCiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmdldEFwcEJvdW5kRG9tYWlucyhb
Y29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRv
JiBkb21haW5zKSBtdXRhYmxlIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+
IGFwaURvbWFpbnM7CiAgICAgICAgIGFwaURvbWFpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShk
b21haW5zLnNpemUoKSk7CkBAIC02NDAsMTAgKzY0MSwxNCBAQCAtICh2b2lkKV9hcHBCb3VuZERv
bWFpbnM6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXIK
ICAgICAgICAgICAgIGFwaURvbWFpbnMudW5jaGVja2VkQXBwZW5kKEFQSTo6U3RyaW5nOjpjcmVh
dGUoZG9tYWluLnN0cmluZygpKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIo
QVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXBpRG9tYWlucykpKSk7CiAgICAgfSk7CisjZWxz
ZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisjZW5kaWYKIH0KIAogLSAodm9pZClfYXBw
Qm91bmRTY2hlbWVzOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRpb25I
YW5kbGVyCiB7CisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT5nZXRBcHBCb3VuZFNjaGVtZXMoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYgc2NoZW1lcykgbXV0YWJsZSB7CiAgICAgICAg
IFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlTY2hlbWVzOwogICAgICAgICBhcGlTY2hl
bWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2NoZW1lcy5zaXplKCkpOwpAQCAtNjUxLDYgKzY1
Niw5IEBAIC0gKHZvaWQpX2FwcEJvdW5kU2NoZW1lczoodm9pZCAoXikoTlNBcnJheTxOU1N0cmlu
ZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgogICAgICAgICAgICAgYXBpU2NoZW1lcy51bmNoZWNr
ZWRBcHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShzY2hlbWUpKTsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIod3JhcHBlcihBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcGlTY2hlbWVzKSkp
KTsKICAgICB9KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyNlbmRpZgog
fQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyMjdjNWRjNGJjZDZmZDJjNTUyOTczMDljNmYz
ZTJhOGY4YThmMjdiLi40ZmIzOTdmNjc0YzhiYmM2YTZjNTFhZGFhMTE5OTliMzk3NTc5NDExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKQEAgLTE1NTAsNyArMTU1MCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6Y2xlYXJBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bGV0CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0QXBwQm91bmREb21haW5zKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBp
ZiAoYXV0byogc3RvcmUgPSB3ZWJzaXRlRGF0YVN0b3JlRnJvbVNlc3Npb25JRChzZXNzaW9uSUQp
KSB7CiAgICAgICAgIHN0b3JlLT5nZXRBcHBCb3VuZERvbWFpbnMoW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiBhcHBCb3VuZERvbWFpbnMpIG11
dGFibGUgewogICAgICAgICAgICAgYXV0byBhcHBCb3VuZERvbWFpbnNDb3B5ID0gYXBwQm91bmRE
b21haW5zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMDc3
MGIxMzFhMTBjYzZkMzk0MTNjYTgwNWIyYTBlMTczNWQzODhmNy4uYzk5NmRhMTNhN2I2YTY5MWQ5
MTkwZDU2YzJhMTQ3OTY0MmYxM2Y2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC00ODgsNyArNDg4LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHko
UGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKICAg
ICAsIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAm
V2ViUGFnZVByb3h5OjpyZXNldFJlY2VudENyYXNoQ291bnQpCiAgICAgLCBtX3RyeUNsb3NlVGlt
ZW91dFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2VQcm94eTo6dHJ5Q2xvc2VU
aW1lZE91dCkKICAgICAsIG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zKG1fY29uZmlndXJhdGlvbi0+
Y29yc0Rpc2FibGluZ1BhdHRlcm5zKCkpCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxF
KEFQUF9CT1VORF9ET01BSU5TKQogICAgICwgbV9pZ25vcmVzQXBwQm91bmREb21haW5zKG1fY29u
ZmlndXJhdGlvbi0+aWdub3Jlc0FwcEJvdW5kRG9tYWlucygpKQogICAgICwgbV9saW1pdHNOYXZp
Z2F0aW9uc1RvQXBwQm91bmREb21haW5zKG1fY29uZmlndXJhdGlvbi0+bGltaXRzTmF2aWdhdGlv
bnNUb0FwcEJvdW5kRG9tYWlucygpKQogI2VuZGlmCkBAIC0xMzkyLDcgKzEzOTIsNyBAQCBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZGF0YSwgYwogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxvYWREYXRhOiIpOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYgKE1JTUVUeXBlID09ICJ0ZXh0L2h0bWwiX3MgJiYg
IWlzRnVsbFdlYkJyb3dzZXIoKSkKICAgICAgICAgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zID0gdHJ1ZTsKICNlbmRpZgpAQCAtMzEyNSw3ICszMTI1LDcgQEAgcHJpdmF0ZToK
ICAgICBQb2xpY3lDaGVja0lkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogc3RhdGljIGJv
b2wgc2hvdWxkVHJlYXRVUkxQcm90b2NvbEFzQXBwQm91bmQoY29uc3QgVVJMJiByZXF1ZXN0VVJM
KQogewogICAgIHJldHVybiByZXF1ZXN0VVJMLnByb3RvY29sSXNBYm91dCgpIHx8IHJlcXVlc3RV
UkwucHJvdG9jb2xJc0RhdGEoKSB8fCByZXF1ZXN0VVJMLnByb3RvY29sSXNCbG9iKCkgfHwgcmVx
dWVzdFVSTC5pc0xvY2FsRmlsZSgpIHx8IHJlcXVlc3RVUkwucHJvdG9jb2xJc0phdmFTY3JpcHQo
KTsKQEAgLTMxMzQsNyArMzEzNCw3IEBAIHN0YXRpYyBib29sIHNob3VsZFRyZWF0VVJMUHJvdG9j
b2xBc0FwcEJvdW5kKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCkKIAogYm9vbCBXZWJQYWdlUHJveHk6
OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5BbmRDaGVja0lmUGVybWl0dGVkKGJvb2wg
aXNNYWluRnJhbWUsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7Ci0jaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYg
KGlzRnVsbFdlYkJyb3dzZXIoKSkgewogICAgICAgICBpZiAoaGFzUHJvaGliaXRlZFVzYWdlU3Ry
aW5ncygpKQogICAgICAgICAgICAgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vOwpAQCAtMzE4OCw3ICszMTg4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmlzRm9yY2VkSW50b0FwcEJvdW5kTW9kZVRlc3RpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpc2FibGVTZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnRJbk5ldHdvcmtQcm9jZXNzKCkKIHsKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01B
SU5TKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9j
ZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLm5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAg
ICAgaWYgKCFuZXR3b3JrUHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTMxOTksNyArMzE5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNhYmxlU2Vy
dmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3JrUHJvY2VzcygpCiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01B
SU5TKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhclNlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7
CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgp
Lm5ldHdvcmtQcm9jZXNzKCkpIHsKQEAgLTUxNzksNyArNTE3OSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzCiAgICAgICAgIHNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCA9IFNob3Vs
ZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm87CiAKICAgICBTaG91bGRFeHBlY3RBcHBCb3Vu
ZERvbWFpblJlc3VsdCBzaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdCA9IFNob3VsZEV4
cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpObzsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBzaG91bGRFeHBlY3RBcHBCb3VuZERv
bWFpblJlc3VsdCA9IFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpZZXM7CiAjZW5k
aWYKICAgICAKQEAgLTUxOTgsNyArNTE5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAg
ICAgICAgICAgICByZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24s
IG5hdmlnYXRpb24uZ2V0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIGZyYW1lLCBX
VEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShzZW5kZXIpKTsKICAgICAgICAgfTsKIAotI2lmIFBM
QVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICAgICAgaWYg
KHBvbGljeUFjdGlvbiAhPSBQb2xpY3lBY3Rpb246Oklnbm9yZSkgewogICAgICAgICAgICAgaWYg
KCFzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hlY2tJZlBlcm1pdHRlZChmcmFt
ZS0+aXNNYWluRnJhbWUoKSwgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgaXNB
cHBCb3VuZERvbWFpbikpIHsKICAgICAgICAgICAgICAgICBhdXRvIGVycm9yID0gZXJyb3JGb3JV
bnBlcm1pdHRlZEFwcEJvdW5kRG9tYWluTmF2aWdhdGlvbihuYXZpZ2F0aW9uLT5jdXJyZW50UmVx
dWVzdCgpLnVybCgpKTsKQEAgLTUyNTYsNyArNTI1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzCiAgICAgfSwgc2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0LCBzaG91bGRFeHBlY3RB
cHBCb3VuZERvbWFpblJlc3VsdCkpOwogICAgIGlmIChzaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdS
ZXN1bHQgPT0gU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpZZXMpCiAgICAgICAgIGJl
Z2luU2FmZUJyb3dzaW5nQ2hlY2socmVxdWVzdC51cmwoKSwgZnJhbWUuaXNNYWluRnJhbWUoKSwg
bGlzdGVuZXIpOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgRU5BQkxFKEFQUF9CT1VO
RF9ET01BSU5TKQogICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+YmVnaW5BcHBCb3VuZERvbWFpbkNo
ZWNrKHJlcXVlc3QudXJsKCksIGxpc3RlbmVyKTsKICNlbmRpZgogICAgIEFQSTo6TmF2aWdhdGlv
biogbWFpbkZyYW1lTmF2aWdhdGlvbiA9IGZyYW1lLmlzTWFpbkZyYW1lKCkgPyBuYXZpZ2F0aW9u
LmdldCgpIDogbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRl
eCBmYjNiMjFmZDkzNjI4YTM0YWUzZDRkZWNmZDRlNzk3Y2Y2NTMxZjY1Li5kMThmOThhNzIwYTQ5
N2JjNDliYjVkN2MwZWJkYmRjOGVlZjk2ZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tCkBAIC02MywxMSArNjMsMTMgQEAgc3RhdGljIEhhc2hTZXQ8V2Vic2l0ZURhdGFT
dG9yZSo+JiBkYXRhU3RvcmVzKCkKIAogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0TmV0
d29ya0xvYWRUaHJvdHRsZUxhdGVuY3lNaWxsaXNlY29uZHNEZWZhdWx0c0tleSA9IEAiV2ViS2l0
TmV0d29ya0xvYWRUaHJvdHRsZUxhdGVuY3lNaWxsaXNlY29uZHMiOwogCisjaWYgRU5BQkxFKEFQ
UF9CT1VORF9ET01BSU5TKQogc3RhdGljIFdvcmtRdWV1ZSYgYXBwQm91bmREb21haW5RdWV1ZSgp
CiB7CiAgICAgc3RhdGljIGF1dG8mIHF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBs
ZS5XZWJLaXQuQXBwQm91bmREb21haW5zIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwpLmxlYWtS
ZWYoKTsKICAgICByZXR1cm4gcXVldWU7CiB9CisjZW5kaWYKIAogc3RhdGljIHN0ZDo6YXRvbWlj
PGJvb2w+IGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5zID0gZmFsc2U7CiBzdGF0aWMgc3Rk
OjphdG9taWM8Ym9vbD4ga2V5RXhpc3RzID0gZmFsc2U7CkBAIC0yMTUsOCArMjE3LDkgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewogICAgIEFTU0VSVCgh
ZGF0YVN0b3JlcygpLmNvbnRhaW5zKHRoaXMpKTsKICAgICBkYXRhU3RvcmVzKCkuYWRkKHRoaXMp
OwotCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGluaXRpYWxpemVBcHBCb3Vu
ZERvbWFpbnMoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3Jt
RGVzdHJveSgpCkBAIC0zOTMsNiArMzk2LDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QKICAg
ICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwog
fQogCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogc3RhdGljIEhhc2hTZXQ8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+JiBhcHBCb3VuZERvbWFpbnMoKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CkBAIC01NTgsNSArNTYyLDYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpyZWluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoKQogICAgIGhhc0luaXRpYWxpemVkQXBw
Qm91bmREb21haW5zID0gZmFsc2U7CiAgICAgaW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyhGb3Jj
ZVJlaW5pdGlhbGl6YXRpb246Olllcyk7CiB9CisjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApp
bmRleCAxZGFhYzU0MDIwNTgxZjdhYTdmODE5YjRiNDUwMmNlNmM3OThiODkyLi5hMWI0ODNiOTRk
MjJiMTRlNTJhNTYwY2Y2YjhkYTM3OGUzOWFhZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMjI2
Miw3ICsyMjYyLDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9y
ZTo6cGFyYW1ldGVycygpCiAgICAgYXV0byBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29r
aWVzOwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlv
bkRvbWFpbjsKICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3Vu
ZERvbWFpbnM7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01B
SU5TKQogICAgIGlmIChpc0FwcEJvdW5kSVRQUmVsYXhhdGlvbkVuYWJsZWQpCiAgICAgICAgIGFw
cEJvdW5kRG9tYWlucyA9IGFwcEJvdW5kRG9tYWluc0lmSW5pdGlhbGl6ZWQoKS52YWx1ZU9yKEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHsgfSk7CiAjZW5kaWYKQEAgLTI0Mzcs
NiArMjQzNywxOCBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNl
SWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIH0KICNlbmRpZgogCit2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoVVJMJiYgb2xkTmFtZSwgVVJMJiYg
bmV3TmFtZSwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29s
OjphbGxQcm9jZXNzUG9vbHMoKSkgeworICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3Mg
PSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICAgICAgbmV0d29ya1By
b2Nlc3MtPmFkZFNlc3Npb24oKnRoaXMpOworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnJl
bmFtZU9yaWdpbkluV2Vic2l0ZURhdGEobV9zZXNzaW9uSUQsIG9sZE5hbWUsIG5ld05hbWUsIGRh
dGFUeXBlcywgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICAgICAgfQorICAgIH0KK30K
KworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
aGFzQXBwQm91bmRTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nl
c3NQb29scygpKSB7CkBAIC0yNDU4LDE4ICsyNDcwLDYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpjbGVhckFwcEJvdW5kU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGkKICAgICB9CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVuYW1lT3JpZ2luSW5XZWJz
aXRlRGF0YShVUkwmJiBvbGROYW1lLCBVUkwmJiBuZXdOYW1lLCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiBkYXRhVHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKLXsKLSAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVn
YXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBmb3IgKGF1dG8m
IHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKSB7Ci0gICAg
ICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vz
cygpKSB7Ci0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+YWRkU2Vzc2lvbigqdGhpcyk7Ci0g
ICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShtX3Nl
c3Npb25JRCwgb2xkTmFtZSwgbmV3TmFtZSwgZGF0YVR5cGVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9y
XSB7IH0pOwotICAgICAgICB9Ci0gICAgfQotfQotCi0jaWYgUExBVEZPUk0oQ09DT0EpCiB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OmZvcndhcmRBcHBCb3VuZERvbWFpbnNUb0lUUElmSW5pdGlhbGl6
ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDBhN2Y4M2QyYjdkYzYz
NTM4Yzg1Nzg4MDBlNjE3YWZmYzVkM2YxOWQuLjg5NDk4Y2U0OTUwMDE2MWU5NmQ2YzdhMzdkOTUx
NWZlNDc5NTFjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTI5NywxNSArMjk3LDE3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBodHRwM0VuYWJsZWQoKTsKIAogICAgIHZvaWQgcmVzZXRRdW90YShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01B
SU5TKQogICAgIHZvaWQgaGFzQXBwQm91bmRTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJBcHBCb3VuZFNlc3Npb24oQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKLQogICAgIHZvaWQgYmVnaW5BcHBCb3VuZERvbWFpbkNoZWNr
KGNvbnN0IFVSTCYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOwogICAgIHZvaWQgZ2V0
QXBwQm91bmREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mKT4mJikgY29uc3Q7CiAgICAgdm9pZCBnZXRBcHBCb3Vu
ZFNjaGVtZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFN0cmluZz4mKT4m
JikgY29uc3Q7CiAgICAgdm9pZCBlbnN1cmVBcHBCb3VuZERvbWFpbnMoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYsIGNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYpPiYmKSBjb25zdDsKICAgICB2b2lkIHJlaW5pdGlhbGl6ZUFwcEJv
dW5kRG9tYWlucygpOwogICAgIHN0YXRpYyB2b2lkIHNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3Rp
bmcoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyNlbmRpZgogICAgIHZvaWQgdXBkYXRlQnVuZGxlSWRlbnRpZmllcklu
TmV0d29ya1Byb2Nlc3MoY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIGNsZWFyQnVuZGxlSWRlbnRpZmllckluTmV0d29ya1Byb2Nlc3MoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICAKQEAgLTM0NCw3ICszNDYsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBtYXliZVJlZ2lzdGVyV2l0aFNlc3Npb25JRE1hcCgpOwogCi0jaWYgUExB
VEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHN0YXRpYyBP
cHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gYXBwQm91bmREb21h
aW5zSWZJbml0aWFsaXplZCgpOwogICAgIGNvbnN0ZXhwciBzdGF0aWMgY29uc3Qgc3RkOjphdG9t
aWM8Ym9vbD4gaXNBcHBCb3VuZElUUFJlbGF4YXRpb25FbmFibGVkID0gZmFsc2U7CiAgICAgc3Rh
dGljIHZvaWQgZm9yd2FyZEFwcEJvdW5kRG9tYWluc1RvSVRQSWZJbml0aWFsaXplZChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGFjYWU2MjI4NTEzNjdhN2U2MGZiYTE0ZTRkMzNjOGEwMjI2OTk4
YzYuLjA2ZDBiOTgwNzZkNDIxMDQxNzE4ODIwMmZmZWZhYWFmYzBjNmZhYTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAyMC0wNy0zMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKwor
ICAgICAgICBDcmVhdGUgYW4gQVBQX0JPVU5EX0RPTUFJTlMtc3BlY2lmaWMgZW5hYmxlIG1hY3Jv
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUwMjcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzNjg4MjMyPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgY2hlY2sgZm9yIElPU19GQU1JTFkg
d2l0aCBtb3JlIGFwdGx5IG5hbWVkIEFQUF9CT1VORF9ET01BSU5TCisgICAgICAgIG1hY3JvLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQ
cml2YWN5Lm1tOgorCiAyMDIwLTA3LTMxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxl
LmNvbT4KIAogICAgICAgICBbd2Via2l0Y29yZXB5XSBDaGFuZ2VzIHRvIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzIHNob3VsZCB0cmlnZ2VyIEVXUwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4
IDM2OWZmZTUyMzE4ZTA3NGIwZjQ0ZjFjZDA2MzZlMzg5OTZkMzE3MzQuLjc4NGFmYTZjODVjNDhk
ZGQ3MzczZjMyNjEzNWRiNzI4MThkZGQ2ZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAg
LTQzLDcgKzQzLDcgQEAKICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgRU5BQkxFKEFQ
UF9CT1VORF9ET01BSU5TKQogCiBzdGF0aWMgYm9vbCBpc0RvbmU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405756</attachid>
            <date>2020-07-31 16:27:13 -0700</date>
            <delta_ts>2020-09-09 15:19:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215027-20200731162712.patch</filename>
            <type>text/plain</type>
            <size>24437</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDViNTRkNmQxMTM0ZmU4YTkxMzU0Nzk0
MDU2Y2FhMzc4OTAyZmNkY2IuLjNiMjYyMjZkZTUxODE2Y2U0NzhmNzNlMDM3NjFhZjg1MzFiZTQ4
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDctMzEgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGFuIEFQUF9CT1VORF9ET01B
SU5TIGVuYWJsZSBtYWNybworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE1MDI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzY4ODIzMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWZpbmUgYSBuZXcg
QVBQX0JPVU5EX1NFU1NJT05TIHByZXByb2Nlc3NvciBtYWNybyB0byBtb3JlIGFwdGx5IGdhdGUK
KyAgICAgICAgQXBwIEJvdW5kIERvbWFpbnMgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3dGYvUGxh
dGZvcm1FbmFibGUuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oOgorCiAy
MDIwLTA3LTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEhhdmUgVGltaW5nU2NvcGUgdHJhY2sgdGhlIG1heCBldmVudCBkdXJhdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA2NWNhM2Y2ODk4NzRlZTExN2MxZGExYTkwOGZlNWUyNzExMTFlNWJkLi45NTkzMWYzNmU0
YmNiYWU1MzAxM2U0NGM1MmYwMjI4OWU0ZTQ0NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBA
CisyMDIwLTA3LTMxICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgor
CisgICAgICAgIENyZWF0ZSBhbiBBUFBfQk9VTkRfRE9NQUlOUyBlbmFibGUgbWFjcm8KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTAyNworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjM2ODgyMzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBleGlzdGluZyBJT1NfRkFNSUxZIHBsYXRmb3Jt
IGNoZWNrcyB3aXRoIGEgbmV3CisgICAgICAgIEFQUF9CT1VORF9ET01BSU5TIG1hY3JvLiBBZGRp
dGlvbmFsbHksIG1hbnkgYXBwLWJvdW5kIGRvbWFpbnMgY29kZQorICAgICAgICBjaGVja2VkIGZv
ciBjb2NvYSBwbGF0Zm9ybXMsIGJ1dCB0aGlzIGNhbiBiZSBtb3JlIHNwZWNpZmljYWxseQorICAg
ICAgICBjb21waWxlZCB1c2luZyB0aGUgQVBQX0JPVU5EX0RPTUFJTlMgbWFjcm8uCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2spOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcDoKKyAgICAgICAg
KEFQSTo6SFRUUENvb2tpZVN0b3JlOjpmaWx0ZXJBcHBCb3VuZENvb2tpZXMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcpOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBcHBCb3VuZFNlc3Npb24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0
b3JlUmVpbml0aWFsaXplQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIF9hcHBCb3VuZERvbWFpbnM6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBf
YXBwQm91bmRTY2hlbWVzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpn
ZXRBcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hl
Y2tJZlBlcm1pdHRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzYWJsZVNl
cnZpY2VXb3JrZXJFbnRpdGxlbWVudEluTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBsYXRm
b3JtSW5pdGlhbGl6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0
ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVuYW1lT3JpZ2luSW5X
ZWJzaXRlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaDoKKwogMjAyMC0wNy0zMSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkIENhdGFseXN0IGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUVuYWJsZS5oCmluZGV4IDUxNGUyMjRkODI1N2NhODI0NmVmMTM5OWJhZTI2MDliMWIxMWFmZjUu
LjlhODJkMzIyMGUzNjc2MTcwNTUzYTU1ZTE2YjE3YjkxNzVhZTNmYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZv
cm1FbmFibGUuaApAQCAtMTkzLDYgKzE5MywxMCBAQAogI2RlZmluZSBFTkFCTEVfQVBORyAxCiAj
ZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9BUFBfQk9VTkRfRE9NQUlOUykKKyNkZWZpbmUg
RU5BQkxFX0FQUF9CT1VORF9ET01BSU5TIDAKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKQogI2RlZmluZSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgMQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgKaW5kZXggYjcxZDQ0MzIwNzMz
OTlhYjRhMTJlMGUxMDg1NTkzMmZmYTI5MDhiYy4uZTY0ZDY1ZjVlMDIyOGFiYTkzNTJhZjYyYThi
YzgzNTMzYWFhYWMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVD
b2NvYS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaApAQCAtNzUs
NiArNzUsMTAgQEAKICNkZWZpbmUgRU5BQkxFX0FQUExJQ0FUSU9OX01BTklGRVNUIDEKICNlbmRp
ZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0FQUF9CT1VORF9ET01BSU5TKSAmJiBQTEFURk9STShJ
T1NfRkFNSUxZKQorI2RlZmluZSBFTkFCTEVfQVBQX0JPVU5EX0RPTUFJTlMgMQorI2VuZGlmCisK
ICNpZiAhZGVmaW5lZChFTkFCTEVfQVNZTkNfU0NST0xMSU5HKQogI2RlZmluZSBFTkFCTEVfQVNZ
TkNfU0NST0xMSU5HIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDkzMWI5NTYzYmY1
YzcyNTI5MTRkZjBkMTUyNWYwZjY4OWZjZDQ0M2IuLmExN2M4YTcyYzI1MjZlNGU4NGM3MzAwYmU2
MGVmNzFlMWRhODg5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTEzMjYsNyArMTMyNiw3IEBA
IFNlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRh
c2soY29uc3QgV2ViQ29yZTo6UmVzb3VyCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKICAgICBpZiAoc2hvdWxkQmVDb25zaWRlcmVkQXBwQm91bmQgPT0gTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW46OlllcykKICAgICAgICAgcmV0dXJuIGFwcEJvdW5kU2Vzc2lvbihz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKaW5kZXggYTZlMTU5MWU1NTA0OWQy
OWU3NzYxNDE5YWEzMThkZjAwYTQ3Nzk4Yy4uMDRkNDY3OGMxNWNkYzdkYzVlMmM1YmE0M2JmOGVm
YWZhMzRkY2VlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgSFRUUENvb2tpZVN0b3JlOjp+SFRU
UENvb2tpZVN0b3JlKCkKIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpmaWx0ZXJBcHBCb3VuZENvb2tp
ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gYXBwQm91bmRDb29raWVzOwotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIG1f
b3duaW5nRGF0YVN0b3JlLT5nZXRBcHBCb3VuZERvbWFpbnMoW2Nvb2tpZXMsIGFwcEJvdW5kQ29v
a2llcyA9IFdURk1vdmUoYXBwQm91bmRDb29raWVzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mIGRvbWFpbnMpIG11dGFibGUgewogICAgICAg
ICBpZiAoIWRvbWFpbnMuaXNFbXB0eSgpICYmICFpc0Z1bGxXZWJCcm93c2VyKCkpIHsKICAgICAg
ICAgICAgIGZvciAoYXV0byYgY29va2llIDogY29va2llcykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXgg
ODAwZTc1NDllYTE3OTZmM2U3ZGIxMzVkNmIxNzA0ZDBkOGZiOTYzZC4uZGY3N2IzYzAwODllMmZh
MjJjZjM3YWY1MDRkNzkyZDhiZTc2NGUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC01NzksOSArNTc5
LDExIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lv
bihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
SGFzQXBwQm91bmRTZXNzaW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vzc2lvbkZ1bmN0aW9u
IGNhbGxiYWNrKQogeworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5oYXNBcHBCb3VuZFNlc3Npb24oW2NvbnRleHQsIGNhbGxi
YWNrXShib29sIGhhc0FwcEJvdW5kU2Vzc2lvbikgewogICAgICAgICBjYWxsYmFjayhoYXNBcHBC
b3VuZFNlc3Npb24sIGNvbnRleHQpOwogICAgIH0pOworI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVy
cmVyRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVu
YWJsZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0
aW9uSGFuZGxlcikKQEAgLTYzMCw3ICs2MzIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rpbgog
CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoV0tB
cnJheVJlZiBvcmlnaW5VUkxzUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAg
IFJlZlB0cjxBUEk6OkFycmF5PiBvcmlnaW5VUkxzQXJyYXkgPSB0b0ltcGwob3JpZ2luVVJMc1Jl
Zik7CiAgICAgc2l6ZV90IG5ld1NpemUgPSBvcmlnaW5VUkxzQXJyYXkgPyBvcmlnaW5VUkxzQXJy
YXktPnNpemUoKSA6IDA7CiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
ZG9tYWluczsKQEAgLTc5MywxNSArNzk1LDIyIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVz
ZXRRdW90YShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250CiAK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBcHBCb3VuZFNlc3Npb24oV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
Q2xlYXJBcHBCb3VuZFNlc3Npb25GdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyNpZiBF
TkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+Y2xlYXJBcHBCb3VuZFNlc3Npb24oW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oZGF0YVN0b3JlUmVmKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0
KTsKKyNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlaW5pdGlhbGl6ZUFwcEJv
dW5kRG9tYWlucyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKQogewotI2lmIFBM
QVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZWluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKGRhdGFTdG9yZVJlZik7CiAjZW5kaWYKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0KaW5kZXggMmI1YmVhNWExYTIyODBkYzgxMDg2M2Y0OWNjOThmYTNkYTQ2OWUwZC4uYjM5
YWNkMzFmZThmZmJlMjg2OWIyZGUyNTAxNjI5NDFiNDgzZjNjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBA
IC02MzMsNiArNjMzLDcgQEAgLSAoX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKilf
Y29uZmlndXJhdGlvbgogCiAtICh2b2lkKV9hcHBCb3VuZERvbWFpbnM6KHZvaWQgKF4pKE5TQXJy
YXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyNpZiBFTkFCTEUoQVBQX0JP
VU5EX0RPTUFJTlMpCiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmdldEFwcEJvdW5kRG9tYWlucyhb
Y29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRv
JiBkb21haW5zKSBtdXRhYmxlIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+
IGFwaURvbWFpbnM7CiAgICAgICAgIGFwaURvbWFpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShk
b21haW5zLnNpemUoKSk7CkBAIC02NDAsMTAgKzY0MSwxNCBAQCAtICh2b2lkKV9hcHBCb3VuZERv
bWFpbnM6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXIK
ICAgICAgICAgICAgIGFwaURvbWFpbnMudW5jaGVja2VkQXBwZW5kKEFQSTo6U3RyaW5nOjpjcmVh
dGUoZG9tYWluLnN0cmluZygpKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIo
QVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXBpRG9tYWlucykpKSk7CiAgICAgfSk7CisjZWxz
ZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisjZW5kaWYKIH0KIAogLSAodm9pZClfYXBw
Qm91bmRTY2hlbWVzOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRpb25I
YW5kbGVyCiB7CisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT5nZXRBcHBCb3VuZFNjaGVtZXMoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYgc2NoZW1lcykgbXV0YWJsZSB7CiAgICAgICAg
IFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlTY2hlbWVzOwogICAgICAgICBhcGlTY2hl
bWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2NoZW1lcy5zaXplKCkpOwpAQCAtNjUxLDYgKzY1
Niw5IEBAIC0gKHZvaWQpX2FwcEJvdW5kU2NoZW1lczoodm9pZCAoXikoTlNBcnJheTxOU1N0cmlu
ZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgogICAgICAgICAgICAgYXBpU2NoZW1lcy51bmNoZWNr
ZWRBcHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShzY2hlbWUpKTsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIod3JhcHBlcihBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcGlTY2hlbWVzKSkp
KTsKICAgICB9KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyNlbmRpZgog
fQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyMjdjNWRjNGJjZDZmZDJjNTUyOTczMDljNmYz
ZTJhOGY4YThmMjdiLi40ZmIzOTdmNjc0YzhiYmM2YTZjNTFhZGFhMTE5OTliMzk3NTc5NDExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKQEAgLTE1NTAsNyArMTU1MCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6Y2xlYXJBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bGV0CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0QXBwQm91bmREb21haW5zKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBp
ZiAoYXV0byogc3RvcmUgPSB3ZWJzaXRlRGF0YVN0b3JlRnJvbVNlc3Npb25JRChzZXNzaW9uSUQp
KSB7CiAgICAgICAgIHN0b3JlLT5nZXRBcHBCb3VuZERvbWFpbnMoW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiBhcHBCb3VuZERvbWFpbnMpIG11
dGFibGUgewogICAgICAgICAgICAgYXV0byBhcHBCb3VuZERvbWFpbnNDb3B5ID0gYXBwQm91bmRE
b21haW5zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMDc3
MGIxMzFhMTBjYzZkMzk0MTNjYTgwNWIyYTBlMTczNWQzODhmNy4uYzk5NmRhMTNhN2I2YTY5MWQ5
MTkwZDU2YzJhMTQ3OTY0MmYxM2Y2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC00ODgsNyArNDg4LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHko
UGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKICAg
ICAsIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAm
V2ViUGFnZVByb3h5OjpyZXNldFJlY2VudENyYXNoQ291bnQpCiAgICAgLCBtX3RyeUNsb3NlVGlt
ZW91dFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2VQcm94eTo6dHJ5Q2xvc2VU
aW1lZE91dCkKICAgICAsIG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zKG1fY29uZmlndXJhdGlvbi0+
Y29yc0Rpc2FibGluZ1BhdHRlcm5zKCkpCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxF
KEFQUF9CT1VORF9ET01BSU5TKQogICAgICwgbV9pZ25vcmVzQXBwQm91bmREb21haW5zKG1fY29u
ZmlndXJhdGlvbi0+aWdub3Jlc0FwcEJvdW5kRG9tYWlucygpKQogICAgICwgbV9saW1pdHNOYXZp
Z2F0aW9uc1RvQXBwQm91bmREb21haW5zKG1fY29uZmlndXJhdGlvbi0+bGltaXRzTmF2aWdhdGlv
bnNUb0FwcEJvdW5kRG9tYWlucygpKQogI2VuZGlmCkBAIC0xMzkyLDcgKzEzOTIsNyBAQCBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZGF0YSwgYwogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxvYWREYXRhOiIpOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYgKE1JTUVUeXBlID09ICJ0ZXh0L2h0bWwiX3MgJiYg
IWlzRnVsbFdlYkJyb3dzZXIoKSkKICAgICAgICAgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zID0gdHJ1ZTsKICNlbmRpZgpAQCAtMzEyNSw3ICszMTI1LDcgQEAgcHJpdmF0ZToK
ICAgICBQb2xpY3lDaGVja0lkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogc3RhdGljIGJv
b2wgc2hvdWxkVHJlYXRVUkxQcm90b2NvbEFzQXBwQm91bmQoY29uc3QgVVJMJiByZXF1ZXN0VVJM
KQogewogICAgIHJldHVybiByZXF1ZXN0VVJMLnByb3RvY29sSXNBYm91dCgpIHx8IHJlcXVlc3RV
UkwucHJvdG9jb2xJc0RhdGEoKSB8fCByZXF1ZXN0VVJMLnByb3RvY29sSXNCbG9iKCkgfHwgcmVx
dWVzdFVSTC5pc0xvY2FsRmlsZSgpIHx8IHJlcXVlc3RVUkwucHJvdG9jb2xJc0phdmFTY3JpcHQo
KTsKQEAgLTMxMzQsNyArMzEzNCw3IEBAIHN0YXRpYyBib29sIHNob3VsZFRyZWF0VVJMUHJvdG9j
b2xBc0FwcEJvdW5kKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCkKIAogYm9vbCBXZWJQYWdlUHJveHk6
OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5BbmRDaGVja0lmUGVybWl0dGVkKGJvb2wg
aXNNYWluRnJhbWUsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7Ci0jaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYg
KGlzRnVsbFdlYkJyb3dzZXIoKSkgewogICAgICAgICBpZiAoaGFzUHJvaGliaXRlZFVzYWdlU3Ry
aW5ncygpKQogICAgICAgICAgICAgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vOwpAQCAtMzE4OCw3ICszMTg4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmlzRm9yY2VkSW50b0FwcEJvdW5kTW9kZVRlc3RpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpc2FibGVTZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnRJbk5ldHdvcmtQcm9jZXNzKCkKIHsKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01B
SU5TKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9j
ZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLm5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAg
ICAgaWYgKCFuZXR3b3JrUHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTMxOTksNyArMzE5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNhYmxlU2Vy
dmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3JrUHJvY2VzcygpCiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01B
SU5TKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhclNlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7
CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgp
Lm5ldHdvcmtQcm9jZXNzKCkpIHsKQEAgLTUxNzksNyArNTE3OSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzCiAgICAgICAgIHNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCA9IFNob3Vs
ZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm87CiAKICAgICBTaG91bGRFeHBlY3RBcHBCb3Vu
ZERvbWFpblJlc3VsdCBzaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdCA9IFNob3VsZEV4
cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpObzsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBzaG91bGRFeHBlY3RBcHBCb3VuZERv
bWFpblJlc3VsdCA9IFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpZZXM7CiAjZW5k
aWYKICAgICAKQEAgLTUxOTgsNyArNTE5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAg
ICAgICAgICAgICByZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24s
IG5hdmlnYXRpb24uZ2V0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIGZyYW1lLCBX
VEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShzZW5kZXIpKTsKICAgICAgICAgfTsKIAotI2lmIFBM
QVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICAgICAgaWYg
KHBvbGljeUFjdGlvbiAhPSBQb2xpY3lBY3Rpb246Oklnbm9yZSkgewogICAgICAgICAgICAgaWYg
KCFzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hlY2tJZlBlcm1pdHRlZChmcmFt
ZS0+aXNNYWluRnJhbWUoKSwgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgaXNB
cHBCb3VuZERvbWFpbikpIHsKICAgICAgICAgICAgICAgICBhdXRvIGVycm9yID0gZXJyb3JGb3JV
bnBlcm1pdHRlZEFwcEJvdW5kRG9tYWluTmF2aWdhdGlvbihuYXZpZ2F0aW9uLT5jdXJyZW50UmVx
dWVzdCgpLnVybCgpKTsKQEAgLTUyNTYsNyArNTI1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzCiAgICAgfSwgc2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0LCBzaG91bGRFeHBlY3RB
cHBCb3VuZERvbWFpblJlc3VsdCkpOwogICAgIGlmIChzaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdS
ZXN1bHQgPT0gU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpZZXMpCiAgICAgICAgIGJl
Z2luU2FmZUJyb3dzaW5nQ2hlY2socmVxdWVzdC51cmwoKSwgZnJhbWUuaXNNYWluRnJhbWUoKSwg
bGlzdGVuZXIpOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgRU5BQkxFKEFQUF9CT1VO
RF9ET01BSU5TKQogICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+YmVnaW5BcHBCb3VuZERvbWFpbkNo
ZWNrKHJlcXVlc3QudXJsKCksIGxpc3RlbmVyKTsKICNlbmRpZgogICAgIEFQSTo6TmF2aWdhdGlv
biogbWFpbkZyYW1lTmF2aWdhdGlvbiA9IGZyYW1lLmlzTWFpbkZyYW1lKCkgPyBuYXZpZ2F0aW9u
LmdldCgpIDogbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRl
eCBmYjNiMjFmZDkzNjI4YTM0YWUzZDRkZWNmZDRlNzk3Y2Y2NTMxZjY1Li5kMThmOThhNzIwYTQ5
N2JjNDliYjVkN2MwZWJkYmRjOGVlZjk2ZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tCkBAIC02MywxMSArNjMsMTMgQEAgc3RhdGljIEhhc2hTZXQ8V2Vic2l0ZURhdGFT
dG9yZSo+JiBkYXRhU3RvcmVzKCkKIAogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0TmV0
d29ya0xvYWRUaHJvdHRsZUxhdGVuY3lNaWxsaXNlY29uZHNEZWZhdWx0c0tleSA9IEAiV2ViS2l0
TmV0d29ya0xvYWRUaHJvdHRsZUxhdGVuY3lNaWxsaXNlY29uZHMiOwogCisjaWYgRU5BQkxFKEFQ
UF9CT1VORF9ET01BSU5TKQogc3RhdGljIFdvcmtRdWV1ZSYgYXBwQm91bmREb21haW5RdWV1ZSgp
CiB7CiAgICAgc3RhdGljIGF1dG8mIHF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBs
ZS5XZWJLaXQuQXBwQm91bmREb21haW5zIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwpLmxlYWtS
ZWYoKTsKICAgICByZXR1cm4gcXVldWU7CiB9CisjZW5kaWYKIAogc3RhdGljIHN0ZDo6YXRvbWlj
PGJvb2w+IGhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5zID0gZmFsc2U7CiBzdGF0aWMgc3Rk
OjphdG9taWM8Ym9vbD4ga2V5RXhpc3RzID0gZmFsc2U7CkBAIC0yMTUsOCArMjE3LDkgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewogICAgIEFTU0VSVCgh
ZGF0YVN0b3JlcygpLmNvbnRhaW5zKHRoaXMpKTsKICAgICBkYXRhU3RvcmVzKCkuYWRkKHRoaXMp
OwotCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGluaXRpYWxpemVBcHBCb3Vu
ZERvbWFpbnMoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3Jt
RGVzdHJveSgpCkBAIC0zOTMsNiArMzk2LDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QKICAg
ICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwog
fQogCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogc3RhdGljIEhhc2hTZXQ8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+JiBhcHBCb3VuZERvbWFpbnMoKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CkBAIC01NTgsNSArNTYyLDYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpyZWluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoKQogICAgIGhhc0luaXRpYWxpemVkQXBw
Qm91bmREb21haW5zID0gZmFsc2U7CiAgICAgaW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyhGb3Jj
ZVJlaW5pdGlhbGl6YXRpb246Olllcyk7CiB9CisjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApp
bmRleCAxZGFhYzU0MDIwNTgxZjdhYTdmODE5YjRiNDUwMmNlNmM3OThiODkyLi5hMWI0ODNiOTRk
MjJiMTRlNTJhNTYwY2Y2YjhkYTM3OGUzOWFhZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMjI2
Miw3ICsyMjYyLDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9y
ZTo6cGFyYW1ldGVycygpCiAgICAgYXV0byBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29r
aWVzOwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlv
bkRvbWFpbjsKICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3Vu
ZERvbWFpbnM7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01B
SU5TKQogICAgIGlmIChpc0FwcEJvdW5kSVRQUmVsYXhhdGlvbkVuYWJsZWQpCiAgICAgICAgIGFw
cEJvdW5kRG9tYWlucyA9IGFwcEJvdW5kRG9tYWluc0lmSW5pdGlhbGl6ZWQoKS52YWx1ZU9yKEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHsgfSk7CiAjZW5kaWYKQEAgLTI0Mzcs
NiArMjQzNywxOCBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNl
SWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIH0KICNlbmRpZgogCit2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoVVJMJiYgb2xkTmFtZSwgVVJMJiYg
bmV3TmFtZSwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29s
OjphbGxQcm9jZXNzUG9vbHMoKSkgeworICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3Mg
PSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICAgICAgbmV0d29ya1By
b2Nlc3MtPmFkZFNlc3Npb24oKnRoaXMpOworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnJl
bmFtZU9yaWdpbkluV2Vic2l0ZURhdGEobV9zZXNzaW9uSUQsIG9sZE5hbWUsIG5ld05hbWUsIGRh
dGFUeXBlcywgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICAgICAgfQorICAgIH0KK30K
KworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
aGFzQXBwQm91bmRTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nl
c3NQb29scygpKSB7CkBAIC0yNDU4LDE4ICsyNDcwLDYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpjbGVhckFwcEJvdW5kU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGkKICAgICB9CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVuYW1lT3JpZ2luSW5XZWJz
aXRlRGF0YShVUkwmJiBvbGROYW1lLCBVUkwmJiBuZXdOYW1lLCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiBkYXRhVHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKLXsKLSAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVn
YXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBmb3IgKGF1dG8m
IHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKSB7Ci0gICAg
ICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vz
cygpKSB7Ci0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+YWRkU2Vzc2lvbigqdGhpcyk7Ci0g
ICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShtX3Nl
c3Npb25JRCwgb2xkTmFtZSwgbmV3TmFtZSwgZGF0YVR5cGVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9y
XSB7IH0pOwotICAgICAgICB9Ci0gICAgfQotfQotCi0jaWYgUExBVEZPUk0oQ09DT0EpCiB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OmZvcndhcmRBcHBCb3VuZERvbWFpbnNUb0lUUElmSW5pdGlhbGl6
ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDBhN2Y4M2QyYjdkYzYz
NTM4Yzg1Nzg4MDBlNjE3YWZmYzVkM2YxOWQuLjg5NDk4Y2U0OTUwMDE2MWU5NmQ2YzdhMzdkOTUx
NWZlNDc5NTFjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTI5NywxNSArMjk3LDE3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBodHRwM0VuYWJsZWQoKTsKIAogICAgIHZvaWQgcmVzZXRRdW90YShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01B
SU5TKQogICAgIHZvaWQgaGFzQXBwQm91bmRTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJBcHBCb3VuZFNlc3Npb24oQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKLQogICAgIHZvaWQgYmVnaW5BcHBCb3VuZERvbWFpbkNoZWNr
KGNvbnN0IFVSTCYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOwogICAgIHZvaWQgZ2V0
QXBwQm91bmREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mKT4mJikgY29uc3Q7CiAgICAgdm9pZCBnZXRBcHBCb3Vu
ZFNjaGVtZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFN0cmluZz4mKT4m
JikgY29uc3Q7CiAgICAgdm9pZCBlbnN1cmVBcHBCb3VuZERvbWFpbnMoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYsIGNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYpPiYmKSBjb25zdDsKICAgICB2b2lkIHJlaW5pdGlhbGl6ZUFwcEJv
dW5kRG9tYWlucygpOwogICAgIHN0YXRpYyB2b2lkIHNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3Rp
bmcoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyNlbmRpZgogICAgIHZvaWQgdXBkYXRlQnVuZGxlSWRlbnRpZmllcklu
TmV0d29ya1Byb2Nlc3MoY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIGNsZWFyQnVuZGxlSWRlbnRpZmllckluTmV0d29ya1Byb2Nlc3MoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICAKQEAgLTM0NCw3ICszNDYsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBtYXliZVJlZ2lzdGVyV2l0aFNlc3Npb25JRE1hcCgpOwogCi0jaWYgUExB
VEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHN0YXRpYyBP
cHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gYXBwQm91bmREb21h
aW5zSWZJbml0aWFsaXplZCgpOwogICAgIGNvbnN0ZXhwciBzdGF0aWMgY29uc3Qgc3RkOjphdG9t
aWM8Ym9vbD4gaXNBcHBCb3VuZElUUFJlbGF4YXRpb25FbmFibGVkID0gZmFsc2U7CiAgICAgc3Rh
dGljIHZvaWQgZm9yd2FyZEFwcEJvdW5kRG9tYWluc1RvSVRQSWZJbml0aWFsaXplZChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGFjYWU2MjI4NTEzNjdhN2U2MGZiYTE0ZTRkMzNjOGEwMjI2OTk4
YzYuLjA2ZDBiOTgwNzZkNDIxMDQxNzE4ODIwMmZmZWZhYWFmYzBjNmZhYTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAyMC0wNy0zMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKwor
ICAgICAgICBDcmVhdGUgYW4gQVBQX0JPVU5EX0RPTUFJTlMtc3BlY2lmaWMgZW5hYmxlIG1hY3Jv
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUwMjcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzNjg4MjMyPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgY2hlY2sgZm9yIElPU19GQU1JTFkg
d2l0aCBtb3JlIGFwdGx5IG5hbWVkIEFQUF9CT1VORF9ET01BSU5TCisgICAgICAgIG1hY3JvLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQ
cml2YWN5Lm1tOgorCiAyMDIwLTA3LTMxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxl
LmNvbT4KIAogICAgICAgICBbd2Via2l0Y29yZXB5XSBDaGFuZ2VzIHRvIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzIHNob3VsZCB0cmlnZ2VyIEVXUwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4
IDM2OWZmZTUyMzE4ZTA3NGIwZjQ0ZjFjZDA2MzZlMzg5OTZkMzE3MzQuLjc4NGFmYTZjODVjNDhk
ZGQ3MzczZjMyNjEzNWRiNzI4MThkZGQ2ZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAg
LTQzLDcgKzQzLDcgQEAKICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgRU5BQkxFKEFQ
UF9CT1VORF9ET01BSU5TKQogCiBzdGF0aWMgYm9vbCBpc0RvbmU7CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyMTNjYTZl
MTliNzFkYzlmN2Y1YTEwOTZiMjJkMTI0OGQ2OWI0ZGI0Li4zM2JlNDgxYjdmYTI3NjA2ZDU2NjE2
NjRiMjBlNjBmZDhiMzcxYmI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDctMzEgIEth
dGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRl
IGFuIEFQUF9CT1VORF9ET01BSU5TIGVuYWJsZSBtYWNybworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MDI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82MzY4ODIzMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGVzZSB0ZXN0cyBzaG91bGQgYmUgc2tpcHBlZCBvbiBtYWMtd2syIGJlY2F1c2UgQXBw
IEJvdW5kIERvbWFpbnMKKyAgICAgICAgaXMgYW4gaU9TIGZlYXR1cmUgb25seS4KKworICAgICAg
ICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0wNy0zMCAgTGF1
cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIEdhcmRl
biB0aHJlZSBwZXJzaXN0ZW50IGZhaWx1cmVzIGZyb20gZ3RrIHJlbGVhc2UgYm90LgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDc4ZjgzYjU2
OTQ0YmE3YmIxMTBkODVjMDlmOTIzNTg0Yjc4M2RiZjkuLmExYTRlNzMyOWRjOTAzY2M1NmVkMmY3
YzcyZjQ2MmVjZTk4YWI4NTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTEwODYsNCArMTA4Niw3IEBAIHdlYmtpdC5vcmcvYi8yMTQ2ODIg
WyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20vc3R5
bGVzCiAKIHdlYmtpdC5vcmcvYi8yMTQ2ODMgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNoYW5nZXR5cGUtcGxheS1pbXBs
aWNpdC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIxNDgyNCBbIERlYnVn
IF0ganMvdGhyb3ctbGFyZ2Utc3RyaW5nLW9vbS5odG1sIFsgU2tpcCBdClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQord2Via2l0Lm9yZy9iLzIxNDgyNCBbIERlYnVnIF0ganMvdGhyb3ctbGFy
Z2Utc3RyaW5nLW9vbS5odG1sIFsgU2tpcCBdCisKKyMgQXBwIEJvdW5kIERvbWFpbnMgaXMgZm9y
IGlPUyBvbmx5IAoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFp
bnMvIFsgU2tpcCBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408372</attachid>
            <date>2020-09-09 15:19:53 -0700</date>
            <delta_ts>2020-09-09 15:23:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215027-20200909151953.patch</filename>
            <type>text/plain</type>
            <size>92952</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRmYmM0OTU3ODk3NDRhNWNiNmFmYzFi
ZDBmY2FjZmQ2NGMwYzVjZTQuLmFmNDU0OWZmNDhmZjFkYjg5ZjliNjQxMmQwYjMwNDQ0ZTM4Y2Qy
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDktMDkgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgQXBwLUJvdW5kIERvbWFp
bnMgY29kZSB0byBvbmx5IGNvbXBpbGUgZm9yIGlPUyB3aXRoIGl0cyBvd24gbWFjcm8KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTAyNworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjM2ODgyMzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRGVmaW5lIGEgbmV3IEFQUF9CT1VORF9ET01BSU5TIHByZXBy
b2Nlc3NvciBtYWNybyB0byBtb3JlIGFwdGx5IGdhdGUKKyAgICAgICAgQXBwIEJvdW5kIERvbWFp
bnMgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAgICAgICAg
KiB3dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oOgorCiAyMDIwLTA5LTA2ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgQ29tcGFjdFVuaXF1ZVB0clR1cGxl
IGFjdHVhbGx5IHdvcmsgd2l0aCBzdWJjbGFzc2luZyBhbmQgY3VzdG9tIGRlbGV0ZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBkYTk0M2FjNWRlNDRlYTEzNGI0MzllNzcwYjcxNTAyYzkzMGE0NzlmLi5kYzY1Yzcy
NGM2YWI5ZGU3ZTFkZmYyYTBjNjVmZDg2YjE3MzgzMjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzMgQEAKKzIwMjAtMDktMDkgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5j
b20+CisKKyAgICAgICAgQ2xlYW4gdXAgQXBwLUJvdW5kIERvbWFpbnMgY29kZSB0byBvbmx5IGNv
bXBpbGUgZm9yIGlPUyB3aXRoIGl0cyBvd24gbWFjcm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTAyNworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjM2ODgyMzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQXBwLUJvdW5kIERvbWFpbnMgY29kZSBzaG91bGQgb25seSBiZSBjb21waWxlZCBhbmQgcnVu
IG9uIGlPUy4KKyAgICAgICAgVGhpcyBwYXRjaCB3cmFwcyBhbnkgQXBwLUJvdW5kIERvbWFpbnMg
Y29kZSBpbiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKSwKKyAgICAgICAgd2hpY2ggaXMg
ZXF1YWwgdG8gSU9TX0ZBTUlMWSwgbWFraW5nIHN1cmUgd2UgZG9uJ3QgZXhlY3V0ZSBvciBjb21w
aWxlIAorICAgICAgICB0aGUgY29kZSB1bm5lY2Vzc2FyaWx5IG9uIG1hY09TLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgYmVoYXZpb3Igc2hvdWxkIG5vdCBjaGFuZ2Ugc28gdGVzdGluZyBpcyBj
b3ZlcmVkIGJ5CisgICAgICAgIGFsbCBleGlzdGluZyBBcHAtQm91bmQgRG9tYWlucyBsYXlvdXQg
YW5kIEFQSSB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElu
V29ybGQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJTY3Jp
cHRJbW1lZGlhdGVseSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OmluamVjdFVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL1dlYktpdE5h
bWVzcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lc3BhY2U6Om1lc3NhZ2VI
YW5kbGVycyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpTY29wZVJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKToKKwogMjAy
MC0wOS0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYklE
TF0gQWRkIHN1cHBvcnQgZm9yIHBhcnRpYWwgaW50ZXJmYWNlIG1peGlucwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAw
MzhhYmExOWVlYzBjM2M5MTZmOTRmNzJmZjMwZmNlNWQ5MjE1MzhhLi44YjA5NzY5NjdhNDdjZjhh
OTIxY2ZjZTBmNThiZmI4ODM5OTVmYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNSBAQAorMjAy
MC0wOS0wOSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAg
ICAgICBDbGVhbiB1cCBBcHAtQm91bmQgRG9tYWlucyBjb2RlIHRvIG9ubHkgY29tcGlsZSBmb3Ig
aU9TIHdpdGggaXRzIG93biBtYWNybworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1MDI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzY4ODIzMj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHAtYm91
bmQgZG9tYWlucyBjb2RlIHNob3VsZCBvbmx5IGJlIGNvbXBpbGVkIG9uIGlPUywgc28gdGhpcyBw
YXRjaAorICAgICAgICBhZGRzIGFkZGl0aW9uYWwgJyNpZiBFTkFCTEUoKScgY2hlY2tzIHRvIGVu
c3VyZSB0aGF0LiBBZGRpdGlvbmFsbHksCisgICAgICAgIGZvciBjbGFyaXR5IHRoaXMgcGF0Y2gg
Y3JlYXRlcyBhIG5ldyBBUFBfQk9VTkRfRE9NQUlOUyBtYWNybyBhbmQKKyAgICAgICAgcmVwbGFj
ZXMgZXhpc3RpbmcgSU9TX0ZBTUlMWSBjaGVja3MgZm9yIEFwcC1Cb3VuZCBEb21haW5zIGNvZGUg
d2l0aAorICAgICAgICB0aGlzIG5ldyBtYWNyby4KKworICAgICAgICBMb2FkUGFyYW1ldGVycywg
UG9saWN5RGVjaXNpb24gYW5kIFdLUHJlZmVyZW5jZXMgd2lsbCBiZSBpbiBhbm90aGVyCisgICAg
ICAgIHBhdGNoLCB0aGlzIG9uZSBpcyBodWdlIGFscmVhZHkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBiZWhhdmlvciBzaG91bGQgbm90IGNoYW5nZSBzbyB0ZXN0aW5nIGlzIGNvdmVyZWQgYnkK
KyAgICAgICAgYWxsIGV4aXN0aW5nIEFwcC1Cb3VuZCBEb21haW5zIGxheW91dCBhbmQgQVBJIHRl
c3RzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc2V0UGFyYW1ldGVyc1Rv
RGVmYXVsdFZhbHVlcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzd1Nl
cnZlckZvclNlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayk6CisgICAg
ICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElIVFRQQ29va2llU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6
OmZpbHRlckFwcEJvdW5kQ29va2llcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdl
Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjb3B5
IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6
CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjppZ25vcmVzQXBwQm91bmREb21haW5z
IGNvbnN0KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldElnbm9yZXNBcHBC
b3VuZERvbWFpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9u
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3Rp
bmcpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBcHBCb3VuZFNlc3Npb24pOgor
ICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVpbml0aWFsaXplQXBwQm91bmREb21haW5zKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOl0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX2lzRm9yY2VkSW50b0FwcEJvdW5kTW9kZTpdKTogRGVsZXRlZC4K
KyAgICAgICAgTW92ZWQgdG8gV0tXZWJWaWV3SU9TLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnNdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRMaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9pZ25vcmVz
QXBwQm91bmREb21haW5zXSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Nl
dElnbm9yZXNBcHBCb3VuZERvbWFpbnM6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICBNb3ZlZCBBcHAtQm91
bmQgRG9tYWluIGZ1bmN0aW9ucyB0byB0aGUgcGFydCBvZiB0aGUgZmlsZSB0aGF0IG9ubHkgY29t
cGlsZXMKKyAgICAgICAgb24gaU9TIGFuZCByZW1vdmVkIG1hY29zIHRhZ3MgZm9yIFdLX0FQSV9B
VkFJTEFCTEUsIGJlY2F1c2UgYm90aCB0aGUKKyAgICAgICAgQVBJIGFuZCBTUEkgYXJlIGlPUyBv
bmx5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6
CisgICAgICAgIE1vdmVkIEFwcC1Cb3VuZCBEb21haW4gZnVuY3Rpb25zIHRvIHRoZSBwYXJ0IG9m
IHRoZSBmaWxlIHRoYXQgb25seSBjb21waWxlcyBvbiBpT1MuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfYXBwQm91bmREb21haW5zOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3Rv
cmUgX2FwcEJvdW5kU2NoZW1lczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dl
YlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pc0ZvcmNlZEludG9BcHBCb3VuZE1v
ZGU6XSk6CisgICAgICAgIE1vdmVkIHRoZXNlIGZyb20gV0tXZWJWaWV3LgorCisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdldEFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpzaG91bGRUcmVhdFVSTFByb3RvY29sQXNB
cHBCb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRJbk5ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbGVhclNlcnZpY2VXb3JrZXJF
bnRpdGxlbWVudE92ZXJyaWRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwcmVj
b25uZWN0VG8pOgorICAgICAgICBOb3cgdGhhdCBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4gaXMgaU9TIG9ubHksIEkgY2hhbmdlZCBXZWJQYWdlUHJveHk6OnByZWNvbm5lY3RUbyAKKyAg
ICAgICAgdG8gY2FsbCB0aGUgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGZ1bmN0aW9u
LCB3aGljaCBpcyBhdmFpbGFibGUKKyAgICAgICAgb24gYWxsIHBsYXRmb3JtcyBidXQgcmV0dXJu
cyBXVEY6Om51bGxvcHQgdW5sZXNzIHRoZSBwbGF0Zm9ybSBpcyBpT1MuCisKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojppc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGNvbnN0KToKKyAgICAgICAgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGlzIHVzZWQgdmVyeSBmcmVxdWVudGx5LCBpdCBpcyBj
bGVhbmVyCisgICAgICAgIHRvIGhhdmUgdHdvIGZ1bmN0aW9ucyAtLSBvbmUgZm9yIGlPUyB3aGlj
aCByZXR1cm5zIHRoZSBhY3R1YWwgdmFsdWUKKyAgICAgICAgYW5kIG9uZSBmb3Igbm9uLWlPUyBw
bGF0Zm9ybXMgd2hpY2ggcmV0dXJucyBXVEY6Om51bGxvcHQgLS0gcmF0aGVyCisgICAgICAgIHRo
YW4gaGF2ZSAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU4pIGNoZWNrcyBldmVyeXdoZXJlLiAK
KworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
YXBwQm91bmREb21haW5RdWV1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpw
YXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVuYW1lT3Jp
Z2luSW5XZWJzaXRlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVM
b2FkRnJvbU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRl
Z3k6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2Fk
ZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0
cmF0ZWd5OjpwcmVjb25uZWN0VG8pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxv
YWRlckNsaWVudDo6c2VuZEgyUGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjptX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omxv
YWREYXRhSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgIE9ubHkg
Y2hlY2sgZm9yIHRoZSBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgZmxhZyBp
ZiB0aGUKKyAgICAgICAgcGxhdGZvcm0gaXMgaU9TLiBPdGhlcndpc2UgaXQgc2hvdWxkIGFsd2F5
cyBiZSBmYWxzZSwgYmVjYXVzZSBpdCB3aWxsCisgICAgICAgIG5ldmVyIGJlIGVuYWJsZWQgb24g
YSBub24taU9TIHBsYXRmb3JtLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKwogMjAyMC0wOS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIE51bGwgY2hlY2sgbV9sYXllckhvc3RpbmdDb250ZXh0IGluIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZW5kRGlkRmlyc3RMYXllckZsdXNoSWZOZWVk
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IDcwMGY5MGFkYzZjMzlhNzZiYWEyN2Q3Yzhi
MzFmZTRkZTYyOTU5OGIuLjM5ZDBlNmQyYTNlZjUzNTgxMmYwNDIzMGQ5ZTRjZmI3NzNiYTNhMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKKysrIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGUuaApAQCAtMTkzLDYgKzE5MywxMCBAQAogI2RlZmluZSBF
TkFCTEVfQVBORyAxCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9BUFBfQk9VTkRfRE9N
QUlOUykKKyNkZWZpbmUgRU5BQkxFX0FQUF9CT1VORF9ET01BSU5TIDAKKyNlbmRpZgorCiAjaWYg
IWRlZmluZWQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKQogI2RlZmluZSBFTkFCTEVfQ0hBTk5F
TF9NRVNTQUdJTkcgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUVuYWJsZUNvY29hLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgKaW5k
ZXggMjg4MWM1OWY2ZTk5NDFhMGI4M2M1NTc4MzE5YWMwYmEzYjY5OGZjMi4uZGQwY2VjMTFmOGYy
OTQ2ZmY3MmU1ZjM4MmY0MWVlZGVmNDE3MmFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm1FbmFibGVDb2NvYS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaApAQCAtNzUsNiArNzUsMTAgQEAKICNkZWZpbmUgRU5BQkxFX0FQUExJQ0FUSU9OX01B
TklGRVNUIDEKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0FQUF9CT1VORF9ET01BSU5T
KSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorI2RlZmluZSBFTkFCTEVfQVBQX0JPVU5EX0RPTUFJ
TlMgMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfQVNZTkNfU0NST0xMSU5HKQogI2Rl
ZmluZSBFTkFCTEVfQVNZTkNfU0NST0xMSU5HIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA0NjJiOTg0YjM0ZGYyN2My
NDI5ZjdmMjExNmRhNzIyNTEzZTRkOTdhLi43MTY1NWViYjM5YTk4OGZlMGFmZTU3ZmUwZDVlNzQy
YTliYjM2ZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcApAQCAtNTc5LDYgKzU3OSw3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9s
bGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXCiAK
IFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzKQogeworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5s
b2FkZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlv
bnMoKSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkp
CiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CkBAIC01ODYsNiArNTg3LDcgQEAg
VmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmIHdvcmxkLAogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhj
ZXB0aW9uRGV0YWlscyB7ICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1h
cHAgYm91bmQgZG9tYWluIl9zIH0pOwogICAgIH0KICAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVu
dCgpLm5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3IoKTsKKyNlbmRpZgogCiAgICAgVXNlckdl
c3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihwYXJhbWV0ZXJzLmZvcmNlVXNlckdlc3R1
cmUgPT0gRm9yY2VVc2VyR2VzdHVyZTo6WWVzID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0
dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDZhYzIyMzQ5MmM5ZTFh
NDAyNmY3Yzk2MzA1M2E3ZGFlMzQwMTA3YjkuLjVmNDIzYTc4MjU0Y2YxNDY5NGU2NWRlNDM5YmQ1
YzVlN2JkNTA2YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
CkBAIC0zNzksOSArMzc5LDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmlydHVhbCBBbGxv
d3NDb250ZW50SmF2YVNjcmlwdCBhbGxvd3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50
TmF2aWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OjpZZXM7
IH0KLQorICAgIAorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZU9mQXBwQm91bmRCZWhh
dmlvcigpIHsgfQorI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuY3BwCmluZGV4IDI4OWJlYThlYTE0YmZhOTdlYjg3NDZiN2U5OGFmMjFkODIxOTZlMzMu
LjNjNWFlNDU4NTRjNzJiZGY2ZmI3MzY1ZWY1ZjI3ZmFhNmZkYmU1ZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCkBAIC02NTcsNiArNjU3LDcgQEAgdm9pZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHMo
VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkKIAogdm9pZCBGcmFtZTo6aW5q
ZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVz
ZXJTY3JpcHQmIHNjcmlwdCkKIHsKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAg
aWYgKGxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90
ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50
KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0
IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsKQEAgLTY2NCw2ICs2NjUs
NyBAQCB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldv
cmxkJiB3b3JsZCwgY29uc3QgVXNlclNjcmlwdAogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGxvYWRlcigpLmNsaWVudCgpLm5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3IoKTsKKyNlbmRp
ZgogCiAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9j
dW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA5N2Y0ZWRiMGJhMDk2MmRkN2RmYjgzODg0ZTg1
MDI5OTMyZGQ4MjY2Li42YzI4MGZjMDNlNmUzMDJhOTYwNDU3ZDU4YjRiZGU4MDcwM2MxNGUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTMyNTMsMTIgKzMyNTMsMTQgQEAgdm9pZCBQYWdlOjpyZXZl
YWxDdXJyZW50U2VsZWN0aW9uKCkKIAogdm9pZCBQYWdlOjppbmplY3RVc2VyU3R5bGVTaGVldChV
c2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCiB7CisjaWYgRU5BQkxFKEFQUF9CT1VORF9E
T01BSU5TKQogICAgIGlmIChtX21haW5GcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5h
YmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgaWYgKGF1dG8q
IGRvY3VtZW50ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVu
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZl
bDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc3R5bGUgc2hlZXQgZm9yIG5vbi1hcHAgYm91bmQg
ZG9tYWluLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9tYWluRnJhbWUtPmxv
YWRlcigpLmNsaWVudCgpLm5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3IoKTsKKyNlbmRpZgog
CiAgICAgLy8gV2UgbmVlZCB0byB3YWl0IHVudGlsIHdlJ3JlIG5vIGxvbmdlciBkaXNwbGF5aW5n
IHRoZSBpbml0aWFsIGVtcHR5IGRvY3VtZW50IGJlZm9yZSB3ZSBjYW4gaW5qZWN0IHRoZSBzdHls
ZXNoZWV0cy4KICAgICBpZiAobV9tYWluRnJhbWUtPmxvYWRlcigpLnN0YXRlTWFjaGluZSgpLmlz
RGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2Vi
S2l0TmFtZXNwYWNlLmNwcAppbmRleCAwMThkYzY1N2EzMTk3ZmNjZGE5NGM2NzhmZmVkMDdmMjBk
Y2VjZjQ3Li41OWE4NTU2YzExMTEzNmM1YzdlMjY2Y2UzMDQxYzNkOWZiOGQwYjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdE5hbWVzcGFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9XZWJLaXROYW1lc3BhY2UuY3BwCkBAIC01MCw2ICs1MCw3IEBAIFdlYktp
dE5hbWVzcGFjZTo6fldlYktpdE5hbWVzcGFjZSgpID0gZGVmYXVsdDsKIAogVXNlck1lc3NhZ2VI
YW5kbGVyc05hbWVzcGFjZSogV2ViS2l0TmFtZXNwYWNlOjptZXNzYWdlSGFuZGxlcnMoKQogewor
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAoZnJhbWUoKSkgewogICAgICAg
ICBpZiAoZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5hYmxlSW5BcHBCcm93c2Vy
UHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoTG9hZGluZywgIklnbm9yaW5nIG1lc3NhZ2VIYW5kbGVycygpIHJlcXVlc3QgZm9y
IG5vbiBhcHAtYm91bmQgZG9tYWluIik7CkBAIC01Nyw2ICs1OCw3IEBAIFVzZXJNZXNzYWdlSGFu
ZGxlcnNOYW1lc3BhY2UqIFdlYktpdE5hbWVzcGFjZTo6bWVzc2FnZUhhbmRsZXJzKCkKICAgICAg
ICAgfQogICAgICAgICBmcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5ub3RpZnlQYWdlT2ZBcHBC
b3VuZEJlaGF2aW9yKCk7CiAgICAgfQorI2VuZGlmCiAKICAgICByZXR1cm4gJm1fbWVzc2FnZUhh
bmRsZXJOYW1lc3BhY2UuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggMjEzZjhkZjFk
OTliMGEyM2RiODljMjU5ZDY3ZDk3NGY1NGUxNTNmMy4uODQ2MThjZTQxMTkxMjFiN2RhOTU1ODcw
OGEyZjk0YjFlNGViZTQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtMzI1LDYgKzMyNSw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlKFRoaXJkUGFydHlDb29raWVCbG9jCiAgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlID0gYmxvY2tpbmdNb2RlOwogfQogCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQog
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMpCiB7CiAgICAgbV9hcHBCb3VuZERvbWFpbnMgPSBX
VEZNb3ZlKGRvbWFpbnMpOwpAQCAtMzM0LDYgKzMzNSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpyZXNldEFwcEJvdW5kRG9tYWlucygpCiB7CiAgICAgbV9hcHBCb3VuZERvbWFpbnMu
Y2xlYXIoKTsKIH0KKyNlbmRpZgogCiBPcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIGNvbnN0CiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaAppbmRleCAyOGM0NzAyOTk3OTQ2Yjg5ODY1M2UzZTdjMzA4MGY1MGVkYTQzZmFmLi43ODZk
OTFhYzNlYzBiZDczNDQzZjFkMDFkNTUzMDgxNjRjMDgwZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAg
LTIxMiw5ICsyMTIsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQ29t
bWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBQYWdlSWRlbnRpZmllcik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9y
VGVzdGluZygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKKyNpZiBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBCb3VuZERvbWFp
bnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZXNldEFwcEJvdW5kRG9tYWlucygpOwogI2VuZGlmCisjZW5kaWYKIAogcHJpdmF0ZToKICNp
ZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
U2NvcGVSdWxlU2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNl
dHMuY3BwCmluZGV4IDVhNDhkOWI5MGE2ZWQxMjQ0Mzk0MzYzYzI5YjhhYTE3NTE3NDNkMzMuLjdk
ZTYzM2FkMWQ5NWI4Mzg2MzkzZGE3MjZkZTgxYjhkMjhjZjM4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcApAQCAtOTEsNiArOTEsNyBAQCB2b2lkIFNj
b3BlUnVsZVNldHM6OmluaXRpYWxpemVVc2VyU3R5bGUoKQogICAgIGF1dG8gdGVtcFVzZXJTdHls
ZSA9IFJ1bGVTZXQ6OmNyZWF0ZSgpOwogICAgIGlmIChDU1NTdHlsZVNoZWV0KiBwYWdlVXNlclNo
ZWV0ID0gZXh0ZW5zaW9uU3R5bGVTaGVldHMucGFnZVVzZXJTaGVldCgpKQogICAgICAgICB0ZW1w
VXNlclN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChwYWdlVXNlclNoZWV0LT5jb250ZW50cygpLCBu
dWxscHRyLCBtZWRpYVF1ZXJ5RXZhbHVhdG9yLCBtX3N0eWxlUmVzb2x2ZXIpOworI2lmIEVOQUJM
RShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBhdXRvKiBwYWdlID0gbV9zdHlsZVJlc29sdmVyLmRv
Y3VtZW50KCkucGFnZSgpOwogICAgIGlmICghZXh0ZW5zaW9uU3R5bGVTaGVldHMuaW5qZWN0ZWRV
c2VyU3R5bGVTaGVldHMoKS5pc0VtcHR5KCkgJiYgcGFnZSAmJiBwYWdlLT5tYWluRnJhbWUoKS5s
b2FkZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlv
bnMoKSkKICAgICAgICAgbV9zdHlsZVJlc29sdmVyLmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9y
aW5nIHVzZXIgc3R5bGUgc2hlZXQgZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CkBAIC05
OSw2ICsxMDAsOSBAQCB2b2lkIFNjb3BlUnVsZVNldHM6OmluaXRpYWxpemVVc2VyU3R5bGUoKQog
ICAgICAgICBpZiAocGFnZSAmJiAhZXh0ZW5zaW9uU3R5bGVTaGVldHMuaW5qZWN0ZWRVc2VyU3R5
bGVTaGVldHMoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS5sb2Fk
ZXIoKS5jbGllbnQoKS5ub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCk7CiAgICAgfQorI2Vs
c2UKKyAgICBjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRzKGV4dGVuc2lvblN0eWxlU2hl
ZXRzLmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCksIHRlbXBVc2VyU3R5bGUuZ2V0KCksIG1lZGlh
UXVlcnlFdmFsdWF0b3IpOworI2VuZGlmCiAgICAgY29sbGVjdFJ1bGVzRnJvbVVzZXJTdHlsZVNo
ZWV0cyhleHRlbnNpb25TdHlsZVNoZWV0cy5kb2N1bWVudFVzZXJTdHlsZVNoZWV0cygpLCB0ZW1w
VXNlclN0eWxlLmdldCgpLCBtZWRpYVF1ZXJ5RXZhbHVhdG9yKTsKICAgICBpZiAodGVtcFVzZXJT
dHlsZS0+cnVsZUNvdW50KCkgPiAwIHx8IHRlbXBVc2VyU3R5bGUtPnBhZ2VSdWxlcygpLnNpemUo
KSA+IDApCiAgICAgICAgIG1fdXNlclN0eWxlID0gV1RGTW92ZSh0ZW1wVXNlclN0eWxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggOTc4ZjI0ZmMw
ZjgzYWY0MzZjZmM1NmViMzliNTY5OTRjZThkMWZjMC4uMDE5NTBmMDVlZDY0M2RlM2I1NDYyZTNm
MjZlYmJhZWQyMzhhZGQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKQEAgLTMxMiwxMCArMzEyLDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyCiAg
ICAgbV9kZWJ1Z01hbnVhbFByZXZhbGVudFJlc291cmNlID0gZG9tYWluOwogfQogCisjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMp
CiB7CiAgICAgbV9hcHBCb3VuZERvbWFpbnMgPSBXVEZNb3ZlKGRvbWFpbnMpOwogfQorI2VuZGlm
CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZVN0YXRpc3RpY3NQ
cm9jZXNzaW5nUmVxdWVzdElmTmVjZXNzYXJ5KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAppbmRleCA2MGIxNGY0MTc3MzJhNzY3NzA5ZTdiMTI0MjVlZTY4YjZl
MzhmYzg3Li4yYzVhYWM2ZWEzYmU4NDVmMDU5NTZhMzhhM2EwZjk5OTRjNzM0ZGEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0xNzYsOCArMTc2LDkgQEAg
cHVibGljOgogICAgIGJvb2wgaXNTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPT0gV2ViQ29y
ZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6OlllczsgfTsKICAgICB2b2lkIHNl
dEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKFdlYkNvcmU6OkZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlIG1vZGUpIHsgbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZSA9IG1vZGU7IH0KICAgICB2b2lkIHNldFN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihS
ZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikgeyBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFp
biA9IFdURk1vdmUoZG9tYWluKTsgfQorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAg
ICB2b2lkIHNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKTsK
LQorI2VuZGlmCiAgICAgdmlydHVhbCBib29sIGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tl
ZFVuZGVyKGNvbnN0IFRvcEZyYW1lRG9tYWluJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYXNT
dG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFp
biYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFn
ZUFjY2Vzc1N0YXR1cyk+JiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggNGRlOWFhYzZjODRlNmE0ZGIyOTRhZTIyYjQ0ZWUzNjVm
ZWFiMGNjZS4uMWYwYmIxNjcwZmFmYzkzMGNkOTdmMjEzY2UxMmMwOWViNTIyYTkzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTY5Niw2
ICs2OTYsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3RhbmRh
bG9uZUFwcGxpY2F0aW9uRG9tYWluKGNvbnN0IFJlZ2lzdAogICAgIH0pOwogfQogCisjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnNldEFwcEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFp
bnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNzIyLDYgKzcyMyw3IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpCiAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgIH0pOwogfQorI2VuZGlmCiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpCiB7CkBAIC0xMzQ2LDEwICsx
MzQ4LDEyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNldFBhcmFt
ZXRlcnNUb0RlZmF1bHRWYWx1ZXMoQ29tcGxldGlvbkhhCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYgKG1fbmV0d29ya1Nlc3Np
b24pIHsKICAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lv
bi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+
cmVzZXRBcHBCb3VuZERvbWFpbnMoKTsKICAgICB9CisjZW5kaWYKIAogICAgIHBvc3RUYXNrKFt0
aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewogICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggNGE5NDRiMTk0OWE3NjNlM2JlNDU5
OTE3MjFiMWMyMzQ2NDgyMTkyYi4uYTc5N2M2ZGExNjE4N2JkYmRmMDQzZjlmZjk3NTNkNzNjMTU3
MTk2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApA
QCAtMjgxLDcgKzI4MSw5IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAgICAgdm9pZCBzZXRT
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZChXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVu
Zm9yY2VtZW50RW5hYmxlZCk7CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZShXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFN0YW5kYWxvbmVBcHBsaWNhdGlv
bkRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHZvaWQgc2V0QXBwQm91
bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisjZW5kaWYKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7
CiAKICAgICB2b2lkIG5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NQcm9jZXNzZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXgg
ODY5ZmVmY2U2ODRmNTM5ODM0MTYzMDRjNjdlNzczMTNmNmY1YjU4My4uOGFhNGRlZGVmNjkyZDU2
MTkzYTA1NGZlYWFhYTU1OTliMTMyNmJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEzMTcsNiArMTMxNyw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6Omhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6CiAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKIH0KIAorI2lm
IEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEFwcEJv
dW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmIGFwcEJvdW5kRG9tYWlu
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKQEAgLTEzMjgsNiArMTMyOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEFwcEJv
dW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQorI2VuZGlm
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVz
dGluZyhib29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKQEAgLTI1MTMsOCArMjUxNSwxMyBAQCBTV1NlcnZlciYgTmV0d29ya1Byb2Nl
c3M6OnN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgICAg
IH0sIFt0aGlzLCBzZXNzaW9uSURdKGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluLCBhdXRvJiYgY29t
cGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgICAgIEFTU0VSVCghcmVnaXN0cmFibGVEb21haW4u
aXNFbXB0eSgpKTsKICAgICAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4s
IHNlc3Npb25JRCB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CisjaWYgRU5BQkxF
KEFQUF9CT1VORF9ET01BSU5TKQogICAgICAgICB9LCBbdGhpcywgc2Vzc2lvbklEXShhdXRvJiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6R2V0
QXBwQm91bmREb21haW5zIHsgc2Vzc2lvbklEIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCAwKTsKKyNlbHNlCisgICAgICAgIH0sIFtdIChhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIHsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisjZW5kaWYKICAgICAgICAgfSk7
CiAgICAgfSk7CiAgICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwpAQCAtMjcyMCw2
ICsyNzI3LDcgQEAgU2Vjb25kcyBOZXR3b3JrUHJvY2Vzczo6cmFuZG9tQ2xvc2VkUG9ydERlbGF5
KCkKICAgICByZXR1cm4gZGVsYXlNaW4gKyBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKHN0YXRp
Y19jYXN0PGRvdWJsZT4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSkpICUgZGVsYXlN
YXg7CiB9CiAKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpoYXNBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewogICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7CkBAIC0yNzM4LDYgKzI3NDYsNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpjbGVhckFwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0KIH0KKyNlbmRp
ZgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpicm9hZGNhc3RDb25zb2xlTWVzc2FnZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIEpTQzo6TWVzc2FnZVNvdXJjZSBzb3VyY2UsIEpTQzo6TWVzc2Fn
ZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNThmYmY2MzkxOGUxOTViNDZh
YTU4OGIzZTZjODEwNjczODcxNTM4YS4uMjdmNjBjMWJkMTIxZDZkMzFjNGNkY2JiMjU3M2ZkZmM5
ZGYwNjYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaApAQCAtMjY2LDcgKzI2Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENyb3NzU2l0ZUxv
YWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9t
YWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDcm9zc1Np
dGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBoYXNJc29sYXRlZFNlc3Npb24oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7CisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01B
SU5TKQogICAgIHZvaWQgc2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhQQUw6OlNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyNlbmRpZgogICAgIGJvb2wgaXNJVFBEYXRh
YmFzZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSVRQRGF0YWJhc2VFbmFibGVkOyB9CiAg
ICAgdm9pZCBzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0zNTksOCArMzYxLDExIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgU2Vjb25kcyByYW5kb21DbG9zZWRQb3J0RGVsYXkoKTsKIAog
ICAgIHZvaWQgY29va2llQWNjZXB0UG9saWN5Q2hhbmdlZChXZWJDb3JlOjpIVFRQQ29va2llQWNj
ZXB0UG9saWN5KTsKKworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICB2b2lkIGhh
c0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJikgY29uc3Q7CiAgICAgdm9pZCBjbGVhckFwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyNlbmRpZgogCiAgICAgdm9pZCBi
cm9hZGNhc3RDb25zb2xlTWVzc2FnZShQQUw6OlNlc3Npb25JRCwgSlNDOjpNZXNzYWdlU291cmNl
LCBKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2b2lkIHVw
ZGF0ZUJ1bmRsZUlkZW50aWZpZXIoU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCAwMDJlY2RiODMzYjI5NDFhZTg2MTNmYTY0ZjAxZGY4OTg5
NmRmMzQ2Li5iMDRjN2M5ZTBkMjk3ODFiZGFiZDM5OGUxMDRiYWZkNThjYWY1ZTEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTE0Miw3ICsxNDIsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgUmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlv
bkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIERl
bGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+
ICgpIEFzeW5jCiAgICAgSGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoYm9vbCBoYXNJc29sYXRl
ZFNlc3Npb24pIEFzeW5jCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIFNldEFw
cEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFp
bnMpIC0+ICgpIEFzeW5jCisjZW5kaWYKICAgICBTZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZv
clRlc3RpbmcoYm9vbCBlbmFibGVkKSAtPiAoKSBBc3luYwogICAgIFNldFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBlbnVtOnVpbnQ4X3QgV2Vi
Q29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUpIC0+ICgpIEFz
eW5jCiAgICAgU2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpTYW1lU2l0ZVN0
cmljdEVuZm9yY2VtZW50RW5hYmxlZCBlbmFibGVkKSAtPiAoKSBBc3luYwpAQCAtMTc5LDggKzE4
MSwxMCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICAg
ICBSZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICAK
KyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgSGFzQXBwQm91bmRTZXNzaW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgaGFzQXBwQm91bmRTZXNzaW9uKSBBc3lu
YwogICAgIENsZWFyQXBwQm91bmRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4g
KCkgQXN5bmMKKyNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JN
KE1BQ0NBVEFMWVNUKQogICAgIERpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDFhMDg3
M2NlY2FlNTZiMmYyZjE2NzU2Y2MzNTg4Y2MzNmQ0YzMzOGEuLjZkZWZmMGQwYmE5Y2QyYmRhYzFi
MjE3NzM0NmUzYTE5YzQwZTY0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKQEAgLTExNCw4ICsxMTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
Zmx1c2hBbmREZXN0cm95UGVyc2lzdGVudFN0b3JlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAjZW5kaWYKICAgICAKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgdmly
dHVhbCBib29sIGhhc0FwcEJvdW5kU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyQXBwQm91bmRTZXNzaW9uKCkgeyB9CisjZW5kaWYKICAgICB2
b2lkIHN0b3JlQWRDbGlja0F0dHJpYnV0aW9uKFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbiYm
KTsKICAgICB2b2lkIGhhbmRsZUFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb24oV2ViQ29yZTo6
QWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uJiYsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogICAgIHZv
aWQgZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EuaAppbmRleCBhYTAzOTIxYWU5YzRhMDUzZDdjOTM1YzI4NGEwOTEy
MjQ5YmJmODRjLi4wYjdkMTNhZGQ5NWYzOTgwNTcwODIzZTg0ZGZlMDVhNTYwZGE4MDk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EuaApAQCAtOTUsMTAgKzk1LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0lz
b2xhdGVkU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjbGVhcklzb2xhdGVkU2Vzc2lvbnMoKSBvdmVycmlkZTsKIAorI2lm
IEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBib29sIGhhc0FwcEJvdW5kU2Vzc2lvbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICEhbV9hcHBCb3VuZFNlc3Npb247IH0KKyAgICB2b2lk
IGNsZWFyQXBwQm91bmRTZXNzaW9uKCkgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIFNlc3Npb25X
cmFwcGVyJiBzZXNzaW9uV3JhcHBlckZvclRhc2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPik7Ci0gICAgdm9pZCBjbGVhckFwcEJvdW5kU2Vzc2lvbigpIG92
ZXJyaWRlOwogICAgIGJvb2wgcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbjsg
fQogICAgIAogICAgIHZvaWQgY2xpZW50Q2VydGlmaWNhdGVTdWdnZXN0ZWRGb3JIb3N0KE5ldHdv
cmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciwgTlNVUkxDcmVkZW50aWFsICosIGNvbnN0
IFN0cmluZyYgaG9zdCwgdWludDE2X3QgcG9ydCk7CkBAIC0xMTMsNyArMTE1LDEwIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb247IH0KICAgICBTZWNvbmRzIGxv
YWRUaHJvdHRsZUxhdGVuY3koKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvYWRUaHJvdHRs
ZUxhdGVuY3k7IH0KICAgICBTZXNzaW9uV3JhcHBlciYgaXNvbGF0ZWRTZXNzaW9uKFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOworCisjaWYgRU5BQkxFKEFQUF9CT1VORF9E
T01BSU5TKQogICAgIFNlc3Npb25XcmFwcGVyJiBhcHBCb3VuZFNlc3Npb24oV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kpOworI2VuZGlmCiAKICAgICBWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiBob3N0TmFtZXNXaXRoQWx0ZXJuYXRpdmVTZXJ2aWNlcygpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNlc0Zvckhvc3ROYW1l
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4
IDkwNDM2YTQwOTJkYjhmYmRjNjA2NGQyZWZkYjFmYTk3N2Y4ZmI1NDAuLjUwNzJjNjM1ZjZkNTRm
NjVlNDBkYjg0ZDg2OGMwMzM1MTYzMTgyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTEzMTEs
OCArMTMxMSwxMSBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5l
dHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAgIG1fZGV2aWNlTWFuYWdl
bWVudFJlc3RyaWN0aW9uc0VuYWJsZWQgPSBwYXJhbWV0ZXJzLmRldmljZU1hbmFnZW1lbnRSZXN0
cmljdGlvbnNFbmFibGVkOwogICAgIG1fYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50
UmVzdHJpY3Rpb25zRm9yVGVzdGluZyA9IHBhcmFtZXRlcnMuYWxsTG9hZHNCbG9ja2VkQnlEZXZp
Y2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZzsKIAorI2lmIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzICYmICFwYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmFwcEJvdW5kRG9tYWlucy5pc0Vt
cHR5KCkpCiAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0QXBwQm91bmREb21h
aW5zKFdURk1vdmUocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5h
cHBCb3VuZERvbWFpbnMpLCBbXSB7IH0pOworI2VuZGlmCisKICNpZiBIQVZFKFNFU1NJT05fQ0xF
QU5VUCkKICAgICBhY3RpdmF0ZVNlc3Npb25DbGVhbnVwKCp0aGlzLCBwYXJhbWV0ZXJzKTsKICNl
bmRpZgpAQCAtMTM1Nyw3ICsxMzYwLDcgQEAgU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9u
Q29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpSZXNvdXIKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlmIChzaG91bGRCZUNvbnNp
ZGVyZWRBcHBCb3VuZCA9PSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzKQogICAgICAg
ICByZXR1cm4gYXBwQm91bmRTZXNzaW9uKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKICNlbmRp
ZgpAQCAtMTM3NCw2ICsxMzc3LDcgQEAgU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29j
b2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpSZXNvdXIKICAgICB9CiB9
CiAKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiBTZXNzaW9uV3JhcHBlciYgTmV0d29y
a1Nlc3Npb25Db2NvYTo6YXBwQm91bmRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KQogewogICAgIGlmICghbV9hcHBCb3VuZFNl
c3Npb24pIHsKQEAgLTEzOTksNiArMTQwMyw3IEBAIFNlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vz
c2lvbkNvY29hOjphcHBCb3VuZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQCiAK
ICAgICByZXR1cm4gc2Vzc2lvbldyYXBwZXI7CiB9CisjZW5kaWYKIAogU2Vzc2lvbldyYXBwZXIm
IE5ldHdvcmtTZXNzaW9uQ29jb2E6Omlzb2xhdGVkU2Vzc2lvbihXZWJDb3JlOjpTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIHsKQEAgLTE0NTUsMTAgKzE0NjAsMTIg
QEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhcklzb2xhdGVkU2Vzc2lvbnMoKQogICAg
IG1faXNvbGF0ZWRTZXNzaW9ucy5jbGVhcigpOwogfQogCisjaWYgRU5BQkxFKEFQUF9CT1VORF9E
T01BSU5TKQogdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhckFwcEJvdW5kU2Vzc2lvbigp
CiB7CiAgICAgbV9hcHBCb3VuZFNlc3Npb24gPSBudWxscHRyOwogfQorI2VuZGlmCiAKIHZvaWQg
TmV0d29ya1Nlc3Npb25Db2NvYTo6aW52YWxpZGF0ZUFuZENhbmNlbCgpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGYx
NjYwYjI5YTQ4NGIzZWM4YjA0MGFlZjBhMzQzOTVhODU5ZDQzZTguLmNkNDY3MDVkYjBkMDA5NjJk
MzE2YmFkZjE4NjJiMTQ4MDQzOGUxNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNTUsOCArMTU1LDEwIEBAIHZvaWQg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzczsKICAg
ICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZVZQOURlY29kZXI7CiAgICAgZW5jb2RlciA8PCBzaG91
bGRFbmFibGVWUDlTV0RlY29kZXI7CisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAg
IGVuY29kZXIgPDwgbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOwogICAgIGVuY29kZXIg
PDwgbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczsKKyNlbmRpZgogICAgIGVuY29k
ZXIgPDwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7CiAgICAgZW5jb2RlciA8
PCBjYW5Vc2VDcmVkZW50aWFsU3RvcmFnZTsKIApAQCAtNTAwLDEyICs1MDIsMTQgQEAgT3B0aW9u
YWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hv
dWxkRW5hYmxlVlA5U1dEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAor
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMubmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKSkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucykpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0gICAgCisjZW5kaWYKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuaAppbmRleCBmNmI3ZDc3MjZmYzQyMzJhN2Y1MjU1ODQ1MjNiMDk0ZGU2
MDA5ZDFkLi43MjNhMmIxNDI0YTUwYTkxNDZjNGVhZDRhNTQxOWY4ZWVkYTk0YmY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0y
MjgsOCArMjI4LDEwIEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBi
b29sIHNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBz
aG91bGRFbmFibGVWUDlEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZEVuYWJsZVZQ
OVNXRGVjb2RlciB7IGZhbHNlIH07CisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAg
IGJvb2wgbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIHsgZmFsc2UgfTsKICAgICBib29s
IGxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OworI2VuZGlmCiAg
ICAgYm9vbCBjYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSB7IHRydWUgfTsKIAogICAgIFdlYkNvcmU6
OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nIHsgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmc6Ok5vIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
SFRUUENvb2tpZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQ
Q29va2llU3RvcmUuY3BwCmluZGV4IDljOGYwM2ExOGZhZjZlN2YxOWVmZWRmYjg3OTY5YTA5NzNm
MDQ3MWIuLmE1NmRmNWE4YzJiMjU4MjMzZDlkNDhiZGZkOTIwZDY4YTY3ZjIxZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCkBA
IC02Miw3ICs2Miw3IEBAIEhUVFBDb29raWVTdG9yZTo6fkhUVFBDb29raWVTdG9yZSgpCiB2b2lk
IEhUVFBDb29raWVTdG9yZTo6ZmlsdGVyQXBwQm91bmRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiBjb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IGFwcEJvdW5kQ29va2llczsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBtX293bmluZ0RhdGFTdG9yZS0+Z2V0
QXBwQm91bmREb21haW5zKFtjb29raWVzLCBhcHBCb3VuZENvb2tpZXMgPSBXVEZNb3ZlKGFwcEJv
dW5kQ29va2llcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIChhdXRvJiBkb21haW5zKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFkb21haW5zLmlzRW1w
dHkoKSAmJiAhaXNGdWxsV2ViQnJvd3NlcigpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGNv
b2tpZSA6IGNvb2tpZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDcwMjc4ZmJkZTAyZjczZGVkNDBkNzkzZDAx
OGU0OGFlOWI1NWZiMzAuLmY4ODM2ZDZiZDRhNmM0OGNiZWM4Njc0ODRmYWMzY2JlOTQ3NzljZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmNwcApAQCAtODcsMTAgKzg3LDEyIEBAIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFn
ZUNvbmZpZ3VyYXRpb246OmNvcHkoKSBjb25zdAogICAgIGNvcHktPm1fd2ViVmlld0NhdGVnb3J5
ID0gdGhpcy0+bV93ZWJWaWV3Q2F0ZWdvcnk7CiAKICAgICBjb3B5LT5tX3Byb2Nlc3NEaXNwbGF5
TmFtZSA9IHRoaXMtPm1fcHJvY2Vzc0Rpc3BsYXlOYW1lOwotICAgIGNvcHktPm1faWdub3Jlc0Fw
cEJvdW5kRG9tYWlucyA9IHRoaXMtPm1faWdub3Jlc0FwcEJvdW5kRG9tYWluczsKICAgICBjb3B5
LT5tX2xvYWRzU3VicmVzb3VyY2VzID0gdGhpcy0+bV9sb2Fkc1N1YnJlc291cmNlczsKICAgICBj
b3B5LT5tX2xvYWRzRnJvbU5ldHdvcmsgPSB0aGlzLT5tX2xvYWRzRnJvbU5ldHdvcms7CisjaWYg
RU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQorICAgIGNvcHktPm1faWdub3Jlc0FwcEJvdW5kRG9t
YWlucyA9IHRoaXMtPm1faWdub3Jlc0FwcEJvdW5kRG9tYWluczsKICAgICBjb3B5LT5tX2xpbWl0
c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgPSB0aGlzLT5tX2xpbWl0c05hdmlnYXRpb25z
VG9BcHBCb3VuZERvbWFpbnM7CisjZW5kaWYKIAogICAgIHJldHVybiBjb3B5OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAppbmRl
eCAxMjA5YzM2ZThjZmRmMDM3NzQyOWM3YjE5NDdmOWU2NWM5MmZmYmRlLi5lYjU1ZWQwODVjZTJm
Y2M1MDA4NDZlYjFlZGM5YzkwY2MwY2U0MDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaApAQCAtMTQ4LDE3ICsxNDgsMTkgQEAg
cHVibGljOgogICAgIFdlYktpdDo6V2ViVmlld0NhdGVnb3J5IHdlYlZpZXdDYXRlZ29yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fd2ViVmlld0NhdGVnb3J5OyB9CiAgICAgdm9pZCBzZXRXZWJWaWV3Q2F0
ZWdvcnkoV2ViS2l0OjpXZWJWaWV3Q2F0ZWdvcnkgY2F0ZWdvcnkpIHsgbV93ZWJWaWV3Q2F0ZWdv
cnkgPSBjYXRlZ29yeTsgfQogCi0gICAgYm9vbCBpZ25vcmVzQXBwQm91bmREb21haW5zKCkgY29u
c3QgeyByZXR1cm4gbV9pZ25vcmVzQXBwQm91bmREb21haW5zOyB9Ci0gICAgdm9pZCBzZXRJZ25v
cmVzQXBwQm91bmREb21haW5zKGJvb2wgc2hvdWxkSWdub3JlKSB7IG1faWdub3Jlc0FwcEJvdW5k
RG9tYWlucyA9IHNob3VsZElnbm9yZTsgfQotCiAgICAgYm9vbCBsb2Fkc1N1YnJlc291cmNlcygp
IGNvbnN0IHsgcmV0dXJuIG1fbG9hZHNTdWJyZXNvdXJjZXM7IH0KICAgICB2b2lkIHNldExvYWRz
U3VicmVzb3VyY2VzKGJvb2wgbG9hZHMpIHsgbV9sb2Fkc1N1YnJlc291cmNlcyA9IGxvYWRzOyB9
CiAKICAgICBib29sIGxvYWRzRnJvbU5ldHdvcmsoKSBjb25zdCB7IHJldHVybiBtX2xvYWRzRnJv
bU5ldHdvcms7IH0KICAgICB2b2lkIHNldExvYWRzRnJvbU5ldHdvcmsoYm9vbCBsb2FkcykgeyBt
X2xvYWRzRnJvbU5ldHdvcmsgPSBsb2FkczsgfQogCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01B
SU5TKQorICAgIGJvb2wgaWdub3Jlc0FwcEJvdW5kRG9tYWlucygpIGNvbnN0IHsgcmV0dXJuIG1f
aWdub3Jlc0FwcEJvdW5kRG9tYWluczsgfQorICAgIHZvaWQgc2V0SWdub3Jlc0FwcEJvdW5kRG9t
YWlucyhib29sIHNob3VsZElnbm9yZSkgeyBtX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMgPSBzaG91
bGRJZ25vcmU7IH0KKyAgICAKICAgICBib29sIGxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERv
bWFpbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFp
bnM7IH0KICAgICB2b2lkIHNldExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMoYm9v
bCBsaW1pdHMpIHsgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zID0gbGltaXRz
OyB9CisjZW5kaWYKIAogICAgIHZvaWQgc2V0U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcoV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgdmFsdWUp
IHsgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9IHZhbHVlOyB9CiAgICAg
V2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nOyB9CkBAIC0yMDIsMTAgKzIwNCwxNCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVlIH07
CiAgICAgV1RGOjpTdHJpbmcgbV9wcm9jZXNzRGlzcGxheU5hbWU7CiAgICAgV2ViS2l0OjpXZWJW
aWV3Q2F0ZWdvcnkgbV93ZWJWaWV3Q2F0ZWdvcnkgeyBXZWJLaXQ6OldlYlZpZXdDYXRlZ29yeTo6
QXBwQm91bmREb21haW4gfTsKLSAgICBib29sIG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucyB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2xvYWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9OwogICAgIGJvb2wg
bV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OworICAgIAorI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKKyAgICBib29sIG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9Owor
I2VuZGlmCisKICAgICBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZyBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsgV2ViQ29yZTo6U2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vIH07CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApp
bmRleCBmMzU2M2U5NDQxY2U2YjE0YjQyY2ZjZTg1ZjE5ZDlkOTI5MDBkMzUzLi42M2ZhMjg0YTZl
YzdlYTJkZTBhODFkMjE3MDVlMDlmMTg4OGU3Yjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTU3OSw5
ICs1NzksMTQgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRT
ZXNzaW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3QKIAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVIYXNBcHBCb3VuZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
Ziwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uRnVu
Y3Rpb24gY2FsbGJhY2spCiB7CisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0FwcEJvdW5kU2Vzc2lvbihbY29udGV4dCwg
Y2FsbGJhY2tdKGJvb2wgaGFzQXBwQm91bmRTZXNzaW9uKSB7CiAgICAgICAgIGNhbGxiYWNrKGhh
c0FwcEJvdW5kU2Vzc2lvbiwgY29udGV4dCk7CiAgICAgfSk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShkYXRhU3RvcmVSZWYpOworICAgIGNhbGxiYWNrKGZhbHNlLCBjb250ZXh0KTsKKyNlbmRp
ZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
aG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0
aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCkBAIC02NTIsNyArNjU3LDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1F
RG9tYWluRm9yVGVzdGluZygKIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRBcHBCb3VuZERv
bWFpbnNGb3JUZXN0aW5nKFdLQXJyYXlSZWYgb3JpZ2luVVJMc1JlZiwgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91bmREb21haW5zRm9yVGVzdGluZ0Z1bmN0aW9uIGNv
bXBsZXRpb25IYW5kbGVyKQogewotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShBUFBf
Qk9VTkRfRE9NQUlOUykKICAgICBSZWZQdHI8QVBJOjpBcnJheT4gb3JpZ2luVVJMc0FycmF5ID0g
dG9JbXBsKG9yaWdpblVSTHNSZWYpOwogICAgIHNpemVfdCBuZXdTaXplID0gb3JpZ2luVVJMc0Fy
cmF5ID8gb3JpZ2luVVJMc0FycmF5LT5zaXplKCkgOiAwOwogICAgIEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnM7CkBAIC04MTUsMTUgKzgyMCwyMiBAQCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVJlc2V0UXVvdGEoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgdm9pZCogY29udAogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQXBwQm91bmRT
ZXNzaW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQXBwQm91bmRTZXNzaW9uRnVuY3Rpb24gY29tcGxldGlv
bkhhbmRsZXIpCiB7CisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPmNsZWFyQXBwQm91bmRTZXNzaW9uKFtjb250ZXh0LCBjb21w
bGV0aW9uSGFuZGxlcl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAg
ICB9KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRhdGFTdG9yZVJlZik7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoY29udGV4dCk7CisjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVSZWluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZikKIHsKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RP
TUFJTlMpCiAgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+cmVpbml0aWFsaXplQXBw
Qm91bmREb21haW5zKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShkYXRhU3RvcmVSZWYpOwog
I2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCmluZGV4IGNlNTE0YjkyMTFjNDhhNjI4YmE3YzZiNmNmZDU1MjBlNTk4YTYyZWYuLmJm
NDVjYjViYTdmYjUzMDVlMWU0MmU3ZDczZThlYjgwNWM1MjdjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjY0MSwyMCArMjY0MSw2
IEBAIC0gKHZvaWQpX3NhdmVCYWNrRm9yd2FyZFNuYXBzaG90Rm9ySXRlbTooV0tCYWNrRm9yd2Fy
ZExpc3RJdGVtICopaXRlbQogICAgIF9wYWdlLT5yZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoaXRl
bS5faXRlbSk7CiB9CiAKLS0gKHZvaWQpX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46KHZv
aWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKLXsKLSAgICBfcGFnZS0+aXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpblRlc3RpbmcoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgaXNBcHBCb3VuZCkgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihpc0FwcEJvdW5kKTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClfaXNGb3JjZWRJ
bnRvQXBwQm91bmRNb2RlOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAg
X3BhZ2UtPmlzRm9yY2VkSW50b0FwcEJvdW5kTW9kZVRlc3RpbmcoW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgaXNGb3JjZWRJbnRvQXBw
Qm91bmRNb2RlKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGlzRm9yY2VkSW50b0FwcEJv
dW5kTW9kZSk7Ci0gICAgfSk7Ci19Ci0KIC0gKHZvaWQpX3NlcnZpY2VXb3JrZXJzRW5hYmxlZDoo
dm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIGF1dG8gZW5hYmxlZCA9IFtf
Y29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10tPl9wcmVmZXJlbmNlcy5nZXQoKS0+c2VydmljZVdv
cmtlcnNFbmFibGVkKCkgfHwgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5zZXJ2aWNlV29ya2VyRW5hYmxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmgKaW5k
ZXggNzBhMTNhNWU2ZjdiN2U2NDc1YzJkMjY0YmUxNDQzZjFjMjg4MjIwYS4uNDFkMjYxNjJmNjM2
NjU1NTkxNTQwMmRmZTQ1MTY2YzQ3OTc1MmQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oCkBAIC0x
MzYsNyArMTM2LDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkp
CiAgKi8KIEBwcm9wZXJ0eSAobnVsbF9yZXNldHRhYmxlLCBub25hdG9taWMsIGNvcHkpIFdLV2Vi
cGFnZVByZWZlcmVuY2VzICpkZWZhdWx0V2VicGFnZVByZWZlcmVuY2VzIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogCi1AcHJvcGVydHkgKG5vbmF0b21pYykgQk9P
TCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYykg
Qk9PTCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIFdLX0FQSV9BVkFJTEFCTEUo
aW9zKFdLX0lPU19UQkEpKTsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIC8qISBAYWJzdHJhY3Qg
QSBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciBIVE1MNSB2aWRlb3MgcGxheSBpbmxp
bmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggODM2OTNjYmZmNDY5MWM0MTAyZGVlNjIzNWNl
MTU2ZTA1ZGZiYzg2Yy4uNGQ2Yjk1NGMzYmRjOTk1ZDE0YzYyMWQxMWFlMWM2MGY5ZWJmNTQ1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTU5NSwxNiArNTk1LDYgQEAgLSAoUmVmPEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24+KWNvcHlQYWdlQ29uZmlndXJhdGlvbgogICAgIHJldHVybiBfcGFn
ZUNvbmZpZ3VyYXRpb24tPmNvcHkoKTsKIH0KIAotLSAoQk9PTClsaW1pdHNOYXZpZ2F0aW9uc1Rv
QXBwQm91bmREb21haW5zCi17Ci0gICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+bGltaXRz
TmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucygpOwotfQotCi0tICh2b2lkKXNldExpbWl0c05h
dmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM6KEJPT0wpbGltaXRzVG9BcHBCb3VuZERvbWFpbnMK
LXsKLSAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3Vu
ZERvbWFpbnMobGltaXRzVG9BcHBCb3VuZERvbWFpbnMpOwotfQotCiBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBXS1dlYlZpZXdDb25maWd1cmF0aW9uIChXS1ByaXZhdGUpCkBAIC04MzAsNiArODIw
LDI2IEBAIC0gKGlkIDxfVUlDbGlja0ludGVyYWN0aW9uRHJpdmluZz4pX2NsaWNrSW50ZXJhY3Rp
b25Ecml2ZXJGb3JUZXN0aW5nCiAgICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+Y2xpY2tJ
bnRlcmFjdGlvbkRyaXZlckZvclRlc3RpbmcoKS5nZXQoKTsKIH0KIAorLSAoQk9PTClsaW1pdHNO
YXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zCit7CisgICAgcmV0dXJuIF9wYWdlQ29uZmlndXJh
dGlvbi0+bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucygpOworfQorCistICh2b2lk
KXNldExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM6KEJPT0wpbGltaXRzVG9BcHBC
b3VuZERvbWFpbnMKK3sKKyAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldExpbWl0c05hdmlnYXRp
b25zVG9BcHBCb3VuZERvbWFpbnMobGltaXRzVG9BcHBCb3VuZERvbWFpbnMpOworfQorCistIChC
T09MKV9pZ25vcmVzQXBwQm91bmREb21haW5zCit7CisgICAgcmV0dXJuIF9wYWdlQ29uZmlndXJh
dGlvbi0+aWdub3Jlc0FwcEJvdW5kRG9tYWlucygpOworfQorCistICh2b2lkKV9zZXRJZ25vcmVz
QXBwQm91bmREb21haW5zOihCT09MKWlnbm9yZXNBcHBCb3VuZERvbWFpbnMKK3sKKyAgICBfcGFn
ZUNvbmZpZ3VyYXRpb24tPnNldElnbm9yZXNBcHBCb3VuZERvbWFpbnMoaWdub3Jlc0FwcEJvdW5k
RG9tYWlucyk7Cit9CisKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAtIChCT09M
KV9pbnZpc2libGVBdXRvcGxheU5vdFBlcm1pdHRlZApAQCAtMTIzNywxNiArMTI0Nyw2IEBAIC0g
KHZvaWQpX3NldFdlYlZpZXdDYXRlZ29yeTooX1dLV2ViVmlld0NhdGVnb3J5KWNhdGVnb3J5CiAg
ICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRXZWJWaWV3Q2F0ZWdvcnkodG9XZWJLaXRXZWJWaWV3
Q2F0ZWdvcnkoY2F0ZWdvcnkpKTsKIH0KIAotLSAoQk9PTClfaWdub3Jlc0FwcEJvdW5kRG9tYWlu
cwotewotICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPmlnbm9yZXNBcHBCb3VuZERvbWFp
bnMoKTsKLX0KLQotLSAodm9pZClfc2V0SWdub3Jlc0FwcEJvdW5kRG9tYWluczooQk9PTClpZ25v
cmVzQXBwQm91bmREb21haW5zCi17Ci0gICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRJZ25vcmVz
QXBwQm91bmREb21haW5zKGlnbm9yZXNBcHBCb3VuZERvbWFpbnMpOwotfQotCiAtIChCT09MKV9z
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZwogewogICAgIHJldHVybiBfcGFnZUNv
bmZpZ3VyYXRpb24tPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCkgPT0gV2Vi
Q29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6OlllczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKaW5kZXggOTk1ZTIxZDhmZTUyNWY2MjJjNzEyN2MxZWQ5
NTkyYzlhY2U0ZTdlYy4uYmFjMDUyYWI2ZDczNDFjYTYxM2ZlYTIyZjU5MmU4ODljNWNkYzYzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb25Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKQEAgLTEwMSw2ICsxMDEsNyBAQCB0
eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLV2ViVmlld0NhdGVnb3J5KSB7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5n
UXVpY2tMb29rUHJldmlldzopIEJPT0wgX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdR
dWlja0xvb2tQcmV2aWV3IFdLX0FQSV9BVkFJTEFCTEUoaW9zKDEzLjApKTsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBzZXR0ZXI9X3NldENhblNob3dXaGlsZUxvY2tlZDopIEJPT0wgX2NhblNob3dX
aGlsZUxvY2tlZCBXS19BUElfQVZBSUxBQkxFKGlvcygxMy4wKSk7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgc2V0dGVyPV9zZXRDbGlja0ludGVyYWN0aW9uRHJpdmVyRm9yVGVzdGluZzopIGlkIDxf
VUlDbGlja0ludGVyYWN0aW9uRHJpdmluZz4gX2NsaWNrSW50ZXJhY3Rpb25Ecml2ZXJGb3JUZXN0
aW5nIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDEzLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBz
ZXR0ZXI9X3NldElnbm9yZXNBcHBCb3VuZERvbWFpbnM6KSBCT09MIF9pZ25vcmVzQXBwQm91bmRE
b21haW5zIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKICNlbHNlCiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTaG93c1VSTHNJblRvb2xUaXBzOikgQk9PTCBfc2hv
d3NVUkxzSW5Ub29sVGlwcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSk7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTZXJ2aWNlQ29udHJvbHNFbmFibGVkOikgQk9PTCBf
c2VydmljZUNvbnRyb2xzRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSk7CkBA
IC0xMjQsNyArMTI1LDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIF9XS1dlYlZpZXdD
YXRlZ29yeSkgewogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRVbmRvTWFuYWdl
ckFQSUVuYWJsZWQ6KSBCT09MIF91bmRvTWFuYWdlckFQSUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVy
PV9zZXRXZWJWaWV3Q2F0ZWdvcnk6KSBfV0tXZWJWaWV3Q2F0ZWdvcnkgX3dlYlZpZXdDYXRlZ29y
eSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwot
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0SWdub3Jlc0FwcEJvdW5kRG9tYWluczop
IEJPT0wgX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOikgQk9PTCBfc2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dFByb2Nlc3NEaXNwbGF5TmFtZTopIE5TU3RyaW5nICpfcHJvY2Vzc0Rpc3BsYXlOYW1lIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
CmluZGV4IDA3MTRiMTdhYTc5NTc4NzcyNWIwYmRlMGI3ZWNmYTg4MjE3ZWY3YzAuLmFkNjExMTEx
NzcwNmNlZWY1NDhjY2NmODViZjhhMGQxMjk3OTk2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMzQyLDkgKzM0
Miw2IEBAIGZvciB0aGlzIHByb3BlcnR5LgogCiAtICh2b2lkKV9nZXRQcm9jZXNzRGlzcGxheU5h
bWVXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25I
YW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CiAKLS0gKHZvaWQpX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46KHZvaWQoXikoQk9P
TCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX2lzRm9yY2VkSW50b0FwcEJvdW5kTW9kZToodm9p
ZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotCiAtICh2b2lkKV9ncmFudEFjY2Vzc1RvUHJlZmVy
ZW5jZVNlcnZpY2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIAogLSAodm9pZClfc2VydmljZVdvcmtlcnNFbmFibGVkOih2b2lkKF4pKEJPT0wp
KWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CkBAIC00NTksNiArNDU2LDkgQEAgZm9yIHRoaXMgcHJvcGVydHkuCiAK
IC0gKHZvaWQpX3dpbGxPcGVuQXBwTGluayBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJB
KSk7CiAKKy0gKHZvaWQpX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46KHZvaWQoXikoQk9P
TCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwor
LSAodm9pZClfaXNGb3JjZWRJbnRvQXBwQm91bmRNb2RlOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiBA
aW50ZXJmYWNlIFdLV2ViVmlldyAoKSA8VUlSZXNwb25kZXJTdGFuZGFyZEVkaXRBY3Rpb25zPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmUubW0KaW5kZXggOWRlYTNlNmYzMjBmMjAxNTM5MWUxZTIwOGM4NzY2YjY0YTFiYjhm
NS4uZWY5MGU4YmY0ODUxM2RhNzIyOWNlOWZkMjJmMDdmNTFmZTUxNDhhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tCkBAIC02MzUsNiArNjM1LDcgQEAgLSAoX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24gKilfY29uZmlndXJhdGlvbgogCiAtICh2b2lkKV9hcHBCb3VuZERvbWFpbnM6KHZvaWQgKF4p
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmdldEFwcEJvdW5kRG9t
YWlucyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIp
XShhdXRvJiBkb21haW5zKSBtdXRhYmxlIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9i
amVjdD4+IGFwaURvbWFpbnM7CiAgICAgICAgIGFwaURvbWFpbnMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShkb21haW5zLnNpemUoKSk7CkBAIC02NDIsMTAgKzY0MywxNCBAQCAtICh2b2lkKV9hcHBC
b3VuZERvbWFpbnM6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhh
bmRsZXIKICAgICAgICAgICAgIGFwaURvbWFpbnMudW5jaGVja2VkQXBwZW5kKEFQSTo6U3RyaW5n
OjpjcmVhdGUoZG9tYWluLnN0cmluZygpKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdy
YXBwZXIoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXBpRG9tYWlucykpKSk7CiAgICAgfSk7
CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisjZW5kaWYKIH0KIAogLSAodm9p
ZClfYXBwQm91bmRTY2hlbWVzOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICopKWNvbXBs
ZXRpb25IYW5kbGVyCiB7CisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT5nZXRBcHBCb3VuZFNjaGVtZXMoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYgc2NoZW1lcykgbXV0YWJsZSB7CiAg
ICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlTY2hlbWVzOwogICAgICAgICBh
cGlTY2hlbWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2NoZW1lcy5zaXplKCkpOwpAQCAtNjUz
LDYgKzY1OCw5IEBAIC0gKHZvaWQpX2FwcEJvdW5kU2NoZW1lczoodm9pZCAoXikoTlNBcnJheTxO
U1N0cmluZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgogICAgICAgICAgICAgYXBpU2NoZW1lcy51
bmNoZWNrZWRBcHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShzY2hlbWUpKTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIod3JhcHBlcihBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcGlTY2hl
bWVzKSkpKTsKICAgICB9KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyNl
bmRpZgogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
aW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLm1tCmluZGV4IDUxM2Q4ZGM0NzNmYTMxMDg0MzU5YjQ1MjdlZjI3Mzc0MWViMmFi
M2IuLmU1MDY3NmUzNDZjNzYwM2FmM2FiYTJkNjg4ZGNlZjgyYjBmNDU4MzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC0zMTE1LDYg
KzMxMTUsMjAgQEAgLSAodm9pZClfd2lsbE9wZW5BcHBMaW5rCiAgICAgICAgIF9wYWdlLT53aWxs
T3BlbkFwcExpbmsoKTsKIH0KIAorLSAodm9pZClfaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5pc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluVGVzdGluZyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCBpc0FwcEJvdW5kKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGlzQXBwQm91bmQpOworICAgIH0pOworfQorCistICh2b2lkKV9pc0Zv
cmNlZEludG9BcHBCb3VuZE1vZGU6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sK
KyAgICBfcGFnZS0+aXNGb3JjZWRJbnRvQXBwQm91bmRNb2RlVGVzdGluZyhbY29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCBpc0ZvcmNlZElu
dG9BcHBCb3VuZE1vZGUpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNGb3JjZWRJbnRv
QXBwQm91bmRNb2RlKTsKKyAgICB9KTsKK30KKwogQGVuZCAvLyBXS1dlYlZpZXcgKFdLUHJpdmF0
ZUlPUykKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQx
MjUwMjBhNTk1ZDI5ODg5NjkzYjQyMzBjMTAxZDgzMjQzYWUzYmUuLmE4OTk2YWZiMDEwYzEwMDI2
ZmUyZGYyYTQyMTgxYzY1NWNmYzdjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTE0NCwxMiArMTE0
NCwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc0lzb2xhdGVkU2Vzc2lvbihzZXNzaW9uSUQsIGRv
bWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAorI2lmIEVOQUJMRShBUFBf
Qk9VTkRfRE9NQUlOUykKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91bmREb21h
aW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBhcHBCb3VuZERvbWFpbnMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBCb3VuZERvbWFpbnNGb3JS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHNlc3Npb25JRCwgYXBwQm91bmREb21haW5zKSwgW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiB9CisjZW5kaWYKIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3Rpbmco
Ym9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CkBAIC0xNTM3LDYgKzE1MzksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJl
c2V0UXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcgogICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc2V0UXVvdGEo
c2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCisjaWYgRU5BQkxF
KEFQUF9CT1VORF9ET01BSU5TKQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpoYXNBcHBCb3Vu
ZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2Uo
KSkgewpAQCAtMTU1OSw3ICsxNTYyLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjbGVh
ckFwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXQKIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRBcHBCb3VuZERvbWFpbnMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKGF1dG8qIHN0b3JlID0gd2Vic2l0ZURhdGFTdG9yZUZyb21TZXNz
aW9uSUQoc2Vzc2lvbklEKSkgewogICAgICAgICBzdG9yZS0+Z2V0QXBwQm91bmREb21haW5zKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYgYXBw
Qm91bmREb21haW5zKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gYXBwQm91bmREb21haW5z
Q29weSA9IGFwcEJvdW5kRG9tYWluczsKQEAgLTE1NjgsMTAgKzE1NzAsOCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmdldEFwcEJvdW5kRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENvbXBsZXRpbwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7Ci0jZWxzZQotICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0jZW5kaWYKIH0K
KyNlbmRpZgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnVwZGF0ZUJ1bmRsZUlkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGE0MDk0MDQxNjUwODVh
MjhmNjI4MDU4MmYxZjQwNTI0Yjc5NWQ5NDIuLmQ1NDY4NTI5YjEwYjY3NzA5NjAyOTc3ZGY4MDNk
NjA3YWU5OTkwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xNzksNyArMTc5LDkgQEAgcHVibGljOgogICAg
IHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0Zv
clJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgVmVjdG9yPFJlZ2lzdHJh
YmxlRG9tYWluPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHZvaWQgc2V0
QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwg
Y29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworI2VuZGlmCiAgICAgdm9pZCBzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRl
c3RpbmcoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTIzNSw5ICsyMzcsMTEgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmKTsKICAgICB2b2lkIHJlc291cmNlTG9hZERpZENvbXBsZXRlV2l0aEVycm9yKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOwogCisjaWYgRU5BQkxFKEFQUF9CT1VO
RF9ET01BSU5TKQogICAgIHZvaWQgaGFzQXBwQm91bmRTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGNsZWFyQXBwQm91bmRT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgZ2V0QXBwQm91bmREb21haW5zKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKKyNlbmRp
ZgogCiAgICAgLy8gUHJvY2Vzc1Rocm90dGxlckNsaWVudAogICAgIHZvaWQgc2VuZFByZXBhcmVU
b1N1c3BlbmQoSXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTVmOWE4MGUxNWYz
MWJlZDk0Yjg2MTk5ZDIxNDVkNmQyMjBiYmRhYy4uMzAyMDg3YWNiOGYyZmQ1ZDUzZmYxMjdkNzM3
NmExM2Q3ZWYyMTY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNjksNyAr
NjksOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIE5v
dFJlZkNvdW50ZWQgewogCiAgICAgU2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lELCBib29sIGhhc1VwbG9hZCkKIAorI2lmIEVOQUJMRShB
UFBfQk9VTkRfRE9NQUlOUykKICAgICBHZXRBcHBCb3VuZERvbWFpbnMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKSAtPiAoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gYXBwQm91
bmREb21haW5zKSBBc3luYworI2VuZGlmCiAKICAgICBSZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4s
IHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1
aXJlZCkgLT4gKE9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkgQXN5bmMKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDY1ODkyZGNiMGZiODVhY2Y5
YWFmMDc3ZmUyYTE0MDRiZmFmMmM0NjYuLjUyYzRkM2Q5Mzg4MmRjMDQxMDYxMWFjZTU1NzhhMDc1
YjZiYjBhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
NDg5LDcgKzQ4OSw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBh
Z2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAgICAgLCBtX3Jlc2V0UmVj
ZW50Q3Jhc2hDb3VudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2VQcm94eTo6
cmVzZXRSZWNlbnRDcmFzaENvdW50KQogICAgICwgbV90cnlDbG9zZVRpbWVvdXRUaW1lcihSdW5M
b29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlUHJveHk6OnRyeUNsb3NlVGltZWRPdXQpCiAgICAg
LCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyhtX2NvbmZpZ3VyYXRpb24tPmNvcnNEaXNhYmxpbmdQ
YXR0ZXJucygpKQotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9N
QUlOUykKICAgICAsIG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucyhtX2NvbmZpZ3VyYXRpb24tPmln
bm9yZXNBcHBCb3VuZERvbWFpbnMoKSkKICAgICAsIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJv
dW5kRG9tYWlucyhtX2NvbmZpZ3VyYXRpb24tPmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERv
bWFpbnMoKSkKICNlbmRpZgpAQCAtMTM4Myw3ICsxMzgzLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEsIGMKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YToi
KTsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01B
SU5TKQogICAgIGlmIChNSU1FVHlwZSA9PSAidGV4dC9odG1sIl9zICYmICFpc0Z1bGxXZWJCcm93
c2VyKCkpCiAgICAgICAgIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IHRy
dWU7CiAjZW5kaWYKQEAgLTMxMTgsMTYgKzMxMTgsMTQgQEAgcHJpdmF0ZToKICAgICBQb2xpY3lD
aGVja0lkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogc3RhdGljIGJvb2wgc2hvdWxkVHJl
YXRVUkxQcm90b2NvbEFzQXBwQm91bmQoY29uc3QgVVJMJiByZXF1ZXN0VVJMKQogewogICAgIHJl
dHVybiByZXF1ZXN0VVJMLnByb3RvY29sSXNBYm91dCgpIHx8IHJlcXVlc3RVUkwucHJvdG9jb2xJ
c0RhdGEoKSB8fCByZXF1ZXN0VVJMLnByb3RvY29sSXNCbG9iKCkgfHwgcmVxdWVzdFVSTC5pc0xv
Y2FsRmlsZSgpIHx8IHJlcXVlc3RVUkwucHJvdG9jb2xJc0phdmFTY3JpcHQoKTsKIH0KLSNlbmRp
ZgogCiBib29sIFdlYlBhZ2VQcm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbkFu
ZENoZWNrSWZQZXJtaXR0ZWQoYm9vbCBpc01haW5GcmFtZSwgY29uc3QgVVJMJiByZXF1ZXN0VVJM
LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbikKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChpc0Z1bGxX
ZWJCcm93c2VyKCkpIHsKICAgICAgICAgaWYgKGhhc1Byb2hpYml0ZWRVc2FnZVN0cmluZ3MoKSkK
ICAgICAgICAgICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOjpObzsKQEAgLTMxNjEsMTEgKzMxNTksNiBAQCBib29sIFdlYlBhZ2VQ
cm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQo
Ym9vbCBpc01haQogICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPnNldFdlYlZpZXdDYXRlZ29yeShX
ZWJWaWV3Q2F0ZWdvcnk6OkluQXBwQnJvd3Nlcik7CiAgICAgICAgIG1faXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsKICAgICB9Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShpc01haW5GcmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHJl
cXVlc3RVUkwpOwotICAgIFVOVVNFRF9QQVJBTShpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KTsKLSNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMTc4LDEwICszMTcxLDExIEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojppc0ZvcmNlZEludG9BcHBCb3VuZE1vZGVUZXN0aW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+CiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIobV9saW1p
dHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKTsKIH0KKyNlbmRpZgogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudEluTmV0d29ya1Byb2Nlc3Mo
KQogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkK
KyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkK
ICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
bmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBpZiAoIW5ldHdvcmtQcm9jZXNzLT5jYW5TZW5k
TWVzc2FnZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzE5Miw3ICszMTg2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRJbk5ldHdvcmtQ
cm9jZXNzKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVt
ZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkK
KyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkK
ICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRl
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlBhZ2U6OkNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoKSwg
W2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3Mg
PSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkubmV0d29ya1Byb2Nlc3MoKSkgewpAQCAtNDQwMSw3
ICs0Mzk1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVy
bCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9
IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPyBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeTo6VXNlIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlOwot
ICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnByZWNv
bm5lY3RUbyhzZXNzaW9uSUQoKSwgaWRlbnRpZmllcigpLCB3ZWJQYWdlSUQoKSwgdXJsLCB1c2Vy
QWdlbnQoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbik7CisgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKCkucHJlY29ubmVjdFRvKHNlc3Npb25JRCgpLCBpZGVudGlmaWVyKCksIHdlYlBhZ2VJRCgp
LCB1cmwsIHVzZXJBZ2VudCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbigpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENhblVzZUNy
ZWRlbnRpYWxTdG9yYWdlKGJvb2wgY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCkBAIC01MTc4LDcg
KzUxNzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAgICBzaG91bGRFeHBlY3RT
YWZlQnJvd3NpbmdSZXN1bHQgPSBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6Ok5vOwog
CiAgICAgU2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQgc2hvdWxkRXhwZWN0QXBwQm91
bmREb21haW5SZXN1bHQgPSBTaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdDo6Tm87Ci0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAg
ICAgc2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQgPSBTaG91bGRFeHBlY3RBcHBCb3Vu
ZERvbWFpblJlc3VsdDo6WWVzOwogI2VuZGlmCiAgICAgCkBAIC01MTk3LDcgKzUxOTEsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAgICAgICAgcmVjZWl2ZWROYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50LCBmcmFtZSwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVy
KSk7CiAgICAgICAgIH07CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoQVBQX0JP
VU5EX0RPTUFJTlMpCiAgICAgICAgIGlmIChwb2xpY3lBY3Rpb24gIT0gUG9saWN5QWN0aW9uOjpJ
Z25vcmUpIHsKICAgICAgICAgICAgIGlmICghc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bkFuZENoZWNrSWZQZXJtaXR0ZWQoZnJhbWUtPmlzTWFpbkZyYW1lKCksIG5hdmlnYXRpb24tPmN1
cnJlbnRSZXF1ZXN0KCkudXJsKCksIGlzQXBwQm91bmREb21haW4pKSB7CiAgICAgICAgICAgICAg
ICAgYXV0byBlcnJvciA9IGVycm9yRm9yVW5wZXJtaXR0ZWRBcHBCb3VuZERvbWFpbk5hdmlnYXRp
b24obmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSk7CkBAIC01MjU1LDcgKzUyNDks
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgIH0sIHNob3VsZEV4cGVjdFNhZmVCcm93
c2luZ1Jlc3VsdCwgc2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQpKTsKICAgICBpZiAo
c2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0ID09IFNob3VsZEV4cGVjdFNhZmVCcm93c2lu
Z1Jlc3VsdDo6WWVzKQogICAgICAgICBiZWdpblNhZmVCcm93c2luZ0NoZWNrKHJlcXVlc3QudXJs
KCksIGZyYW1lLmlzTWFpbkZyYW1lKCksIGxpc3RlbmVyKTsKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBtX3dlYnNpdGVEYXRhU3Rv
cmUtPmJlZ2luQXBwQm91bmREb21haW5DaGVjayhyZXF1ZXN0LnVybCgpLCBsaXN0ZW5lcik7CiAj
ZW5kaWYKICAgICBBUEk6Ok5hdmlnYXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24gPSBmcmFtZS5p
c01haW5GcmFtZSgpID8gbmF2aWdhdGlvbi5nZXQoKSA6IG51bGxwdHI7CkBAIC03OTA5LDcgKzc5
MDMsOSBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25Q
YXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5h
YmxlVlA5U1dEZWNvZGVyID0gcHJlZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpICYmICgh
V2ViQ29yZTo6c3lzdGVtSGFzQmF0dGVyeSgpIHx8IHByZWZlcmVuY2VzKCkudnA5U1dEZWNvZGVy
RW5hYmxlZE9uQmF0dGVyeSgpKTsKICNlbmRpZgogICAgIHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVy
ZURpc3BsYXlJblVJUHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jb25maWd1cmF0
aW9uKCkuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcygpOworI2lmIEVOQUJMRShBUFBf
Qk9VTkRfRE9NQUlOUykKICAgICBwYXJhbWV0ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3Vu
ZERvbWFpbnMgPSBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM7CisjZW5kaWYK
ICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nID0gbV9j
b25maWd1cmF0aW9uLT5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygpOwogICAg
IHBhcmFtZXRlcnMuY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPSBtX2NhblVzZUNyZWRlbnRpYWxT
dG9yYWdlOwogCkBAIC03OTI4LDcgKzc5MjQsOSBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
IFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwog
ICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHBhcmFt
ZXRlcnMubmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzID0gcHJlZmVyZW5jZXMoKS5uZWVk
c0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MoKTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIHBhcmFt
ZXRlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGRkMmMz
NGNlYTE2MDgyYjZjODhhZTc0NTMwNzJmZDJkYTc5YTI5MzYuLjdkMTliYjUzMmQ0YjBlZDAxYjM5
NTkyMjQ1MjU2ZGE5OGY5N2VlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC0xNzc0LDExICsxNzc0LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzVGFraW5n
U25hcHNob3RzRm9yQXBwbGljYXRpb25TdXNwZW5zaW9uKGJvb2wpOwogICAgIHZvaWQgc2V0TmVl
ZHNET01XaW5kb3dSZXNpemVFdmVudCgpOwogCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQorICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluOyB9CiAgICAgdm9pZCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluVGVzdGluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzRm9yY2VkSW50b0Fw
cEJvdW5kTW9kZVRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0KLSAg
ICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsgfQogICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc1RvcEZyYW1l
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBtX2lzVG9wRnJhbWVO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQorI2Vsc2UKKyAgICAgICAgT3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBj
b25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvckZvclVucGVybWl0dGVkQXBwQm91
bmREb21haW5OYXZpZ2F0aW9uKGNvbnN0IFVSTCYpOwpAQCAtMjM3NSw4ICsyMzc4LDEwIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB0cnlDbG9zZVRpbWVkT3V0KCk7CiAgICAgdm9pZCBtYWtlU3RvcmFn
ZVNwYWNlUmVxdWVzdChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYg
ZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdp
blVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRV
c2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogICAgICAgICAKKyNp
ZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgYm9vbCBzZXRJc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluQW5kQ2hlY2tJZlBlcm1pdHRlZChib29sIGlzTWFpbkZyYW1lLCBjb25zdCBV
UkwmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pOwotICAgICAgICAKKyNl
bmRpZgorCiAgICAgY29uc3QgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgbV93ZWJQYWdlSUQ7CiAgICAgV2Vha1B0cjxQYWdlQ2xpZW50PiBtX3Bh
Z2VDbGllbnQ7CkBAIC0yODcyLDExICsyODc3LDE0IEBAIHByaXZhdGU6CiAgICAgTW9ub3Rvbmlj
VGltZSBtX2RpZEZpbmlzaERvY3VtZW50TG9hZEZvck1haW5GcmFtZVRpbWVzdGFtcDsKICNlbmRp
ZgogICAgICAgICAKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgT3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKICAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gbV9pc1RvcEZyYW1l
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgYm9vbCBtX2lnbm9yZXNBcHBCb3VuZERv
bWFpbnMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV91c2VyU2NyaXB0c05vdGlmaWVkIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyB7IGZhbHNl
IH07CisjZW5kaWYKKworICAgIGJvb2wgbV91c2VyU2NyaXB0c05vdGlmaWVkIHsgZmFsc2UgfTsK
ICAgICBib29sIG1faGFzRXhlY3V0ZWRBcHBCb3VuZEJlaGF2aW9yQmVmb3JlTmF2aWdhdGlvbiB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2NhblVzZUNyZWRlbnRpYWxTdG9yYWdlIHsgdHJ1ZSB9Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBmM2U2
MDFiZTA0ZTQ3ZGM4ZDhkOGRmYmYyOTA0NjcyNDVmZWFkMWMxLi45YjNjYTBhZDNiMTZlODIxYzk2
NGJmY2RiMGExZjg4NzU4MzUzODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCkBAIC0xNDE0LDcgKzE0MTQsOSBAQCBEb3dubG9hZFByb3h5JiBXZWJQcm9j
ZXNzUG9vbDo6ZG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJv
eAogICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kID0g
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vOwogICAgIGlmIChpbml0aWF0aW5nUGFnZSkg
ewogICAgICAgICBpbml0aWF0aW5nUGFnZS0+aGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2Fk
UHJveHkpOworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICAgICAgaXNBcHBCb3Vu
ZCA9IGluaXRpYXRpbmdQYWdlLT5pc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4o
KTsKKyNlbmRpZgogICAgIH0KIAogICAgIGlmIChuZXR3b3JrUHJvY2VzcygpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggZmIzYjIxZmQ5MzYyOGEzNGFlM2Q0ZGVj
ZmQ0ZTc5N2NmNjUzMWY2NS4uZWVlNzhmYmM5ODg2NDk0NzZkMTA5NWI0OWNmMTA2YzE4NDQ1ZDI0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNjMsMTQgKzYzLDE1
IEBAIHN0YXRpYyBIYXNoU2V0PFdlYnNpdGVEYXRhU3RvcmUqPiYgZGF0YVN0b3JlcygpCiAKIHN0
YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdE5ldHdvcmtMb2FkVGhyb3R0bGVMYXRlbmN5TWls
bGlzZWNvbmRzRGVmYXVsdHNLZXkgPSBAIldlYktpdE5ldHdvcmtMb2FkVGhyb3R0bGVMYXRlbmN5
TWlsbGlzZWNvbmRzIjsKIAorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIHN0YXRpYyBX
b3JrUXVldWUmIGFwcEJvdW5kRG9tYWluUXVldWUoKQogewogICAgIHN0YXRpYyBhdXRvJiBxdWV1
ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkFwcEJvdW5kRG9tYWlucyIs
IFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHF1ZXVlOwog
fQotCiBzdGF0aWMgc3RkOjphdG9taWM8Ym9vbD4gaGFzSW5pdGlhbGl6ZWRBcHBCb3VuZERvbWFp
bnMgPSBmYWxzZTsKIHN0YXRpYyBzdGQ6OmF0b21pYzxib29sPiBrZXlFeGlzdHMgPSBmYWxzZTsK
KyNlbmRpZgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIFdlYkNvcmU6
OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgV2Vic2l0ZURhdGFTdG9yZTo6dGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSgpIGNvbnN0CkBAIC0yMTUsOCArMjE2LDkgQEAgdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewogICAgIEFTU0VSVCghZGF0YVN0
b3JlcygpLmNvbnRhaW5zKHRoaXMpKTsKICAgICBkYXRhU3RvcmVzKCkuYWRkKHRoaXMpOwotCisj
aWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGluaXRpYWxpemVBcHBCb3VuZERvbWFp
bnMoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtRGVzdHJv
eSgpCkBAIC0zOTMsNiArMzk1LDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QKICAgICByZXR1
cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwogfQogCisj
aWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogc3RhdGljIEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+JiBhcHBCb3VuZERvbWFpbnMoKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CkBAIC01NTgsNSArNTYxLDYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpy
ZWluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoKQogICAgIGhhc0luaXRpYWxpemVkQXBwQm91bmRE
b21haW5zID0gZmFsc2U7CiAgICAgaW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyhGb3JjZVJlaW5p
dGlhbGl6YXRpb246Olllcyk7CiB9CisjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBi
OWZiODk1OTE0ODRhZDYxNjFlZGE4NTM2OGM2MjZkOTBhZGJmZDhmLi5kYzY3MTYxNGRlZGU2Mjdj
NjEzNjQyYWNjMzFmYjc4ODFiYjM3OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMjI5Nyw3ICsy
Mjk3LDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFy
YW1ldGVycygpCiAgICAgYXV0byBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdl
YkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzOwog
ICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFp
bjsKICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFp
bnM7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQog
ICAgIGlmIChpc0FwcEJvdW5kSVRQUmVsYXhhdGlvbkVuYWJsZWQpCiAgICAgICAgIGFwcEJvdW5k
RG9tYWlucyA9IGFwcEJvdW5kRG9tYWluc0lmSW5pdGlhbGl6ZWQoKS52YWx1ZU9yKEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHsgfSk7CiAjZW5kaWYKQEAgLTI0NzQsNiArMjQ3
NCwxOCBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNo
U2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIH0KICNlbmRpZgogCit2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoVVJMJiYgb2xkTmFtZSwgVVJMJiYgbmV3TmFt
ZSwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQ
cm9jZXNzUG9vbHMoKSkgeworICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9j
ZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3Mt
PmFkZFNlc3Npb24oKnRoaXMpOworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnJlbmFtZU9y
aWdpbkluV2Vic2l0ZURhdGEobV9zZXNzaW9uSUQsIG9sZE5hbWUsIG5ld05hbWUsIGRhdGFUeXBl
cywgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICAgICAgfQorICAgIH0KK30KKworI2lm
IEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aGFzQXBw
Qm91bmRTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29s
cygpKSB7CkBAIC0yNDk1LDE4ICsyNTA3LDYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpjbGVh
ckFwcEJvdW5kU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGkKICAg
ICB9CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0
YShVUkwmJiBvbGROYW1lLCBVUkwmJiBuZXdOYW1lLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiBkYXRhVHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKLXsKLSAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6
Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBmb3IgKGF1dG8mIHByb2Nl
c3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKSB7
Ci0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+YWRkU2Vzc2lvbigqdGhpcyk7Ci0gICAgICAg
ICAgICBuZXR3b3JrUHJvY2Vzcy0+cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShtX3Nlc3Npb25J
RCwgb2xkTmFtZSwgbmV3TmFtZSwgZGF0YVR5cGVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0p
OwotICAgICAgICB9Ci0gICAgfQotfQotCi0jaWYgUExBVEZPUk0oQ09DT0EpCiB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OmZvcndhcmRBcHBCb3VuZERvbWFpbnNUb0lUUElmSW5pdGlhbGl6ZWQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8g
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDJlY2Y0ZDllMjVjMzQ0ZjRhYmIx
OWMxZDE2MzEwNTk3OTYzZmYyYzYuLjE0MDc2YWE5MjRlN2NlMmZmN2Y3M2VkYTM2ODNhODVjNGE2
M2RhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTMwMCwyMiArMzAwLDI2IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBodHRwM0VuYWJsZWQoKTsKIAogICAgIHZvaWQgcmVzZXRRdW90YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQog
ICAgIHZvaWQgaGFzQXBwQm91bmRTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJBcHBCb3VuZFNlc3Npb24oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKLQogICAgIHZvaWQgYmVnaW5BcHBCb3VuZERvbWFpbkNoZWNrKGNvbnN0
IFVSTCYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOwogICAgIHZvaWQgZ2V0QXBwQm91
bmREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4mKT4mJikgY29uc3Q7CiAgICAgdm9pZCBnZXRBcHBCb3VuZFNjaGVt
ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFN0cmluZz4mKT4mJikgY29u
c3Q7CiAgICAgdm9pZCBlbnN1cmVBcHBCb3VuZERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYsIGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYpPiYmKSBjb25zdDsKICAgICB2b2lkIHJlaW5pdGlhbGl6ZUFwcEJvdW5kRG9t
YWlucygpOwogICAgIHN0YXRpYyB2b2lkIHNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoSGFz
aFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyNlbmRpZgogICAgIHZvaWQgdXBkYXRlQnVuZGxlSWRlbnRpZmllckluTmV0d29y
a1Byb2Nlc3MoY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIGNsZWFyQnVuZGxlSWRlbnRpZmllckluTmV0d29ya1Byb2Nlc3MoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICAKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBGb3JjZVJl
aW5pdGlhbGl6YXRpb24gOiBib29sIHsgTm8sIFllcyB9OworI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKICAgICB2b2lkIGluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9yY2VSZWluaXRp
YWxpemF0aW9uID0gRm9yY2VSZWluaXRpYWxpemF0aW9uOjpObyk7CiAgICAgdm9pZCBhZGRUZXN0
RG9tYWlucygpIGNvbnN0OworI2VuZGlmCiAKICAgICB2b2lkIGZldGNoRGF0YUFuZEFwcGx5KE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlv
bj4sIFJlZlB0cjxXb3JrUXVldWU+JiYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRh
UmVjb3JkPik+JiYgYXBwbHkpOwogCkBAIC0zNDcsNyArMzUxLDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgbWF5YmVSZWdpc3RlcldpdGhTZXNzaW9uSURNYXAoKTsKIAotI2lmIFBMQVRGT1JNKENP
Q09BKQorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBzdGF0aWMgT3B0aW9uYWw8
SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IGFwcEJvdW5kRG9tYWluc0lmSW5p
dGlhbGl6ZWQoKTsKICAgICBjb25zdGV4cHIgc3RhdGljIGNvbnN0IHN0ZDo6YXRvbWljPGJvb2w+
IGlzQXBwQm91bmRJVFBSZWxheGF0aW9uRW5hYmxlZCA9IGZhbHNlOwogICAgIHN0YXRpYyB2b2lk
IGZvcndhcmRBcHBCb3VuZERvbWFpbnNUb0lUUElmSW5pdGlhbGl6ZWQoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCA5N2ViNWIzNGU3NTY1NDU5N2JhYTY2Mjcx
Yzg2ODM5MDYxYmViZGZhLi41MDY5Yzk1YWE0ZGI1OWI2ODMxZjg0NDM3MDEzOTUwZmMwMTFiNzIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCkBAIC0zMzUsOCArMzM1LDExIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3Vy
Y2VMCiAgICAgYXV0byogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSBmcmFtZSA/IHRvV2ViRnJhbWVM
b2FkZXJDbGllbnQoZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpKSA6IG51bGxwdHI7CiAgICAgYXV0
byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/ICZ3ZWJGcmFtZUxvYWRlckNsaWVu
dC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CiAgICAgYXV0byogd2ViUGFnZSA9IHdlYkZyYW1lID8g
d2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CisKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJ
TlMpCiAgICAgaWYgKHdlYkZyYW1lKQogICAgICAgICBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluID0gd2ViRnJhbWUtPmlzVG9wRnJhbWVOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbigpOworI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQog
ICAgIGlmIChkb2N1bWVudCkgewpAQCAtNjAwLDkgKzYwMywxMCBAQCB2b2lkIFdlYkxvYWRlclN0
cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRl
ciwgdW5zaQogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzID0g
Y29udGVudFNlY3VyaXR5UG9saWN5LT5yZXNwb25zZUhlYWRlcnMoKTsKICAgICB9CiAgICAgbG9h
ZFBhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyA9IG9yaWdpbmFsUmVxdWVzdEhlYWRl
cnM7Ci0gICAgCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlmICh3ZWJGcmFt
ZSkKICAgICAgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9
IHdlYkZyYW1lLT5pc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKKyNlbmRp
ZgogICAgIGFkZFBhcmFtZXRlcnNTaGFyZWQod2ViRnJhbWUtPmNvcmVGcmFtZSgpLCBsb2FkUGFy
YW1ldGVycyk7CiAKICAgICBkYXRhLnNocmluaygwKTsKQEAgLTY4MSw5ICs2ODUsMTAgQEAgdm9p
ZCBXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9hZChGcmFtZSYgZnJhbWUsIFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY28KICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNzcFJlc3Bv
bnNlSGVhZGVycyA9IGNvbnRlbnRTZWN1cml0eVBvbGljeS0+cmVzcG9uc2VIZWFkZXJzKCk7CiAg
ICAgfQogICAgIGFkZFBhcmFtZXRlcnNTaGFyZWQoJmZyYW1lLCBsb2FkUGFyYW1ldGVycyk7Ci0g
ICAgCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGxvYWRQYXJhbWV0ZXJzLmlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSB3ZWJGcmFtZS0+aXNUb3BGcmFtZU5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKCk7Ci0gICAgCisjZW5kaWYKKwogI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCiAgICAgbG9hZFBhcmFtZXRlcnMubWFpbkRvY3VtZW50VVJMID0gZG9jdW1l
bnQtPnRvcERvY3VtZW50KCkudXJsKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgcGFzc2lu
ZyB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCB3ZSBzaG91bGQganVzdCBwYXNzIHdl
YlBhZ2VJZCB0byBOZXR3b3JrUHJvY2Vzcy4KQEAgLTc1MCw3ICs3NTUsOSBAQCB2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgV2ViUGFnZQogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VB
Y2Nlc3MgPSBzaG91bGRQZXJmb3JtU2VjdXJpdHlDaGVja3MoKTsKICAgICAvLyBGSVhNRTogVXNl
IHRoZSBwcm9wZXIgZGVzdGluYXRpb24gb25jZSBhbGwgZmV0Y2ggb3B0aW9ucyBhcmUgcGFzc2Vk
LgogICAgIHBhcmFtZXRlcnMub3B0aW9ucy5kZXN0aW5hdGlvbiA9IEZldGNoT3B0aW9uczo6RGVz
dGluYXRpb246OkVtcHR5U3RyaW5nOworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAg
ICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSB3ZWJGcmFtZS5pc1Rv
cEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKKyNlbmRpZgogCiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQcmVj
b25uZWN0VG8ocHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdURk1vdmUocGFyYW1ldGVycykpLCAw
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDAwYmUxZTJkNGRkMjEy
OWZkNjQ2OWJjZGZiOWJiNmMxNjdkZTBiOTIuLjFiOWEzYTlhY2Q1MzA2NjQ3NWEzN2QwMGU5MjA1
OGU4ZDhjYjI4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTg5Nyw4
ICsxODk3LDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2VuZEgyUGluZyhjb25zdCBV
UkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHAKICNlbmRpZgogICAgIHBhcmFtZXRl
cnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPSBQcmVjb25uZWN0T25seTo6WWVzOwogICAgIHBhcmFt
ZXRlcnMub3B0aW9ucy5kZXN0aW5hdGlvbiA9IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVt
cHR5U3RyaW5nOworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBwYXJhbWV0ZXJz
LmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBtX2ZyYW1lLT5pc1RvcEZyYW1lTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4oKTsKLSAgICAKKyNlbmRpZgogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpTZW5kSDJQaW5nKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKQEAgLTE5NTIsNiArMTk1Myw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QgY2FsbGJhY2tJCiB9CiAjZW5k
aWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogCisjaWYgRU5BQkxFKEFQUF9CT1VO
RF9ET01BSU5TKQogYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRW5hYmxlSW5BcHBC
cm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9mcmFtZS0+
c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCk7CkBAIC0xOTY4LDYg
KzE5NzAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpub3RpZnlQYWdlT2ZBcHBCb3Vu
ZEJlaGF2aW9yKCkKIAogICAgIHdlYlBhZ2UtPm5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3Io
KTsKIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCBmNTJlNDRkZjhlMDJkYzY4ZjJkMDYzYTE4YWNmNDlkYWFlODQ2MzU2
Li40OWZkMTFmNzExMzNlYWUxZDNiMzk0ODgxNTFhNTA0YjRhYjU4NDRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaApAQCAtMjg4LDggKzI4OCwxMCBAQCBwcml2YXRlOgogICAgIE9wdGlv
bmFsPEZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllcj4gbV9mcmFtZVNwZWNpZmlj
U3RvcmFnZUFjY2Vzc0lkZW50aWZpZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKICAgICBib29sIHNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0
aW9ucygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgbm90aWZ5UGFnZU9mQXBwQm91bmRCZWhhdmlv
cigpIGZpbmFsOworI2VuZGlmCiB9OwogCiAvLyBBcyBsb25nIGFzIEVtcHR5RnJhbWVMb2FkZXJD
bGllbnQgZXhpc3RzIGluIFdlYkNvcmUsIHRoaXMgY2FuIHJldHVybiAwLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGQxYTA2ODllMGNmZjFk
NDgzNmNlMWZjMWMxMzdiMWRiMmEyNjI5NTAuLmE5NDRkNWZhY2U3ODhlMWI4YmQ0YzM2ZDRhMTkw
OWFjNzcyYjEwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKQEAgLTg1NSw2ICs4NTUsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBXZWJG
cmFtZTo6Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdAogICAgIHJldHVybiBzaGFyZWRT
bmFwc2hvdDsKIH0KIAorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIGJvb2wgV2ViRnJh
bWU6OnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpCiB7CiAgICAg
aWYgKHBhZ2UoKSAmJiBwYWdlKCktPm5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcygpKQpA
QCAtODc2LDYgKzg3Nyw2IEBAIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBX
ZWJGcmFtZTo6aXNUb3BGcmFtZU5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tCiB7CiAgICAgcmV0dXJu
IGZyb21Db3JlRnJhbWUobV9jb3JlRnJhbWUtPm1haW5GcmFtZSgpKS0+aXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbigpOwogfQotCisjZW5kaWYKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggNDk4
YTY2NWI4ZTJlM2JkNDgzMTdiNDY5ZTNlYmUxNDkwOGRmNmRhMi4uNzQyMzUyNmEyZTI1ZTNiYmU3
OTQ4MzM0OTkyNTEwZmQwZGVjNjE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5oCkBAIC0xNzIsMTAgKzE3MiwxMyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
ICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiBmcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0OworCisj
aWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGJvb2wgc2hvdWxkRW5hYmxlSW5BcHBC
cm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCk7CiAgICAgdm9pZCBzZXRJc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluKSB7IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47IH07CiAgICAgT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7
IHJldHVybiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47IH0KICAgICBPcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNUb3BGcmFtZU5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKCkgY29uc3Q7CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBXZWJGcmFtZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3YmU4YTcy
NzgzZGQwOGQ4MGFlZjk5ZWRkNWU5Y2ExM2Q4MzE1N2NjLi4zZGUyYWJhNDJlMjk0N2FjYzI2NTcx
MmQxNmQ4OWJlNjY2MTFlZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtNDE2LDcgKzQxNiw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykK
ICAgICAsIG1fYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIgeyBwYXJhbWV0ZXJzLmFsd2F5
c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyIH0KICAgICAsIG1fYWx3YXlzU2hvd3NWZXJ0aWNhbFNj
cm9sbGVyIHsgcGFyYW1ldGVycy5hbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIgfQogICAgICwg
bV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFJlbmRl
ckNhbnZhc0luR1BVUHJvY2VzcyB9CisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAg
ICwgbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgeyBwYXJhbWV0ZXJzLm5lZWRzSW5B
cHBCcm93c2VyUHJpdmFjeVF1aXJrcyB9CisjZW5kaWYKICNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQ
U0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQogICAgICwgbV9kZXRlcm1pbmVQcmltYXJ5U25hcHNo
b3R0ZWRQbHVnSW5UaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlOjpkZXRlcm1p
bmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5UaW1lckZpcmVkKQogI2VuZGlmCkBAIC00NzksNyAr
NDgxLDkgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAgICAgLCBtX292ZXJyaWRk
ZW5NZWRpYVR5cGUocGFyYW1ldGVycy5vdmVycmlkZGVuTWVkaWFUeXBlKQogICAgICwgbV9wcm9j
ZXNzRGlzcGxheU5hbWUocGFyYW1ldGVycy5wcm9jZXNzRGlzcGxheU5hbWUpCisjaWYgRU5BQkxF
KEFQUF9CT1VORF9ET01BSU5TKQogICAgICwgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmRE
b21haW5zKHBhcmFtZXRlcnMubGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucykKKyNl
bmRpZgogewogICAgIEFTU0VSVChtX2lkZW50aWZpZXIpOwogCkBAIC0xNTYxLDcgKzE1NjUsOSBA
QCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExv
YWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldAogCiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KExv
YWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiB7CisjaWYgRU5BQkxFKEFQUF9CT1VORF9E
T01BSU5TKQogICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4obG9hZFBhcmFtZXRl
cnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgJm1fbWFpbkZyYW1lLmdldCgpKTsKKyNl
bmRpZgogCiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3BwZXI7CiAKQEAgLTE1
OTksNyArMTYwNSw5IEBAIE5PX1JFVFVSTiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0V2FpdGlu
Z0ZvclByb2Nlc3NMYXVuY2goTG9hZFBhcmFtZXRlcnMmJiwgVVJMCiAKIHZvaWQgV2ViUGFnZTo6
bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGlj
aWVzLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1F
VHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29u
c3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5KQogeworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBzZXRJc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5G
cmFtZS5nZXQoKSk7CisjZW5kaWYKIAogICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBz
dG9wcGVyOwogCkBAIC0zMzE2LDggKzMzMjQsOSBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZQog
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotCisjaWYgRU5BQkxFKEFQUF9CT1VO
RF9ET01BSU5TKQogICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4ocG9saWN5RGVj
aXNpb24uaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgZnJhbWUpOworI2VuZGlmCiAgICAg
ZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBXVEZNb3ZlKHBvbGlj
eURlY2lzaW9uKSk7CiB9CiAKQEAgLTM0ODYsNiArMzQ5NSw3IEBAIHZvaWQgV2ViUGFnZTo6cnVu
SmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFy
YW1ldGVyCiAKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1
ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKICAgICB9Owor
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAoZnJhbWUtPnNob3VsZEVuYWJs
ZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayh7IH0sIEV4Y2VwdGlvbkRldGFp
bHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBhIGZyYW1lIHRoYXQgaXMgbm90
IGluIGFuIGFwcC1ib3VuZCBkb21haW4iX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6OlR5cGU6
OkFwcEJvdW5kRG9tYWluIH0sIGNhbGxiYWNrSUQpKTsKICAgICAgICAgaWYgKGF1dG8qIGRvY3Vt
ZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQpAQCAtMzQ5Myw3ICszNTAzLDcg
QEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChMb2FkaW5nLCAicnVuSmF2YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotCisjZW5kaWYKICAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKICAgICBmcmFt
ZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3Jp
cHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92
ZShyZXNvbHZlRnVuY3Rpb24pKTsKIH0KQEAgLTM3MzgsMTcgKzM3NDgsMjQgQEAgdm9pZCBXZWJQ
YWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKHN0b3JlLmdldEJvb2xWYWx1ZUZv
cktleShXZWJQcmVmZXJlbmNlc0tleTo6c2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRG
b3JUZXN0aW5nS2V5KCkpKQogICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50
KCk7CisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQorICAgIGJvb2wgc2hvdWxkQWxsb3dT
ZXJ2aWNlV29ya2Vyc0ZvckFwcEJvdW5kVmlld3MgPSBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBC
b3VuZERvbWFpbnM7CisjZWxzZQorICAgIGJvb2wgc2hvdWxkQWxsb3dTZXJ2aWNlV29ya2Vyc0Zv
ckFwcEJvdW5kVmlld3MgPSBmYWxzZTsKKyNlbmRpZgogCiAgICAgaWYgKHN0b3JlLmdldEJvb2xW
YWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6c2VydmljZVdvcmtlcnNFbmFibGVkS2V5KCkp
KSB7Ci0gICAgICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVt
ZW50KCkgfHwgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKTsKLSAgICAgICAg
aWYgKCFwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgJiYgIW1fbGlt
aXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucykKKyAgICAgICAgQVNTRVJUKHBhcmVudFBy
b2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSB8fCBzaG91bGRBbGxvd1NlcnZpY2VX
b3JrZXJzRm9yQXBwQm91bmRWaWV3cyk7CisgICAgICAgIGlmICghcGFyZW50UHJvY2Vzc0hhc1Nl
cnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpICYmICFzaG91bGRBbGxvd1NlcnZpY2VXb3JrZXJzRm9y
QXBwQm91bmRWaWV3cykKICAgICAgICAgICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuc2V0U2VydmljZVdvcmtlckVuYWJsZWQoZmFsc2UpOwogICAgIH0KICNlbmRp
ZgogCiAgICAgc2V0dGluZ3Muc2V0TGF5b3V0Vmlld3BvcnRIZWlnaHRFeHBhbnNpb25GYWN0b3Io
c3RvcmUuZ2V0RG91YmxlVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmxheW91dFZpZXdw
b3J0SGVpZ2h0RXhwYW5zaW9uRmFjdG9yS2V5KCkpKTsKIAorI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKICAgICBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyA9IHN0b3JlLmdl
dEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6bmVlZHNJbkFwcEJyb3dzZXJQcml2
YWN5UXVpcmtzS2V5KCkpOworI2VuZGlmCiAKICAgICBpZiAobV9kcmF3aW5nQXJlYSkKICAgICAg
ICAgbV9kcmF3aW5nQXJlYS0+dXBkYXRlUHJlZmVyZW5jZXMoc3RvcmUpOwpAQCAtNzIxMiw2ICs3
MjI5LDcgQEAgdm9pZCBXZWJQYWdlOjphbmltYXRpb25EaWRGaW5pc2hGb3JFbGVtZW50KGNvbnN0
IFdlYkNvcmU6OkVsZW1lbnQmKQogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9N
QUlOUykKIHZvaWQgV2ViUGFnZTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgV2ViRnJhbWUqIGZyYW1lKQogewogICAgIGZyYW1lLT5zZXRJc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwpAQCAtNzIyNCw2ICs3
MjQyLDcgQEAgdm9pZCBXZWJQYWdlOjpub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCkKICAg
ICBpZiAoIW1fbmF2aWdhdGlvbkhhc09jY3VyZWQgJiYgIW1fbGltaXRzTmF2aWdhdGlvbnNUb0Fw
cEJvdW5kRG9tYWlucykKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRI
YXNFeGVjdXRlZEFwcEJvdW5kQmVoYXZpb3JCZWZvcmVOYXZpZ2F0aW9uKCkpOwogfQorI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggM2I3NmI2YTViNzIyYTQ0MWNlYWQyMmUwODNkMzg2MmM0YTlk
YTZkNS4uMmU0MTg0NjJkODM5OGVjY2M5NGNjOTA1YmUxYjMzODhhM2I4YjlmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTM0NCw5ICsxMzQ0LDEx
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0QWxsRnJhbWVzKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRnJhbWVUcmVlTm9kZURhdGEmJik+JiYpOwogCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01B
SU5TKQogICAgIHZvaWQgbm90aWZ5UGFnZU9mQXBwQm91bmRCZWhhdmlvcigpOwogICAgIHZvaWQg
c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4sIFdlYkZyYW1lKik7CiAgICAgYm9vbCBuZWVkc0luQXBwQnJvd3NlclByaXZh
Y3lRdWlya3MoKSB7IHJldHVybiBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczsgfQor
I2VuZGlmCiAKICAgICBib29sIHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihXZWJDb3JlOjpS
ZW5kZXJpbmdQdXJwb3NlKTsKIApAQCAtMTgxOCw4ICsxODIwLDkgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyIHsgZmFsc2UgfTsKIAogICAgIGJvb2wg
bV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2lmIEVOQUJMRShB
UFBfQk9VTkRfRE9NQUlOUykKICAgICBib29sIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVp
cmtzIHsgZmFsc2UgfTsKLQorI2VuZGlmCiAjaWYgRU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURf
UExVR0lOX0hFVVJJU1RJQykKICAgICBib29sIG1fcmVhZHlUb0ZpbmRQcmltYXJ5U25hcHNob3R0
ZWRQbHVnaW4geyBmYWxzZSB9OwogICAgIGJvb2wgbV9kaWRGaW5kUHJpbWFyeVNuYXBzaG90dGVk
UGx1Z2luIHsgZmFsc2UgfTsKQEAgLTIxNTksOCArMjE2MiwxMCBAQCBwcml2YXRlOgogICAgIFN0
cmluZyBtX3RoZW1lTmFtZTsKICNlbmRpZgogICAgIAorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9N
QUlOUykKICAgICBib29sIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX25hdmlnYXRpb25IYXNPY2N1cmVkIHsgZmFsc2UgfTsKKyNlbmRp
ZgogICAgIGJvb2wgbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSB7IHRydWUgfTsKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ0ZDEwMDgyZWQyNTMwYzkzNWFlZjcx
OGFjNGE0OTM0MDE5NWEzM2QuLmMxNWVkYTI5ODhiNGU2N2E2NzBiZjhkNDRlNmRhM2Y1Y2UyZTE3
ODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMC0wOS0wOSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5
QGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbiB1cCBBcHAtQm91bmQgRG9tYWlucyBjb2RlIHRv
IG9ubHkgY29tcGlsZSBmb3IgaU9TIHdpdGggaXRzIG93biBtYWNybworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MDI3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82MzY4ODIzMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZXBsYWNlIGNoZWNrIGZvciBJT1NfRkFNSUxZIHdpdGggbW9yZSBhcHRseSBu
YW1lZCBBUFBfQk9VTkRfRE9NQUlOUworICAgICAgICBtYWNyby4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbToKKwogMjAy
MC0wOS0wOCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAg
W3dlYmtpdGNvcmVweV0gUmVnaXN0ZXIgYW5vdGhlciBwYWNrYWdlIGluIHRoZSBXZWJLaXQgcmVw
b3NpdG9yeSAoRm9sbG93LXVwIGZpeCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCAzNjlm
ZmU1MjMxOGUwNzRiMGY0NGYxY2QwNjM2ZTM4OTk2ZDMxNzM0Li43ODRhZmE2Yzg1YzQ4ZGRkNzM3
M2YzMjYxMzVkYjcyODE4ZGRkNmQ3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC00Myw3
ICs0Myw3IEBACiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2lmIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKIAogc3RhdGljIGJvb2wgaXNEb25lOwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjNlN2IxYmM4NGQ2
NTk2YjBhYzJlNGI2MWIxNmMyNTc5YjkwYWRiNC4uNzIwMTkwMGI2YjA0MjYxYTQ4NzBlNjdhMWY5
ZjhjNWMxNmM1OTRmMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA5LTA5ICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIEFw
cC1Cb3VuZCBEb21haW5zIGNvZGUgdG8gb25seSBjb21waWxlIGZvciBpT1Mgd2l0aCBpdHMgb3du
IG1hY3JvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTUwMjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzNjg4MjMyPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIHRlc3RzIHNob3VsZCBiZSBz
a2lwcGVkIG9uIG1hYy13azIgYmVjYXVzZSBBcHAgQm91bmQgRG9tYWlucworICAgICAgICBpcyBh
biBpT1MgZmVhdHVyZSBvbmx5LgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhw
ZWN0YXRpb25zOgorCiAyMDIwLTA5LTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgbmV3IFVSTCgiIyIpIHNob3VsZCB0aHJvdyBhbiBlcnJv
cgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDdjNTQyYzU0M2U3NTBhMzRjNTE2M2E1ODgxZmI5ODJjZDc1NTQ2YTYuLjVhZmE1NmZjNWE5YWQ5
YzIyNGZjMjRmYjI5ZmJkZjEyODg4YzU0MTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEyODMsMyArMTI4Myw2IEBAIHdlYmtpdC5vcmcv
Yi8yMTYwNTkgZmFzdC9zY3JvbGxpbmcvbGF0Y2hpbmcvbGF0Y2hlZC1zY3JvbGwtcmVtb3ZlLWlm
cmFtZS5odG1sIFsKIHdlYmtpdC5vcmcvYi8yMTYxNTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tcmVzdGFydEljZS5odHRwcy5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIxNjE2NCBbIENhdGFsaW5hIERlYnVnIF0g
aHRtbDVsaWIvZ2VuZXJhdGVkL3J1bi10ZW1wbGF0ZS1kYXRhLmh0bWwgWyBQYXNzIENyYXNoIF0K
KworIyBBcHAgQm91bmQgRG9tYWlucyBpcyBmb3IgaU9TIG9ubHkgCitodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvZXhlbXB0RG9tYWlucy8gWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408373</attachid>
            <date>2020-09-09 15:23:54 -0700</date>
            <delta_ts>2020-09-10 09:26:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215027-20200909152353.patch</filename>
            <type>text/plain</type>
            <size>92991</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2ODAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY4ODY4ZTJlNDVmMDFiZTU3MThhNWUy
MDU2MmYzMTYyZmVmYjExMTguLjY5ZWI5MzVlODM4MTU3NzQ2Mjk3ZDU1YmExNTI4NGNmNmY3ODFl
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDktMDkgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgQXBwLUJvdW5kIERvbWFp
bnMgY29kZSB0byBvbmx5IGNvbXBpbGUgZm9yIGlPUyB3aXRoIGl0cyBvd24gbWFjcm8KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTAyNworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjM2ODgyMzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRGVmaW5lIGEgbmV3IEFQUF9CT1VORF9ET01BSU5TIHByZXBy
b2Nlc3NvciBtYWNybyB0byBtb3JlIGFwdGx5IGdhdGUKKyAgICAgICAgQXBwIEJvdW5kIERvbWFp
bnMgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAgICAgICAg
KiB3dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oOgorCiAyMDIwLTA5LTA5ICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFRleHQgY29waWVkIGFuZCBwYXN0
ZWQgZnJvbSBNYWMgQ2F0YWx5c3QgYXBwcyBhcHBlYXJzIGxhcmdlciB0aGFuIGV4cGVjdGVkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggOTMwYzExNWMxZjY2YWE2Y2I2Yjc0NGZlMTJmNDBmMDQyOTM2NDg5ZC4uN2Y1
ZTY3ZTBlMzg0YWExMmNmZTc4YjBiZGRhNDYzOGY0N2MxYTUyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMzIEBACisyMDIwLTA5LTA5ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBw
bGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIEFwcC1Cb3VuZCBEb21haW5zIGNvZGUgdG8gb25s
eSBjb21waWxlIGZvciBpT1Mgd2l0aCBpdHMgb3duIG1hY3JvCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUwMjcKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzYzNjg4MjMyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFwcC1Cb3VuZCBEb21haW5zIGNvZGUgc2hvdWxkIG9ubHkgYmUgY29tcGlsZWQgYW5k
IHJ1biBvbiBpT1MuCisgICAgICAgIFRoaXMgcGF0Y2ggd3JhcHMgYW55IEFwcC1Cb3VuZCBEb21h
aW5zIGNvZGUgaW4gI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUyksCisgICAgICAgIHdoaWNo
IGlzIGVxdWFsIHRvIElPU19GQU1JTFksIG1ha2luZyBzdXJlIHdlIGRvbid0IGV4ZWN1dGUgb3Ig
Y29tcGlsZSAKKyAgICAgICAgdGhlIGNvZGUgdW5uZWNlc3NhcmlseSBvbiBtYWNPUy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIGJlaGF2aW9yIHNob3VsZCBub3QgY2hhbmdlIHNvIHRlc3Rpbmcg
aXMgY292ZXJlZCBieQorICAgICAgICBhbGwgZXhpc3RpbmcgQXBwLUJvdW5kIERvbWFpbnMgbGF5
b3V0IGFuZCBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3Jp
cHRJbldvcmxkKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbmplY3RVc2Vy
U2NyaXB0SW1tZWRpYXRlbHkpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjppbmplY3RVc2VyU3R5bGVTaGVldCk6CisgICAgICAgICogcGFnZS9XZWJL
aXROYW1lc3BhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TmFtZXNwYWNlOjptZXNz
YWdlSGFuZGxlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oOgorICAgICAgICAqIHN0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6U2NvcGVSdWxlU2V0czo6aW5pdGlhbGl6ZVVzZXJTdHlsZSk6CisK
IDIwMjAtMDktMDkgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFtX
ZWJJRExdIFNwbGl0IEdsb2JhbEV2ZW50SGFuZGxlcnMgcGFydGlhbCBpbnRlcmZhY2UgbWl4aW5z
IG91dCBvZiBiYXNlIG1peGluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIyODE2Y2ZmNDgyNWI4NTViNzMxMjllODQ0
YTQ3ODQzN2NjZjgwYTUuLjA4NGFiNzA1OWI2MzA5ZmZhZmU1YTE1ZDNmNWU0NWUyYjUyM2E1NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM1IEBACisyMDIwLTA5LTA5ICBLYXRlIENoZW5leSAgPGth
dGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIEFwcC1Cb3VuZCBE
b21haW5zIGNvZGUgdG8gb25seSBjb21waWxlIGZvciBpT1Mgd2l0aCBpdHMgb3duIG1hY3JvCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUwMjcKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzNjg4MjMyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFwcC1ib3VuZCBkb21haW5zIGNvZGUgc2hvdWxkIG9u
bHkgYmUgY29tcGlsZWQgb24gaU9TLCBzbyB0aGlzIHBhdGNoCisgICAgICAgIGFkZHMgYWRkaXRp
b25hbCAnI2lmIEVOQUJMRSgpJyBjaGVja3MgdG8gZW5zdXJlIHRoYXQuIEFkZGl0aW9uYWxseSwK
KyAgICAgICAgZm9yIGNsYXJpdHkgdGhpcyBwYXRjaCBjcmVhdGVzIGEgbmV3IEFQUF9CT1VORF9E
T01BSU5TIG1hY3JvIGFuZAorICAgICAgICByZXBsYWNlcyBleGlzdGluZyBJT1NfRkFNSUxZIGNo
ZWNrcyBmb3IgQXBwLUJvdW5kIERvbWFpbnMgY29kZSB3aXRoCisgICAgICAgIHRoaXMgbmV3IG1h
Y3JvLgorCisgICAgICAgIExvYWRQYXJhbWV0ZXJzLCBQb2xpY3lEZWNpc2lvbiBhbmQgV0tQcmVm
ZXJlbmNlcyB3aWxsIGJlIGluIGFub3RoZXIKKyAgICAgICAgcGF0Y2gsIHRoaXMgb25lIGlzIGh1
Z2UgYWxyZWFkeS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGJlaGF2aW9yIHNob3VsZCBub3Qg
Y2hhbmdlIHNvIHRlc3RpbmcgaXMgY292ZXJlZCBieQorICAgICAgICBhbGwgZXhpc3RpbmcgQXBw
LUJvdW5kIERvbWFpbnMgbGF5b3V0IGFuZCBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpO
ZXR3b3JrU2Vzc2lvbkNvY29hKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2Nv
YTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHA6
CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6ZmlsdGVyQXBwQm91bmRDb29raWVzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAg
ICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb246Omlnbm9yZXNBcHBCb3VuZERvbWFpbnMgY29uc3QpOgorICAgICAgICAoQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbjo6c2V0SWdub3Jlc0FwcEJvdW5kRG9tYWlucyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dl
YnNpdGVEYXRhU3RvcmVIYXNBcHBCb3VuZFNlc3Npb24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0QXBwQm91bmREb21haW5zRm9yVGVzdGluZyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVDbGVhckFwcEJvdW5kU2Vzc2lvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3Rv
cmVSZWluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2lzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW46XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfaXNGb3Jj
ZWRJbnRvQXBwQm91bmRNb2RlOl0pOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCB0byBXS1dlYlZp
ZXdJT1MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbGltaXRzTmF2aWdh
dGlvbnNUb0FwcEJvdW5kRG9tYWluc10pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIHNldExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM6XSk6CisgICAgICAgICgt
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX2lnbm9yZXNBcHBCb3VuZERvbWFpbnNdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0SWdub3Jlc0FwcEJvdW5kRG9tYWluczpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Q
cml2YXRlLmg6CisgICAgICAgIE1vdmVkIEFwcC1Cb3VuZCBEb21haW4gZnVuY3Rpb25zIHRvIHRo
ZSBwYXJ0IG9mIHRoZSBmaWxlIHRoYXQgb25seSBjb21waWxlcworICAgICAgICBvbiBpT1MgYW5k
IHJlbW92ZWQgbWFjb3MgdGFncyBmb3IgV0tfQVBJX0FWQUlMQUJMRSwgYmVjYXVzZSBib3RoIHRo
ZQorICAgICAgICBBUEkgYW5kIFNQSSBhcmUgaU9TIG9ubHkuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgTW92ZWQgQXBwLUJvdW5k
IERvbWFpbiBmdW5jdGlvbnMgdG8gdGhlIHBhcnQgb2YgdGhlIGZpbGUgdGhhdCBvbmx5IGNvbXBp
bGVzIG9uIGlPUy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9hcHBCb3VuZERvbWFpbnM6
XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYXBwQm91bmRTY2hlbWVzOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2lzRm9yY2VkSW50b0FwcEJvdW5kTW9kZTpdKToKKyAgICAgICAgTW92ZWQgdGhl
c2UgZnJvbSBXS1dlYlZpZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
Z2V0QXBwQm91bmREb21haW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OnNob3VsZFRyZWF0VVJMUHJvdG9jb2xBc0FwcEJvdW5kKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hlY2tJ
ZlBlcm1pdHRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzYWJsZVNlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudEluTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByZWNvbm5lY3RUbyk6CisgICAgICAgIE5vdyB0
aGF0IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpcyBpT1Mgb25seSwgSSBjaGFuZ2Vk
IFdlYlBhZ2VQcm94eTo6cHJlY29ubmVjdFRvIAorICAgICAgICB0byBjYWxsIHRoZSBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluKCkgZnVuY3Rpb24sIHdoaWNoIGlzIGF2YWlsYWJsZQorICAg
ICAgICBvbiBhbGwgcGxhdGZvcm1zIGJ1dCByZXR1cm5zIFdURjo6bnVsbG9wdCB1bmxlc3MgdGhl
IHBsYXRmb3JtIGlzIGlPUy4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gY29uc3QpOgorICAgICAgICBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkg
aXMgdXNlZCB2ZXJ5IGZyZXF1ZW50bHksIGl0IGlzIGNsZWFuZXIKKyAgICAgICAgdG8gaGF2ZSB0
d28gZnVuY3Rpb25zIC0tIG9uZSBmb3IgaU9TIHdoaWNoIHJldHVybnMgdGhlIGFjdHVhbCB2YWx1
ZQorICAgICAgICBhbmQgb25lIGZvciBub24taU9TIHBsYXRmb3JtcyB3aGljaCByZXR1cm5zIFdU
Rjo6bnVsbG9wdCAtLSByYXRoZXIKKyAgICAgICAgdGhhbiBoYXZlICNpZiBFTkFCTEUoQVBQX0JP
VU5EX0RPTUFJTikgY2hlY2tzIGV2ZXJ5d2hlcmUuIAorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRvd25s
b2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjphcHBCb3VuZERvbWFpblF1ZXVlKToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25v
dXNseSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzdGFydFBpbmdMb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZW5kSDJQaW5nKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGltaXRzTmF2aWdhdGlvbnNU
b0FwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZERhdGFJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVw
ZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgT25seSBjaGVjayBmb3IgdGhlIG1fbGltaXRzTmF2
aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyBmbGFnIGlmIHRoZQorICAgICAgICBwbGF0Zm9ybSBp
cyBpT1MuIE90aGVyd2lzZSBpdCBzaG91bGQgYWx3YXlzIGJlIGZhbHNlLCBiZWNhdXNlIGl0IHdp
bGwKKyAgICAgICAgbmV2ZXIgYmUgZW5hYmxlZCBvbiBhIG5vbi1pT1MgcGxhdGZvcm0uCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorCiAyMDIwLTA5LTA5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFRleHQgY29waWVk
IGFuZCBwYXN0ZWQgZnJvbSBNYWMgQ2F0YWx5c3QgYXBwcyBhcHBlYXJzIGxhcmdlciB0aGFuIGV4
cGVjdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAppbmRleCA3MDBmOTBhZGM2YzM5YTc2YmFhMjdk
N2M4YjMxZmU0ZGU2Mjk1OThiLi4zOWQwZTZkMmEzZWY1MzU4MTJmMDQyMzBkOWU0Y2ZiNzczYmEz
YTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKQEAgLTE5Myw2ICsxOTMsMTAgQEAKICNkZWZp
bmUgRU5BQkxFX0FQTkcgMQogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfQVBQX0JPVU5E
X0RPTUFJTlMpCisjZGVmaW5lIEVOQUJMRV9BUFBfQk9VTkRfRE9NQUlOUyAwCisjZW5kaWYKKwog
I2lmICFkZWZpbmVkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykKICNkZWZpbmUgRU5BQkxFX0NI
QU5ORUxfTUVTU0FHSU5HIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1FbmFibGVDb2NvYS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5o
CmluZGV4IDI4ODFjNTlmNmU5OTQxYTBiODNjNTU3ODMxOWFjMGJhM2I2OThmYzIuLmRkMGNlYzEx
ZjhmMjk0NmZmNzJlNWYzODJmNDFlZWRlZjQxNzJhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVu
YWJsZUNvY29hLmgKQEAgLTc1LDYgKzc1LDEwIEBACiAjZGVmaW5lIEVOQUJMRV9BUFBMSUNBVElP
Tl9NQU5JRkVTVCAxCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9BUFBfQk9VTkRfRE9N
QUlOUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNkZWZpbmUgRU5BQkxFX0FQUF9CT1VORF9E
T01BSU5TIDEKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0FTWU5DX1NDUk9MTElORykK
ICNkZWZpbmUgRU5BQkxFX0FTWU5DX1NDUk9MTElORyAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNDYyYjk4NGIzNGRm
MjdjMjQyOWY3ZjIxMTZkYTcyMjUxM2U0ZDk3YS4uNzE2NTVlYmIzOWE5ODhmZTBhZmU1N2ZlMGQ1
ZTc0MmE5YmIzNmUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAKQEAgLTU3OSw2ICs1NzksNyBAQCBKU0M6OkpTVmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVy
VwogCiBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKIHsKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYgKG1fZnJh
bWUubG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3Rl
Y3Rpb25zKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVu
dCgpKQogICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlw
dCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOwpAQCAtNTg2LDYgKzU4Nyw3
IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29y
bGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBu
b24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CiAgICAgbV9mcmFtZS5sb2FkZXIoKS5j
bGllbnQoKS5ub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCk7CisjZW5kaWYKIAogICAgIFVz
ZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocGFyYW1ldGVycy5mb3JjZVVzZXJH
ZXN0dXJlID09IEZvcmNlVXNlckdlc3R1cmU6OlllcyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2Vy
R2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA2YWMyMjM0OTJj
OWUxYTQwMjZmN2M5NjMwNTNhN2RhZTM0MDEwN2I5Li41ZjQyM2E3ODI1NGNmMTQ2OTRlNjVkZTQz
OWJkNWM1ZTdiZDUwNmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaApAQCAtMzc5LDkgKzM3OSwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwg
QWxsb3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJl
Y2VudE5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBBbGxvd3NDb250ZW50SmF2YVNjcmlwdDo6
WWVzOyB9Ci0KKyAgICAKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgdmlydHVh
bCBib29sIHNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVBhZ2VPZkFwcEJvdW5k
QmVoYXZpb3IoKSB7IH0KKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcAppbmRleCAyODliZWE4ZWExNGJmYTk3ZWI4NzQ2YjdlOThhZjIxZDgyMTk2
ZTMzLi4zYzVhZTQ1ODU0YzcyYmRmNmZiNzM2NWVmNWYyN2ZhYTZmZGJlNWVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcApAQCAtNjU3LDYgKzY1Nyw3IEBAIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3Jp
cHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCiAKIHZvaWQgRnJhbWU6
OmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25z
dCBVc2VyU2NyaXB0JiBzY3JpcHQpCiB7CisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQog
ICAgIGlmIChsb2FkZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5
UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1
bWVudCgpKQogICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNj
cmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CkBAIC02NjQsNiAr
NjY1LDcgQEAgdm9pZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBsb2FkZXIoKS5jbGllbnQoKS5ub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCk7Cisj
ZW5kaWYKIAogICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKICAgICBpZiAo
IWRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOTdmNGVkYjBiYTA5NjJkZDdkZmI4Mzg4
NGU4NTAyOTkzMmRkODI2Ni4uNmMyODBmYzAzZTZlMzAyYTk2MDQ1N2Q1OGI0YmRlODA3MDNjMTRl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0zMjUzLDEyICszMjUzLDE0IEBAIHZvaWQgUGFnZTo6
cmV2ZWFsQ3VycmVudFNlbGVjdGlvbigpCiAKIHZvaWQgUGFnZTo6aW5qZWN0VXNlclN0eWxlU2hl
ZXQoVXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNoZWV0KQogeworI2lmIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKICAgICBpZiAobV9tYWluRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNob3Vs
ZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgZG9j
dW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdl
TGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHN0eWxlIHNoZWV0IGZvciBub24tYXBwIGJv
dW5kIGRvbWFpbi4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fbWFpbkZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5ub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCk7CisjZW5k
aWYKIAogICAgIC8vIFdlIG5lZWQgdG8gd2FpdCB1bnRpbCB3ZSdyZSBubyBsb25nZXIgZGlzcGxh
eWluZyB0aGUgaW5pdGlhbCBlbXB0eSBkb2N1bWVudCBiZWZvcmUgd2UgY2FuIGluamVjdCB0aGUg
c3R5bGVzaGVldHMuCiAgICAgaWYgKG1fbWFpbkZyYW1lLT5sb2FkZXIoKS5zdGF0ZU1hY2hpbmUo
KS5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1dlYktpdE5hbWVzcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1dlYktpdE5hbWVzcGFjZS5jcHAKaW5kZXggMDE4ZGM2NTdhMzE5N2ZjY2RhOTRjNjc4ZmZlZDA3
ZjIwZGNlY2Y0Ny4uNTlhODU1NmMxMTExMzZjNWM3ZTI2NmNlMzA0MWMzZDlmYjhkMGIwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXROYW1lc3BhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmNwcApAQCAtNTAsNiArNTAsNyBAQCBX
ZWJLaXROYW1lc3BhY2U6On5XZWJLaXROYW1lc3BhY2UoKSA9IGRlZmF1bHQ7CiAKIFVzZXJNZXNz
YWdlSGFuZGxlcnNOYW1lc3BhY2UqIFdlYktpdE5hbWVzcGFjZTo6bWVzc2FnZUhhbmRsZXJzKCkK
IHsKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYgKGZyYW1lKCkpIHsKICAg
ICAgICAgaWYgKGZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKExvYWRpbmcsICJJZ25vcmluZyBtZXNzYWdlSGFuZGxlcnMoKSByZXF1ZXN0
IGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwpAQCAtNTcsNiArNTgsNyBAQCBVc2VyTWVzc2Fn
ZUhhbmRsZXJzTmFtZXNwYWNlKiBXZWJLaXROYW1lc3BhY2U6Om1lc3NhZ2VIYW5kbGVycygpCiAg
ICAgICAgIH0KICAgICAgICAgZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkubm90aWZ5UGFnZU9m
QXBwQm91bmRCZWhhdmlvcigpOwogICAgIH0KKyNlbmRpZgogCiAgICAgcmV0dXJuICZtX21lc3Nh
Z2VIYW5kbGVyTmFtZXNwYWNlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCmluZGV4IDIxM2Y4
ZGYxZDk5YjBhMjNkYjg5YzI1OWQ2N2Q5NzRmNTRlMTUzZjMuLjg0NjE4Y2U0MTE5MTIxYjdkYTk1
NTg3MDhhMmY5NGIxZTRlYmU0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKQEAgLTMyNSw2ICszMjUs
NyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvYwogICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSA9IGJsb2NraW5nTW9kZTsKIH0KIAorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlO
UykKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKQogewogICAgIG1fYXBwQm91bmREb21haW5z
ID0gV1RGTW92ZShkb21haW5zKTsKQEAgLTMzNCw2ICszMzUsNyBAQCB2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6cmVzZXRBcHBCb3VuZERvbWFpbnMoKQogewogICAgIG1fYXBwQm91bmREb21h
aW5zLmNsZWFyKCk7CiB9CisjZW5kaWYKIAogT3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBm
aXJzdFBhcnR5LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmgKaW5kZXggMjhjNDcwMjk5Nzk0NmI4OTg2NTNlM2U3YzMwODBmNTBlZGE0M2ZhZi4u
Nzg2ZDkxYWMzZWMwYmQ3MzQ0M2YxZDAxZDU1MzA4MTY0YzA4MGVhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
CkBAIC0yMTIsOSArMjEyLDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRp
ZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNl
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlv
bkZvclRlc3RpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk7CisjaWYgRU5BQkxF
KEFQUF9CT1VORF9ET01BSU5TKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXBwQm91bmRE
b21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVzZXRBcHBCb3VuZERvbWFpbnMoKTsKICNlbmRpZgorI2VuZGlmCiAKIHByaXZhdGU6
CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVNjb3BlUnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1
bGVTZXRzLmNwcAppbmRleCA1YTQ4ZDliOTBhNmVkMTI0NDM5NDM2M2MyOWI4YWExNzUxNzQzZDMz
Li43ZGU2MzNhZDFkOTViODM4NjM5M2RhNzI2ZGU4MWI4ZDI4Y2YzOGIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKQEAgLTkxLDYgKzkxLDcgQEAgdm9p
ZCBTY29wZVJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKCkKICAgICBhdXRvIHRlbXBVc2Vy
U3R5bGUgPSBSdWxlU2V0OjpjcmVhdGUoKTsKICAgICBpZiAoQ1NTU3R5bGVTaGVldCogcGFnZVVz
ZXJTaGVldCA9IGV4dGVuc2lvblN0eWxlU2hlZXRzLnBhZ2VVc2VyU2hlZXQoKSkKICAgICAgICAg
dGVtcFVzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocGFnZVVzZXJTaGVldC0+Y29udGVudHMo
KSwgbnVsbHB0ciwgbWVkaWFRdWVyeUV2YWx1YXRvciwgbV9zdHlsZVJlc29sdmVyKTsKKyNpZiBF
TkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgYXV0byogcGFnZSA9IG1fc3R5bGVSZXNvbHZl
ci5kb2N1bWVudCgpLnBhZ2UoKTsKICAgICBpZiAoIWV4dGVuc2lvblN0eWxlU2hlZXRzLmluamVj
dGVkVXNlclN0eWxlU2hlZXRzKCkuaXNFbXB0eSgpICYmIHBhZ2UgJiYgcGFnZS0+bWFpbkZyYW1l
KCkubG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3Rl
Y3Rpb25zKCkpCiAgICAgICAgIG1fc3R5bGVSZXNvbHZlci5kb2N1bWVudCgpLmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJ
Z25vcmluZyB1c2VyIHN0eWxlIHNoZWV0IGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwpA
QCAtOTksNiArMTAwLDkgQEAgdm9pZCBTY29wZVJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxl
KCkKICAgICAgICAgaWYgKHBhZ2UgJiYgIWV4dGVuc2lvblN0eWxlU2hlZXRzLmluamVjdGVkVXNl
clN0eWxlU2hlZXRzKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCku
bG9hZGVyKCkuY2xpZW50KCkubm90aWZ5UGFnZU9mQXBwQm91bmRCZWhhdmlvcigpOwogICAgIH0K
KyNlbHNlCisgICAgY29sbGVjdFJ1bGVzRnJvbVVzZXJTdHlsZVNoZWV0cyhleHRlbnNpb25TdHls
ZVNoZWV0cy5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpLCB0ZW1wVXNlclN0eWxlLmdldCgpLCBt
ZWRpYVF1ZXJ5RXZhbHVhdG9yKTsKKyNlbmRpZgogICAgIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5
bGVTaGVldHMoZXh0ZW5zaW9uU3R5bGVTaGVldHMuZG9jdW1lbnRVc2VyU3R5bGVTaGVldHMoKSwg
dGVtcFVzZXJTdHlsZS5nZXQoKSwgbWVkaWFRdWVyeUV2YWx1YXRvcik7CiAgICAgaWYgKHRlbXBV
c2VyU3R5bGUtPnJ1bGVDb3VudCgpID4gMCB8fCB0ZW1wVXNlclN0eWxlLT5wYWdlUnVsZXMoKS5z
aXplKCkgPiAwKQogICAgICAgICBtX3VzZXJTdHlsZSA9IFdURk1vdmUodGVtcFVzZXJTdHlsZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDk3OGYy
NGZjMGY4M2FmNDM2Y2ZjNTZlYjM5YjU2OTk0Y2U4ZDFmYzAuLjAxOTUwZjA1ZWQ2NDNkZTNiNTQ2
MmUzZjI2ZWJiYWVkMjM4YWRkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCkBAIC0zMTIsMTAgKzMxMiwxMiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgUmVnaXN0
cgogICAgIG1fZGVidWdNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9IGRvbWFpbjsKIH0KIAorI2lm
IEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21h
aW5zKQogewogICAgIG1fYXBwQm91bmREb21haW5zID0gV1RGTW92ZShkb21haW5zKTsKIH0KKyNl
bmRpZgogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVTdGF0aXN0
aWNzUHJvY2Vzc2luZ1JlcXVlc3RJZk5lY2Vzc2FyeSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggNjBiMTRmNDE3NzMyYTc2NzcwOWU3YjEyNDI1ZWU2
OGI2ZTM4ZmM4Ny4uMmM1YWFjNmVhM2JlODQ1ZjA1OTU2YTM4YTNhMGY5OTk0YzczNGRhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMTc2LDggKzE3Niw5
IEBAIHB1YmxpYzoKICAgICBib29sIGlzU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX3NhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID09IFdl
YkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOjpZZXM7IH07CiAgICAgdm9p
ZCBzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShXZWJDb3JlOjpGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBtb2RlKSB7IG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUgPSBtb2RlOyB9CiAgICAgdm9pZCBzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21h
aW4oUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4pIHsgbV9zdGFuZGFsb25lQXBwbGljYXRpb25E
b21haW4gPSBXVEZNb3ZlKGRvbWFpbik7IH0KKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMp
CiAgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4m
Jik7Ci0KKyNlbmRpZgogICAgIHZpcnR1YWwgYm9vbCBhcmVBbGxUaGlyZFBhcnR5Q29va2llc0Js
b2NrZWRVbmRlcihjb25zdCBUb3BGcmFtZURvbWFpbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVE
b21haW4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Njb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDRkZTlhYWM2Yzg0ZTZhNGRiMjk0YWUyMmI0NGVl
MzY1ZmVhYjBjY2UuLjFmMGJiMTY3MGZhZmM5MzBjZDk3ZjIxM2NlMTJjMDllYjUyMmE5MzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC02
OTYsNiArNjk2LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN0
YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihjb25zdCBSZWdpc3QKICAgICB9KTsKIH0KIAorI2lm
IEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBk
b21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTcyMiw2ICs3MjMsNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0QXBwQm91bmREb21haW5zKEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haQogICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIH0KKyNlbmRpZgogCiB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6ZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3MoKQogewpAQCAtMTM0Niwx
MCArMTM0OCwxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzZXRQ
YXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKENvbXBsZXRpb25IYQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlmIChtX25ldHdvcmtT
ZXNzaW9uKSB7CiAgICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fbmV0d29ya1Nl
c3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICAgICAgc3RvcmFnZVNlc3Np
b24tPnJlc2V0QXBwQm91bmREb21haW5zKCk7CiAgICAgfQorI2VuZGlmCiAKICAgICBwb3N0VGFz
ayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDRhOTQ0YjE5NDlhNzYzZTNi
ZTQ1OTkxNzIxYjFjMjM0NjQ4MjE5MmIuLmE3OTdjNmRhMTYxODdiZGJkZjA0M2Y5ZmY5NzUzZDcz
YzE1NzE5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKQEAgLTI4MSw3ICsyODEsOSBAQCBzdHJ1Y3QgVGhpcmRQYXJ0eURhdGEgewogICAgIHZvaWQg
c2V0U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQoV2ViQ29yZTo6U2FtZVNpdGVTdHJp
Y3RFbmZvcmNlbWVudEVuYWJsZWQpOwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGUoV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTdGFuZGFsb25lQXBwbGlj
YXRpb25Eb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICB2b2lkIHNldEFw
cEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworI2VuZGlmCiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3b3JrUHJvY2Vz
cygpOwogCiAgICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmlu
ZGV4IDg2OWZlZmNlNjg0ZjUzOTgzNDE2MzA0YzY3ZTc3MzEzZjZmNWI1ODMuLjhhYTRkZWRlZjY5
MmQ1NjE5M2EwNTRmZWFhYWE1NTk5YjEzMjZiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMzE3LDYgKzEzMTcsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBXZWJDb3JlOgogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CiB9CiAK
KyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRB
cHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiBhcHBCb3VuZERv
bWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7CkBAIC0xMzI4LDYgKzEzMjksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRB
cHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklECiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KKyNl
bmRpZgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZv
clRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CkBAIC0yNTEzLDggKzI1MTUsMTMgQEAgU1dTZXJ2ZXImIE5ldHdvcmtQ
cm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAg
ICAgICB9LCBbdGhpcywgc2Vzc2lvbklEXShhdXRvJiByZWdpc3RyYWJsZURvbWFpbiwgYXV0byYm
IGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXJlZ2lzdHJhYmxlRG9t
YWluLmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9t
YWluLCBzZXNzaW9uSUQgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOworI2lmIEVO
QUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICAgICAgfSwgW3RoaXMsIHNlc3Npb25JRF0oYXV0
byYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OkdldEFwcEJvdW5kRG9tYWlucyB7IHNlc3Npb25JRCB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgMCk7CisjZWxzZQorICAgICAgICB9LCBbXSAoYXV0byYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworI2VuZGlmCiAgICAgICAg
IH0pOwogICAgIH0pOwogICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKQEAgLTI3
MjAsNiArMjcyNyw3IEBAIFNlY29uZHMgTmV0d29ya1Byb2Nlc3M6OnJhbmRvbUNsb3NlZFBvcnRE
ZWxheSgpCiAgICAgcmV0dXJuIGRlbGF5TWluICsgU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyhz
dGF0aWNfY2FzdDxkb3VibGU+KGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpKSAlIGRl
bGF5TWF4OwogfQogCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6aGFzQXBwQm91bmRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsK
ICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwpAQCAtMjczOCw2ICsyNzQ2LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6Y2xlYXJBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBDb21wbGV0aW9uSGEKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9CiB9Cisj
ZW5kaWYKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBKU0M6Ok1lc3NhZ2VTb3VyY2Ugc291cmNlLCBKU0M6Ok1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDU4ZmJmNjM5MThlMTk1
YjQ2YWE1ODhiM2U2YzgxMDY3Mzg3MTUzOGEuLjI3ZjYwYzFiZDEyMWQ2ZDMxYzRjZGNiYjI1NzNm
ZGZjOWRmMDY2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKQEAgLTI2Niw3ICsyNjYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDcm9zc1Np
dGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b0RvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jv
c3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgaGFzSXNvbGF0ZWRTZXNzaW9u
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGNvbnN0OworI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKICAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRp
c3RpY3MoUEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjZW5kaWYKICAgICBib29sIGlzSVRQ
RGF0YWJhc2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lUUERhdGFiYXNlRW5hYmxlZDsg
fQogICAgIHZvaWQgc2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMzU5LDggKzM2MSwx
MSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFNlY29uZHMgcmFuZG9tQ2xvc2VkUG9ydERlbGF5KCk7
CiAKICAgICB2b2lkIGNvb2tpZUFjY2VwdFBvbGljeUNoYW5nZWQoV2ViQ29yZTo6SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSk7CisKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgdm9p
ZCBoYXNBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJBcHBCb3VuZFNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjZW5kaWYKIAogICAgIHZv
aWQgYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQsIEpTQzo6TWVzc2FnZVNv
dXJjZSwgSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgdm9p
ZCB1cGRhdGVCdW5kbGVJZGVudGlmaWVyKFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMDAyZWNkYjgzM2IyOTQxYWU4NjEzZmE2NGYwMWRm
ODk4OTZkZjM0Ni4uYjA0YzdjOWUwZDI5NzgxYmRhYmQzOThlMTA0YmFmZDU4Y2FmNWUxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC0xNDIsNyArMTQyLDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29y
YXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAg
ICBEZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVz
KSAtPiAoKSBBc3luYwogICAgIEhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKGJvb2wgaGFzSXNv
bGF0ZWRTZXNzaW9uKSBBc3luYworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBT
ZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gYXBwQm91bmRE
b21haW5zKSAtPiAoKSBBc3luYworI2VuZGlmCiAgICAgU2V0U2hvdWxkRG93bmdyYWRlUmVmZXJy
ZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCkgLT4gKCkgQXN5bmMKICAgICBTZXRUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTp1aW50OF90
IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlKSAtPiAo
KSBBc3luYwogICAgIFNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBlbnVtOmJvb2wgV2ViQ29yZTo6U2FtZVNp
dGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgZW5hYmxlZCkgLT4gKCkgQXN5bmMKQEAgLTE3OSw4
ICsxODEsMTAgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewog
CiAgICAgUmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAg
ICAgCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIEhhc0FwcEJvdW5kU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGhhc0FwcEJvdW5kU2Vzc2lvbikg
QXN5bmMKICAgICBDbGVhckFwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IC0+ICgpIEFzeW5jCisjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFU
Rk9STShNQUNDQVRBTFlTVCkKICAgICBEaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCAx
YTA4NzNjZWNhZTU2YjJmMmYxNjc1NmNjMzU4OGNjMzZkNGMzMzhhLi42ZGVmZjBkMGJhOWNkMmJk
YWMxYjIxNzczNDZlM2ExOWM0MGU2NGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xMTQsOCArMTE0LDEwIEBAIHB1YmxpYzoKICAgICB2
b2lkIGZsdXNoQW5kRGVzdHJveVBlcnNpc3RlbnRTdG9yZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogI2VuZGlmCiAgICAgCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAg
IHZpcnR1YWwgYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgdm9pZCBjbGVhckFwcEJvdW5kU2Vzc2lvbigpIHsgfQorI2VuZGlmCiAg
ICAgdm9pZCBzdG9yZUFkQ2xpY2tBdHRyaWJ1dGlvbihXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRp
b24mJik7CiAgICAgdm9pZCBoYW5kbGVBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uKFdlYkNv
cmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbjo6Q29udmVyc2lvbiYmLCBjb25zdCBVUkwmIHJlcXVlc3RV
UkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKICAg
ICB2b2lkIGR1bXBBZENsaWNrQXR0cmlidXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKaW5kZXggYWEwMzkyMWFlOWM0YTA1M2Q3YzkzNWMyODRh
MDkxMjI0OWJiZjg0Yy4uMGI3ZDEzYWRkOTVmMzk4MDU3MDgyM2U4NGRmZTA1YTU2MGRhODA5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLmgKQEAgLTk1LDEwICs5NSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNJc29sYXRlZFNlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4pIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJJc29sYXRlZFNlc3Npb25zKCkgb3ZlcnJpZGU7CiAK
KyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgYm9vbCBoYXNBcHBCb3VuZFNlc3Np
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhIW1fYXBwQm91bmRTZXNzaW9uOyB9CisgICAg
dm9pZCBjbGVhckFwcEJvdW5kU2Vzc2lvbigpIG92ZXJyaWRlOworI2VuZGlmCiAKICAgICBTZXNz
aW9uV3JhcHBlciYgc2Vzc2lvbldyYXBwZXJGb3JUYXNrKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pOwotICAgIHZvaWQgY2xlYXJBcHBCb3VuZFNlc3Npb24o
KSBvdmVycmlkZTsKICAgICBib29sIHByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3ByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRp
b247IH0KICAgICAKICAgICB2b2lkIGNsaWVudENlcnRpZmljYXRlU3VnZ2VzdGVkRm9ySG9zdChO
ZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIE5TVVJMQ3JlZGVudGlhbCAqLCBj
b25zdCBTdHJpbmcmIGhvc3QsIHVpbnQxNl90IHBvcnQpOwpAQCAtMTEzLDcgKzExNSwxMCBAQCBw
cml2YXRlOgogICAgIGJvb2wgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3Nob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uOyB9CiAgICAgU2Vjb25k
cyBsb2FkVGhyb3R0bGVMYXRlbmN5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sb2FkVGhy
b3R0bGVMYXRlbmN5OyB9CiAgICAgU2Vzc2lvbldyYXBwZXImIGlzb2xhdGVkU2Vzc2lvbihXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4sIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKworI2lmIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKICAgICBTZXNzaW9uV3JhcHBlciYgYXBwQm91bmRTZXNzaW9uKFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyNlbmRpZgogCiAgICAgVmVjdG9yPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4gaG9zdE5hbWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZUFsdGVybmF0aXZlU2VydmljZXNGb3JIb3N0
TmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpp
bmRleCA5MDQzNmE0MDkyZGI4ZmJkYzYwNjRkMmVmZGIxZmE5NzdmOGZiNTQwLi41MDcyYzYzNWY2
ZDU0ZjY1ZTQwZGI4NGQ4NjhjMDMzNTE2MzE4Mjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0x
MzExLDggKzEzMTEsMTEgQEAgTmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2Nv
YShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmsKICAgICBtX2RldmljZU1h
bmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkID0gcGFyYW1ldGVycy5kZXZpY2VNYW5hZ2VtZW50
UmVzdHJpY3Rpb25zRW5hYmxlZDsKICAgICBtX2FsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdl
bWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcgPSBwYXJhbWV0ZXJzLmFsbExvYWRzQmxvY2tlZEJ5
RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3Rpbmc7CiAKKyNpZiBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCiAgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyAmJiAhcGFy
YW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMu
aXNFbXB0eSgpKQogICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEFwcEJvdW5k
RG9tYWlucyhXVEZNb3ZlKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMuYXBwQm91bmREb21haW5zKSwgW10geyB9KTsKKyNlbmRpZgorCiAjaWYgSEFWRShTRVNTSU9O
X0NMRUFOVVApCiAgICAgYWN0aXZhdGVTZXNzaW9uQ2xlYW51cCgqdGhpcywgcGFyYW1ldGVycyk7
CiAjZW5kaWYKQEAgLTEzNTcsNyArMTM2MCw3IEBAIFNlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vz
c2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2soY29uc3QgV2ViQ29yZTo6UmVzb3VyCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAoc2hvdWxkQmVD
b25zaWRlcmVkQXBwQm91bmQgPT0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllcykKICAg
ICAgICAgcmV0dXJuIGFwcEJvdW5kU2Vzc2lvbihzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAj
ZW5kaWYKQEAgLTEzNzQsNiArMTM3Nyw3IEBAIFNlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lv
bkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2soY29uc3QgV2ViQ29yZTo6UmVzb3VyCiAgICAg
fQogfQogCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogU2Vzc2lvbldyYXBwZXImIE5l
dHdvcmtTZXNzaW9uQ29jb2E6OmFwcEJvdW5kU2Vzc2lvbihXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkKIHsKICAgICBpZiAoIW1fYXBwQm91
bmRTZXNzaW9uKSB7CkBAIC0xMzk5LDYgKzE0MDMsNyBAQCBTZXNzaW9uV3JhcHBlciYgTmV0d29y
a1Nlc3Npb25Db2NvYTo6YXBwQm91bmRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UAogCiAgICAgcmV0dXJuIHNlc3Npb25XcmFwcGVyOwogfQorI2VuZGlmCiAKIFNlc3Npb25XcmFw
cGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjppc29sYXRlZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4sIE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CkBAIC0xNDU1LDEwICsxNDYw
LDEyIEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJJc29sYXRlZFNlc3Npb25zKCkK
ICAgICBtX2lzb2xhdGVkU2Vzc2lvbnMuY2xlYXIoKTsKIH0KIAorI2lmIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJBcHBCb3VuZFNlc3Np
b24oKQogewogICAgIG1fYXBwQm91bmRTZXNzaW9uID0gbnVsbHB0cjsKIH0KKyNlbmRpZgogCiB2
b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmludmFsaWRhdGVBbmRDYW5jZWwoKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRl
eCBmMTY2MGIyOWE0ODRiM2VjOGIwNDBhZWYwYTM0Mzk1YTg1OWQ0M2U4Li5jZDQ2NzA1ZGIwZDAw
OTYyZDMxNmJhZGYxODYyYjE0ODA0MzhlMTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTU1LDggKzE1NSwxMCBAQCB2
b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBzaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3M7
CiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVWUDlEZWNvZGVyOwogICAgIGVuY29kZXIgPDwg
c2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyOworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykK
ICAgICBlbmNvZGVyIDw8IG5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczsKICAgICBlbmNv
ZGVyIDw8IGxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM7CisjZW5kaWYKICAgICBl
bmNvZGVyIDw8IHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOwogICAgIGVuY29k
ZXIgPDwgY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2U7CiAKQEAgLTUwMCwxMiArNTAyLDE0IEBAIE9w
dGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcikpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLm5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcykpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotICAgIAorI2VuZGlmCisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMuc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZjZiN2Q3NzI2ZmM0MjMyYTdmNTI1NTg0NTIzYjA5
NGRlNjAwOWQxZC4uNzIzYTJiMTQyNGE1MGE5MTQ2YzRlYWQ0YTU0MTlmOGVlZGE5NGJmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApA
QCAtMjI4LDggKzIyOCwxMCBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAg
ICAgYm9vbCBzaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJv
b2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRFbmFi
bGVWUDlTV0RlY29kZXIgeyBmYWxzZSB9OworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykK
ICAgICBib29sIG5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IGZhbHNlIH07CiAgICAg
Ym9vbCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKKyNlbmRp
ZgogICAgIGJvb2wgY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgeyB0cnVlIH07CiAKICAgICBXZWJD
b3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZyB7IFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nOjpObyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
SFRUUENvb2tpZVN0b3JlLmNwcAppbmRleCA5YzhmMDNhMThmYWY2ZTdmMTllZmVkZmI4Nzk2OWEw
OTczZjA0NzFiLi5hNTZkZjVhOGMyYjI1ODIzM2Q5ZDQ4YmRmZDkyMGQ2OGE2N2YyMWY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNw
cApAQCAtNjIsNyArNjIsNyBAQCBIVFRQQ29va2llU3RvcmU6On5IVFRQQ29va2llU3RvcmUoKQog
dm9pZCBIVFRQQ29va2llU3RvcmU6OmZpbHRlckFwcEJvdW5kQ29va2llcyhjb25zdCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYgY29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiBhcHBCb3VuZENvb2tpZXM7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgbV9vd25pbmdEYXRhU3RvcmUt
PmdldEFwcEJvdW5kRG9tYWlucyhbY29va2llcywgYXBwQm91bmRDb29raWVzID0gV1RGTW92ZShh
cHBCb3VuZENvb2tpZXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoYXV0byYgZG9tYWlucykgbXV0YWJsZSB7CiAgICAgICAgIGlmICghZG9tYWlucy5p
c0VtcHR5KCkgJiYgIWlzRnVsbFdlYkJyb3dzZXIoKSkgewogICAgICAgICAgICAgZm9yIChhdXRv
JiBjb29raWUgOiBjb29raWVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAppbmRleCA3MDI3OGZiZGUwMmY3M2RlZDQwZDc5
M2QwMThlNDhhZTliNTVmYjMwLi5mODgzNmQ2YmQ0YTZjNDhjYmVjODY3NDg0ZmFjM2NiZTk0Nzc5
Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29u
ZmlndXJhdGlvbi5jcHAKQEAgLTg3LDEwICs4NywxMiBAQCBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+
IFBhZ2VDb25maWd1cmF0aW9uOjpjb3B5KCkgY29uc3QKICAgICBjb3B5LT5tX3dlYlZpZXdDYXRl
Z29yeSA9IHRoaXMtPm1fd2ViVmlld0NhdGVnb3J5OwogCiAgICAgY29weS0+bV9wcm9jZXNzRGlz
cGxheU5hbWUgPSB0aGlzLT5tX3Byb2Nlc3NEaXNwbGF5TmFtZTsKLSAgICBjb3B5LT5tX2lnbm9y
ZXNBcHBCb3VuZERvbWFpbnMgPSB0aGlzLT5tX2lnbm9yZXNBcHBCb3VuZERvbWFpbnM7CiAgICAg
Y29weS0+bV9sb2Fkc1N1YnJlc291cmNlcyA9IHRoaXMtPm1fbG9hZHNTdWJyZXNvdXJjZXM7CiAg
ICAgY29weS0+bV9sb2Fkc0Zyb21OZXR3b3JrID0gdGhpcy0+bV9sb2Fkc0Zyb21OZXR3b3JrOwor
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKKyAgICBjb3B5LT5tX2lnbm9yZXNBcHBCb3Vu
ZERvbWFpbnMgPSB0aGlzLT5tX2lnbm9yZXNBcHBCb3VuZERvbWFpbnM7CiAgICAgY29weS0+bV9s
aW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zID0gdGhpcy0+bV9saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zOworI2VuZGlmCiAKICAgICByZXR1cm4gY29weTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgK
aW5kZXggMTIwOWMzNmU4Y2ZkZjAzNzc0MjljN2IxOTQ3ZjllNjVjOTJmZmJkZS4uZWI1NWVkMDg1
Y2UyZmNjNTAwODQ2ZWIxZWRjOWM5MGNjMGNlNDA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKQEAgLTE0OCwxNyArMTQ4LDE5
IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OldlYlZpZXdDYXRlZ29yeSB3ZWJWaWV3Q2F0ZWdvcnko
KSBjb25zdCB7IHJldHVybiBtX3dlYlZpZXdDYXRlZ29yeTsgfQogICAgIHZvaWQgc2V0V2ViVmll
d0NhdGVnb3J5KFdlYktpdDo6V2ViVmlld0NhdGVnb3J5IGNhdGVnb3J5KSB7IG1fd2ViVmlld0Nh
dGVnb3J5ID0gY2F0ZWdvcnk7IH0KIAotICAgIGJvb2wgaWdub3Jlc0FwcEJvdW5kRG9tYWlucygp
IGNvbnN0IHsgcmV0dXJuIG1faWdub3Jlc0FwcEJvdW5kRG9tYWluczsgfQotICAgIHZvaWQgc2V0
SWdub3Jlc0FwcEJvdW5kRG9tYWlucyhib29sIHNob3VsZElnbm9yZSkgeyBtX2lnbm9yZXNBcHBC
b3VuZERvbWFpbnMgPSBzaG91bGRJZ25vcmU7IH0KLQogICAgIGJvb2wgbG9hZHNTdWJyZXNvdXJj
ZXMoKSBjb25zdCB7IHJldHVybiBtX2xvYWRzU3VicmVzb3VyY2VzOyB9CiAgICAgdm9pZCBzZXRM
b2Fkc1N1YnJlc291cmNlcyhib29sIGxvYWRzKSB7IG1fbG9hZHNTdWJyZXNvdXJjZXMgPSBsb2Fk
czsgfQogCiAgICAgYm9vbCBsb2Fkc0Zyb21OZXR3b3JrKCkgY29uc3QgeyByZXR1cm4gbV9sb2Fk
c0Zyb21OZXR3b3JrOyB9CiAgICAgdm9pZCBzZXRMb2Fkc0Zyb21OZXR3b3JrKGJvb2wgbG9hZHMp
IHsgbV9sb2Fkc0Zyb21OZXR3b3JrID0gbG9hZHM7IH0KIAorI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKKyAgICBib29sIGlnbm9yZXNBcHBCb3VuZERvbWFpbnMoKSBjb25zdCB7IHJldHVy
biBtX2lnbm9yZXNBcHBCb3VuZERvbWFpbnM7IH0KKyAgICB2b2lkIHNldElnbm9yZXNBcHBCb3Vu
ZERvbWFpbnMoYm9vbCBzaG91bGRJZ25vcmUpIHsgbV9pZ25vcmVzQXBwQm91bmREb21haW5zID0g
c2hvdWxkSWdub3JlOyB9CisgICAgCiAgICAgYm9vbCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmRE
b21haW5zOyB9CiAgICAgdm9pZCBzZXRMaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
KGJvb2wgbGltaXRzKSB7IG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IGxp
bWl0czsgfQorI2VuZGlmCiAKICAgICB2b2lkIHNldFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHZh
bHVlKSB7IG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSB2YWx1ZTsgfQog
ICAgIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZzsgfQpAQCAtMjAyLDEwICsyMDQsMTQgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkIHsgdHJ1
ZSB9OwogICAgIFdURjo6U3RyaW5nIG1fcHJvY2Vzc0Rpc3BsYXlOYW1lOwogICAgIFdlYktpdDo6
V2ViVmlld0NhdGVnb3J5IG1fd2ViVmlld0NhdGVnb3J5IHsgV2ViS2l0OjpXZWJWaWV3Q2F0ZWdv
cnk6OkFwcEJvdW5kRG9tYWluIH07Ci0gICAgYm9vbCBtX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9sb2Fkc1N1YnJlc291cmNlcyB7IHRydWUgfTsKICAgICBi
b29sIG1fbG9hZHNGcm9tTmV0d29yayB7IHRydWUgfTsKKyAgICAKKyNpZiBFTkFCTEUoQVBQX0JP
VU5EX0RPTUFJTlMpCisgICAgYm9vbCBtX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2Ug
fTsKKyNlbmRpZgorCiAgICAgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IFdlYkNvcmU6OlNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHAKaW5kZXggZjM1NjNlOTQ0MWNlNmIxNGI0MmNmY2U4NWYxOWQ5ZDkyOTAwZDM1My4uNjNmYTI4
NGE2ZWM3ZWEyZGUwYTgxZDIxNzA1ZTA5ZjE4ODhlN2I3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC01
NzksOSArNTc5LDE0IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xh
dGVkU2Vzc2lvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0CiAKIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vzc2lv
bkZ1bmN0aW9uIGNhbGxiYWNrKQogeworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5oYXNBcHBCb3VuZFNlc3Npb24oW2NvbnRl
eHQsIGNhbGxiYWNrXShib29sIGhhc0FwcEJvdW5kU2Vzc2lvbikgewogICAgICAgICBjYWxsYmFj
ayhoYXNBcHBCb3VuZFNlc3Npb24sIGNvbnRleHQpOwogICAgIH0pOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0oZGF0YVN0b3JlUmVmKTsKKyAgICBjYWxsYmFjayhmYWxzZSwgY29udGV4dCk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIGJvb2wgZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9y
VGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNjUyLDcgKzY1Nyw3IEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlD
TkFNRURvbWFpbkZvclRlc3RpbmcoCiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91
bmREb21haW5zRm9yVGVzdGluZyhXS0FycmF5UmVmIG9yaWdpblVSTHNSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmdGdW5jdGlv
biBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IG9yaWdpblVSTHNBcnJh
eSA9IHRvSW1wbChvcmlnaW5VUkxzUmVmKTsKICAgICBzaXplX3QgbmV3U2l6ZSA9IG9yaWdpblVS
THNBcnJheSA/IG9yaWdpblVSTHNBcnJheS0+c2l6ZSgpIDogMDsKICAgICBIYXNoU2V0PFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zOwpAQCAtODE1LDE1ICs4MjAsMjIgQEAgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVSZXNldFF1b3RhKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIHZvaWQqIGNvbnQKIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFwcEJv
dW5kU2Vzc2lvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250
ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFwcEJvdW5kU2Vzc2lvbkZ1bmN0aW9uIGNvbXBs
ZXRpb25IYW5kbGVyKQogeworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5jbGVhckFwcEJvdW5kU2Vzc2lvbihbY29udGV4dCwg
Y29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7
CiAgICAgfSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShkYXRhU3RvcmVSZWYpOworICAgIGNv
bXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlUmVpbml0aWFsaXplQXBwQm91bmREb21haW5zKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKEFQUF9CT1VO
RF9ET01BSU5TKQogICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlaW5pdGlhbGl6
ZUFwcEJvdW5kRG9tYWlucygpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZGF0YVN0b3JlUmVm
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQppbmRleCBjZTUxNGI5MjExYzQ4YTYyOGJhN2M2YjZjZmQ1NTIwZTU5OGE2MmVm
Li5iZjQ1Y2I1YmE3ZmI1MzA1ZTFlNDJlN2Q3M2U4ZWI4MDVjNTI3YzRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTI2NDEsMjAgKzI2
NDEsNiBAQCAtICh2b2lkKV9zYXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckl0ZW06KFdLQmFja0Zv
cndhcmRMaXN0SXRlbSAqKWl0ZW0KICAgICBfcGFnZS0+cmVjb3JkTmF2aWdhdGlvblNuYXBzaG90
KGl0ZW0uX2l0ZW0pOwogfQogCi0tICh2b2lkKV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
Oih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAgX3BhZ2UtPmlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW5UZXN0aW5nKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIGlzQXBwQm91bmQpIHsKLSAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoaXNBcHBCb3VuZCk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpX2lzRm9y
Y2VkSW50b0FwcEJvdW5kTW9kZToodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgotewot
ICAgIF9wYWdlLT5pc0ZvcmNlZEludG9BcHBCb3VuZE1vZGVUZXN0aW5nKFtjb21wbGV0aW9uSGFu
ZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIGlzRm9yY2VkSW50
b0FwcEJvdW5kTW9kZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpc0ZvcmNlZEludG9B
cHBCb3VuZE1vZGUpOwotICAgIH0pOwotfQotCiAtICh2b2lkKV9zZXJ2aWNlV29ya2Vyc0VuYWJs
ZWQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBhdXRvIGVuYWJsZWQg
PSBbX2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLT5fcHJlZmVyZW5jZXMuZ2V0KCktPnNlcnZp
Y2VXb3JrZXJzRW5hYmxlZCgpIHx8IFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuc2VydmljZVdvcmtlckVuYWJsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5o
CmluZGV4IDcwYTEzYTVlNmY3YjdlNjQ3NWMyZDI2NGJlMTQ0M2YxYzI4ODIyMGEuLjQxZDI2MTYy
ZjYzNjY1NTU5MTU0MDJkZmU0NTE2NmM0Nzk3NTJkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaApA
QCAtMTM2LDcgKzEzNiw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4
LjApKQogICovCiBAcHJvcGVydHkgKG51bGxfcmVzZXR0YWJsZSwgbm9uYXRvbWljLCBjb3B5KSBX
S1dlYnBhZ2VQcmVmZXJlbmNlcyAqZGVmYXVsdFdlYnBhZ2VQcmVmZXJlbmNlcyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIAotQHByb3BlcnR5IChub25hdG9taWMp
IEJPT0wgbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9t
aWMpIEJPT0wgbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyBXS19BUElfQVZBSUxB
QkxFKGlvcyhXS19JT1NfVEJBKSk7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAvKiEgQGFic3Ry
YWN0IEEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgSFRNTDUgdmlkZW9zIHBsYXkg
aW5saW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCmluZGV4IDgzNjkzY2JmZjQ2OTFjNDEwMmRlZTYy
MzVjZTE1NmUwNWRmYmM4NmMuLjRkNmI5NTRjM2JkYzk5NWQxNGM2MjFkMTFhZTFjNjBmOWViZjU0
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBAIC01OTUsMTYgKzU5NSw2IEBAIC0gKFJlZjxB
UEk6OlBhZ2VDb25maWd1cmF0aW9uPiljb3B5UGFnZUNvbmZpZ3VyYXRpb24KICAgICByZXR1cm4g
X3BhZ2VDb25maWd1cmF0aW9uLT5jb3B5KCk7CiB9CiAKLS0gKEJPT0wpbGltaXRzTmF2aWdhdGlv
bnNUb0FwcEJvdW5kRG9tYWlucwotewotICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPmxp
bWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMoKTsKLX0KLQotLSAodm9pZClzZXRMaW1p
dHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOihCT09MKWxpbWl0c1RvQXBwQm91bmREb21h
aW5zCi17Ci0gICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRMaW1pdHNOYXZpZ2F0aW9uc1RvQXBw
Qm91bmREb21haW5zKGxpbWl0c1RvQXBwQm91bmREb21haW5zKTsKLX0KLQogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAoV0tQcml2YXRlKQpAQCAtODMwLDYg
KzgyMCwyNiBAQCAtIChpZCA8X1VJQ2xpY2tJbnRlcmFjdGlvbkRyaXZpbmc+KV9jbGlja0ludGVy
YWN0aW9uRHJpdmVyRm9yVGVzdGluZwogICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPmNs
aWNrSW50ZXJhY3Rpb25Ecml2ZXJGb3JUZXN0aW5nKCkuZ2V0KCk7CiB9CiAKKy0gKEJPT0wpbGlt
aXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucworeworICAgIHJldHVybiBfcGFnZUNvbmZp
Z3VyYXRpb24tPmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMoKTsKK30KKworLSAo
dm9pZClzZXRMaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOihCT09MKWxpbWl0c1Rv
QXBwQm91bmREb21haW5zCit7CisgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRMaW1pdHNOYXZp
Z2F0aW9uc1RvQXBwQm91bmREb21haW5zKGxpbWl0c1RvQXBwQm91bmREb21haW5zKTsKK30KKwor
LSAoQk9PTClfaWdub3Jlc0FwcEJvdW5kRG9tYWlucworeworICAgIHJldHVybiBfcGFnZUNvbmZp
Z3VyYXRpb24tPmlnbm9yZXNBcHBCb3VuZERvbWFpbnMoKTsKK30KKworLSAodm9pZClfc2V0SWdu
b3Jlc0FwcEJvdW5kRG9tYWluczooQk9PTClpZ25vcmVzQXBwQm91bmREb21haW5zCit7CisgICAg
X3BhZ2VDb25maWd1cmF0aW9uLT5zZXRJZ25vcmVzQXBwQm91bmREb21haW5zKGlnbm9yZXNBcHBC
b3VuZERvbWFpbnMpOworfQorCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAo
Qk9PTClfaW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQKQEAgLTEyMzcsMTYgKzEyNDcsNiBA
QCAtICh2b2lkKV9zZXRXZWJWaWV3Q2F0ZWdvcnk6KF9XS1dlYlZpZXdDYXRlZ29yeSljYXRlZ29y
eQogICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0V2ViVmlld0NhdGVnb3J5KHRvV2ViS2l0V2Vi
Vmlld0NhdGVnb3J5KGNhdGVnb3J5KSk7CiB9CiAKLS0gKEJPT0wpX2lnbm9yZXNBcHBCb3VuZERv
bWFpbnMKLXsKLSAgICByZXR1cm4gX3BhZ2VDb25maWd1cmF0aW9uLT5pZ25vcmVzQXBwQm91bmRE
b21haW5zKCk7Ci19Ci0KLS0gKHZvaWQpX3NldElnbm9yZXNBcHBCb3VuZERvbWFpbnM6KEJPT0wp
aWdub3Jlc0FwcEJvdW5kRG9tYWlucwotewotICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0SWdu
b3Jlc0FwcEJvdW5kRG9tYWlucyhpZ25vcmVzQXBwQm91bmREb21haW5zKTsKLX0KLQogLSAoQk9P
TClfc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcKIHsKICAgICByZXR1cm4gX3Bh
Z2VDb25maWd1cmF0aW9uLT5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygpID09
IFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpZZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCmluZGV4IDk5NWUyMWQ4ZmU1MjVmNjIyYzcxMjdj
MWVkOTU5MmM5YWNlNGU3ZWMuLmJhYzA1MmFiNmQ3MzQxY2E2MTNmZWEyMmY1OTJlODg5YzVjZGM2
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCkBAIC0xMDEsNiArMTAxLDcg
QEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIF9XS1dlYlZpZXdDYXRlZ29yeSkgewogQHBy
b3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9h
ZGluZ1F1aWNrTG9va1ByZXZpZXc6KSBCT09MIF9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2Fk
aW5nUXVpY2tMb29rUHJldmlldyBXS19BUElfQVZBSUxBQkxFKGlvcygxMy4wKSk7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRDYW5TaG93V2hpbGVMb2NrZWQ6KSBCT09MIF9jYW5T
aG93V2hpbGVMb2NrZWQgV0tfQVBJX0FWQUlMQUJMRShpb3MoMTMuMCkpOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0Q2xpY2tJbnRlcmFjdGlvbkRyaXZlckZvclRlc3Rpbmc6KSBp
ZCA8X1VJQ2xpY2tJbnRlcmFjdGlvbkRyaXZpbmc+IF9jbGlja0ludGVyYWN0aW9uRHJpdmVyRm9y
VGVzdGluZyBXS19BUElfQVZBSUxBQkxFKGlvcygxMy4wKSk7CitAcHJvcGVydHkgKG5vbmF0b21p
Yywgc2V0dGVyPV9zZXRJZ25vcmVzQXBwQm91bmREb21haW5zOikgQk9PTCBfaWdub3Jlc0FwcEJv
dW5kRG9tYWlucyBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiAjZWxzZQogQHBy
b3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U2hvd3NVUkxzSW5Ub29sVGlwczopIEJPT0wg
X3Nob3dzVVJMc0luVG9vbFRpcHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMikpOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U2VydmljZUNvbnRyb2xzRW5hYmxlZDopIEJP
T0wgX3NlcnZpY2VDb250cm9sc0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMikp
OwpAQCAtMTI0LDcgKzEyNSw2IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBfV0tXZWJW
aWV3Q2F0ZWdvcnkpIHsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0VW5kb01h
bmFnZXJBUElFbmFibGVkOikgQk9PTCBfdW5kb01hbmFnZXJBUElFbmFibGVkIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNl
dHRlcj1fc2V0V2ViVmlld0NhdGVnb3J5OikgX1dLV2ViVmlld0NhdGVnb3J5IF93ZWJWaWV3Q2F0
ZWdvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldElnbm9yZXNBcHBCb3VuZERvbWFp
bnM6KSBCT09MIF9pZ25vcmVzQXBwQm91bmREb21haW5zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzopIEJPT0wgX3Nob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVy
PV9zZXRQcm9jZXNzRGlzcGxheU5hbWU6KSBOU1N0cmluZyAqX3Byb2Nlc3NEaXNwbGF5TmFtZSBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaAppbmRleCAwNzE0YjE3YWE3OTU3ODc3MjViMGJkZTBiN2VjZmE4ODIxN2VmN2MwLi5hZDYx
MTExMTc3MDZjZWVmNTQ4Y2NjZjg1YmY4YTBkMTI5Nzk5NjMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTM0Miw5
ICszNDIsNiBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIAogLSAodm9pZClfZ2V0UHJvY2Vzc0Rpc3Bs
YXlOYW1lV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogCi0tICh2b2lkKV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOih2b2lkKF4p
KEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9pc0ZvcmNlZEludG9BcHBCb3VuZE1vZGU6
KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLQogLSAodm9pZClfZ3JhbnRBY2Nlc3NUb1By
ZWZlcmVuY2VTZXJ2aWNlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAKIC0gKHZvaWQpX3NlcnZpY2VXb3JrZXJzRW5hYmxlZDoodm9pZCheKShC
T09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwpAQCAtNDU5LDYgKzQ1Niw5IEBAIGZvciB0aGlzIHByb3BlcnR5
LgogCiAtICh2b2lkKV93aWxsT3BlbkFwcExpbmsgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9T
X1RCQSkpOwogCistICh2b2lkKV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOih2b2lkKF4p
KEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEp
KTsKKy0gKHZvaWQpX2lzRm9yY2VkSW50b0FwcEJvdW5kTW9kZToodm9pZCheKShCT09MKSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CisKIEBlbmQK
IAogQGludGVyZmFjZSBXS1dlYlZpZXcgKCkgPFVJUmVzcG9uZGVyU3RhbmRhcmRFZGl0QWN0aW9u
cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCmluZGV4IDlkZWEzZTZmMzIwZjIwMTUzOTFlMWUyMDhjODc2NmI2NGEx
YmI4ZjUuLmVmOTBlOGJmNDg1MTNkYTcyMjljZTlmZDIyZjA3ZjUxZmU1MTQ4YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbQpAQCAtNjM1LDYgKzYzNSw3IEBAIC0gKF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uICopX2NvbmZpZ3VyYXRpb24KIAogLSAodm9pZClfYXBwQm91bmREb21haW5zOih2b2lk
ICheKShOU0FycmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5nZXRBcHBCb3Vu
ZERvbWFpbnMoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0oYXV0byYgZG9tYWlucykgbXV0YWJsZSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJ
OjpPYmplY3Q+PiBhcGlEb21haW5zOwogICAgICAgICBhcGlEb21haW5zLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoZG9tYWlucy5zaXplKCkpOwpAQCAtNjQyLDEwICs2NDMsMTQgQEAgLSAodm9pZClf
YXBwQm91bmREb21haW5zOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRp
b25IYW5kbGVyCiAgICAgICAgICAgICBhcGlEb21haW5zLnVuY2hlY2tlZEFwcGVuZChBUEk6OlN0
cmluZzo6Y3JlYXRlKGRvbWFpbi5zdHJpbmcoKSkpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih3cmFwcGVyKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFwaURvbWFpbnMpKSkpOwogICAg
IH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworI2VuZGlmCiB9CiAKIC0g
KHZvaWQpX2FwcEJvdW5kU2NoZW1lczoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqKSlj
b21wbGV0aW9uSGFuZGxlcgogeworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBf
d2Vic2l0ZURhdGFTdG9yZS0+Z2V0QXBwQm91bmRTY2hlbWVzKFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mIHNjaGVtZXMpIG11dGFibGUg
ewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gYXBpU2NoZW1lczsKICAgICAg
ICAgYXBpU2NoZW1lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNjaGVtZXMuc2l6ZSgpKTsKQEAg
LTY1Myw2ICs2NTgsOSBAQCAtICh2b2lkKV9hcHBCb3VuZFNjaGVtZXM6KHZvaWQgKF4pKE5TQXJy
YXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKICAgICAgICAgICAgIGFwaVNjaGVt
ZXMudW5jaGVja2VkQXBwZW5kKEFQSTo6U3RyaW5nOjpjcmVhdGUoc2NoZW1lKSk7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXBp
U2NoZW1lcykpKSk7CiAgICAgfSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
CisjZW5kaWYKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld0lPUy5tbQppbmRleCA1MTNkOGRjNDczZmEzMTA4NDM1OWI0NTI3ZWYyNzM3NDFl
YjJhYjNiLi5lNTA2NzZlMzQ2Yzc2MDNhZjNhYmEyZDY4OGRjZWY4MmIwZjQ1ODMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQpAQCAtMzEx
NSw2ICszMTE1LDIwIEBAIC0gKHZvaWQpX3dpbGxPcGVuQXBwTGluawogICAgICAgICBfcGFnZS0+
d2lsbE9wZW5BcHBMaW5rKCk7CiB9CiAKKy0gKHZvaWQpX2lzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW46KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfcGFnZS0+aXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpblRlc3RpbmcoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgaXNBcHBCb3VuZCkgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihpc0FwcEJvdW5kKTsKKyAgICB9KTsKK30KKworLSAodm9pZClf
aXNGb3JjZWRJbnRvQXBwQm91bmRNb2RlOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVy
Cit7CisgICAgX3BhZ2UtPmlzRm9yY2VkSW50b0FwcEJvdW5kTW9kZVRlc3RpbmcoW2NvbXBsZXRp
b25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgaXNGb3Jj
ZWRJbnRvQXBwQm91bmRNb2RlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGlzRm9yY2Vk
SW50b0FwcEJvdW5kTW9kZSk7CisgICAgfSk7Cit9CisKIEBlbmQgLy8gV0tXZWJWaWV3IChXS1By
aXZhdGVJT1MpCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCAyNzgxN2VjZDUyODRlMDk5MDk2YzQyODRmMmY3NjA4ODczOTUxN2U1Li4xYmI5ZTY3ODk1Nzk2
MWQ0N2UzODk2NGEyZjkyZDE2MmY3ZDc0NTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTExNDQsMTIg
KzExNDQsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpoYXNJc29sYXRlZFNlc3Npb24o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWcKICAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpIYXNJc29sYXRlZFNlc3Npb24oc2Vzc2lvbklE
LCBkb21haW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKKyNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEFwcEJvdW5k
RG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgYXBwQm91bmREb21haW5zLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0QXBwQm91bmREb21haW5z
Rm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhzZXNzaW9uSUQsIGFwcEJvdW5kRG9tYWlucyksIFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQorI2VuZGlmCiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0
aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewpAQCAtMTU0Niw2ICsxNTQ4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXIK
ICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldFF1
b3RhKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAorI2lmIEVO
QUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzQXBw
Qm91bmRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNz
YWdlKCkpIHsKQEAgLTE1NjgsNyArMTU3MSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
Y2xlYXJBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0CiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0QXBwQm91bmREb21haW5zKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmIChhdXRvKiBzdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmVGcm9t
U2Vzc2lvbklEKHNlc3Npb25JRCkpIHsKICAgICAgICAgc3RvcmUtPmdldEFwcEJvdW5kRG9tYWlu
cyhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8m
IGFwcEJvdW5kRG9tYWlucykgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvIGFwcEJvdW5kRG9t
YWluc0NvcHkgPSBhcHBCb3VuZERvbWFpbnM7CkBAIC0xNTc3LDEwICsxNTc5LDggQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRBcHBCb3VuZERvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDb21wbGV0aW8KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOwotI2Vsc2UKLSAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotI2VuZGlm
CiB9CisjZW5kaWYKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1cGRhdGVCdW5kbGVJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBiMThhNWEzYzQ0
ZTkyOWE5MmYyMWI0OTVmOGZiYWY5ZDYwYTFmZWY1Li4yYzBlMmI2NGU2OGI4MWZlNDMwMmQ3NmYy
YWFhZjIwNTZmYzFhOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTc5LDcgKzE3OSw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nl
c3NGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFZlY3RvcjxSZWdp
c3RyYWJsZURvbWFpbj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwogICAgIHZvaWQgaGFzSXNvbGF0ZWRTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICB2b2lk
IHNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyNlbmRpZgogICAgIHZvaWQgc2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJG
b3JUZXN0aW5nKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBz
ZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVz
dGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yMzYsOSArMjM4LDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlc291cmNlTG9hZERpZFJlY2VpdmVSZXNwb25zZShXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJik7CiAgICAgdm9pZCByZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAorI2lmIEVOQUJMRShBUFBf
Qk9VTkRfRE9NQUlOUykKICAgICB2b2lkIGhhc0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBjbGVhckFwcEJv
dW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIGdldEFwcEJvdW5kRG9tYWlucyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7Cisj
ZW5kaWYKIAogICAgIC8vIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQKICAgICB2b2lkIHNlbmRQcmVw
YXJlVG9TdXNwZW5kKElzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDE1ZjlhODBl
MTVmMzFiZWQ5NGI4NjE5OWQyMTQ1ZDZkMjIwYmJkYWMuLjMwMjA4N2FjYjhmMmZkNWQ1M2ZmMTI3
ZDczNzZhMTNkN2VmMjE2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTY5
LDcgKzY5LDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZl
ciBOb3RSZWZDb3VudGVkIHsKIAogICAgIFNldFdlYlByb2Nlc3NIYXNVcGxvYWRzKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCwgYm9vbCBoYXNVcGxvYWQpCiAKKyNpZiBFTkFC
TEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgR2V0QXBwQm91bmREb21haW5zKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkgLT4gKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFw
cEJvdW5kRG9tYWlucykgQXN5bmMKKyNlbmRpZgogCiAgICAgUmVxdWVzdFN0b3JhZ2VTcGFjZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3Jp
Z2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNl
UmVxdWlyZWQpIC0+IChPcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpIEFzeW5jCiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmMzNmMmIwM2VmZmQz
NjcxZGM1MmEyNjkzNDEwYzE5MzI0ZmI2MTNhLi42ZDI4ZmIzYzdiYmU2Nzc5ZmM0YmRkZmFhM2I2
Yzk5ZGY1Y2Q4NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTUyMyw3ICs1MjMsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50
JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogICAgICwgbV9yZXNl
dFJlY2VudENyYXNoQ291bnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlUHJv
eHk6OnJlc2V0UmVjZW50Q3Jhc2hDb3VudCkKICAgICAsIG1fdHJ5Q2xvc2VUaW1lb3V0VGltZXIo
UnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZVByb3h5Ojp0cnlDbG9zZVRpbWVkT3V0KQog
ICAgICwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMobV9jb25maWd1cmF0aW9uLT5jb3JzRGlzYWJs
aW5nUGF0dGVybnMoKSkKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoQVBQX0JPVU5E
X0RPTUFJTlMpCiAgICAgLCBtX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMobV9jb25maWd1cmF0aW9u
LT5pZ25vcmVzQXBwQm91bmREb21haW5zKCkpCiAgICAgLCBtX2xpbWl0c05hdmlnYXRpb25zVG9B
cHBCb3VuZERvbWFpbnMobV9jb25maWd1cmF0aW9uLT5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zKCkpCiAjZW5kaWYKQEAgLTE0MTcsNyArMTQxNyw3IEBAIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBjCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERh
dGE6Iik7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKICAgICBpZiAoTUlNRVR5cGUgPT0gInRleHQvaHRtbCJfcyAmJiAhaXNGdWxsV2Vi
QnJvd3NlcigpKQogICAgICAgICBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMg
PSB0cnVlOwogI2VuZGlmCkBAIC0zMTU2LDE2ICszMTU2LDE0IEBAIHByaXZhdGU6CiAgICAgUG9s
aWN5Q2hlY2tJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIHN0YXRpYyBib29sIHNob3Vs
ZFRyZWF0VVJMUHJvdG9jb2xBc0FwcEJvdW5kKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCkKIHsKICAg
ICByZXR1cm4gcmVxdWVzdFVSTC5wcm90b2NvbElzQWJvdXQoKSB8fCByZXF1ZXN0VVJMLnByb3Rv
Y29sSXNEYXRhKCkgfHwgcmVxdWVzdFVSTC5wcm90b2NvbElzQmxvYigpIHx8IHJlcXVlc3RVUkwu
aXNMb2NhbEZpbGUoKSB8fCByZXF1ZXN0VVJMLnByb3RvY29sSXNKYXZhU2NyaXB0KCk7CiB9Ci0j
ZW5kaWYKIAogYm9vbCBXZWJQYWdlUHJveHk6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW5BbmRDaGVja0lmUGVybWl0dGVkKGJvb2wgaXNNYWluRnJhbWUsIGNvbnN0IFVSTCYgcmVxdWVz
dFVSTCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pCiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaXNG
dWxsV2ViQnJvd3NlcigpKSB7CiAgICAgICAgIGlmIChoYXNQcm9oaWJpdGVkVXNhZ2VTdHJpbmdz
KCkpCiAgICAgICAgICAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm87CkBAIC0zMTk5LDExICszMTk3LDYgQEAgYm9vbCBXZWJQ
YWdlUHJveHk6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5BbmRDaGVja0lmUGVybWl0
dGVkKGJvb2wgaXNNYWkKICAgICAgICAgbV9jb25maWd1cmF0aW9uLT5zZXRXZWJWaWV3Q2F0ZWdv
cnkoV2ViVmlld0NhdGVnb3J5OjpJbkFwcEJyb3dzZXIpOwogICAgICAgICBtX2lzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4gPSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm87CiAgICAg
fQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaXNNYWluRnJhbWUpOwotICAgIFVOVVNFRF9QQVJB
TShyZXF1ZXN0VVJMKTsKLSAgICBVTlVTRURfUEFSQU0oaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik7Ci0jZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzIxNiwxMCArMzIwOSwx
MSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aXNGb3JjZWRJbnRvQXBwQm91bmRNb2RlVGVzdGluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPgogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKG1f
bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk7CiB9CisjZW5kaWYKIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRJbk5ldHdvcmtQcm9j
ZXNzKCkKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9v
bCgpLm5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgaWYgKCFuZXR3b3JrUHJvY2Vzcy0+Y2Fu
U2VuZE1lc3NhZ2UoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMyMzAsNyArMzIyNCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3
b3JrUHJvY2VzcygpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhclNlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNy
ZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRl
KCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9j
ZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLm5ldHdvcmtQcm9jZXNzKCkpIHsKQEAgLTQ0
MzksNyArNDQzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwcmVjb25uZWN0VG8oY29uc3QgVVJM
JiB1cmwpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgPSBtX2NhblVzZUNyZWRlbnRpYWxTdG9yYWdlID8gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3k6OlVzZSA6IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVz
ZTsKLSAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5w
cmVjb25uZWN0VG8oc2Vzc2lvbklEKCksIGlkZW50aWZpZXIoKSwgd2ViUGFnZUlEKCksIHVybCwg
dXNlckFnZW50KCksIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBtX2lzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4pOworICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5lbnN1cmVOZXR3b3Jr
UHJvY2VzcygpLnByZWNvbm5lY3RUbyhzZXNzaW9uSUQoKSwgaWRlbnRpZmllcigpLCB3ZWJQYWdl
SUQoKSwgdXJsLCB1c2VyQWdlbnQoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4oKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDYW5V
c2VDcmVkZW50aWFsU3RvcmFnZShib29sIGNhblVzZUNyZWRlbnRpYWxTdG9yYWdlKQpAQCAtNTIx
Niw3ICs1MjEwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICAgICAgc2hvdWxkRXhw
ZWN0U2FmZUJyb3dzaW5nUmVzdWx0ID0gU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpO
bzsKIAogICAgIFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0IHNob3VsZEV4cGVjdEFw
cEJvdW5kRG9tYWluUmVzdWx0ID0gU2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQ6Ok5v
OwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIHNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0ID0gU2hvdWxkRXhwZWN0QXBw
Qm91bmREb21haW5SZXN1bHQ6OlllczsKICNlbmRpZgogICAgIApAQCAtNTIzNSw3ICs1MjI5LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICAgICAgICAgIHJlY2VpdmVkTmF2aWdhdGlv
blBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgcHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCwgZnJhbWUsIFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKHNl
bmRlcikpOwogICAgICAgICB9OwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKEFQ
UF9CT1VORF9ET01BSU5TKQogICAgICAgICBpZiAocG9saWN5QWN0aW9uICE9IFBvbGljeUFjdGlv
bjo6SWdub3JlKSB7CiAgICAgICAgICAgICBpZiAoIXNldElzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW5BbmRDaGVja0lmUGVybWl0dGVkKGZyYW1lLT5pc01haW5GcmFtZSgpLCBuYXZpZ2F0aW9u
LT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBpc0FwcEJvdW5kRG9tYWluKSkgewogICAgICAgICAg
ICAgICAgIGF1dG8gZXJyb3IgPSBlcnJvckZvclVucGVybWl0dGVkQXBwQm91bmREb21haW5OYXZp
Z2F0aW9uKG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCkpOwpAQCAtNTI5Myw3ICs1
Mjg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICB9LCBzaG91bGRFeHBlY3RTYWZl
QnJvd3NpbmdSZXN1bHQsIHNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0KSk7CiAgICAg
aWYgKHNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCA9PSBTaG91bGRFeHBlY3RTYWZlQnJv
d3NpbmdSZXN1bHQ6OlllcykKICAgICAgICAgYmVnaW5TYWZlQnJvd3NpbmdDaGVjayhyZXF1ZXN0
LnVybCgpLCBmcmFtZS5pc01haW5GcmFtZSgpLCBsaXN0ZW5lcik7Ci0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgbV93ZWJzaXRlRGF0
YVN0b3JlLT5iZWdpbkFwcEJvdW5kRG9tYWluQ2hlY2socmVxdWVzdC51cmwoKSwgbGlzdGVuZXIp
OwogI2VuZGlmCiAgICAgQVBJOjpOYXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZpZ2F0aW9uID0gZnJh
bWUuaXNNYWluRnJhbWUoKSA/IG5hdmlnYXRpb24uZ2V0KCkgOiBudWxscHRyOwpAQCAtNzk0Nyw3
ICs3OTQxLDkgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLnNob3Vs
ZEVuYWJsZVZQOVNXRGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5RGVjb2RlckVuYWJsZWQoKSAm
JiAoIVdlYkNvcmU6OnN5c3RlbUhhc0JhdHRlcnkoKSB8fCBwcmVmZXJlbmNlcygpLnZwOVNXRGVj
b2RlckVuYWJsZWRPbkJhdHRlcnkoKSk7CiAjZW5kaWYKICAgICBwYXJhbWV0ZXJzLnNob3VsZENh
cHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuY29uZmln
dXJhdGlvbigpLnNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MoKTsKKyNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgcGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBw
Qm91bmREb21haW5zID0gbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOworI2Vu
ZGlmCiAgICAgcGFyYW1ldGVycy5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9
IG1fY29uZmlndXJhdGlvbi0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKTsK
ICAgICBwYXJhbWV0ZXJzLmNhblVzZUNyZWRlbnRpYWxTdG9yYWdlID0gbV9jYW5Vc2VDcmVkZW50
aWFsU3RvcmFnZTsKIApAQCAtNzk2Niw3ICs3OTYyLDkgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHBy
b2MKICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBw
YXJhbWV0ZXJzLm5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyA9IHByZWZlcmVuY2VzKCku
bmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKCk7CisjZW5kaWYKIAogICAgIHJldHVybiBw
YXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBk
ZDJjMzRjZWExNjA4MmI2Yzg4YWU3NDUzMDcyZmQyZGE3OWEyOTM2Li43ZDE5YmI1MzJkNGIwZWQw
MWIzOTU5MjI0NTI1NmRhOThmOTdlZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMTc3NCwxMSArMTc3NCwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc1Rh
a2luZ1NuYXBzaG90c0ZvckFwcGxpY2F0aW9uU3VzcGVuc2lvbihib29sKTsKICAgICB2b2lkIHNl
dE5lZWRzRE9NV2luZG93UmVzaXplRXZlbnQoKTsKIAorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9N
QUlOUykKKyAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbjsgfQogICAgIHZvaWQgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpblRlc3Rp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc0ZvcmNlZElu
dG9BcHBCb3VuZE1vZGVUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwot
Ci0gICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW47IH0KICAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNUb3BG
cmFtZU5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9pc1RvcEZy
YW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47IH0KKyNlbHNlCisgICAgICAgIE9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3JGb3JVbnBlcm1pdHRlZEFw
cEJvdW5kRG9tYWluTmF2aWdhdGlvbihjb25zdCBVUkwmKTsKQEAgLTIzNzUsOCArMjM3OCwxMCBA
QCBwcml2YXRlOgogICAgIHZvaWQgdHJ5Q2xvc2VUaW1lZE91dCgpOwogICAgIHZvaWQgbWFrZVN0
b3JhZ2VTcGFjZVJlcXVlc3QoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJp
bmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRP
cmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVj
dGVkVXNhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKICAgICAgICAg
CisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGJvb2wgc2V0SXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQoYm9vbCBpc01haW5GcmFtZSwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKLSAgICAgICAg
CisjZW5kaWYKKwogICAgIGNvbnN0IElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFdlYWtQdHI8UGFnZUNsaWVudD4g
bV9wYWdlQ2xpZW50OwpAQCAtMjg3MiwxMSArMjg3NywxNCBAQCBwcml2YXRlOgogICAgIE1vbm90
b25pY1RpbWUgbV9kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JNYWluRnJhbWVUaW1lc3RhbXA7CiAj
ZW5kaWYKICAgICAgICAgCisjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIE9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW47CiAgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IG1faXNUb3BG
cmFtZU5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAgIGJvb2wgbV9pZ25vcmVzQXBwQm91
bmREb21haW5zIHsgZmFsc2UgfTsKLSAgICBib29sIG1fdXNlclNjcmlwdHNOb3RpZmllZCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgeyBm
YWxzZSB9OworI2VuZGlmCisKKyAgICBib29sIG1fdXNlclNjcmlwdHNOb3RpZmllZCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2hhc0V4ZWN1dGVkQXBwQm91bmRCZWhhdmlvckJlZm9yZU5hdmlnYXRp
b24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSB7IHRydWUg
fTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXgg
ZjNlNjAxYmUwNGU0N2RjOGQ4ZDhkZmJmMjkwNDY3MjQ1ZmVhZDFjMS4uOWIzY2EwYWQzYjE2ZTgy
MWM5NjRiZmNkYjBhMWY4ODc1ODM1MzgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcApAQCAtMTQxNCw3ICsxNDE0LDkgQEAgRG93bmxvYWRQcm94eSYgV2Vi
UHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGFn
ZVByb3gKICAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNBcHBCb3Vu
ZCA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsKICAgICBpZiAoaW5pdGlhdGluZ1Bh
Z2UpIHsKICAgICAgICAgaW5pdGlhdGluZ1BhZ2UtPmhhbmRsZURvd25sb2FkUmVxdWVzdChkb3du
bG9hZFByb3h5KTsKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgICAgIGlzQXBw
Qm91bmQgPSBpbml0aWF0aW5nUGFnZS0+aXNUb3BGcmFtZU5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKCk7CisjZW5kaWYKICAgICB9CiAKICAgICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IGZiM2IyMWZkOTM2MjhhMzRhZTNk
NGRlY2ZkNGU3OTdjZjY1MzFmNjUuLmVlZTc4ZmJjOTg4NjQ5NDc2ZDEwOTViNDljZjEwNmMxODQ0
NWQyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTYzLDE0ICs2
MywxNSBAQCBzdGF0aWMgSGFzaFNldDxXZWJzaXRlRGF0YVN0b3JlKj4mIGRhdGFTdG9yZXMoKQog
CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJLaXROZXR3b3JrTG9hZFRocm90dGxlTGF0ZW5j
eU1pbGxpc2Vjb25kc0RlZmF1bHRzS2V5ID0gQCJXZWJLaXROZXR3b3JrTG9hZFRocm90dGxlTGF0
ZW5jeU1pbGxpc2Vjb25kcyI7CiAKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiBzdGF0
aWMgV29ya1F1ZXVlJiBhcHBCb3VuZERvbWFpblF1ZXVlKCkKIHsKICAgICBzdGF0aWMgYXV0byYg
cXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5BcHBCb3VuZERvbWFp
bnMiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCkubGVha1JlZigpOwogICAgIHJldHVybiBxdWV1
ZTsKIH0KLQogc3RhdGljIHN0ZDo6YXRvbWljPGJvb2w+IGhhc0luaXRpYWxpemVkQXBwQm91bmRE
b21haW5zID0gZmFsc2U7CiBzdGF0aWMgc3RkOjphdG9taWM8Ym9vbD4ga2V5RXhpc3RzID0gZmFs
c2U7CisjZW5kaWYKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiBXZWJD
b3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIFdlYnNpdGVEYXRhU3RvcmU6OnRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUoKSBjb25zdApAQCAtMjE1LDggKzIxNiw5IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKICAgICBBU1NFUlQoIWRh
dGFTdG9yZXMoKS5jb250YWlucyh0aGlzKSk7CiAgICAgZGF0YVN0b3JlcygpLmFkZCh0aGlzKTsK
LQorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpbml0aWFsaXplQXBwQm91bmRE
b21haW5zKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybURl
c3Ryb3koKQpAQCAtMzkzLDYgKzM5NSw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0CiAgICAg
cmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKIH0K
IAorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIHN0YXRpYyBIYXNoU2V0PFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiYgYXBwQm91bmREb21haW5zKCkKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwpAQCAtNTU4LDUgKzU2MSw2IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6cmVpbml0aWFsaXplQXBwQm91bmREb21haW5zKCkKICAgICBoYXNJbml0aWFsaXplZEFwcEJv
dW5kRG9tYWlucyA9IGZhbHNlOwogICAgIGluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9yY2VS
ZWluaXRpYWxpemF0aW9uOjpZZXMpOwogfQorI2VuZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5k
ZXggNjQ5NmRlYzE1OWRiYzQ4NzI0MWY3MDhjNTVhYjA3YWJkZTRjMWM3Yi4uMDI0MTliN2FjMGIz
ZjAwYmMyMzU1OTRmMTkzMTgwYzNjYTJkNGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTIyOTks
NyArMjI5OSw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6
OnBhcmFtZXRlcnMoKQogICAgIGF1dG8gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUg
PSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2ll
czsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdGFuZGFsb25lQXBwbGljYXRpb25E
b21haW47CiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gYXBwQm91bmRE
b21haW5zOwotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlO
UykKICAgICBpZiAoaXNBcHBCb3VuZElUUFJlbGF4YXRpb25FbmFibGVkKQogICAgICAgICBhcHBC
b3VuZERvbWFpbnMgPSBhcHBCb3VuZERvbWFpbnNJZkluaXRpYWxpemVkKCkudmFsdWVPcihIYXNo
U2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiB7IH0pOwogI2VuZGlmCkBAIC0yNDc2LDYg
KzI0NzYsMTggQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCiB9CiAjZW5kaWYKIAordm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFVSTCYmIG9sZE5hbWUsIFVSTCYmIG5l
d05hbWUsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gY2FsbGJhY2tB
Z2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6
YWxsUHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0g
cHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9j
ZXNzLT5hZGRTZXNzaW9uKCp0aGlzKTsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5yZW5h
bWVPcmlnaW5JbldlYnNpdGVEYXRhKG1fc2Vzc2lvbklELCBvbGROYW1lLCBuZXdOYW1lLCBkYXRh
VHlwZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
KyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omhh
c0FwcEJvdW5kU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBjb25zdAogewogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNz
UG9vbHMoKSkgewpAQCAtMjQ5NywxOCArMjUwOSw2IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
Y2xlYXJBcHBCb3VuZFNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
CiAgICAgfQogfQogCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbmFtZU9yaWdpbkluV2Vic2l0
ZURhdGEoVVJMJiYgb2xkTmFtZSwgVVJMJiYgbmV3TmFtZSwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCi17Ci0gICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0
b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgZm9yIChhdXRvJiBw
cm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkgewotICAgICAg
ICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3Mo
KSkgewotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmFkZFNlc3Npb24oKnRoaXMpOwotICAg
ICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEobV9zZXNz
aW9uSUQsIG9sZE5hbWUsIG5ld05hbWUsIGRhdGFUeXBlcywgW2NhbGxiYWNrQWdncmVnYXRvcl0g
eyB9KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotI2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpmb3J3YXJkQXBwQm91bmREb21haW5zVG9JVFBJZkluaXRpYWxpemVk
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBh
dXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCAyZWNmNGQ5ZTI1YzM0NGY0
YWJiMTljMWQxNjMxMDU5Nzk2M2ZmMmM2Li4xNDA3NmFhOTI0ZTdjZTJmZjdmNzNlZGEzNjgzYTg1
YzRhNjNkYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0zMDAsMjIgKzMwMCwyNiBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGJvb2wgaHR0cDNFbmFibGVkKCk7CiAKICAgICB2b2lkIHJlc2V0UXVvdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlO
UykKICAgICB2b2lkIGhhc0FwcEJvdW5kU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKSBjb25zdDsKICAgICB2b2lkIGNsZWFyQXBwQm91bmRTZXNzaW9uKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7Ci0KICAgICB2b2lkIGJlZ2luQXBwQm91bmREb21haW5DaGVjayhj
b25zdCBVUkwmLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmKTsKICAgICB2b2lkIGdldEFw
cEJvdW5kRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+Jik+JiYpIGNvbnN0OwogICAgIHZvaWQgZ2V0QXBwQm91bmRT
Y2hlbWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxTdHJpbmc+Jik+JiYp
IGNvbnN0OwogICAgIHZvaWQgZW5zdXJlQXBwQm91bmREb21haW5zKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mLCBjb25zdCBI
YXNoU2V0PFN0cmluZz4mKT4mJikgY29uc3Q7CiAgICAgdm9pZCByZWluaXRpYWxpemVBcHBCb3Vu
ZERvbWFpbnMoKTsKICAgICBzdGF0aWMgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5n
KEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisjZW5kaWYKICAgICB2b2lkIHVwZGF0ZUJ1bmRsZUlkZW50aWZpZXJJbk5l
dHdvcmtQcm9jZXNzKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBjbGVhckJ1bmRsZUlkZW50aWZpZXJJbk5ldHdvcmtQcm9jZXNzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRm9y
Y2VSZWluaXRpYWxpemF0aW9uIDogYm9vbCB7IE5vLCBZZXMgfTsKKyNpZiBFTkFCTEUoQVBQX0JP
VU5EX0RPTUFJTlMpCiAgICAgdm9pZCBpbml0aWFsaXplQXBwQm91bmREb21haW5zKEZvcmNlUmVp
bml0aWFsaXphdGlvbiA9IEZvcmNlUmVpbml0aWFsaXphdGlvbjo6Tm8pOwogICAgIHZvaWQgYWRk
VGVzdERvbWFpbnMoKSBjb25zdDsKKyNlbmRpZgogCiAgICAgdm9pZCBmZXRjaERhdGFBbmRBcHBs
eShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hP
cHRpb24+LCBSZWZQdHI8V29ya1F1ZXVlPiYmLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRl
RGF0YVJlY29yZD4pPiYmIGFwcGx5KTsKIApAQCAtMzQ3LDcgKzM1MSw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIG1heWJlUmVnaXN0ZXJXaXRoU2Vzc2lvbklETWFwKCk7CiAKLSNpZiBQTEFURk9S
TShDT0NPQSkKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgc3RhdGljIE9wdGlv
bmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBhcHBCb3VuZERvbWFpbnNJ
ZkluaXRpYWxpemVkKCk7CiAgICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBzdGQ6OmF0b21pYzxi
b29sPiBpc0FwcEJvdW5kSVRQUmVsYXhhdGlvbkVuYWJsZWQgPSBmYWxzZTsKICAgICBzdGF0aWMg
dm9pZCBmb3J3YXJkQXBwQm91bmREb21haW5zVG9JVFBJZkluaXRpYWxpemVkKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggOTdlYjViMzRlNzU2NTQ1OTdiYWE2
NjI3MWM4NjgzOTA2MWJlYmRmYS4uNTA2OWM5NWFhNGRiNTliNjgzMWY4NDQzNzAxMzk1MGZjMDEx
YjcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMzM1LDggKzMzNSwxMSBAQCB2b2lkIFdlYkxvYWRlclN0
cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJl
c291cmNlTAogICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gZnJhbWUgPyB0b1dlYkZy
YW1lTG9hZGVyQ2xpZW50KGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKSkgOiBudWxscHRyOwogICAg
IGF1dG8qIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyAmd2ViRnJhbWVMb2FkZXJD
bGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOwogICAgIGF1dG8qIHdlYlBhZ2UgPSB3ZWJGcmFt
ZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworCisjaWYgRU5BQkxFKEFQUF9CT1VORF9E
T01BSU5TKQogICAgIGlmICh3ZWJGcmFtZSkKICAgICAgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IHdlYkZyYW1lLT5pc1RvcEZyYW1lTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4oKTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKICAgICBpZiAoZG9jdW1lbnQpIHsKQEAgLTYwMCw5ICs2MDMsMTAgQEAgdm9pZCBXZWJMb2Fk
ZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVM
b2FkZXIsIHVuc2kKICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVy
cyA9IGNvbnRlbnRTZWN1cml0eVBvbGljeS0+cmVzcG9uc2VIZWFkZXJzKCk7CiAgICAgfQogICAg
IGxvYWRQYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgPSBvcmlnaW5hbFJlcXVlc3RI
ZWFkZXJzOwotICAgIAorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAod2Vi
RnJhbWUpCiAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4gPSB3ZWJGcmFtZS0+aXNUb3BGcmFtZU5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7Cisj
ZW5kaWYKICAgICBhZGRQYXJhbWV0ZXJzU2hhcmVkKHdlYkZyYW1lLT5jb3JlRnJhbWUoKSwgbG9h
ZFBhcmFtZXRlcnMpOwogCiAgICAgZGF0YS5zaHJpbmsoMCk7CkBAIC02ODEsOSArNjg1LDEwIEBA
IHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvCiAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jc3BS
ZXNwb25zZUhlYWRlcnMgPSBjb250ZW50U2VjdXJpdHlQb2xpY3ktPnJlc3BvbnNlSGVhZGVycygp
OwogICAgIH0KICAgICBhZGRQYXJhbWV0ZXJzU2hhcmVkKCZmcmFtZSwgbG9hZFBhcmFtZXRlcnMp
OwotICAgIAorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBsb2FkUGFyYW1ldGVy
cy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gd2ViRnJhbWUtPmlzVG9wRnJhbWVOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbigpOwotICAgIAorI2VuZGlmCisKICNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQogICAgIGxvYWRQYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCA9IGRv
Y3VtZW50LT50b3BEb2N1bWVudCgpLnVybCgpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHBh
c3NpbmcgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgd2Ugc2hvdWxkIGp1c3QgcGFz
cyB3ZWJQYWdlSWQgdG8gTmV0d29ya1Byb2Nlc3MuCkBAIC03NTAsNyArNzU1LDkgQEAgdm9pZCBX
ZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFdlYlBhZ2UKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJlc3Bv
bnNlQWNjZXNzID0gc2hvdWxkUGVyZm9ybVNlY3VyaXR5Q2hlY2tzKCk7CiAgICAgLy8gRklYTUU6
IFVzZSB0aGUgcHJvcGVyIGRlc3RpbmF0aW9uIG9uY2UgYWxsIGZldGNoIG9wdGlvbnMgYXJlIHBh
c3NlZC4KICAgICBwYXJhbWV0ZXJzLm9wdGlvbnMuZGVzdGluYXRpb24gPSBGZXRjaE9wdGlvbnM6
OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmluZzsKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMp
CiAgICAgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gd2ViRnJhbWUu
aXNUb3BGcmFtZU5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7CisjZW5kaWYKIAogICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UHJlY29ubmVjdFRvKHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
KSwgMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAwMGJlMWUyZDRk
ZDIxMjlmZDY0NjliY2RmYjliYjZjMTY3ZGUwYjkyLi4xYjlhM2E5YWNkNTMwNjY0NzVhMzdkMDBl
OTIwNThlOGQ4Y2IyOGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE4
OTcsOCArMTg5Nyw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNlbmRIMlBpbmcoY29u
c3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwCiAjZW5kaWYKICAgICBwYXJh
bWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5ID0gUHJlY29ubmVjdE9ubHk6OlllczsKICAgICBw
YXJhbWV0ZXJzLm9wdGlvbnMuZGVzdGluYXRpb24gPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9u
OjpFbXB0eVN0cmluZzsKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgcGFyYW1l
dGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gbV9mcmFtZS0+aXNUb3BGcmFtZU5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7Ci0gICAgCisjZW5kaWYKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6U2VuZEgyUGluZyhwYXJhbWV0ZXJzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCkBAIC0xOTUyLDYgKzE5NTMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpm
aW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90IGNhbGxiYWNrSQogfQog
I2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKIAorI2lmIEVOQUJMRShBUFBf
Qk9VTkRfRE9NQUlOUykKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEVuYWJsZUlu
QXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZnJh
bWUtPnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpOwpAQCAtMTk2
OCw2ICsxOTcwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6bm90aWZ5UGFnZU9mQXBw
Qm91bmRCZWhhdmlvcigpCiAKICAgICB3ZWJQYWdlLT5ub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2
aW9yKCk7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKaW5kZXggZjUyZTQ0ZGY4ZTAyZGM2OGYyZDA2M2ExOGFjZjQ5ZGFhZTg0
NjM1Ni4uNDlmZDExZjcxMTMzZWFlMWQzYjM5NDg4MTUxYTUwNGI0YWI1ODQ0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI4OCw4ICsyODgsMTAgQEAgcHJpdmF0ZToKICAgICBP
cHRpb25hbDxGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXI+IG1fZnJhbWVTcGVj
aWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQVBQX0JP
VU5EX0RPTUFJTlMpCiAgICAgYm9vbCBzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJv
dGVjdGlvbnMoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIG5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVo
YXZpb3IoKSBmaW5hbDsKKyNlbmRpZgogfTsKIAogLy8gQXMgbG9uZyBhcyBFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50IGV4aXN0cyBpbiBXZWJDb3JlLCB0aGlzIGNhbiByZXR1cm4gMC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCBkMWEwNjg5ZTBj
ZmYxZDQ4MzZjZTFmYzFjMTM3YjFkYjJhMjYyOTUwLi5hOTQ0ZDVmYWNlNzg4ZTFiOGJkNGMzNmQ0
YTE5MDlhYzc3MmIxMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCkBAIC04NTUsNiArODU1LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3QKICAgICByZXR1cm4gc2hh
cmVkU25hcHNob3Q7CiB9CiAKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiBib29sIFdl
YkZyYW1lOjpzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKQogewog
ICAgIGlmIChwYWdlKCkgJiYgcGFnZSgpLT5uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3Mo
KSkKQEAgLTg3Niw2ICs4NzcsNiBAQCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gV2ViRnJhbWU6OmlzVG9wRnJhbWVOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbQogewogICAgIHJl
dHVybiBmcm9tQ29yZUZyYW1lKG1fY29yZUZyYW1lLT5tYWluRnJhbWUoKSktPmlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4oKTsKIH0KLQorI2VuZGlmCiAgICAgCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCmluZGV4
IDQ5OGE2NjViOGUyZTNiZDQ4MzE3YjQ2OWUzZWJlMTQ5MDhkZjZkYTIuLjc0MjM1MjZhMmUyNWUz
YmJlNzk0ODMzNDk5MjUxMGZkMGRlYzYxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuaApAQCAtMTcyLDEwICsxNzIsMTMgQEAgcHVibGljOgogI2VuZGlm
CiAKICAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogZnJhbWVMb2FkZXJDbGllbnQoKSBjb25zdDsK
KworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBib29sIHNob3VsZEVuYWJsZUlu
QXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpOwogICAgIHZvaWQgc2V0SXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbihPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgeyBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOyB9OwogICAgIE9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkgY29u
c3QgeyByZXR1cm4gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOyB9CiAgICAgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzVG9wRnJhbWVOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbigpIGNvbnN0OworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgV2ViRnJhbWUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggN2Jl
OGE3Mjc4M2RkMDhkODBhZWY5OWVkZDVlOWNhMTNkODMxNTdjYy4uM2RlMmFiYTQyZTI5NDdhY2My
NjU3MTJkMTZkODliZTY2NjExZWU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQxNiw3ICs0MTYsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiAgICAgLCBtX2Fsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyIHsgcGFyYW1ldGVycy5h
bHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlciB9CiAgICAgLCBtX2Fsd2F5c1Nob3dzVmVydGlj
YWxTY3JvbGxlciB7IHBhcmFtZXRlcnMuYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyIH0KICAg
ICAsIG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgcGFyYW1ldGVycy5zaG91bGRS
ZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgfQorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykK
ICAgICAsIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIHsgcGFyYW1ldGVycy5uZWVk
c0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgfQorI2VuZGlmCiAjaWYgRU5BQkxFKFBSSU1BUllf
U05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKICAgICAsIG1fZGV0ZXJtaW5lUHJpbWFyeVNu
YXBzaG90dGVkUGx1Z0luVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZTo6ZGV0
ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luVGltZXJGaXJlZCkKICNlbmRpZgpAQCAtNDc5
LDcgKzQ4MSw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNlbmRpZgogICAgICwgbV9vdmVy
cmlkZGVuTWVkaWFUeXBlKHBhcmFtZXRlcnMub3ZlcnJpZGRlbk1lZGlhVHlwZSkKICAgICAsIG1f
cHJvY2Vzc0Rpc3BsYXlOYW1lKHBhcmFtZXRlcnMucHJvY2Vzc0Rpc3BsYXlOYW1lKQorI2lmIEVO
QUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICAsIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJv
dW5kRG9tYWlucyhwYXJhbWV0ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMp
CisjZW5kaWYKIHsKICAgICBBU1NFUlQobV9pZGVudGlmaWVyKTsKIApAQCAtMTU2MSw3ICsxNTY1
LDkgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhjb25z
dCBMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXQKIAogdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVz
dChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogeworI2lmIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKICAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGxvYWRQYXJh
bWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7
CisjZW5kaWYKIAogICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVyOwogCkBA
IC0xNTk5LDcgKzE2MDUsOSBAQCBOT19SRVRVUk4gdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdFdh
aXRpbmdGb3JQcm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYsIFVSTAogCiB2b2lkIFdlYlBh
Z2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQ
b2xpY2llcywgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYg
TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkws
IGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgT3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSkKIHsKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgc2V0SXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9t
YWluRnJhbWUuZ2V0KCkpOworI2VuZGlmCiAKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGlt
ZXIgc3RvcHBlcjsKIApAQCAtMzMxNiw4ICszMzI0LDkgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxpc3Rl
bmUKIAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKLQorI2lmIEVOQUJMRShBUFBf
Qk9VTkRfRE9NQUlOUykKICAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKHBvbGlj
eURlY2lzaW9uLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGZyYW1lKTsKKyNlbmRpZgog
ICAgIGZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgV1RGTW92ZShw
b2xpY3lEZWNpc2lvbikpOwogfQogCkBAIC0zNDg2LDYgKzM0OTUsNyBAQCB2b2lkIFdlYlBhZ2U6
OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYm
IHBhcmFtZXRlcgogCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0
VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CiAgICAg
fTsKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYgKGZyYW1lLT5zaG91bGRF
bmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRpb25E
ZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlz
IG5vdCBpbiBhbiBhcHAtYm91bmQgZG9tYWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpU
eXBlOjpBcHBCb3VuZERvbWFpbiB9LCBjYWxsYmFja0lEKSk7CiAgICAgICAgIGlmIChhdXRvKiBk
b2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKQEAgLTM0OTMsNyArMzUw
Myw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoTG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0
IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLQorI2VuZGlmCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7CiAgICAg
ZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5leGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50
U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxkKCksIFdURk1vdmUocGFyYW1ldGVycyksIFdU
Rk1vdmUocmVzb2x2ZUZ1bmN0aW9uKSk7CiB9CkBAIC0zNzM4LDE3ICszNzQ4LDI0IEBAIHZvaWQg
V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3Rv
cmUpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChzdG9yZS5nZXRCb29sVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2Fi
bGVkRm9yVGVzdGluZ0tleSgpKSkKICAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudCgpOworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKKyAgICBib29sIHNob3VsZEFs
bG93U2VydmljZVdvcmtlcnNGb3JBcHBCb3VuZFZpZXdzID0gbV9saW1pdHNOYXZpZ2F0aW9uc1Rv
QXBwQm91bmREb21haW5zOworI2Vsc2UKKyAgICBib29sIHNob3VsZEFsbG93U2VydmljZVdvcmtl
cnNGb3JBcHBCb3VuZFZpZXdzID0gZmFsc2U7CisjZW5kaWYKIAogICAgIGlmIChzdG9yZS5nZXRC
b29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnNlcnZpY2VXb3JrZXJzRW5hYmxlZEtl
eSgpKSkgewotICAgICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudCgpIHx8IG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk7Ci0gICAg
ICAgIGlmICghcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpICYmICFt
X2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpCisgICAgICAgIEFTU0VSVChwYXJl
bnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgfHwgc2hvdWxkQWxsb3dTZXJ2
aWNlV29ya2Vyc0ZvckFwcEJvdW5kVmlld3MpOworICAgICAgICBpZiAoIXBhcmVudFByb2Nlc3NI
YXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSAmJiAhc2hvdWxkQWxsb3dTZXJ2aWNlV29ya2Vy
c0ZvckFwcEJvdW5kVmlld3MpCiAgICAgICAgICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnNldFNlcnZpY2VXb3JrZXJFbmFibGVkKGZhbHNlKTsKICAgICB9CiAj
ZW5kaWYKIAogICAgIHNldHRpbmdzLnNldExheW91dFZpZXdwb3J0SGVpZ2h0RXhwYW5zaW9uRmFj
dG9yKHN0b3JlLmdldERvdWJsZVZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpsYXlvdXRW
aWV3cG9ydEhlaWdodEV4cGFuc2lvbkZhY3RvcktleSgpKSk7CiAKKyNpZiBFTkFCTEUoQVBQX0JP
VU5EX0RPTUFJTlMpCiAgICAgbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgPSBzdG9y
ZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6Om5lZWRzSW5BcHBCcm93c2Vy
UHJpdmFjeVF1aXJrc0tleSgpKTsKKyNlbmRpZgogCiAgICAgaWYgKG1fZHJhd2luZ0FyZWEpCiAg
ICAgICAgIG1fZHJhd2luZ0FyZWEtPnVwZGF0ZVByZWZlcmVuY2VzKHN0b3JlKTsKQEAgLTcyMTIs
NiArNzIyOSw3IEBAIHZvaWQgV2ViUGFnZTo6YW5pbWF0aW9uRGlkRmluaXNoRm9yRWxlbWVudChj
b25zdCBXZWJDb3JlOjpFbGVtZW50JikKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQVBQX0JPVU5E
X0RPTUFJTlMpCiB2b2lkIFdlYlBhZ2U6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4o
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBmcmFtZS0+c2V0SXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKQEAgLTcyMjQs
NiArNzI0Miw3IEBAIHZvaWQgV2ViUGFnZTo6bm90aWZ5UGFnZU9mQXBwQm91bmRCZWhhdmlvcigp
CiAgICAgaWYgKCFtX25hdmlnYXRpb25IYXNPY2N1cmVkICYmICFtX2xpbWl0c05hdmlnYXRpb25z
VG9BcHBCb3VuZERvbWFpbnMpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2V0SGFzRXhlY3V0ZWRBcHBCb3VuZEJlaGF2aW9yQmVmb3JlTmF2aWdhdGlvbigpKTsKIH0KKyNl
bmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDNiNzZiNmE1YjcyMmE0NDFjZWFkMjJlMDgzZDM4NjJj
NGE5ZGE2ZDUuLjJlNDE4NDYyZDgzOThlY2NjOTRjYzkwNWJlMWIzMzg4YTNiOGI5ZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEzNDQsOSArMTM0
NCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldEFsbEZyYW1lcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEZyYW1lVHJlZU5vZGVEYXRhJiYpPiYmKTsKIAorI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKICAgICB2b2lkIG5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3IoKTsKICAgICB2
b2lkIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+LCBXZWJGcmFtZSopOwogICAgIGJvb2wgbmVlZHNJbkFwcEJyb3dzZXJQ
cml2YWN5UXVpcmtzKCkgeyByZXR1cm4gbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M7
IH0KKyNlbmRpZgogCiAgICAgYm9vbCBzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29y
ZTo6UmVuZGVyaW5nUHVycG9zZSk7CiAKQEAgLTE4MTgsOCArMTgyMCw5IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2Fsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlciB7IGZhbHNlIH07CiAKICAgICBi
b29sIG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyNpZiBFTkFC
TEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgYm9vbCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFj
eVF1aXJrcyB7IGZhbHNlIH07Ci0KKyNlbmRpZgogI2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9U
VEVEX1BMVUdJTl9IRVVSSVNUSUMpCiAgICAgYm9vbCBtX3JlYWR5VG9GaW5kUHJpbWFyeVNuYXBz
aG90dGVkUGx1Z2luIHsgZmFsc2UgfTsKICAgICBib29sIG1fZGlkRmluZFByaW1hcnlTbmFwc2hv
dHRlZFBsdWdpbiB7IGZhbHNlIH07CkBAIC0yMTU5LDggKzIxNjIsMTAgQEAgcHJpdmF0ZToKICAg
ICBTdHJpbmcgbV90aGVtZU5hbWU7CiAjZW5kaWYKICAgICAKKyNpZiBFTkFCTEUoQVBQX0JPVU5E
X0RPTUFJTlMpCiAgICAgYm9vbCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9uYXZpZ2F0aW9uSGFzT2NjdXJlZCB7IGZhbHNlIH07Cisj
ZW5kaWYKICAgICBib29sIG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgeyB0cnVlIH07CiAKICAg
ICBWZWN0b3I8U3RyaW5nPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5MWI0NThmMWNiMzhiODc5ZmZi
YmE4MzM5MTY4YzUzOGUyOGU1MTkzLi5lMmM1ZDkzMTI4NTcyZWZkMDcwODA0NGM5ZGRmZGExYTc5
ODk3ZmY2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDktMDkgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2No
ZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgQXBwLUJvdW5kIERvbWFpbnMgY29k
ZSB0byBvbmx5IGNvbXBpbGUgZm9yIGlPUyB3aXRoIGl0cyBvd24gbWFjcm8KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTAyNworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjM2ODgyMzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVwbGFjZSBjaGVjayBmb3IgSU9TX0ZBTUlMWSB3aXRoIG1vcmUgYXB0
bHkgbmFtZWQgQVBQX0JPVU5EX0RPTUFJTlMKKyAgICAgICAgbWFjcm8uCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisK
IDIwMjAtMDktMDkgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIGV3cyBtaWdodCBtYXJrIGJ1aWxkIGFzIHN1Y2Nlc3NmdWwgaWYgdGVzdHMgZmFpbCB0byBy
dW4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5B
cHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCAzNjlmZmU1MjMxOGUwNzRiMGY0NGYxY2Qw
NjM2ZTM4OTk2ZDMxNzM0Li43ODRhZmE2Yzg1YzQ4ZGRkNzM3M2YzMjYxMzVkYjcyODE4ZGRkNmQ3
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC00Myw3ICs0Myw3IEBACiAjaW1wb3J0IDx3
dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIAogc3RhdGlj
IGJvb2wgaXNEb25lOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmMyYjZjY2RmZGNiODQ5YzE2MzgyYWNhZGVjMjFmMWM1
YjgwNTE1Yy4uN2Q5Y2M5YWIyYjA1MGE3YWQxZGZhNzgwMjZlZDRkNzgzODA3MTYwYyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDIwLTA5LTA5ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVu
ZXlAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIEFwcC1Cb3VuZCBEb21haW5zIGNvZGUg
dG8gb25seSBjb21waWxlIGZvciBpT1Mgd2l0aCBpdHMgb3duIG1hY3JvCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUwMjcKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzYzNjg4MjMyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZXNlIHRlc3RzIHNob3VsZCBiZSBza2lwcGVkIG9uIG1hYy13azIgYmVj
YXVzZSBBcHAgQm91bmQgRG9tYWlucworICAgICAgICBpcyBhbiBpT1MgZmVhdHVyZSBvbmx5Lgor
CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTA5
LTA5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViSURMXSBT
cGxpdCBHbG9iYWxFdmVudEhhbmRsZXJzIHBhcnRpYWwgaW50ZXJmYWNlIG1peGlucyBvdXQgb2Yg
YmFzZSBtaXhpbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDQ3ZDAxZTA5MjhmYTFjY2UzMGMwYzFkN2U1OTcyZmRkZTBjOWMzMDMuLjViZTY0
OTY0MGJkN2QxNmJiYzMyZjY0ZTJmZDY5M2UxOTgyY2NhYjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEyODgsMyArMTI4OCw2IEBAIHdl
YmtpdC5vcmcvYi8yMTYxNTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMv
UlRDUGVlckNvbm5lY3Rpb24tcmVzCiB3ZWJraXQub3JnL2IvMjE2MTY0IFsgQ2F0YWxpbmEgRGVi
dWcgXSBodG1sNWxpYi9nZW5lcmF0ZWQvcnVuLXRlbXBsYXRlLWRhdGEuaHRtbCBbIFBhc3MgQ3Jh
c2ggXQogCiB3ZWJraXQub3JnL2IvMjE2MjkyIFsgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L3F1aXJrcy1hdXRvLWJsb2NrLXNpemUtd2l0
aC1wZXJjZW50YWdlLWl0ZW0uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCisKKyMgQXBwIEJvdW5kIERv
bWFpbnMgaXMgZm9yIGlPUyBvbmx5CitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
ZXhlbXB0RG9tYWlucy8gWyBTa2lwIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>