<?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>198854</bug_id>
          
          <creation_ts>2019-06-14 00:53:40 -0700</creation_ts>
          <short_desc>-[WKWebsiteDataStore removeDataOfTypes:modifiedSince:completionHandler:] doesn&apos;t delete _WKWebsiteDataTypeCredentials</short_desc>
          <delta_ts>2019-06-17 18:43:47 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>pvollan</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1544707</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-06-14 00:53:40 -0700</bug_when>
    <thetext>We added removal of persistent credentials for origin in https://bugs.webkit.org/show_bug.cgi?id=197510. We should also support clearing all credentials.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544710</commentid>
    <comment_count>1</comment_count>
      <attachid>372113</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-06-14 01:03:52 -0700</bug_when>
    <thetext>Created attachment 372113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544764</commentid>
    <comment_count>2</comment_count>
      <attachid>372126</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-06-14 10:14:06 -0700</bug_when>
    <thetext>Created attachment 372126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544778</commentid>
    <comment_count>3</comment_count>
      <attachid>372126</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2019-06-14 11:11:11 -0700</bug_when>
    <thetext>Comment on attachment 372126
Patch

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

I think this looks very good! Leaving the final review to Geoff or Alex, since they are experts in this area :)

&gt; Source/WebCore/ChangeLog:5
&gt; +        -[WKWebsiteDataStore removeDataOfTypes:modifiedSince:completionHandler:] doesn&apos;t delete _WKWebsiteDataTypeCredentials
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=198854
&gt; +

Add radar?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544806</commentid>
    <comment_count>4</comment_count>
      <attachid>372126</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-06-14 12:35:48 -0700</bug_when>
    <thetext>Comment on attachment 372126
Patch

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

&gt; Source/WebCore/platform/network/mac/CredentialStorageMac.mm:41
&gt; +Vector&lt;WebCore::SecurityOriginData&gt; CredentialStorage::getOriginsWithPersistentCredentials()

We usually only use &quot;get&quot; in a function name to indicate that it returns its value through an out parameter. So, this should remain &quot;originsWithPersistentCredentials()&quot;.

&gt; Source/WebCore/platform/network/mac/CredentialStorageMac.mm:53
&gt; +        auto allCredentials = [[NSURLCredentialStorage sharedCredentialStorage] allCredentials];

You should move this line out of the loop so that you don&apos;t have to call it for each origin.

Also, I think this is a memory leak. -allCredentials returns a dictionary by copy. If you don&apos;t release the dictionary, it will leak. You can avoid memory leaks by using smart pointers. The best way to use a smart pointer here is probably

    auto allCredentials = adoptNS([[NSURLCredentialStorage sharedCredentialStorage] allCredentials]);

You should also put sharedCredentialStorage in a local variable to avoid re-fetching it.

&gt; Source/WebCore/platform/network/mac/CredentialStorageMac.mm:71
&gt; +    removePersistentCredentialsWithOrigins(getOriginsWithPersistentCredentials());

Can you do something more efficient here, since we don&apos;t need to match against a set of origins, and we can just remove all credentials?

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1285
&gt; +        if (!sessionID.isEphemeral()) {

Why do we avoid returning this data for ephemeral sessions?

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1369
&gt; +        if (!sessionID.isEphemeral())
&gt; +            WebCore::CredentialStorage::clearPersistentCredentials();

Why do we avoid deleting website data for ephemeral sessions?

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1508
&gt; +        if (!sessionID.isEphemeral())
&gt; +            WebCore::CredentialStorage::removePersistentCredentialsWithOrigins(originDatas);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544809</commentid>
    <comment_count>5</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-06-14 12:57:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/51386058&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544850</commentid>
    <comment_count>6</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-06-14 14:41:39 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #4)
&gt; Comment on attachment 372126 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=372126&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/mac/CredentialStorageMac.mm:41
&gt; &gt; +Vector&lt;WebCore::SecurityOriginData&gt; CredentialStorage::getOriginsWithPersistentCredentials()
&gt; 
&gt; We usually only use &quot;get&quot; in a function name to indicate that it returns its
&gt; value through an out parameter. So, this should remain
&gt; &quot;originsWithPersistentCredentials()&quot;.
&gt; 

Okay.

&gt; &gt; Source/WebCore/platform/network/mac/CredentialStorageMac.mm:53
&gt; &gt; +        auto allCredentials = [[NSURLCredentialStorage sharedCredentialStorage] allCredentials];
&gt; 
&gt; You should move this line out of the loop so that you don&apos;t have to call it
&gt; for each origin.
&gt; 
&gt; Also, I think this is a memory leak. -allCredentials returns a dictionary by
&gt; copy. If you don&apos;t release the dictionary, it will leak. You can avoid
&gt; memory leaks by using smart pointers. The best way to use a smart pointer
&gt; here is probably
&gt; 
&gt;     auto allCredentials = adoptNS([[NSURLCredentialStorage
&gt; sharedCredentialStorage] allCredentials]);
&gt; 
&gt; You should also put sharedCredentialStorage in a local variable to avoid
&gt; re-fetching it.
&gt; 

Okay.

&gt; &gt; Source/WebCore/platform/network/mac/CredentialStorageMac.mm:71
&gt; &gt; +    removePersistentCredentialsWithOrigins(getOriginsWithPersistentCredentials());
&gt; 
&gt; Can you do something more efficient here, since we don&apos;t need to match
&gt; against a set of origins, and we can just remove all credentials?
&gt; 

Since we don&apos;t have API for clear all credentials, we can do similar thing as removePersistentCredentialsWithOrigins.

&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1285
&gt; &gt; +        if (!sessionID.isEphemeral()) {
&gt; 
&gt; Why do we avoid returning this data for ephemeral sessions?
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1369
&gt; &gt; +        if (!sessionID.isEphemeral())
&gt; &gt; +            WebCore::CredentialStorage::clearPersistentCredentials();
&gt; 
&gt; Why do we avoid deleting website data for ephemeral sessions?
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1508
&gt; &gt; +        if (!sessionID.isEphemeral())
&gt; &gt; +            WebCore::CredentialStorage::removePersistentCredentialsWithOrigins(originDatas);
&gt; 
&gt; Ditto.

This is the old behavior and I didn&apos;t change. My understanding is [NSURLCredentialStorage sharedCredentialStorage] is used for credentials shared across different apps(?), and network process keeps a copy of credentials from ephemeral session in memory with maps in WebCore::CredentialStorage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544851</commentid>
    <comment_count>7</comment_count>
      <attachid>372142</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-06-14 14:45:38 -0700</bug_when>
    <thetext>Created attachment 372142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544863</commentid>
    <comment_count>8</comment_count>
      <attachid>372142</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-06-14 15:01:43 -0700</bug_when>
    <thetext>Comment on attachment 372142
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545506</commentid>
    <comment_count>9</comment_count>
      <attachid>372306</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-06-17 18:00:48 -0700</bug_when>
    <thetext>Created attachment 372306
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545520</commentid>
    <comment_count>10</comment_count>
      <attachid>372306</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-17 18:43:46 -0700</bug_when>
    <thetext>Comment on attachment 372306
Patch for landing

Clearing flags on attachment: 372306

Committed r246530: &lt;https://trac.webkit.org/changeset/246530&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545521</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-17 18:43:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372113</attachid>
            <date>2019-06-14 01:03:52 -0700</date>
            <delta_ts>2019-06-14 10:14:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198854-20190614010351.patch</filename>
            <type>text/plain</type>
            <size>18404</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU3N2U1ZDdlZWQ2ZDI0
YTQyYzE1OTQzNmRhMjA1YTk5NWE4Mzk3YS4uYmI3NjZjNmEzY2FhYzA5M2ExYzA5ZjIwZDNiZWRm
ODI4MDcyMjMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA2LTE0ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHJlbW92ZURhdGFPZlR5cGVzOm1vZGlmaWVkU2luY2U6Y29tcGxldGlvbkhhbmRsZXI6XSBk
b2Vzbid0IGRlbGV0ZSBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4ODU0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogV0tXZWJzaXRlRGF0YVN0
b3JlLlJlbW92ZUFsbFBlcnNpc3RlbnRDcmVkZW50aWFscworCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlh
bFN0b3JhZ2U6OmdldE9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpyZW1vdmVQZXJzaXN0ZW50Q3JlZGVudGlhbHNX
aXRoT3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Y2xlYXJQ
ZXJzaXN0ZW50Q3JlZGVudGlhbHMpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3Jh
Z2U6Om9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKTogRGVsZXRlZC4KKwogMjAxOS0w
Ni0xMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBVktpdCBw
bGF5IGJ1dHRvbiBieXBhc3NlcyBNZWRpYUVsZW1lbnRTZXNzaW9uIHBsYXliYWNrUGVybWl0dGVk
KCkgY2hlY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMTA2OGY3ZWU0MjE3MjY4MTY1YTA0ODQxOTU3NzMwOGFk
ZjUxYzhjLi5mMTZiYTBiNzM3NWY0NzZjMTI5Y2RmOTAwNTMyNzc1Y2Q1OGEyMDlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMxIEBACisyMDE5LTA2LTE0ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBw
bGUuY29tPgorCisgICAgICAgIC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVz
Om1vZGlmaWVkU2luY2U6Y29tcGxldGlvbkhhbmRsZXI6XSBkb2Vzbid0IGRlbGV0ZSBfV0tXZWJz
aXRlRGF0YVR5cGVDcmVkZW50aWFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk4ODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2xlYXIgcGVyc2lzdGVudCBjcmVkZW50aWFscyBpbiBkZWxldGVXZWJz
aXRlRGF0YSBvZiBuZXR3b3JrIHByb2Nlc3MuCisKKyAgICAgICAgQWxzbywgbWVyZ2Ugb3JpZ2lu
c1dpdGhQZXJzaXN0ZW50Q3JlZGVudGlhbHMgYW5kIHJlbW92ZUNyZWRlbnRpYWxzV2l0aE9yaWdp
bnMgaW50byBmZXRjaFdlYnNpdGVEYXRhIGFuZAorICAgICAgICBkZWxldGVXZWJzaXRlRGF0YSwg
YW5kIG1vdmUgY3JlZGVudGlhbHMgaGFuZGxpbmcgdG8gV2ViQ29yZS4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6Om9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlbW92ZUNyZWRlbnRpYWxzV2l0aE9yaWdp
bnMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Om9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRl
bnRpYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlbW92
ZUNyZWRlbnRpYWxzV2l0aE9yaWdpbnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAoV2ViS2l0Ojpjb21wdXRl
V2ViUHJvY2Vzc0FjY2Vzc1R5cGVGb3JEYXRhUmVtb3ZhbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEpOgorCiAyMDE5LTA2LTEzICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE5vIGNvbnRlbnQgc2hvd3MgdXAg
Zm9yIFdLV2ViVmlldyB3aGlsZSBsb2NrZWQgZXZlbiB3aXRoIF9jYW5TaG93V2hpbGVMb2NrZWQg
aXMgWUVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRl
bnRpYWxTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRp
YWxTdG9yYWdlLmgKaW5kZXggZjhjNzVhZTkyOWFiMmQ1NDI1YTI0YTYyNjdjZDQyNzM4ZDc1YzBk
Ny4uODEwOTU2ZGM1ZjI4MTAwMGIwZmU5Y2Y3Yzc2N2Q0YzIzNzNmNGZlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaApAQCAt
NDcsNyArNDcsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBPUyBwZXJzaXN0ZW50IHN0b3JhZ2UuCiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENyZWRlbnRpYWwgZ2V0RnJvbVBlcnNpc3RlbnRTdG9y
YWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBW
ZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zV2l0aFBlcnNpc3RlbnRDcmVkZW50aWFs
cygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiBnZXRPcmlnaW5zV2l0aFBlcnNpc3RlbnRDcmVkZW50aWFscygpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlbW92ZVBlcnNpc3RlbnRDcmVkZW50aWFsc1dpdGhP
cmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5z
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjbGVhclBlcnNpc3RlbnRDcmVkZW50
aWFscygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRp
YWxTdG9yYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3Jl
ZGVudGlhbFN0b3JhZ2VNYWMubW0KaW5kZXggNjViNTE1MTFmOWE5YjJiOGIxMmY2M2VkYWUzNmZl
ZjM1ZTc2ZDM5Yy4uMGZjMGYzOGVhYmRjZjJiZWNjYzJlZGNlYzZmMzAzYzViMDYzZjBjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0
b3JhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3Jl
ZGVudGlhbFN0b3JhZ2VNYWMubW0KQEAgLTM4LDcgKzM4LDcgQEAgQ3JlZGVudGlhbCBDcmVkZW50
aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYgcHIKICAgICByZXR1cm4gY3JlZGVudGlhbCA/IENyZWRlbnRpYWwoY3JlZGVudGlhbCkgOiBD
cmVkZW50aWFsKCk7CiB9CiAKLVZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IENy
ZWRlbnRpYWxTdG9yYWdlOjpvcmlnaW5zV2l0aFBlcnNpc3RlbnRDcmVkZW50aWFscygpCitWZWN0
b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0T3Jp
Z2luc1dpdGhQZXJzaXN0ZW50Q3JlZGVudGlhbHMoKQogewogICAgIFZlY3RvcjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CiAgICAgYXV0byBhbGxDcmVkZW50aWFscyA9IFtb
TlNVUkxDcmVkZW50aWFsU3RvcmFnZSBzaGFyZWRDcmVkZW50aWFsU3RvcmFnZV0gYWxsQ3JlZGVu
dGlhbHNdOwpAQCAtNDcsNCArNDcsMjggQEAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4gQ3JlZGVudGlhbFN0b3JhZ2U6Om9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWQKICAgICBy
ZXR1cm4gb3JpZ2luczsKIH0KIAordm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6cmVtb3ZlUGVyc2lz
dGVudENyZWRlbnRpYWxzV2l0aE9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YT4mIG9yaWdpbnMpCit7CisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5z
KSB7CisgICAgICAgIGF1dG8gYWxsQ3JlZGVudGlhbHMgPSBbW05TVVJMQ3JlZGVudGlhbFN0b3Jh
Z2Ugc2hhcmVkQ3JlZGVudGlhbFN0b3JhZ2VdIGFsbENyZWRlbnRpYWxzXTsKKyAgICAgICAgZm9y
IChOU1VSTFByb3RlY3Rpb25TcGFjZSogc3BhY2UgaW4gYWxsQ3JlZGVudGlhbHMpIHsKKyAgICAg
ICAgICAgIGlmIChvcmlnaW4ucHJvdG9jb2wgPT0gU3RyaW5nKHNwYWNlLnByb3RvY29sKQorICAg
ICAgICAgICAgICAgICYmIG9yaWdpbi5ob3N0ID09IFN0cmluZyhzcGFjZS5ob3N0KQorICAgICAg
ICAgICAgICAgICYmIG9yaWdpbi5wb3J0CisgICAgICAgICAgICAgICAgJiYgKm9yaWdpbi5wb3J0
ID09IHNwYWNlLnBvcnQpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGNyZWRlbnRpYWxzID0gYWxs
Q3JlZGVudGlhbHNbc3BhY2VdOworICAgICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcqIHVzZXIg
aW4gY3JlZGVudGlhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBjcmVkZW50aWFsID0g
Y3JlZGVudGlhbHNbdXNlcl07CisgICAgICAgICAgICAgICAgICAgIFtbTlNVUkxDcmVkZW50aWFs
U3RvcmFnZSBzaGFyZWRDcmVkZW50aWFsU3RvcmFnZV0gcmVtb3ZlQ3JlZGVudGlhbDpjcmVkZW50
aWFsIGZvclByb3RlY3Rpb25TcGFjZTpzcGFjZSBvcHRpb25zOkB7IE5TVVJMQ3JlZGVudGlhbFN0
b3JhZ2VSZW1vdmVTeW5jaHJvbml6YWJsZUNyZWRlbnRpYWxzIDogQFlFUyB9XTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQ3Jl
ZGVudGlhbFN0b3JhZ2U6OmNsZWFyUGVyc2lzdGVudENyZWRlbnRpYWxzKCkKK3sKKyAgICByZW1v
dmVQZXJzaXN0ZW50Q3JlZGVudGlhbHNXaXRoT3JpZ2lucyhnZXRPcmlnaW5zV2l0aFBlcnNpc3Rl
bnRDcmVkZW50aWFscygpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBkZDlhMWUz
YThjNWQ3NmQyZGQ0MzUzMDNiN2I4MzY1Y2NhZTA5MmUyLi4zZTcyNzRiM2I2MjhmNDk2MDNmOWJm
MzY5YzNkMjFmMTIxOGExZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTI4Miw2ICsxMjgyLDExIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2Vic2l0CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHNlY3VyaXR5T3JpZ2luIDogc2VjdXJp
dHlPcmlnaW5zKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRl
RGF0YS5lbnRyaWVzLmFwcGVuZCh7IHNlY3VyaXR5T3JpZ2luLCBXZWJzaXRlRGF0YVR5cGU6OkNy
ZWRlbnRpYWxzLCAwIH0pOwogICAgICAgICB9CisgICAgICAgIGlmICghc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCkpIHsKKyAgICAgICAgICAgIGF1dG8gc2VjdXJpdHlPcmlnaW5zID0gV2ViQ29yZTo6
Q3JlZGVudGlhbFN0b3JhZ2U6OmdldE9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKCk7
CisgICAgICAgICAgICBmb3IgKGF1dG8mIHNlY3VyaXR5T3JpZ2luIDogc2VjdXJpdHlPcmlnaW5z
KQorICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRy
aWVzLmFwcGVuZCh7IHNlY3VyaXR5T3JpZ2luLCBXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxz
LCAwIH0pOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkpIHsKQEAgLTEzNTksNiArMTM2NCw5IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpIHsKICAgICAgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICAgICAgc2Vzc2lvbi0+
Y3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVhckNyZWRlbnRpYWxzKCk7CisgICAgICAgIAorICAgICAg
ICBpZiAoIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQorICAgICAgICAgICAgV2ViQ29yZTo6Q3Jl
ZGVudGlhbFN0b3JhZ2U6OmNsZWFyUGVyc2lzdGVudENyZWRlbnRpYWxzKCk7CiAgICAgfQogCiAg
ICAgYXV0byBjbGVhclRhc2tzSGFuZGxlciA9IFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVh
dGUoW3RoaXMsIGNhbGxiYWNrSURdIHsKQEAgLTE0OTYsNiArMTUwNCw4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIE9wdGlvCiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5E
YXRhcykKICAgICAgICAgICAgICAgICBzZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLnJlbW92
ZUNyZWRlbnRpYWxzV2l0aE9yaWdpbihvcmlnaW5EYXRhKTsKICAgICAgICAgfQorICAgICAgICBp
ZiAoIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQorICAgICAgICAgICAgV2ViQ29yZTo6Q3JlZGVu
dGlhbFN0b3JhZ2U6OnJlbW92ZVBlcnNpc3RlbnRDcmVkZW50aWFsc1dpdGhPcmlnaW5zKG9yaWdp
bkRhdGFzKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHN0b3JhZ2UgcXVvdGEg
Y2xlYXJpbmcgZm9yIHRoZXNlIG9yaWdpbnMuCkBAIC0yNTQxLDE2ICsyNTUxLDYgQEAgU3RvcmFn
ZVF1b3RhTWFuYWdlciYgTmV0d29ya1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbkkKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6Om9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQotewotICAgIGNvbXBsZXRpb25IYW5kbGVyKFZlY3RvcjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+KCkpOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVDcmVk
ZW50aWFsc1dpdGhPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewot
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRp
YWxpemVQcm9jZXNzKGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRl
cnMmKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCmluZGV4IDBlMWRhYmQwMGVlNGNhOTRlMjJiMmQyNWUwYzMyZmJiYzQwNTRmZGQuLmI1ZDZm
MGM5NDA4ODBlNjdmYzJkYzk1ZDUwNjJiMjUxN2FmNGQ2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTQzNiw5ICs0MzYsNiBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICAgICB2b2lkIHBsYXRmb3JtU3luY0FsbENvb2tpZXMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKLQotICAgIHZvaWQgb3JpZ2luc1dpdGhQZXJzaXN0ZW50Q3Jl
ZGVudGlhbHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPik+JiYpOwotICAgIHZvaWQgcmVtb3ZlQ3JlZGVudGlhbHNXaXRoT3JpZ2lucyhj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICAKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1l
QXNTZWN1cmUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVt
ZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFN0cmluZyYpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggNmQwNjI0MDgzZjc1ZjMzMjcyNmFiM2ZiMjFkYzFkMmNmZjkwYzIx
Yy4uOTFmZTY5ZDU3YTJhMzZkZTI0NmM0MmFiN2Q3NzhmMmJkYTNkOTc4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCkBAIC0xNjgsNyArMTY4LDUgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5
UmVjZWl2ZXIgewogICAgIFNldEFkQ2xpY2tBdHRyaWJ1dGlvbk92ZXJyaWRlVGltZXJGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCB2YWx1ZSkgLT4gKCkgQXN5bmMKICAg
ICBTZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFVSTCB1cmwpIC0+ICgpIEFzeW5jCiAgICAgTWFya0FkQ2xpY2tBdHRy
aWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4g
KCkgQXN5bmMKLSAgICBPcmlnaW5zV2l0aFBlcnNpc3RlbnRDcmVkZW50aWFscygpIC0+IChWZWN0
b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zKSBBc3luYwotICAgIFJlbW92
ZUNyZWRlbnRpYWxzV2l0aE9yaWdpbnMoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4gb3JpZ2lucykgLT4gKCkgQXN5bmMKICAgICBHZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxXZWJLaXQ6OkxvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4gZGV0YWlscykgQXN5bmMKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3ND
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbQppbmRleCBiZGVmZTllNGZhNTkwMDZkNWViNTk3YmI3YzA1ZDM2MWRkNzkxOGE2
Li41YjUyY2FiYzBkOTk3ZWM1ODlhMzdhNTA4OWM5MTQ1YjI4YWVhZDNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tCkBAIC0yMTIsMzEgKzIxMiw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyRGlz
a0NhY2hlKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvCiAgICAg
fSkuZ2V0KCkpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpvcmlnaW5zV2l0aFBlcnNpc3Rl
bnRDcmVkZW50aWFscyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9u
SGFuZGxlcihXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6b3JpZ2luc1dpdGhQZXJzaXN0ZW50
Q3JlZGVudGlhbHMoKSk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUNyZWRlbnRp
YWxzV2l0aE9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4m
IG9yaWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
LXsKLSAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKLSAgICAgICAgYXV0byBhbGxD
cmVkZW50aWFscyA9IFtbTlNVUkxDcmVkZW50aWFsU3RvcmFnZSBzaGFyZWRDcmVkZW50aWFsU3Rv
cmFnZV0gYWxsQ3JlZGVudGlhbHNdOwotICAgICAgICBmb3IgKE5TVVJMUHJvdGVjdGlvblNwYWNl
KiBzcGFjZSBpbiBhbGxDcmVkZW50aWFscykgewotICAgICAgICAgICAgaWYgKG9yaWdpbi5wcm90
b2NvbCA9PSBTdHJpbmcoc3BhY2UucHJvdG9jb2wpCi0gICAgICAgICAgICAgICAgJiYgb3JpZ2lu
Lmhvc3QgPT0gU3RyaW5nKHNwYWNlLmhvc3QpCi0gICAgICAgICAgICAgICAgJiYgb3JpZ2luLnBv
cnQKLSAgICAgICAgICAgICAgICAmJiAqb3JpZ2luLnBvcnQgPT0gc3BhY2UucG9ydCkgewotICAg
ICAgICAgICAgICAgIGF1dG8gY3JlZGVudGlhbHMgPSBhbGxDcmVkZW50aWFsc1tzcGFjZV07Ci0g
ICAgICAgICAgICAgICAgZm9yIChOU1N0cmluZyogdXNlciBpbiBjcmVkZW50aWFscykgewotICAg
ICAgICAgICAgICAgICAgICBhdXRvIGNyZWRlbnRpYWwgPSBjcmVkZW50aWFsc1t1c2VyXTsKLSAg
ICAgICAgICAgICAgICAgICAgW1tOU1VSTENyZWRlbnRpYWxTdG9yYWdlIHNoYXJlZENyZWRlbnRp
YWxTdG9yYWdlXSByZW1vdmVDcmVkZW50aWFsOmNyZWRlbnRpYWwgZm9yUHJvdGVjdGlvblNwYWNl
OnNwYWNlXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLX0KLQogI2lmIFBMQVRGT1JNKE1BQykKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnNldFNoYXJlZEhUVFBDb29raWVTdG9yYWdlKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaWRlbnRpZmllcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggYzI4YTY0MGY3
NzczZDQwZTIwODkwOTRkYjY4Y2ExM2JhNzZlM2Y1Mi4uYzRkOTc1OGFjNDJhMTk1YmY5YjhhMjEw
ZTUwZTdiZTU4YTVhYWQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTUxMiwyNCArNTEyLDYgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KICAgICAgICAgfSk7CiAgICAgfQogCi0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNy
ZWRlbnRpYWxzKSAmJiBpc1BlcnNpc3RlbnQoKSkgewotICAgICAgICBmb3IgKGF1dG8mIHByb2Nl
c3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgICAgIGlmICghcHJvY2Vzc1Bvb2wt
Pm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7
Ci0gICAgICAgICAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+IGNvbXBsZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrQWdn
cmVnYXRvcl0oVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJiBvcmlnaW5zKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKLSAgICAg
ICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCi0gICAgICAgICAgICAgICAg
ICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IG9yaWdp
biwgV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscywgMCB9KTsKLSAgICAgICAgICAgICAgICBj
YWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZNb3ZlKHdlYnNpdGVE
YXRhKSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQ
cm9jZXNzKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Ok9y
aWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlBs
dWdJbkRhdGEpICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGNsYXNzIFN0YXRlIHsKQEAg
LTYzNiw5ICs2MTgsNiBAQCBzdGF0aWMgUHJvY2Vzc0FjY2Vzc1R5cGUgY29tcHV0ZVdlYlByb2Nl
c3NBY2Nlc3NUeXBlRm9yRGF0YVJlbW92YWwoT3B0aW9uU2V0PFdlYgogICAgIGlmIChkYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSkpCiAgICAgICAgIHByb2Nl
c3NBY2Nlc3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NU
eXBlOjpPbmx5SWZMYXVuY2hlZCk7CiAKLSAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpKQotICAgICAgICBwcm9jZXNzQWNjZXNzVHlwZSA9IHN0
ZDo6bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQcm9jZXNzQWNjZXNzVHlwZTo6T25seUlmTGF1bmNo
ZWQpOwotCiAgICAgcmV0dXJuIHByb2Nlc3NBY2Nlc3NUeXBlOwogfQogCkBAIC0xMDg1LDE5ICsx
MDY0LDYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgY29uc3QgVmUKICAgICAgICAgfSk7CiAgICAgfQogCi0g
ICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSAm
JiBpc1BlcnNpc3RlbnQoKSkgewotICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJv
Y2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgICAgIGlmICghcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9j
ZXNzKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0gICAgICAgICAg
ICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbY2Fs
bGJhY2tBZ2dyZWdhdG9yXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKCk7Ci0gICAgICAgICAgICB9OwotICAgICAg
ICAgICAgcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCktPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlbW92ZUNyZWRlbnRpYWxzV2l0aE9yaWdpbnMob3Jp
Z2lucyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgfQotICAgIH0KLQog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGlmIChkYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpQbHVnSW5EYXRhKSAmJiBpc1BlcnNpc3RlbnQoKSkgewogICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBob3N0TmFtZXM7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTllNTZjYmRhZjBiYTUzMzI3YTZhYzg2OTJlMGJi
YzY3ZmJhOGI1NS4uY2Y2MzNhN2QwYTY3MzU3OWQ3NzkyZTc4Njk5Mzk3MjMwYzg0MjkyYyAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDE5LTA2LTE0ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisg
ICAgICAgIC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOm1vZGlmaWVkU2lu
Y2U6Y29tcGxldGlvbkhhbmRsZXI6XSBkb2Vzbid0IGRlbGV0ZSBfV0tXZWJzaXRlRGF0YVR5cGVD
cmVkZW50aWFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk4ODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE5LTA2LTEzICBUaW0gSG9y
dG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgaXQgcG9zc2li
bGUgZm9yIHZhbGlkYXRlLWNvbW1pdHRlci1saXN0cyB0byBkdW1wIGEgbWFpbG1hcCBmaWxlCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0
ZURhdGFzdG9yZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tX
ZWJzaXRlRGF0YXN0b3JlLm1tCmluZGV4IGY5Nzg3ODgwZTI3NGYzNDYxZmZjNmZkNmE0NTQ1MjQ5
OWQyM2RjZDMuLjFlMGIxZjRkNTkwNzczNTU0ODE0NjA3MDg5YWI5N2MwNjQ4YzBkNjggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0
YXN0b3JlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tX
ZWJzaXRlRGF0YXN0b3JlLm1tCkBAIC0yNTIsNiArMjUyLDUxIEBAIFRFU1QoV0tXZWJzaXRlRGF0
YVN0b3JlLCBSZW1vdmVQZXJzaXN0ZW50Q3JlZGVudGlhbHMpCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKIH0KIAorVEVTVChXS1dlYnNpdGVEYXRhU3RvcmUsIFJlbW92ZUFs
bFBlcnNpc3RlbnRDcmVkZW50aWFscykKK3sKKyAgICB1c2VQZXJzaXN0ZW50Q3JlZGVudGlhbFN0
b3JhZ2UgPSB0cnVlOworCisgICAgVENQU2VydmVyIHNlcnZlcihyZXNwb25kV2l0aENoYWxsZW5n
ZVRoZW5PSyk7CisgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9y
ZSBkZWZhdWx0RGF0YVN0b3JlXTsKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tOYXZpZ2F0aW9uVGVzdERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpu
YXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV1d
OworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwor
CisgICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgZmV0
Y2hEYXRhUmVjb3Jkc09mVHlwZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFU
eXBlQ3JlZGVudGlhbHNdIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRh
UmVjb3JkICo+ICpkYXRhUmVjb3JkcykgeworICAgICAgICBib29sIGZvdW5kUmVjb3JkID0gZmFs
c2U7CisgICAgICAgIGZvciAoV0tXZWJzaXRlRGF0YVJlY29yZCAqcmVjb3JkIGluIGRhdGFSZWNv
cmRzKSB7CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBbcmVjb3JkIGRpc3BsYXlOYW1lXTsKKyAg
ICAgICAgICAgIGlmIChbbmFtZSBpc0VxdWFsVG9TdHJpbmc6QCIxMjcuMC4wLjEiXSkKKyAgICAg
ICAgICAgICAgICBmb3VuZFJlY29yZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgRVhQRUNU
X1RSVUUoZm91bmRSZWNvcmQpOworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKwor
ICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIHJlbW92
ZURhdGFPZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUNyZWRl
bnRpYWxzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5k
bGVyOl4oKSB7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworICAgIAorICAgIHJl
YWR5VG9Db250aW51ZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJl
Y29yZHNPZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUNyZWRl
bnRpYWxzXSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAq
PiAqZGF0YVJlY29yZHMpIHsKKyAgICAgICAgYm9vbCBmb3VuZFJlY29yZCA9IGZhbHNlOworICAg
ICAgICBmb3IgKFdLV2Vic2l0ZURhdGFSZWNvcmQgKnJlY29yZCBpbiBkYXRhUmVjb3Jkcykgewor
ICAgICAgICAgICAgYXV0byBuYW1lID0gW3JlY29yZCBkaXNwbGF5TmFtZV07CisgICAgICAgICAg
ICBpZiAoW25hbWUgaXNFcXVhbFRvU3RyaW5nOkAiMTI3LjAuMC4xIl0pCisgICAgICAgICAgICAg
ICAgZm91bmRSZWNvcmQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIEVYUEVDVF9GQUxTRShm
b3VuZFJlY29yZCk7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworfQorCiBURVNU
KFdLV2Vic2l0ZURhdGFTdG9yZSwgUmVtb3ZlTm9uUGVyc2lzdGVudENyZWRlbnRpYWxzKQogewog
ICAgIFRDUFNlcnZlciBzZXJ2ZXIocmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0spOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372126</attachid>
            <date>2019-06-14 10:14:06 -0700</date>
            <delta_ts>2019-06-14 14:45:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198854-20190614101405.patch</filename>
            <type>text/plain</type>
            <size>19705</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU3N2U1ZDdlZWQ2ZDI0
YTQyYzE1OTQzNmRhMjA1YTk5NWE4Mzk3YS4uYmMxMzhiMGFiYjFiNDZjYWQzNTAyMjA5NzIzYzU0
OWI2ZmIyNDVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA2LTE0ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHJlbW92ZURhdGFPZlR5cGVzOm1vZGlmaWVkU2luY2U6Y29tcGxldGlvbkhhbmRsZXI6XSBk
b2Vzbid0IGRlbGV0ZSBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4ODU0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG9wdGlvbiBOU1VSTENyZWRl
bnRpYWxTdG9yYWdlUmVtb3ZlU3luY2hyb25pemFibGVDcmVkZW50aWFscyB3aGVuIHJlbW92aW5n
IHBlcnNpc3RlbnQgY3JlZGVudGlhbCBzbyAKKyAgICAgICAgY3JlZGVudGlhbHMgZnJvbSBzYW1l
IGFjY291bnQgd2lsbCBiZSByZW1vdmVkIGZyb20gYWxsIGRldmljZXMuCisKKyAgICAgICAgVGVz
dDogV0tXZWJzaXRlRGF0YVN0b3JlLlJlbW92ZUFsbFBlcnNpc3RlbnRDcmVkZW50aWFscworCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Z2V0T3JpZ2luc1dpdGhQZXJzaXN0ZW50Q3Jl
ZGVudGlhbHMpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6OnJlbW92ZVBl
cnNpc3RlbnRDcmVkZW50aWFsc1dpdGhPcmlnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRl
bnRpYWxTdG9yYWdlOjpjbGVhclBlcnNpc3RlbnRDcmVkZW50aWFscyk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q3Jl
ZGVudGlhbFN0b3JhZ2U6OmdldE9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpyZW1vdmVQZXJzaXN0ZW50Q3JlZGVu
dGlhbHNXaXRoT3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6
Y2xlYXJQZXJzaXN0ZW50Q3JlZGVudGlhbHMpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlh
bFN0b3JhZ2U6Om9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKTogRGVsZXRlZC4KKwog
MjAxOS0wNi0xMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBB
VktpdCBwbGF5IGJ1dHRvbiBieXBhc3NlcyBNZWRpYUVsZW1lbnRTZXNzaW9uIHBsYXliYWNrUGVy
bWl0dGVkKCkgY2hlY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMTA2OGY3ZWU0MjE3MjY4MTY1YTA0ODQxOTU3
NzMwOGFkZjUxYzhjLi5mMTZiYTBiNzM3NWY0NzZjMTI5Y2RmOTAwNTMyNzc1Y2Q1OGEyMDlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE5LTA2LTE0ICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwbGUuY29tPgorCisgICAgICAgIC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFP
ZlR5cGVzOm1vZGlmaWVkU2luY2U6Y29tcGxldGlvbkhhbmRsZXI6XSBkb2Vzbid0IGRlbGV0ZSBf
V0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4ODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ2xlYXIgcGVyc2lzdGVudCBjcmVkZW50aWFscyBpbiBkZWxl
dGVXZWJzaXRlRGF0YSBvZiBuZXR3b3JrIHByb2Nlc3MuCisKKyAgICAgICAgQWxzbywgbWVyZ2Ug
b3JpZ2luc1dpdGhQZXJzaXN0ZW50Q3JlZGVudGlhbHMgYW5kIHJlbW92ZUNyZWRlbnRpYWxzV2l0
aE9yaWdpbnMgaW50byBmZXRjaFdlYnNpdGVEYXRhIGFuZAorICAgICAgICBkZWxldGVXZWJzaXRl
RGF0YSwgYW5kIG1vdmUgY3JlZGVudGlhbHMgaGFuZGxpbmcgdG8gV2ViQ29yZS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6Om9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlbW92ZUNyZWRlbnRpYWxzV2l0
aE9yaWdpbnMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Om9yaWdpbnNXaXRoUGVyc2lzdGVu
dENyZWRlbnRpYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnJlbW92ZUNyZWRlbnRpYWxzV2l0aE9yaWdpbnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAoV2ViS2l0Ojpj
b21wdXRlV2ViUHJvY2Vzc0FjY2Vzc1R5cGVGb3JEYXRhUmVtb3ZhbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEpOgorCiAyMDE5LTA2LTEzICBUaW0gSG9y
dG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE5vIGNvbnRlbnQgc2hv
d3MgdXAgZm9yIFdLV2ViVmlldyB3aGlsZSBsb2NrZWQgZXZlbiB3aXRoIF9jYW5TaG93V2hpbGVM
b2NrZWQgaXMgWUVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0NyZWRlbnRpYWxTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbFN0b3JhZ2UuY3BwCmluZGV4IDk4ZTk0MjZmYzI3YWRiYjJiYjYwYmVkNDZkZDU2
NjdmYWY3YzM5NjIuLjA1MjU1MzM1NDg5YjE0YTk2MzE5NTljOGU5NzZiNzlhNzg0N2E1MWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0
b3JhZ2UuY3BwCkBAIC0xODcsNCArMTg3LDIwIEBAIHZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OmNs
ZWFyQ3JlZGVudGlhbHMoKQogICAgIG1fcGF0aFRvRGVmYXVsdFByb3RlY3Rpb25TcGFjZU1hcC5j
bGVhcigpOwogfQogCisjaWYgIVBMQVRGT1JNKENPQ09BKQorVmVjdG9yPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4gQ3JlZGVudGlhbFN0b3JhZ2U6OmdldE9yaWdpbnNXaXRoUGVyc2lzdGVu
dENyZWRlbnRpYWxzKCkKK3sKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIENyZWRlbnRpYWxT
dG9yYWdlOjpyZW1vdmVQZXJzaXN0ZW50Q3JlZGVudGlhbHNXaXRoT3JpZ2lucyhjb25zdCBWZWN0
b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucykKK3sKKyAgICByZXR1cm47
Cit9CisKK3ZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OmNsZWFyUGVyc2lzdGVudENyZWRlbnRpYWxz
KCkKK3sKKyAgICByZXR1cm47Cit9CisjZW5kaWYKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3Jh
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2Uu
aAppbmRleCBmOGM3NWFlOTI5YWIyZDU0MjVhMjRhNjI2N2NkNDI3MzhkNzVjMGQ3Li44MTA5NTZk
YzVmMjgxMDAwYjBmZTljZjdjNzY3ZDRjMjM3M2Y0ZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCkBAIC00Nyw3ICs0Nyw5
IEBAIHB1YmxpYzoKIAogICAgIC8vIE9TIHBlcnNpc3RlbnQgc3RvcmFnZS4KICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgQ3JlZGVudGlhbCBnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFZlY3RvcjxTZWN1
cml0eU9yaWdpbkRhdGE+IG9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
IGdldE9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgcmVtb3ZlUGVyc2lzdGVudENyZWRlbnRpYWxzV2l0aE9yaWdpbnMoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNsZWFyUGVyc2lzdGVudENyZWRlbnRpYWxzKCk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQ3JlZGVudGlhbHMoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3Rv
cmFnZU1hYy5tbQppbmRleCA2NWI1MTUxMWY5YTliMmI4YjEyZjYzZWRhZTM2ZmVmMzVlNzZkMzlj
Li4wZmMwZjM4ZWFiZGNmMmJlY2NjMmVkY2VjNmYzMDNjNWIwNjNmMGM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3Rv
cmFnZU1hYy5tbQpAQCAtMzgsNyArMzgsNyBAQCBDcmVkZW50aWFsIENyZWRlbnRpYWxTdG9yYWdl
OjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcgogICAg
IHJldHVybiBjcmVkZW50aWFsID8gQ3JlZGVudGlhbChjcmVkZW50aWFsKSA6IENyZWRlbnRpYWwo
KTsKIH0KIAotVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gQ3JlZGVudGlhbFN0
b3JhZ2U6Om9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKCkKK1ZlY3RvcjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+IENyZWRlbnRpYWxTdG9yYWdlOjpnZXRPcmlnaW5zV2l0aFBl
cnNpc3RlbnRDcmVkZW50aWFscygpCiB7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4gb3JpZ2luczsKICAgICBhdXRvIGFsbENyZWRlbnRpYWxzID0gW1tOU1VSTENyZWRl
bnRpYWxTdG9yYWdlIHNoYXJlZENyZWRlbnRpYWxTdG9yYWdlXSBhbGxDcmVkZW50aWFsc107CkBA
IC00Nyw0ICs0NywyOCBAQCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBDcmVk
ZW50aWFsU3RvcmFnZTo6b3JpZ2luc1dpdGhQZXJzaXN0ZW50Q3JlZAogICAgIHJldHVybiBvcmln
aW5zOwogfQogCit2b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpyZW1vdmVQZXJzaXN0ZW50Q3JlZGVu
dGlhbHNXaXRoT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiYgb3JpZ2lucykKK3sKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKKyAgICAg
ICAgYXV0byBhbGxDcmVkZW50aWFscyA9IFtbTlNVUkxDcmVkZW50aWFsU3RvcmFnZSBzaGFyZWRD
cmVkZW50aWFsU3RvcmFnZV0gYWxsQ3JlZGVudGlhbHNdOworICAgICAgICBmb3IgKE5TVVJMUHJv
dGVjdGlvblNwYWNlKiBzcGFjZSBpbiBhbGxDcmVkZW50aWFscykgeworICAgICAgICAgICAgaWYg
KG9yaWdpbi5wcm90b2NvbCA9PSBTdHJpbmcoc3BhY2UucHJvdG9jb2wpCisgICAgICAgICAgICAg
ICAgJiYgb3JpZ2luLmhvc3QgPT0gU3RyaW5nKHNwYWNlLmhvc3QpCisgICAgICAgICAgICAgICAg
JiYgb3JpZ2luLnBvcnQKKyAgICAgICAgICAgICAgICAmJiAqb3JpZ2luLnBvcnQgPT0gc3BhY2Uu
cG9ydCkgeworICAgICAgICAgICAgICAgIGF1dG8gY3JlZGVudGlhbHMgPSBhbGxDcmVkZW50aWFs
c1tzcGFjZV07CisgICAgICAgICAgICAgICAgZm9yIChOU1N0cmluZyogdXNlciBpbiBjcmVkZW50
aWFscykgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGNyZWRlbnRpYWwgPSBjcmVkZW50aWFs
c1t1c2VyXTsKKyAgICAgICAgICAgICAgICAgICAgW1tOU1VSTENyZWRlbnRpYWxTdG9yYWdlIHNo
YXJlZENyZWRlbnRpYWxTdG9yYWdlXSByZW1vdmVDcmVkZW50aWFsOmNyZWRlbnRpYWwgZm9yUHJv
dGVjdGlvblNwYWNlOnNwYWNlIG9wdGlvbnM6QHsgTlNVUkxDcmVkZW50aWFsU3RvcmFnZVJlbW92
ZVN5bmNocm9uaXphYmxlQ3JlZGVudGlhbHMgOiBAWUVTIH1dOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBDcmVkZW50aWFsU3Rv
cmFnZTo6Y2xlYXJQZXJzaXN0ZW50Q3JlZGVudGlhbHMoKQoreworICAgIHJlbW92ZVBlcnNpc3Rl
bnRDcmVkZW50aWFsc1dpdGhPcmlnaW5zKGdldE9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRp
YWxzKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGRkOWExZTNhOGM1ZDc2ZDJk
ZDQzNTMwM2I3YjgzNjVjY2FlMDkyZTIuLjNlNzI3NGIzYjYyOGY0OTYwM2Y5YmYzNjljM2QyMWYx
MjE4YTFkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCkBAIC0xMjgyLDYgKzEyODIsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0
Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXQK
ICAgICAgICAgICAgIGZvciAoYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMp
CiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJp
ZXMuYXBwZW5kKHsgc2VjdXJpdHlPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMs
IDAgfSk7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkg
eworICAgICAgICAgICAgYXV0byBzZWN1cml0eU9yaWdpbnMgPSBXZWJDb3JlOjpDcmVkZW50aWFs
U3RvcmFnZTo6Z2V0T3JpZ2luc1dpdGhQZXJzaXN0ZW50Q3JlZGVudGlhbHMoKTsKKyAgICAgICAg
ICAgIGZvciAoYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpCisgICAgICAg
ICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5k
KHsgc2VjdXJpdHlPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMsIDAgfSk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkgewpAQCAtMTM1OSw2ICsxMzY0LDkgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2kKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgICAgICBzZXNzaW9uLT5jcmVkZW50aWFs
U3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc2Vz
c2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAgICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFsU3Rv
cmFnZTo6Y2xlYXJQZXJzaXN0ZW50Q3JlZGVudGlhbHMoKTsKICAgICB9CiAKICAgICBhdXRvIGNs
ZWFyVGFza3NIYW5kbGVyID0gV1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShbdGhpcywg
Y2FsbGJhY2tJRF0gewpAQCAtMTQ5Niw2ICsxNTA0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW8KICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQogICAg
ICAgICAgICAgICAgIHNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkucmVtb3ZlQ3JlZGVudGlh
bHNXaXRoT3JpZ2luKG9yaWdpbkRhdGEpOwogICAgICAgICB9CisgICAgICAgIGlmICghc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpCisgICAgICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFn
ZTo6cmVtb3ZlUGVyc2lzdGVudENyZWRlbnRpYWxzV2l0aE9yaWdpbnMob3JpZ2luRGF0YXMpOwog
ICAgIH0KIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgc3RvcmFnZSBxdW90YSBjbGVhcmluZyBm
b3IgdGhlc2Ugb3JpZ2lucy4KQEAgLTI1NDEsMTYgKzI1NTEsNiBAQCBTdG9yYWdlUXVvdGFNYW5h
Z2VyJiBOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSQogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6
b3JpZ2luc1dpdGhQZXJzaXN0ZW50Q3JlZGVudGlhbHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Ci17Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4oKSk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUNyZWRlbnRpYWxzV2l0
aE9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nl
c3MoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpCiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXgg
MGUxZGFiZDAwZWU0Y2E5NGUyMmIyZDI1ZTBjMzJmYmJjNDA1NGZkZC4uYjVkNmYwYzk0MDg4MGU2
N2ZjMmRjOTVkNTA2MmIyNTE3YWY0ZDYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtNDM2LDkgKzQzNiw2IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIHZvaWQgcGxhdGZvcm1TeW5jQWxsQ29va2llcyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwotCi0gICAgdm9pZCBvcmlnaW5zV2l0aFBlcnNpc3RlbnRDcmVkZW50aWFscyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
KT4mJik7Ci0gICAgdm9pZCByZW1vdmVDcmVkZW50aWFsc1dpdGhPcmlnaW5zKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIAogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZShj
b25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3Np
bmdDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5nJikgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgppbmRleCA2ZDA2MjQwODNmNzVmMzMyNzI2YWIzZmIyMWRjMWQyY2ZmOTBjMjFjLi45MWZlNjlk
NTdhMmEzNmRlMjQ2YzQyYWI3ZDc3OGYyYmRhM2Q5NzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE2
OCw3ICsxNjgsNSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAgICAgU2V0QWRDbGlja0F0dHJpYnV0aW9uT3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlKSAtPiAoKSBBc3luYwogICAgIFNldEFkQ2xp
Y2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgVVJMIHVybCkgLT4gKCkgQXN5bmMKICAgICBNYXJrQWRDbGlja0F0dHJpYnV0aW9uc0Fz
RXhwaXJlZEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwot
ICAgIE9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKCkgLT4gKFZlY3RvcjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpIEFzeW5jCi0gICAgUmVtb3ZlQ3JlZGVudGlh
bHNXaXRoT3JpZ2lucyhWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5z
KSAtPiAoKSBBc3luYwogICAgIEdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKSAtPiAoVmVjdG9yPFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyOjpPcmlnaW5EZXRhaWxzPiBkZXRhaWxzKSBBc3luYwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1t
CmluZGV4IGJkZWZlOWU0ZmE1OTAwNmQ1ZWI1OTdiYjdjMDVkMzYxZGQ3OTE4YTYuLjViNTJjYWJj
MGQ5OTdlYzU4OWEzN2E1MDg5YzkxNDViMjhhZWFkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KQEAg
LTIxMiwzMSArMjEyLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUoV2Fs
bFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm8KICAgICB9KS5nZXQoKSk7
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Om9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRp
YWxzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdl
YkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpvcmlnaW5zV2l0aFBlcnNpc3RlbnRDcmVkZW50aWFs
cygpKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlQ3JlZGVudGlhbHNXaXRoT3Jp
Z2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGZv
ciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykgewotICAgICAgICBhdXRvIGFsbENyZWRlbnRpYWxz
ID0gW1tOU1VSTENyZWRlbnRpYWxTdG9yYWdlIHNoYXJlZENyZWRlbnRpYWxTdG9yYWdlXSBhbGxD
cmVkZW50aWFsc107Ci0gICAgICAgIGZvciAoTlNVUkxQcm90ZWN0aW9uU3BhY2UqIHNwYWNlIGlu
IGFsbENyZWRlbnRpYWxzKSB7Ci0gICAgICAgICAgICBpZiAob3JpZ2luLnByb3RvY29sID09IFN0
cmluZyhzcGFjZS5wcm90b2NvbCkKLSAgICAgICAgICAgICAgICAmJiBvcmlnaW4uaG9zdCA9PSBT
dHJpbmcoc3BhY2UuaG9zdCkKLSAgICAgICAgICAgICAgICAmJiBvcmlnaW4ucG9ydAotICAgICAg
ICAgICAgICAgICYmICpvcmlnaW4ucG9ydCA9PSBzcGFjZS5wb3J0KSB7Ci0gICAgICAgICAgICAg
ICAgYXV0byBjcmVkZW50aWFscyA9IGFsbENyZWRlbnRpYWxzW3NwYWNlXTsKLSAgICAgICAgICAg
ICAgICBmb3IgKE5TU3RyaW5nKiB1c2VyIGluIGNyZWRlbnRpYWxzKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGF1dG8gY3JlZGVudGlhbCA9IGNyZWRlbnRpYWxzW3VzZXJdOwotICAgICAgICAgICAg
ICAgICAgICBbW05TVVJMQ3JlZGVudGlhbFN0b3JhZ2Ugc2hhcmVkQ3JlZGVudGlhbFN0b3JhZ2Vd
IHJlbW92ZUNyZWRlbnRpYWw6Y3JlZGVudGlhbCBmb3JQcm90ZWN0aW9uU3BhY2U6c3BhY2VdOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwotfQotCiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0U2hhcmVkSFRUUENvb2tpZVN0b3JhZ2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBpZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBjMjhhNjQwZjc3NzNkNDBlMjA4
OTA5NGRiNjhjYTEzYmE3NmUzZjUyLi5jNGQ5NzU4YWM0MmExOTViZjliOGEyMTBlNTBlN2JlNThh
NWFhZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtNTEyLDI0ICs1MTIsNiBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcywgTwogICAgICAgICB9KTsKICAgICB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMp
ICYmIGlzUGVyc2lzdGVudCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBw
cm9jZXNzUG9vbHMoKSkgewotICAgICAgICAgICAgaWYgKCFwcm9jZXNzUG9vbC0+bmV0d29ya1By
b2Nlc3MoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKLSAgICAgICAg
ICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiYmKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbY2FsbGJhY2tBZ2dyZWdhdG9yXShW
ZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmIG9yaWdpbnMpIG11dGFibGUgewot
ICAgICAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwotICAgICAgICAgICAgICAg
IGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKLSAgICAgICAgICAgICAgICAgICAgd2Vic2l0
ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2luLCBXZWJzaXRl
RGF0YVR5cGU6OkNyZWRlbnRpYWxzLCAwIH0pOwotICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdURk1vdmUod2Vic2l0ZURhdGEpKTsKLSAg
ICAgICAgICAgIH07Ci0gICAgICAgICAgICBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKS0+
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6T3JpZ2luc1dpdGhQ
ZXJzaXN0ZW50Q3JlZGVudGlhbHMoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAg
ICAgICB9Ci0gICAgfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
ICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UGx1Z0luRGF0YSkg
JiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAgICAgY2xhc3MgU3RhdGUgewpAQCAtNjM2LDkgKzYx
OCw2IEBAIHN0YXRpYyBQcm9jZXNzQWNjZXNzVHlwZSBjb21wdXRlV2ViUHJvY2Vzc0FjY2Vzc1R5
cGVGb3JEYXRhUmVtb3ZhbChPcHRpb25TZXQ8V2ViCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlKSkKICAgICAgICAgcHJvY2Vzc0FjY2Vzc1R5
cGUgPSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6Ok9ubHlJ
ZkxhdW5jaGVkKTsKIAotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpDcmVkZW50aWFscykpCi0gICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjptYXgocHJv
Y2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpPbmx5SWZMYXVuY2hlZCk7Ci0KICAg
ICByZXR1cm4gcHJvY2Vzc0FjY2Vzc1R5cGU7CiB9CiAKQEAgLTEwODUsMTkgKzEwNjQsNiBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gZGF0YVR5cGVzLCBjb25zdCBWZQogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBpZiAoZGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpICYmIGlzUGVyc2lz
dGVudCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMo
KSkgewotICAgICAgICAgICAgaWYgKCFwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKLSAgICAgICAgICAgIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5y
ZW1vdmVQZW5kaW5nQ2FsbGJhY2soKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBwcm9j
ZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6UmVtb3ZlQ3JlZGVudGlhbHNXaXRoT3JpZ2lucyhvcmlnaW5zKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICB9Ci0gICAgfQotCiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OlBsdWdJbkRhdGEpICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IGhvc3ROYW1lczsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAxOWU1NmNiZGFmMGJhNTMzMjdhNmFjODY5MmUwYmJjNjdmYmE4YjU1
Li5jZjYzM2E3ZDBhNjczNTc5ZDc3OTJlNzg2OTkzOTcyMzBjODQyOTJjIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTktMDYtMTQgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgLVtX
S1dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6bW9kaWZpZWRTaW5jZTpjb21wbGV0
aW9uSGFuZGxlcjpdIGRvZXNuJ3QgZGVsZXRlIF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg4NTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTktMDYtMTMgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSBmb3IgdmFs
aWRhdGUtY29tbWl0dGVyLWxpc3RzIHRvIGR1bXAgYSBtYWlsbWFwIGZpbGUKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3Jl
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRh
c3RvcmUubW0KaW5kZXggZjk3ODc4ODBlMjc0ZjM0NjFmZmM2ZmQ2YTQ1NDUyNDk5ZDIzZGNkMy4u
MWUwYjFmNGQ1OTA3NzM1NTQ4MTQ2MDcwODlhYjk3YzA2NDhjMGQ2OCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRh
c3RvcmUubW0KQEAgLTI1Miw2ICsyNTIsNTEgQEAgVEVTVChXS1dlYnNpdGVEYXRhU3RvcmUsIFJl
bW92ZVBlcnNpc3RlbnRDcmVkZW50aWFscykKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOwogfQogCitURVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwgUmVtb3ZlQWxsUGVyc2lzdGVu
dENyZWRlbnRpYWxzKQoreworICAgIHVzZVBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZSA9IHRy
dWU7CisKKyAgICBUQ1BTZXJ2ZXIgc2VydmVyKHJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKTsK
KyAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdOworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW05hdmln
YXRpb25UZXN0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApXSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25E
ZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAImh0dHA6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07CisgICAgW25h
dmlnYXRpb25EZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICByZWFk
eVRvQ29udGludWUgPSBmYWxzZTsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZSBmZXRjaERhdGFSZWNv
cmRzT2ZUeXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50
aWFsc10gY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4g
KmRhdGFSZWNvcmRzKSB7CisgICAgICAgIGJvb2wgZm91bmRSZWNvcmQgPSBmYWxzZTsKKyAgICAg
ICAgZm9yIChXS1dlYnNpdGVEYXRhUmVjb3JkICpyZWNvcmQgaW4gZGF0YVJlY29yZHMpIHsKKyAg
ICAgICAgICAgIGF1dG8gbmFtZSA9IFtyZWNvcmQgZGlzcGxheU5hbWVdOworICAgICAgICAgICAg
aWYgKFtuYW1lIGlzRXF1YWxUb1N0cmluZzpAIjEyNy4wLjAuMSJdKQorICAgICAgICAgICAgICAg
IGZvdW5kUmVjb3JkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBFWFBFQ1RfVFJVRShmb3Vu
ZFJlY29yZCk7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworCisgICAgcmVhZHlU
b0NvbnRpbnVlID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlw
ZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHNdIG1v
ZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsK
KyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7CisgICAgCisgICAgcmVhZHlUb0NvbnRp
bnVlID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlw
ZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHNdIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVj
b3JkcykgeworICAgICAgICBib29sIGZvdW5kUmVjb3JkID0gZmFsc2U7CisgICAgICAgIGZvciAo
V0tXZWJzaXRlRGF0YVJlY29yZCAqcmVjb3JkIGluIGRhdGFSZWNvcmRzKSB7CisgICAgICAgICAg
ICBhdXRvIG5hbWUgPSBbcmVjb3JkIGRpc3BsYXlOYW1lXTsKKyAgICAgICAgICAgIGlmIChbbmFt
ZSBpc0VxdWFsVG9TdHJpbmc6QCIxMjcuMC4wLjEiXSkKKyAgICAgICAgICAgICAgICBmb3VuZFJl
Y29yZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgRVhQRUNUX0ZBTFNFKGZvdW5kUmVjb3Jk
KTsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7Cit9CisKIFRFU1QoV0tXZWJzaXRl
RGF0YVN0b3JlLCBSZW1vdmVOb25QZXJzaXN0ZW50Q3JlZGVudGlhbHMpCiB7CiAgICAgVENQU2Vy
dmVyIHNlcnZlcihyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372142</attachid>
            <date>2019-06-14 14:45:38 -0700</date>
            <delta_ts>2019-06-17 18:00:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198854-20190614144538.patch</filename>
            <type>text/plain</type>
            <size>20165</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFhNmQwODdjMjY4ODMz
NGJjN2VhMmE0NjM5ODA0ZmFmNTUyN2U5Zi4uNTMyZjMwZjhkZmIzMDkyNWYyODgxMWU1MDUyNmNm
ZWRjNDQyZTU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA2LTE0ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHJlbW92ZURhdGFPZlR5cGVzOm1vZGlmaWVkU2luY2U6Y29tcGxldGlvbkhhbmRsZXI6XSBk
b2Vzbid0IGRlbGV0ZSBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4ODU0CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81MTM4NjA1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgb3B0aW9uIE5TVVJMQ3JlZGVudGlhbFN0b3JhZ2VSZW1vdmVTeW5j
aHJvbml6YWJsZUNyZWRlbnRpYWxzIHdoZW4gcmVtb3ZpbmcgcGVyc2lzdGVudCBjcmVkZW50aWFs
IHNvIAorICAgICAgICBjcmVkZW50aWFscyBmcm9tIHNhbWUgYWNjb3VudCB3aWxsIGJlIHJlbW92
ZWQgZnJvbSBhbGwgZGV2aWNlcy4KKworICAgICAgICBUZXN0OiBXS1dlYnNpdGVEYXRhU3RvcmUu
UmVtb3ZlQWxsUGVyc2lzdGVudENyZWRlbnRpYWxzCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxT
dG9yYWdlOjpvcmlnaW5zV2l0aFBlcnNpc3RlbnRDcmVkZW50aWFscyk6CisgICAgICAgIChXZWJD
b3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6cmVtb3ZlUGVyc2lzdGVudENyZWRlbnRpYWxzV2l0aE9y
aWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6OmNsZWFyUGVyc2lz
dGVudENyZWRlbnRpYWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxT
dG9yYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3Jh
Z2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6b3JpZ2luc1dp
dGhQZXJzaXN0ZW50Q3JlZGVudGlhbHMpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0
b3JhZ2U6OnJlbW92ZVBlcnNpc3RlbnRDcmVkZW50aWFsc1dpdGhPcmlnaW5zKToKKyAgICAgICAg
KFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpjbGVhclBlcnNpc3RlbnRDcmVkZW50aWFscyk6
CisKIDIwMTktMDYtMTQgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZC4gRm9sbG93IHVwIHRvIHIyNDY0MzguIFRoaXMgcmVtb3ZlcyBhIGRlYnVn
IGFzc2VydCB1bnRpbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZTEwMmZkNmY1MjdjODk3ZmVlNmI0ZWU0ZjZkYTFh
MTYxODdlNzEyLi5mMTE4YmI4ZWUyOGU4MDk2Y2IwZTVhNDFjMTNlNjVkN2RhYzA5YmQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE5LTA2LTE0ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVA
YXBwbGUuY29tPgorCisgICAgICAgIC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5
cGVzOm1vZGlmaWVkU2luY2U6Y29tcGxldGlvbkhhbmRsZXI6XSBkb2Vzbid0IGRlbGV0ZSBfV0tX
ZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk4ODU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MTM4NjA1
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVh
ciBwZXJzaXN0ZW50IGNyZWRlbnRpYWxzIGluIGRlbGV0ZVdlYnNpdGVEYXRhIG9mIG5ldHdvcmsg
cHJvY2Vzcy4KKworICAgICAgICBBbHNvLCBtZXJnZSBvcmlnaW5zV2l0aFBlcnNpc3RlbnRDcmVk
ZW50aWFscyBhbmQgcmVtb3ZlQ3JlZGVudGlhbHNXaXRoT3JpZ2lucyBpbnRvIGZldGNoV2Vic2l0
ZURhdGEgYW5kCisgICAgICAgIGRlbGV0ZVdlYnNpdGVEYXRhLCBhbmQgbW92ZSBjcmVkZW50aWFs
cyBoYW5kbGluZyB0byBXZWJDb3JlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJz
aXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6b3JpZ2luc1dp
dGhQZXJzaXN0ZW50Q3JlZGVudGlhbHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cmVtb3ZlQ3JlZGVudGlhbHNXaXRoT3JpZ2lucyk6IERlbGV0ZWQuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6b3JpZ2luc1dpdGhQZXJzaXN0ZW50Q3JlZGVudGlhbHMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlQ3JlZGVudGlhbHNXaXRoT3Jp
Z2lucyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERh
dGFBbmRBcHBseSk6CisgICAgICAgIChXZWJLaXQ6OmNvbXB1dGVXZWJQcm9jZXNzQWNjZXNzVHlw
ZUZvckRhdGFSZW1vdmFsKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVt
b3ZlRGF0YSk6CisKIDIwMTktMDYtMTMgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBGaXggc2VsZWN0aW9uIGhhbmcgaW4gTWFpbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcApp
bmRleCA5OGU5NDI2ZmMyN2FkYmIyYmI2MGJlZDQ2ZGQ1NjY3ZmFmN2MzOTYyLi4xYmUxMmU3YjZm
OGI0OWU1MmU2OWJiYWMyOTlkYmIzNmZmYmIyMDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcApAQCAtMTg3LDQgKzE4
NywyMCBAQCB2b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpjbGVhckNyZWRlbnRpYWxzKCkKICAgICBt
X3BhdGhUb0RlZmF1bHRQcm90ZWN0aW9uU3BhY2VNYXAuY2xlYXIoKTsKIH0KIAorI2lmICFQTEFU
Rk9STShDT0NPQSkKK1ZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IENyZWRlbnRp
YWxTdG9yYWdlOjpvcmlnaW5zV2l0aFBlcnNpc3RlbnRDcmVkZW50aWFscygpCit7CisgICAgcmV0
dXJuIHsgfTsKK30KKwordm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6cmVtb3ZlUGVyc2lzdGVudENy
ZWRlbnRpYWxzV2l0aE9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mIG9yaWdpbnMpCit7CisgICAgcmV0dXJuOworfQorCit2b2lkIENyZWRlbnRpYWxTdG9y
YWdlOjpjbGVhclBlcnNpc3RlbnRDcmVkZW50aWFscygpCit7CisgICAgcmV0dXJuOworfQorI2Vu
ZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKaW5kZXggZjhjNzVhZTkyOWFiMmQ1NDI1
YTI0YTYyNjdjZDQyNzM4ZDc1YzBkNy4uOTc1OGIwNDQ3ZTEyZGJkNjY1OTFkNTFlNjJmMDM2Mzc3
ZDQ5NjUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVk
ZW50aWFsU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3Jl
ZGVudGlhbFN0b3JhZ2UuaApAQCAtNDcsNyArNDcsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBPUyBw
ZXJzaXN0ZW50IHN0b3JhZ2UuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENyZWRlbnRpYWwg
Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zV2l0
aFBlcnNpc3RlbnRDcmVkZW50aWFscygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0
b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zV2l0aFBlcnNpc3RlbnRDcmVk
ZW50aWFscygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlbW92ZVBlcnNpc3Rl
bnRDcmVkZW50aWFsc1dpdGhPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+JiBvcmlnaW5zKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjbGVh
clBlcnNpc3RlbnRDcmVkZW50aWFscygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVh
ckNyZWRlbnRpYWxzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KaW5kZXggNjViNTE1MTFmOWE5
YjJiOGIxMmY2M2VkYWUzNmZlZjM1ZTc2ZDM5Yy4uZDc4MzdkZTA0MDU0YTlmMTJiOTUzNzIxMTlj
Mjg5MTJjZjFiNTg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KQEAgLTQxLDEwICs0MSw0MyBA
QCBDcmVkZW50aWFsIENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2Uo
Y29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcgogVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4gQ3JlZGVudGlhbFN0b3JhZ2U6Om9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxz
KCkKIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOwot
ICAgIGF1dG8gYWxsQ3JlZGVudGlhbHMgPSBbW05TVVJMQ3JlZGVudGlhbFN0b3JhZ2Ugc2hhcmVk
Q3JlZGVudGlhbFN0b3JhZ2VdIGFsbENyZWRlbnRpYWxzXTsKLSAgICBmb3IgKE5TVVJMUHJvdGVj
dGlvblNwYWNlKiBrZXkgaW4gYWxsQ3JlZGVudGlhbHMua2V5RW51bWVyYXRvcikKKyAgICBhdXRv
IGFsbENyZWRlbnRpYWxzID0gYWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbFN0b3JhZ2Ugc2hhcmVk
Q3JlZGVudGlhbFN0b3JhZ2VdIGFsbENyZWRlbnRpYWxzXSk7CisgICAgZm9yIChOU1VSTFByb3Rl
Y3Rpb25TcGFjZSoga2V5IGluIGFsbENyZWRlbnRpYWxzLmdldCgpLmtleUVudW1lcmF0b3IpCiAg
ICAgICAgIG9yaWdpbnMuYXBwZW5kKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB7IFN0cmlu
ZyhrZXkucHJvdG9jb2wpLCBTdHJpbmcoa2V5Lmhvc3QpLCBrZXkucG9ydCB9KTsKICAgICByZXR1
cm4gb3JpZ2luczsKIH0KIAordm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6cmVtb3ZlUGVyc2lzdGVu
dENyZWRlbnRpYWxzV2l0aE9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mIG9yaWdpbnMpCit7CisgICAgYXV0byBzaGFyZWRTdG9yYWdlID0gW05TVVJMQ3Jl
ZGVudGlhbFN0b3JhZ2Ugc2hhcmVkQ3JlZGVudGlhbFN0b3JhZ2VdOworICAgIGF1dG8gYWxsQ3Jl
ZGVudGlhbHMgPSBhZG9wdE5TKFtzaGFyZWRTdG9yYWdlIGFsbENyZWRlbnRpYWxzXSk7CisgICAg
Zm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7CisgICAgICAgIGZvciAoTlNVUkxQcm90ZWN0
aW9uU3BhY2UqIHNwYWNlIGluIGFsbENyZWRlbnRpYWxzLmdldCgpKSB7CisgICAgICAgICAgICBp
ZiAob3JpZ2luLnByb3RvY29sID09IFN0cmluZyhzcGFjZS5wcm90b2NvbCkKKyAgICAgICAgICAg
ICAgICAmJiBvcmlnaW4uaG9zdCA9PSBTdHJpbmcoc3BhY2UuaG9zdCkKKyAgICAgICAgICAgICAg
ICAmJiBvcmlnaW4ucG9ydAorICAgICAgICAgICAgICAgICYmICpvcmlnaW4ucG9ydCA9PSBzcGFj
ZS5wb3J0KSB7CisgICAgICAgICAgICAgICAgYXV0byBjcmVkZW50aWFscyA9IGFsbENyZWRlbnRp
YWxzLmdldCgpW3NwYWNlXTsKKyAgICAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nKiB1c2VyIGlu
IGNyZWRlbnRpYWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gY3JlZGVudGlhbCA9IGNy
ZWRlbnRpYWxzW3VzZXJdOworICAgICAgICAgICAgICAgICAgICBbc2hhcmVkU3RvcmFnZSByZW1v
dmVDcmVkZW50aWFsOmNyZWRlbnRpYWwgZm9yUHJvdGVjdGlvblNwYWNlOnNwYWNlIG9wdGlvbnM6
QHsgTlNVUkxDcmVkZW50aWFsU3RvcmFnZVJlbW92ZVN5bmNocm9uaXphYmxlQ3JlZGVudGlhbHMg
OiBAWUVTIH1dOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6Y2xlYXJQZXJzaXN0ZW50Q3JlZGVu
dGlhbHMoKQoreworICAgIGF1dG8gc2hhcmVkU3RvcmFnZSA9IFtOU1VSTENyZWRlbnRpYWxTdG9y
YWdlIHNoYXJlZENyZWRlbnRpYWxTdG9yYWdlXTsKKyAgICBhdXRvIGFsbENyZWRlbnRpYWxzID0g
YWRvcHROUyhbc2hhcmVkU3RvcmFnZSBhbGxDcmVkZW50aWFsc10pOworICAgIGZvciAoTlNVUkxQ
cm90ZWN0aW9uU3BhY2UqIHNwYWNlIGluIGFsbENyZWRlbnRpYWxzLmdldCgpLmtleUVudW1lcmF0
b3IpIHsKKyAgICAgICAgYXV0byBjcmVkZW50aWFscyA9IGFsbENyZWRlbnRpYWxzLmdldCgpW3Nw
YWNlXTsKKyAgICAgICAgZm9yIChOU1N0cmluZyogdXNlciBpbiBjcmVkZW50aWFscykgeworICAg
ICAgICAgICAgYXV0byBjcmVkZW50aWFsID0gY3JlZGVudGlhbHNbdXNlcl07CisgICAgICAgICAg
ICBbc2hhcmVkU3RvcmFnZSByZW1vdmVDcmVkZW50aWFsOmNyZWRlbnRpYWwgZm9yUHJvdGVjdGlv
blNwYWNlOnNwYWNlIG9wdGlvbnM6QHsgTlNVUkxDcmVkZW50aWFsU3RvcmFnZVJlbW92ZVN5bmNo
cm9uaXphYmxlQ3JlZGVudGlhbHMgOiBAWUVTIH1dOworICAgICAgICB9CisgICAgfQorfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGRkOWExZTNhOGM1ZDc2ZDJkZDQzNTMwM2I3YjgzNjVj
Y2FlMDkyZTIuLjdmZGRhMWQ5ZTE2OWFkYjFjOTRlYzgwMmQ5NDg3ZjA0ZTg2ZWFmYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0x
MjgyLDYgKzEyODIsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXQKICAgICAgICAgICAgIGZv
ciAoYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpCiAgICAgICAgICAgICAg
ICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgc2Vj
dXJpdHlPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMsIDAgfSk7CiAgICAgICAg
IH0KKyAgICAgICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgeworICAgICAgICAgICAg
YXV0byBzZWN1cml0eU9yaWdpbnMgPSBXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6b3JpZ2lu
c1dpdGhQZXJzaXN0ZW50Q3JlZGVudGlhbHMoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgc2Vj
dXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpCisgICAgICAgICAgICAgICAgY2FsbGJhY2tB
Z2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgc2VjdXJpdHlPcmlnaW4s
IFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMsIDAgfSk7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNh
Y2hlKSkgewpAQCAtMTM1OSw2ICsxMzY0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRp
YWxzKSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCkpCiAgICAgICAgICAgICBzZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLmNsZWFyQ3Jl
ZGVudGlhbHMoKTsKKyAgICAgICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAg
ICAgICAgIFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpjbGVhclBlcnNpc3RlbnRDcmVkZW50
aWFscygpOwogICAgIH0KIAogICAgIGF1dG8gY2xlYXJUYXNrc0hhbmRsZXIgPSBXVEY6OkNhbGxi
YWNrQWdncmVnYXRvcjo6Y3JlYXRlKFt0aGlzLCBjYWxsYmFja0lEXSB7CkBAIC0xNDk2LDYgKzE1
MDMsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogICAgICAgICAgICAgZm9yIChhdXRvJiBv
cmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpCiAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+Y3JlZGVu
dGlhbFN0b3JhZ2UoKS5yZW1vdmVDcmVkZW50aWFsc1dpdGhPcmlnaW4ob3JpZ2luRGF0YSk7CiAg
ICAgICAgIH0KKyAgICAgICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAg
ICAgIFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpyZW1vdmVQZXJzaXN0ZW50Q3JlZGVudGlh
bHNXaXRoT3JpZ2lucyhvcmlnaW5EYXRhcyk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCBzdG9yYWdlIHF1b3RhIGNsZWFyaW5nIGZvciB0aGVzZSBvcmlnaW5zLgpAQCAtMjU0MSwx
NiArMjU1MCw2IEBAIFN0b3JhZ2VRdW90YU1hbmFnZXImIE5ldHdvcmtQcm9jZXNzOjpzdG9yYWdl
UXVvdGFNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JCiB9CiAKICNpZiAhUExBVEZPUk0o
Q09DT0EpCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpvcmlnaW5zV2l0aFBlcnNpc3RlbnRDcmVkZW50
aWFscyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihW
ZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPigpKTsKLX0KLQotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cmVtb3ZlQ3JlZGVudGlhbHNXaXRoT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotfQotCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXJzJikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAwZTFkYWJkMDBlZTRjYTk0ZTIyYjJkMjVlMGMz
MmZiYmM0MDU0ZmRkLi5iNWQ2ZjBjOTQwODgwZTY3ZmMyZGM5NWQ1MDYyYjI1MTdhZjRkNjAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC00
MzYsOSArNDM2LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdm9pZCBwbGF0Zm9ybVN5bmNB
bGxDb29raWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0KLSAgICB2b2lkIG9yaWdp
bnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4pPiYmKTsKLSAgICB2b2lkIHJlbW92ZUNyZWRl
bnRpYWxzV2l0aE9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4mIG9yaWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgCiAgICAgdm9p
ZCByZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZv
aWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25z
dCBTdHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDZkMDYyNDA4M2Y3NWYzMzI3MjZh
YjNmYjIxZGMxZDJjZmY5MGMyMWMuLjkxZmU2OWQ1N2EyYTM2ZGUyNDZjNDJhYjdkNzc4ZjJiZGEz
ZDk3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTY4LDcgKzE2OCw1IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRBZENsaWNrQXR0cmlidXRpb25P
dmVycmlkZVRpbWVyRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFs
dWUpIC0+ICgpIEFzeW5jCiAgICAgU2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsKSAtPiAoKSBBc3luYwog
ICAgIE1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCi0gICAgT3JpZ2luc1dpdGhQZXJzaXN0ZW50Q3Jl
ZGVudGlhbHMoKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lu
cykgQXN5bmMKLSAgICBSZW1vdmVDcmVkZW50aWFsc1dpdGhPcmlnaW5zKFZlY3RvcjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpIC0+ICgpIEFzeW5jCiAgICAgR2V0TG9jYWxT
dG9yYWdlT3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChWZWN0b3I8
V2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+IGRldGFp
bHMpIEFzeW5jCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KaW5kZXggYmRlZmU5ZTRmYTU5MDA2ZDVlYjU5
N2JiN2MwNWQzNjFkZDc5MThhNi4uNWI1MmNhYmMwZDk5N2VjNTg5YTM3YTUwODljOTE0NWIyOGFl
YWQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQpAQCAtMjEyLDMxICsyMTIsNiBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0
aW9uSGFuZGxlcjx2bwogICAgIH0pLmdldCgpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6
b3JpZ2luc1dpdGhQZXJzaXN0ZW50Q3JlZGVudGlhbHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Ci17Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6Om9y
aWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKCkpOwotfQotCi12b2lkIE5ldHdvcmtQcm9j
ZXNzOjpyZW1vdmVDcmVkZW50aWFsc1dpdGhPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7
Ci0gICAgICAgIGF1dG8gYWxsQ3JlZGVudGlhbHMgPSBbW05TVVJMQ3JlZGVudGlhbFN0b3JhZ2Ug
c2hhcmVkQ3JlZGVudGlhbFN0b3JhZ2VdIGFsbENyZWRlbnRpYWxzXTsKLSAgICAgICAgZm9yIChO
U1VSTFByb3RlY3Rpb25TcGFjZSogc3BhY2UgaW4gYWxsQ3JlZGVudGlhbHMpIHsKLSAgICAgICAg
ICAgIGlmIChvcmlnaW4ucHJvdG9jb2wgPT0gU3RyaW5nKHNwYWNlLnByb3RvY29sKQotICAgICAg
ICAgICAgICAgICYmIG9yaWdpbi5ob3N0ID09IFN0cmluZyhzcGFjZS5ob3N0KQotICAgICAgICAg
ICAgICAgICYmIG9yaWdpbi5wb3J0Ci0gICAgICAgICAgICAgICAgJiYgKm9yaWdpbi5wb3J0ID09
IHNwYWNlLnBvcnQpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGNyZWRlbnRpYWxzID0gYWxsQ3Jl
ZGVudGlhbHNbc3BhY2VdOwotICAgICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcqIHVzZXIgaW4g
Y3JlZGVudGlhbHMpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBjcmVkZW50aWFsID0gY3Jl
ZGVudGlhbHNbdXNlcl07Ci0gICAgICAgICAgICAgICAgICAgIFtbTlNVUkxDcmVkZW50aWFsU3Rv
cmFnZSBzaGFyZWRDcmVkZW50aWFsU3RvcmFnZV0gcmVtb3ZlQ3JlZGVudGlhbDpjcmVkZW50aWFs
IGZvclByb3RlY3Rpb25TcGFjZTpzcGFjZV07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci19Ci0KICNp
ZiBQTEFURk9STShNQUMpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaGFyZWRIVFRQQ29va2ll
U3RvcmFnZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGlkZW50aWZpZXIpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCmluZGV4IGMyOGE2NDBmNzc3M2Q0MGUyMDg5MDk0ZGI2OGNhMTNiYTc2ZTNmNTIuLmM0ZDk3
NThhYzQyYTE5NWJmOWI4YTIxMGU1MGU3YmU1OGE1YWFkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBA
IC01MTIsMjQgKzUxMiw2IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBw
bHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAgICAgICAgIH0pOwog
ICAgIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykgJiYgaXNQZXJzaXN0ZW50KCkpIHsKLSAgICAg
ICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgICAg
ICBpZiAoIXByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFk
ZFBlbmRpbmdDYWxsYmFjaygpOwotICAgICAgICAgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiBjb21wbGV0aW9uSGFu
ZGxlciA9IFtjYWxsYmFja0FnZ3JlZ2F0b3JdKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+JiYgb3JpZ2lucykgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgV2Vic2l0ZURhdGEg
d2Vic2l0ZURhdGE7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5z
KQotICAgICAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRl
RGF0YTo6RW50cnkgeyBvcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMsIDAgfSk7
Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJh
Y2soV1RGTW92ZSh3ZWJzaXRlRGF0YSkpOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHBy
b2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpPcmlnaW5zV2l0aFBlcnNpc3RlbnRDcmVkZW50aWFscygpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLQogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpQbHVnSW5EYXRhKSAmJiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAg
ICBjbGFzcyBTdGF0ZSB7CkBAIC02MzYsOSArNjE4LDYgQEAgc3RhdGljIFByb2Nlc3NBY2Nlc3NU
eXBlIGNvbXB1dGVXZWJQcm9jZXNzQWNjZXNzVHlwZUZvckRhdGFSZW1vdmFsKE9wdGlvblNldDxX
ZWIKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2Fj
aGUpKQogICAgICAgICBwcm9jZXNzQWNjZXNzVHlwZSA9IHN0ZDo6bWF4KHByb2Nlc3NBY2Nlc3NU
eXBlLCBQcm9jZXNzQWNjZXNzVHlwZTo6T25seUlmTGF1bmNoZWQpOwogCi0gICAgaWYgKGRhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkKLSAgICAgICAgcHJv
Y2Vzc0FjY2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vz
c1R5cGU6Ok9ubHlJZkxhdW5jaGVkKTsKLQogICAgIHJldHVybiBwcm9jZXNzQWNjZXNzVHlwZTsK
IH0KIApAQCAtMTA4NSwxOSArMTA2NCw2IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3Zl
RGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIGNvbnN0IFZlCiAgICAg
ICAgIH0pOwogICAgIH0KIAotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFU
eXBlOjpDcmVkZW50aWFscykgJiYgaXNQZXJzaXN0ZW50KCkpIHsKLSAgICAgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgICAgICBpZiAoIXByb2Nl
c3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxs
YmFjaygpOwotICAgICAgICAgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBs
ZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrQWdncmVnYXRvcl0oKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjaygpOwotICAg
ICAgICAgICAgfTsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpLT5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZW1vdmVDcmVkZW50
aWFsc1dpdGhPcmlnaW5zKG9yaWdpbnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBp
ZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UGx1Z0luRGF0YSkgJiYgaXNQ
ZXJzaXN0ZW50KCkpIHsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gaG9zdE5hbWVzOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGUzYWE0ZTkzNzli
NzBiNzRiNzI2Y2E5OTMwY2YzNTRhYWVmOWI3Y2UuLmNkMjZhOGM4YTVmNGQwZWMxZWRlZmNjODA1
ZGU3ZGRlYmUxMWNiZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wNi0xNCAgU2lodWkgTGl1ICA8c2lodWlf
bGl1QGFwcGxlLmNvbT4KKworICAgICAgICAtW1dLV2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRh
T2ZUeXBlczptb2RpZmllZFNpbmNlOmNvbXBsZXRpb25IYW5kbGVyOl0gZG9lc24ndCBkZWxldGUg
X1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODg1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1dlYnNpdGVEYXRhc3RvcmUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwog
MjAxOS0wNi0xNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
aW1wb3J0LXczYy10ZXN0cyBzaG91bGQgcmVzcGVjdCBXRUJLSVRfT1VUUFVURElSCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFz
dG9yZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRl
RGF0YXN0b3JlLm1tCmluZGV4IGY5Nzg3ODgwZTI3NGYzNDYxZmZjNmZkNmE0NTQ1MjQ5OWQyM2Rj
ZDMuLjFlMGIxZjRkNTkwNzczNTU0ODE0NjA3MDg5YWI5N2MwNjQ4YzBkNjggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3Jl
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRl
RGF0YXN0b3JlLm1tCkBAIC0yNTIsNiArMjUyLDUxIEBAIFRFU1QoV0tXZWJzaXRlRGF0YVN0b3Jl
LCBSZW1vdmVQZXJzaXN0ZW50Q3JlZGVudGlhbHMpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKIH0KIAorVEVTVChXS1dlYnNpdGVEYXRhU3RvcmUsIFJlbW92ZUFsbFBlcnNp
c3RlbnRDcmVkZW50aWFscykKK3sKKyAgICB1c2VQZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2Ug
PSB0cnVlOworCisgICAgVENQU2VydmVyIHNlcnZlcihyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5P
Syk7CisgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZh
dWx0RGF0YVN0b3JlXTsKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tO
YXZpZ2F0aW9uVGVzdERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKV0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0
aW9uRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV1dOworICAg
IFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAg
cmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgZmV0Y2hEYXRh
UmVjb3Jkc09mVHlwZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQ3Jl
ZGVudGlhbHNdIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3Jk
ICo+ICpkYXRhUmVjb3JkcykgeworICAgICAgICBib29sIGZvdW5kUmVjb3JkID0gZmFsc2U7Cisg
ICAgICAgIGZvciAoV0tXZWJzaXRlRGF0YVJlY29yZCAqcmVjb3JkIGluIGRhdGFSZWNvcmRzKSB7
CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBbcmVjb3JkIGRpc3BsYXlOYW1lXTsKKyAgICAgICAg
ICAgIGlmIChbbmFtZSBpc0VxdWFsVG9TdHJpbmc6QCIxMjcuMC4wLjEiXSkKKyAgICAgICAgICAg
ICAgICBmb3VuZFJlY29yZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgRVhQRUNUX1RSVUUo
Zm91bmRSZWNvcmQpOworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKworICAgIHJl
YWR5VG9Db250aW51ZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFP
ZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxz
XSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4o
KSB7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworICAgIAorICAgIHJlYWR5VG9D
b250aW51ZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNP
ZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxz
XSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0
YVJlY29yZHMpIHsKKyAgICAgICAgYm9vbCBmb3VuZFJlY29yZCA9IGZhbHNlOworICAgICAgICBm
b3IgKFdLV2Vic2l0ZURhdGFSZWNvcmQgKnJlY29yZCBpbiBkYXRhUmVjb3JkcykgeworICAgICAg
ICAgICAgYXV0byBuYW1lID0gW3JlY29yZCBkaXNwbGF5TmFtZV07CisgICAgICAgICAgICBpZiAo
W25hbWUgaXNFcXVhbFRvU3RyaW5nOkAiMTI3LjAuMC4xIl0pCisgICAgICAgICAgICAgICAgZm91
bmRSZWNvcmQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIEVYUEVDVF9GQUxTRShmb3VuZFJl
Y29yZCk7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworfQorCiBURVNUKFdLV2Vi
c2l0ZURhdGFTdG9yZSwgUmVtb3ZlTm9uUGVyc2lzdGVudENyZWRlbnRpYWxzKQogewogICAgIFRD
UFNlcnZlciBzZXJ2ZXIocmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0spOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372306</attachid>
            <date>2019-06-17 18:00:48 -0700</date>
            <delta_ts>2019-06-17 18:43:46 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-198854-20190617180048.patch</filename>
            <type>text/plain</type>
            <size>20171</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGYyNWQ5ZTU1NzhkY2Mz
YWVmMTc5MTkyZTA5NmE3ZjQ4YzRkNjU5ZS4uMjM3NzVmNTFiMjg4ODBkOTc3ZDEwNTk4MGVlYTNk
ZWIxNzFkYjliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA2LTE3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHJlbW92ZURhdGFPZlR5cGVzOm1vZGlmaWVkU2luY2U6Y29tcGxldGlvbkhhbmRsZXI6XSBk
b2Vzbid0IGRlbGV0ZSBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4ODU0CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81MTM4NjA1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJl
bi4KKworICAgICAgICBBZGQgb3B0aW9uIE5TVVJMQ3JlZGVudGlhbFN0b3JhZ2VSZW1vdmVTeW5j
aHJvbml6YWJsZUNyZWRlbnRpYWxzIHdoZW4gcmVtb3ZpbmcgcGVyc2lzdGVudCBjcmVkZW50aWFs
IHNvIAorICAgICAgICBjcmVkZW50aWFscyBmcm9tIHNhbWUgYWNjb3VudCB3aWxsIGJlIHJlbW92
ZWQgZnJvbSBhbGwgZGV2aWNlcy4KKworICAgICAgICBUZXN0OiBXS1dlYnNpdGVEYXRhU3RvcmUu
UmVtb3ZlQWxsUGVyc2lzdGVudENyZWRlbnRpYWxzCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxT
dG9yYWdlOjpvcmlnaW5zV2l0aFBlcnNpc3RlbnRDcmVkZW50aWFscyk6CisgICAgICAgIChXZWJD
b3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6cmVtb3ZlUGVyc2lzdGVudENyZWRlbnRpYWxzV2l0aE9y
aWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6OmNsZWFyUGVyc2lz
dGVudENyZWRlbnRpYWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxT
dG9yYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3Jh
Z2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6b3JpZ2luc1dp
dGhQZXJzaXN0ZW50Q3JlZGVudGlhbHMpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0
b3JhZ2U6OnJlbW92ZVBlcnNpc3RlbnRDcmVkZW50aWFsc1dpdGhPcmlnaW5zKToKKyAgICAgICAg
KFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpjbGVhclBlcnNpc3RlbnRDcmVkZW50aWFscyk6
CisKIDIwMTktMDYtMTcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBGaXggaU9TIGNyYXNoIHdoZW4gc3RhcnRpbmcgbG9hZHMgd2l0aCBubyBh
Y3RpdmUgRG9jdW1lbnRMb2FkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2EyMmRkNDQxOTBlMWUxODUzNDZmYTk0
ZWVhMmE0ZmRjYTI2YWVmMS4uMjkxMjZhZWJjNWU5ZjMyZTFiMGI4MmEzYWUyMjQ4NjM5YzMxMjBk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxOS0wNi0xNyAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICAtW1dLV2Vic2l0ZURhdGFTdG9yZSByZW1vdmVE
YXRhT2ZUeXBlczptb2RpZmllZFNpbmNlOmNvbXBsZXRpb25IYW5kbGVyOl0gZG9lc24ndCBkZWxl
dGUgX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODg1NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTEzODYwNTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAg
ICAgQ2xlYXIgcGVyc2lzdGVudCBjcmVkZW50aWFscyBpbiBkZWxldGVXZWJzaXRlRGF0YSBvZiBu
ZXR3b3JrIHByb2Nlc3MuCisKKyAgICAgICAgQWxzbywgbWVyZ2Ugb3JpZ2luc1dpdGhQZXJzaXN0
ZW50Q3JlZGVudGlhbHMgYW5kIHJlbW92ZUNyZWRlbnRpYWxzV2l0aE9yaWdpbnMgaW50byBmZXRj
aFdlYnNpdGVEYXRhIGFuZAorICAgICAgICBkZWxldGVXZWJzaXRlRGF0YSwgYW5kIG1vdmUgY3Jl
ZGVudGlhbHMgaGFuZGxpbmcgdG8gV2ViQ29yZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZl
dGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vi
c2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Om9y
aWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnJlbW92ZUNyZWRlbnRpYWxzV2l0aE9yaWdpbnMpOiBEZWxldGVk
LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6Om9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlbW92ZUNyZWRlbnRpYWxz
V2l0aE9yaWdpbnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAoV2ViS2l0Ojpjb21wdXRlV2ViUHJvY2Vzc0Fj
Y2Vzc1R5cGVGb3JEYXRhUmVtb3ZhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnJlbW92ZURhdGEpOgorCiAyMDE5LTA2LTE3ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4IGFmdGVyIHIyNDY1MTQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3Rv
cmFnZS5jcHAKaW5kZXggOThlOTQyNmZjMjdhZGJiMmJiNjBiZWQ0NmRkNTY2N2ZhZjdjMzk2Mi4u
MGNiZjk0YjI4MDcwNDAyYWU3MWZiNTdhNjliODE3NzFkNjRjMGNlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKQEAg
LTE4Nyw0ICsxODcsMjEgQEAgdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6Y2xlYXJDcmVkZW50aWFs
cygpCiAgICAgbV9wYXRoVG9EZWZhdWx0UHJvdGVjdGlvblNwYWNlTWFwLmNsZWFyKCk7CiB9CiAK
KyNpZiAhUExBVEZPUk0oQ09DT0EpCitWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBDcmVkZW50
aWFsU3RvcmFnZTo6b3JpZ2luc1dpdGhQZXJzaXN0ZW50Q3JlZGVudGlhbHMoKQoreworICAgIHJl
dHVybiB7IH07Cit9CisKK3ZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnJlbW92ZVBlcnNpc3RlbnRD
cmVkZW50aWFsc1dpdGhPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JikK
K3sKKyAgICByZXR1cm47Cit9CisKK3ZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OmNsZWFyUGVyc2lz
dGVudENyZWRlbnRpYWxzKCkKK3sKKyAgICByZXR1cm47Cit9CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9DcmVkZW50aWFsU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
cmVkZW50aWFsU3RvcmFnZS5oCmluZGV4IGY4Yzc1YWU5MjlhYjJkNTQyNWEyNGE2MjY3Y2Q0Mjcz
OGQ3NWMwZDcuLmZmYjFlN2NhNTdmOTNhMTA4NzQ3ZDBlOTVjYzI2ZGFmMzkwMTNhMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdl
LmgKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAgIC8vIE9TIHBlcnNpc3RlbnQgc3RvcmFn
ZS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ3JlZGVudGlhbCBnZXRGcm9tUGVyc2lzdGVu
dFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnNXaXRoUGVyc2lzdGVudENyZWRl
bnRpYWxzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVtb3ZlUGVyc2lzdGVu
dENyZWRlbnRpYWxzV2l0aE9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4m
IG9yaWdpbnMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNsZWFyUGVyc2lzdGVu
dENyZWRlbnRpYWxzKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQ3JlZGVudGlh
bHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
Q3JlZGVudGlhbFN0b3JhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQppbmRleCA2NWI1MTUxMWY5YTliMmI4YjEyZjYz
ZWRhZTM2ZmVmMzVlNzZkMzljLi40N2ZmODJlYjNkOTVhZGVhMDI5ZDk5OTQyYzU1NWY1ODJhM2M5
MmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVk
ZW50aWFsU3RvcmFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQpAQCAtMzgsMTMgKzM4LDQ2IEBAIENyZWRlbnRp
YWwgQ3JlZGVudGlhbFN0b3JhZ2U6OmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90
ZWN0aW9uU3BhY2UmIHByCiAgICAgcmV0dXJuIGNyZWRlbnRpYWwgPyBDcmVkZW50aWFsKGNyZWRl
bnRpYWwpIDogQ3JlZGVudGlhbCgpOwogfQogCi1WZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiBDcmVkZW50aWFsU3RvcmFnZTo6b3JpZ2luc1dpdGhQZXJzaXN0ZW50Q3JlZGVudGlh
bHMoKQorVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gQ3JlZGVudGlhbFN0b3JhZ2U6Om9yaWdp
bnNXaXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKCkKIHsKLSAgICBWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOworICAgIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+
IG9yaWdpbnM7CiAgICAgYXV0byBhbGxDcmVkZW50aWFscyA9IFtbTlNVUkxDcmVkZW50aWFsU3Rv
cmFnZSBzaGFyZWRDcmVkZW50aWFsU3RvcmFnZV0gYWxsQ3JlZGVudGlhbHNdOwogICAgIGZvciAo
TlNVUkxQcm90ZWN0aW9uU3BhY2UqIGtleSBpbiBhbGxDcmVkZW50aWFscy5rZXlFbnVtZXJhdG9y
KQotICAgICAgICBvcmlnaW5zLmFwcGVuZChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgeyBT
dHJpbmcoa2V5LnByb3RvY29sKSwgU3RyaW5nKGtleS5ob3N0KSwga2V5LnBvcnQgfSk7CisgICAg
ICAgIG9yaWdpbnMuYXBwZW5kKFNlY3VyaXR5T3JpZ2luRGF0YSB7IFN0cmluZyhrZXkucHJvdG9j
b2wpLCBTdHJpbmcoa2V5Lmhvc3QpLCBrZXkucG9ydCB9KTsKICAgICByZXR1cm4gb3JpZ2luczsK
IH0KIAordm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6cmVtb3ZlUGVyc2lzdGVudENyZWRlbnRpYWxz
V2l0aE9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMpCit7
CisgICAgYXV0byBzaGFyZWRTdG9yYWdlID0gW05TVVJMQ3JlZGVudGlhbFN0b3JhZ2Ugc2hhcmVk
Q3JlZGVudGlhbFN0b3JhZ2VdOworICAgIGF1dG8gYWxsQ3JlZGVudGlhbHMgPSBbc2hhcmVkU3Rv
cmFnZSBhbGxDcmVkZW50aWFsc107CisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7
CisgICAgICAgIGZvciAoTlNVUkxQcm90ZWN0aW9uU3BhY2UqIHNwYWNlIGluIGFsbENyZWRlbnRp
YWxzKSB7CisgICAgICAgICAgICBpZiAob3JpZ2luLnByb3RvY29sID09IFN0cmluZyhzcGFjZS5w
cm90b2NvbCkKKyAgICAgICAgICAgICAgICAmJiBvcmlnaW4uaG9zdCA9PSBTdHJpbmcoc3BhY2Uu
aG9zdCkKKyAgICAgICAgICAgICAgICAmJiBvcmlnaW4ucG9ydAorICAgICAgICAgICAgICAgICYm
ICpvcmlnaW4ucG9ydCA9PSBzcGFjZS5wb3J0KSB7CisgICAgICAgICAgICAgICAgYXV0byBjcmVk
ZW50aWFscyA9IGFsbENyZWRlbnRpYWxzW3NwYWNlXTsKKyAgICAgICAgICAgICAgICBmb3IgKE5T
U3RyaW5nKiB1c2VyIGluIGNyZWRlbnRpYWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8g
Y3JlZGVudGlhbCA9IGNyZWRlbnRpYWxzW3VzZXJdOworICAgICAgICAgICAgICAgICAgICBbc2hh
cmVkU3RvcmFnZSByZW1vdmVDcmVkZW50aWFsOmNyZWRlbnRpYWwgZm9yUHJvdGVjdGlvblNwYWNl
OnNwYWNlIG9wdGlvbnM6QHsgTlNVUkxDcmVkZW50aWFsU3RvcmFnZVJlbW92ZVN5bmNocm9uaXph
YmxlQ3JlZGVudGlhbHMgOiBAWUVTIH1dOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6Y2xlYXJQ
ZXJzaXN0ZW50Q3JlZGVudGlhbHMoKQoreworICAgIGF1dG8gc2hhcmVkU3RvcmFnZSA9IFtOU1VS
TENyZWRlbnRpYWxTdG9yYWdlIHNoYXJlZENyZWRlbnRpYWxTdG9yYWdlXTsKKyAgICBhdXRvIGFs
bENyZWRlbnRpYWxzID0gW3NoYXJlZFN0b3JhZ2UgYWxsQ3JlZGVudGlhbHNdOworICAgIGZvciAo
TlNVUkxQcm90ZWN0aW9uU3BhY2UqIHNwYWNlIGluIGFsbENyZWRlbnRpYWxzLmtleUVudW1lcmF0
b3IpIHsKKyAgICAgICAgYXV0byBjcmVkZW50aWFscyA9IGFsbENyZWRlbnRpYWxzW3NwYWNlXTsK
KyAgICAgICAgZm9yIChOU1N0cmluZyogdXNlciBpbiBjcmVkZW50aWFscykgeworICAgICAgICAg
ICAgYXV0byBjcmVkZW50aWFsID0gY3JlZGVudGlhbHNbdXNlcl07CisgICAgICAgICAgICBbc2hh
cmVkU3RvcmFnZSByZW1vdmVDcmVkZW50aWFsOmNyZWRlbnRpYWwgZm9yUHJvdGVjdGlvblNwYWNl
OnNwYWNlIG9wdGlvbnM6QHsgTlNVUkxDcmVkZW50aWFsU3RvcmFnZVJlbW92ZVN5bmNocm9uaXph
YmxlQ3JlZGVudGlhbHMgOiBAWUVTIH1dOworICAgICAgICB9CisgICAgfQorfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCmluZGV4IGYyNWU3ZTYwMmQwOTY0NjUyZTY4MWY1M2FiMWVmOWI0Nzk3YmYy
ZWYuLjVkNjU1MDhlM2I1ZmQ2OWYyNTE3ZDBmMTdkZWU4ZmE0NzBjZWVhNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMjgyLDYg
KzEyODIsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXQKICAgICAgICAgICAgIGZvciAoYXV0
byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpCiAgICAgICAgICAgICAgICAgY2Fs
bGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgc2VjdXJpdHlP
cmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMsIDAgfSk7CiAgICAgICAgIH0KKyAg
ICAgICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgeworICAgICAgICAgICAgYXV0byBz
ZWN1cml0eU9yaWdpbnMgPSBXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6b3JpZ2luc1dpdGhQ
ZXJzaXN0ZW50Q3JlZGVudGlhbHMoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgc2VjdXJpdHlP
cmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpCisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgc2VjdXJpdHlPcmlnaW4sIFdlYnNp
dGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMsIDAgfSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBp
ZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkg
ewpAQCAtMTM1OSw2ICsxMzY0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkg
ewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
CiAgICAgICAgICAgICBzZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlh
bHMoKTsKKyAgICAgICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgICAg
IFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpjbGVhclBlcnNpc3RlbnRDcmVkZW50aWFscygp
OwogICAgIH0KIAogICAgIGF1dG8gY2xlYXJUYXNrc0hhbmRsZXIgPSBXVEY6OkNhbGxiYWNrQWdn
cmVnYXRvcjo6Y3JlYXRlKFt0aGlzLCBjYWxsYmFja0lEXSB7CkBAIC0xNDk2LDYgKzE1MDMsOCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5E
YXRhIDogb3JpZ2luRGF0YXMpCiAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+Y3JlZGVudGlhbFN0
b3JhZ2UoKS5yZW1vdmVDcmVkZW50aWFsc1dpdGhPcmlnaW4ob3JpZ2luRGF0YSk7CiAgICAgICAg
IH0KKyAgICAgICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgICAgIFdl
YkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpyZW1vdmVQZXJzaXN0ZW50Q3JlZGVudGlhbHNXaXRo
T3JpZ2lucyhvcmlnaW5EYXRhcyk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBz
dG9yYWdlIHF1b3RhIGNsZWFyaW5nIGZvciB0aGVzZSBvcmlnaW5zLgpAQCAtMjU0MSwxNiArMjU1
MCw2IEBAIFN0b3JhZ2VRdW90YU1hbmFnZXImIE5ldHdvcmtQcm9jZXNzOjpzdG9yYWdlUXVvdGFN
YW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JCiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0Ep
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpvcmlnaW5zV2l0aFBlcnNpc3RlbnRDcmVkZW50aWFscyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihWZWN0b3I8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPigpKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cmVtb3ZlQ3JlZGVudGlhbHNXaXRoT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotfQotCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzJikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAppbmRleCAwZTFkYWJkMDBlZTRjYTk0ZTIyYjJkMjVlMGMzMmZiYmM0
MDU0ZmRkLi5iNWQ2ZjBjOTQwODgwZTY3ZmMyZGM5NWQ1MDYyYjI1MTdhZjRkNjAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC00MzYsOSAr
NDM2LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdm9pZCBwbGF0Zm9ybVN5bmNBbGxDb29r
aWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0KLSAgICB2b2lkIG9yaWdpbnNXaXRo
UGVyc2lzdGVudENyZWRlbnRpYWxzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4pPiYmKTsKLSAgICB2b2lkIHJlbW92ZUNyZWRlbnRpYWxz
V2l0aE9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9y
aWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgCiAgICAgdm9pZCByZWdp
c3RlclVSTFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVn
aXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJp
bmcmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDZkMDYyNDA4M2Y3NWYzMzI3MjZhYjNmYjIx
ZGMxZDJjZmY5MGMyMWMuLjkxZmU2OWQ1N2EyYTM2ZGUyNDZjNDJhYjdkNzc4ZjJiZGEzZDk3OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTY4LDcgKzE2OCw1IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQ
cm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRBZENsaWNrQXR0cmlidXRpb25PdmVycmlk
ZVRpbWVyRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUpIC0+
ICgpIEFzeW5jCiAgICAgU2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsKSAtPiAoKSBBc3luYwogICAgIE1h
cmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpIC0+ICgpIEFzeW5jCi0gICAgT3JpZ2luc1dpdGhQZXJzaXN0ZW50Q3JlZGVudGlh
bHMoKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucykgQXN5
bmMKLSAgICBSZW1vdmVDcmVkZW50aWFsc1dpdGhPcmlnaW5zKFZlY3RvcjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpIC0+ICgpIEFzeW5jCiAgICAgR2V0TG9jYWxTdG9yYWdl
T3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChWZWN0b3I8V2ViS2l0
OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+IGRldGFpbHMpIEFz
eW5jCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtQcm9jZXNzQ29jb2EubW0KaW5kZXggYmRlZmU5ZTRmYTU5MDA2ZDVlYjU5N2JiN2Mw
NWQzNjFkZDc5MThhNi4uNWI1MmNhYmMwZDk5N2VjNTg5YTM3YTUwODljOTE0NWIyOGFlYWQzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJv
Y2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbQpAQCAtMjEyLDMxICsyMTIsNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjbGVhckRpc2tDYWNoZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2bwogICAgIH0pLmdldCgpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6b3JpZ2lu
c1dpdGhQZXJzaXN0ZW50Q3JlZGVudGlhbHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0g
ICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6Om9yaWdpbnNX
aXRoUGVyc2lzdGVudENyZWRlbnRpYWxzKCkpOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpy
ZW1vdmVDcmVkZW50aWFsc1dpdGhPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCi17Ci0gICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7Ci0gICAg
ICAgIGF1dG8gYWxsQ3JlZGVudGlhbHMgPSBbW05TVVJMQ3JlZGVudGlhbFN0b3JhZ2Ugc2hhcmVk
Q3JlZGVudGlhbFN0b3JhZ2VdIGFsbENyZWRlbnRpYWxzXTsKLSAgICAgICAgZm9yIChOU1VSTFBy
b3RlY3Rpb25TcGFjZSogc3BhY2UgaW4gYWxsQ3JlZGVudGlhbHMpIHsKLSAgICAgICAgICAgIGlm
IChvcmlnaW4ucHJvdG9jb2wgPT0gU3RyaW5nKHNwYWNlLnByb3RvY29sKQotICAgICAgICAgICAg
ICAgICYmIG9yaWdpbi5ob3N0ID09IFN0cmluZyhzcGFjZS5ob3N0KQotICAgICAgICAgICAgICAg
ICYmIG9yaWdpbi5wb3J0Ci0gICAgICAgICAgICAgICAgJiYgKm9yaWdpbi5wb3J0ID09IHNwYWNl
LnBvcnQpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGNyZWRlbnRpYWxzID0gYWxsQ3JlZGVudGlh
bHNbc3BhY2VdOwotICAgICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcqIHVzZXIgaW4gY3JlZGVu
dGlhbHMpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBjcmVkZW50aWFsID0gY3JlZGVudGlh
bHNbdXNlcl07Ci0gICAgICAgICAgICAgICAgICAgIFtbTlNVUkxDcmVkZW50aWFsU3RvcmFnZSBz
aGFyZWRDcmVkZW50aWFsU3RvcmFnZV0gcmVtb3ZlQ3JlZGVudGlhbDpjcmVkZW50aWFsIGZvclBy
b3RlY3Rpb25TcGFjZTpzcGFjZV07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci19Ci0KICNpZiBQTEFU
Rk9STShNQUMpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaGFyZWRIVFRQQ29va2llU3RvcmFn
ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGlkZW50aWZpZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmlu
ZGV4IDhiYzA4MDVlMjUyNTdhYWNlMjljN2FkMGRmMmQ2OTU5ZjZiNDMxNDQuLjNkYjg5M2M5NzY3
NTBkNGQ1NTRmYzkxMzgwZjI1ZWM4YTdmY2VjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC01MTYs
MjQgKzUxNiw2IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAgICAgICAgIH0pOwogICAgIH0K
IAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpDcmVkZW50aWFscykgJiYgaXNQZXJzaXN0ZW50KCkpIHsKLSAgICAgICAgZm9y
IChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgICAgICBpZiAo
IXByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRp
bmdDYWxsYmFjaygpOwotICAgICAgICAgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiBjb21wbGV0aW9uSGFuZGxlciA9
IFtjYWxsYmFja0FnZ3JlZ2F0b3JdKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
JiYgb3JpZ2lucykgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0
ZURhdGE7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQotICAg
ICAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6
RW50cnkgeyBvcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMsIDAgfSk7Ci0gICAg
ICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soV1RG
TW92ZSh3ZWJzaXRlRGF0YSkpOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHByb2Nlc3NQ
b29sLT5uZXR3b3JrUHJvY2VzcygpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpPcmlnaW5zV2l0aFBlcnNpc3RlbnRDcmVkZW50aWFscygpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLQogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpQbHVnSW5EYXRhKSAmJiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAgICBjbGFz
cyBTdGF0ZSB7CkBAIC02NDAsOSArNjIyLDYgQEAgc3RhdGljIFByb2Nlc3NBY2Nlc3NUeXBlIGNv
bXB1dGVXZWJQcm9jZXNzQWNjZXNzVHlwZUZvckRhdGFSZW1vdmFsKE9wdGlvblNldDxXZWIKICAg
ICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUpKQog
ICAgICAgICBwcm9jZXNzQWNjZXNzVHlwZSA9IHN0ZDo6bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQ
cm9jZXNzQWNjZXNzVHlwZTo6T25seUlmTGF1bmNoZWQpOwogCi0gICAgaWYgKGRhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkKLSAgICAgICAgcHJvY2Vzc0Fj
Y2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6
Ok9ubHlJZkxhdW5jaGVkKTsKLQogICAgIHJldHVybiBwcm9jZXNzQWNjZXNzVHlwZTsKIH0KIApA
QCAtMTA4OSwxOSArMTA2OCw2IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIGNvbnN0IFZlCiAgICAgICAgIH0p
OwogICAgIH0KIAotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpD
cmVkZW50aWFscykgJiYgaXNQZXJzaXN0ZW50KCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBwcm9j
ZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgICAgICBpZiAoIXByb2Nlc3NQb29s
LT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygp
OwotICAgICAgICAgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25I
YW5kbGVyID0gW2NhbGxiYWNrQWdncmVnYXRvcl0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAg
ICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjaygpOwotICAgICAgICAg
ICAgfTsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpLT5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZW1vdmVDcmVkZW50aWFsc1dp
dGhPcmlnaW5zKG9yaWdpbnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBpZiAoZGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UGx1Z0luRGF0YSkgJiYgaXNQZXJzaXN0
ZW50KCkpIHsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gaG9zdE5hbWVzOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU4Y2E3OWY3YzM3OTkxMWEx
ZGI0ODk2YjY3Yjc4MTNiOGEzNjgyMjIuLmY1Zjk0MGI5MGEyYWFhY2ViOTYzMjVlOGNhNGI5NTU1
Y2I3MzEyNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wNi0xNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFw
cGxlLmNvbT4KKworICAgICAgICAtW1dLV2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBl
czptb2RpZmllZFNpbmNlOmNvbXBsZXRpb25IYW5kbGVyOl0gZG9lc24ndCBkZWxldGUgX1dLV2Vi
c2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5ODg1NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTEzODYwNTg+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE5LTA2LTE3ICBBZHJpYW4gUGVyZXogZGUg
Q2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0ZsYXRwYWtdW0pIQnVpbGRd
IFVwZGF0ZSBidWlsZCBlbnZpcm9ubWVudHMgdG8gdXNlIFdQRUJhY2tlbmQtZmRvIDEuMy4xCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0
ZURhdGFzdG9yZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tX
ZWJzaXRlRGF0YXN0b3JlLm1tCmluZGV4IGY5Nzg3ODgwZTI3NGYzNDYxZmZjNmZkNmE0NTQ1MjQ5
OWQyM2RjZDMuLjFlMGIxZjRkNTkwNzczNTU0ODE0NjA3MDg5YWI5N2MwNjQ4YzBkNjggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0
YXN0b3JlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tX
ZWJzaXRlRGF0YXN0b3JlLm1tCkBAIC0yNTIsNiArMjUyLDUxIEBAIFRFU1QoV0tXZWJzaXRlRGF0
YVN0b3JlLCBSZW1vdmVQZXJzaXN0ZW50Q3JlZGVudGlhbHMpCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKIH0KIAorVEVTVChXS1dlYnNpdGVEYXRhU3RvcmUsIFJlbW92ZUFs
bFBlcnNpc3RlbnRDcmVkZW50aWFscykKK3sKKyAgICB1c2VQZXJzaXN0ZW50Q3JlZGVudGlhbFN0
b3JhZ2UgPSB0cnVlOworCisgICAgVENQU2VydmVyIHNlcnZlcihyZXNwb25kV2l0aENoYWxsZW5n
ZVRoZW5PSyk7CisgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9y
ZSBkZWZhdWx0RGF0YVN0b3JlXTsKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tOYXZpZ2F0aW9uVGVzdERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpu
YXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV1d
OworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwor
CisgICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgZmV0
Y2hEYXRhUmVjb3Jkc09mVHlwZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFU
eXBlQ3JlZGVudGlhbHNdIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRh
UmVjb3JkICo+ICpkYXRhUmVjb3JkcykgeworICAgICAgICBib29sIGZvdW5kUmVjb3JkID0gZmFs
c2U7CisgICAgICAgIGZvciAoV0tXZWJzaXRlRGF0YVJlY29yZCAqcmVjb3JkIGluIGRhdGFSZWNv
cmRzKSB7CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBbcmVjb3JkIGRpc3BsYXlOYW1lXTsKKyAg
ICAgICAgICAgIGlmIChbbmFtZSBpc0VxdWFsVG9TdHJpbmc6QCIxMjcuMC4wLjEiXSkKKyAgICAg
ICAgICAgICAgICBmb3VuZFJlY29yZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgRVhQRUNU
X1RSVUUoZm91bmRSZWNvcmQpOworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKwor
ICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIHJlbW92
ZURhdGFPZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUNyZWRl
bnRpYWxzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5k
bGVyOl4oKSB7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworICAgIAorICAgIHJl
YWR5VG9Db250aW51ZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJl
Y29yZHNPZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUNyZWRl
bnRpYWxzXSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAq
PiAqZGF0YVJlY29yZHMpIHsKKyAgICAgICAgYm9vbCBmb3VuZFJlY29yZCA9IGZhbHNlOworICAg
ICAgICBmb3IgKFdLV2Vic2l0ZURhdGFSZWNvcmQgKnJlY29yZCBpbiBkYXRhUmVjb3Jkcykgewor
ICAgICAgICAgICAgYXV0byBuYW1lID0gW3JlY29yZCBkaXNwbGF5TmFtZV07CisgICAgICAgICAg
ICBpZiAoW25hbWUgaXNFcXVhbFRvU3RyaW5nOkAiMTI3LjAuMC4xIl0pCisgICAgICAgICAgICAg
ICAgZm91bmRSZWNvcmQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIEVYUEVDVF9GQUxTRShm
b3VuZFJlY29yZCk7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworfQorCiBURVNU
KFdLV2Vic2l0ZURhdGFTdG9yZSwgUmVtb3ZlTm9uUGVyc2lzdGVudENyZWRlbnRpYWxzKQogewog
ICAgIFRDUFNlcnZlciBzZXJ2ZXIocmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0spOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>