<?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>193458</bug_id>
          
          <creation_ts>2019-01-15 13:03:25 -0800</creation_ts>
          <short_desc>Resolve confusion between HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain and HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain</short_desc>
          <delta_ts>2020-07-08 07:52:21 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=191645</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=195140</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=213954</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>aperez</cc>
    
    <cc>basuke</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>chris.reid</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1494772</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-15 13:03:25 -0800</bug_when>
    <thetext>WKCookieManager.h declares these WKHTTPCookieAcceptPolicy:

enum {
    kWKHTTPCookieAcceptPolicyAlways = 0,
    kWKHTTPCookieAcceptPolicyNever = 1,
    kWKHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain = 2,
    kWKHTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain = 3
};

I asked Jon Wilander about the distinction between AcceptPolicyOnlyFromMainDocumentDomain and kWKHTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain. He says:

&quot;&quot;&quot;AcceptPolicyOnlyFromMainDocumentDomain is the default policy on Cocoa platforms and it means third-party resource loads (differing eTLD+1) cannot read or write cookies unless they have pre-existing cookies. This effectively means the eTLD+1 needs to become a top frame resource to seed its cookie jar before it can use it as third-party.

AcceptPolicyExclusivelyFromMainDocumentDomain means only first-party cookies.&quot;&quot;&quot;

GTK and WPE expose an WebKitCookieAcceptPolicy enum with values WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS, WEBKIT_COOKIE_POLICY_ACCEPT_NEVER, and WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY. Internally, it is implemented by converting from WebKitCookieAcceptPolicy to WKHTTPCookieAcceptPolicy. The conversion for the always/never policies are obvious. WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY is converted to kWKHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain. However, the behavior it implements actually matches kWKHTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain. So libsoup&apos;s kWKHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain is actually equivalent to Cocoa&apos;s kWKHTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain, and libsoup ports have no equivalent to Cocoa&apos;s kWKHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain. This sort of unexpected platform-specific differences from seemingly cross-platform code is why we wind up with strange platform-specific bugs, so we should fix it.

Now, each of our three WebKitCookieAcceptPolicys corresponds to a SoupCookieJarAcceptPolicy: SOUP_COOKIE_JAR_ACCEPT_ALWAYS, SOUP_COOKIE_JAR_ACCEPT_NEVER, and SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY. I actually wrote a libsoup patch a year ago to change the behavior of SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY to match Cocoa&apos;s kWKHTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain, but never landed it. We should resurrect that, except we should do it as a new SoupCookieJarAcceptPolicy instead of modifying the behavior of the existing policy. Then we should expose a new, corresponding WebKitCookieAcceptPolicy, and change Epiphany to use it. And lastly, we should change toWebKitCookieAcceptPolicy and toHTTPCookieAcceptPolicy in WebKit/UIProcess/API/glib/WebKitCookieManager.cpp so that WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY corresponds to HTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain instead of HTTPCookieAcceptPolicyOnlyFromMainDocumentDomain, and have the new WebKitCookieAcceptPolicy correspond to HTTPCookieAcceptPolicyOnlyFromMainDocumentDomain.

Finally, we should consider renaming HTTPCookieAcceptPolicyOnlyFromMainDocumentDomain or HTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain if possible. These are private APIs on all ports, but Mac system applications sometimes use private APIs, so only Apple can determine if it&apos;s possible to do a rename.

CC: Basuke and Christopher, since you might want to investigate what curl ports are doing here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494796</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-15 13:47:34 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #0)
&gt; I actually wrote a libsoup patch a year ago to change the behavior of
&gt; SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY to match Cocoa&apos;s
&gt; kWKHTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain, but never landed
&gt; it. We should resurrect that, except we should do it as a new
&gt; SoupCookieJarAcceptPolicy instead of modifying the behavior of the existing
&gt; policy.

Here is that old patch: https://bug792130.bugzilla-attachments.gnome.org/attachment.cgi?id=366620</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510764</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-27 18:36:31 -0800</bug_when>
    <thetext>Note I have libsoup switch from HTTPCookieAcceptPolicyOnlyFromMainDocumentDomain to HTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain in bug #195140, so that will at least avoid the strange platform-specific difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550597</commentid>
    <comment_count>3</comment_count>
      <attachid>373558</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-05 18:23:57 -0700</bug_when>
    <thetext>Created attachment 373558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550598</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-05 18:24:54 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #2)
&gt; Note I have libsoup switch from
&gt; HTTPCookieAcceptPolicyOnlyFromMainDocumentDomain to
&gt; HTTPCookieAcceptPolicyExclusivelyFromMainDocumentDomain in bug #195140, so
&gt; that will at least avoid the strange platform-specific difference.

Resolved here instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550599</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-05 18:26:41 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551121</commentid>
    <comment_count>6</comment_count>
      <attachid>373558</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2019-07-08 19:46:35 -0700</bug_when>
    <thetext>Comment on attachment 373558
Patch

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

&gt; Source/WebCore/platform/network/curl/CookieJarDB.h:-42
&gt; -

We agree to the basic concept of this bug, but we still need this definition for WK1. It&apos;s not good idea to refer WK2 definitions from Legacy, isn&apos;t it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551223</commentid>
    <comment_count>7</comment_count>
      <attachid>373558</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-09 07:50:38 -0700</bug_when>
    <thetext>Comment on attachment 373558
Patch

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

Oh, I see EWS is sad.

&gt;&gt; Source/WebCore/platform/network/curl/CookieJarDB.h:-42
&gt;&gt; -
&gt; 
&gt; We agree to the basic concept of this bug, but we still need this definition for WK1. It&apos;s not good idea to refer WK2 definitions from Legacy, isn&apos;t it?

You&apos;re right. I thought it was a WebCore type, but it&apos;s not. That&apos;s why the WinCairo build is failing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551430</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-09 14:25:34 -0700</bug_when>
    <thetext>For macOS/iOS the problem is I missed that NSHTTPCookieAcceptPolicy and CFHTTPCookieStorageAcceptPolicy are different. CFHTTPCookieStorageAcceptPolicy is ours, and I changed it properly, but we can&apos;t change NSHTTPCookieAcceptPolicy because that is a system API:

https://developer.apple.com/documentation/foundation/nshttpcookieacceptpolicy?language=objc

Its values are NSHTTPCookieAcceptPolicyAlways, NSHTTPCookieAcceptPolicyNever, and NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain. This means that it&apos;s silly to rename HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain to HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomainAndGrandfatheredDomains while keeping HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain, because then the WebKit enum values will no longer match NSHTTPCookieAcceptPolicy. I will think about the best way to resolve this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669746</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-07-08 07:52:21 -0700</bug_when>
    <thetext>Soup ports are brought into line with Apple ports in bug #213954, so now the only remaining problem is that the enum names are confusing. Since NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain is an Apple platform API, we should leave OnlyFromMainDocumentDomain unchanged. I think we can simply rename ExclusivelyFromMainDocumentDomain to, say, OnlyFromMainDocumentDomainWithoutGrandfathering. It&apos;s verbose, but way more clear.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373558</attachid>
            <date>2019-07-05 18:23:57 -0700</date>
            <delta_ts>2019-07-09 07:50:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193458-20190705202356.patch</filename>
            <type>text/plain</type>
            <size>33632</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTU2MzM4ZDIxMzJmMWY4
MDU0MzI5OTlhOTRhNTJlY2QwMzU1NjcyMi4uYTc5YTRkNTc1YmI2MmVkNWE0Nzk3OTkxMDcxODI4
Y2I3ZTU2MmYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE5LTA3LTA1ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBSZXNvbHZl
IGNvbmZ1c2lvbiBiZXR3ZWVuIEhUVFBDb29raWVBY2NlcHRQb2xpY3k6Ok9ubHlGcm9tTWFpbkRv
Y3VtZW50RG9tYWluIGFuZCBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpFeGNsdXNpdmVseUZyb21N
YWluRG9jdW1lbnREb21haW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MzQ1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEN1cnJlbnRseSB3ZSBoYXZlIHR3byBkaWZmZXJlbnQgSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSBlbnVtIHZhbHVlcyB3aXRoIGFsbW9zdCBpZGVudGljYWwKKyAgICAgICAgbmFtZXM6
IEhUVFBDb29raWVBY2NlcHRQb2xpY3k6Ok9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluIGFuZAor
ICAgICAgICBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpFeGNsdXNpdmVseUZyb21NYWluRG9jdW1l
bnREb21haW4uIEEgcGxhaW4gRW5nbGlzaCBtZWFuaW5nIG9mIHRoZXNlCisgICAgICAgIG5hbWVz
IHdvdWxkIGluZGljYXRlIHRoYXQgdGhlIHBvbGljaWVzIGFyZSBpZGVudGljYWwsIGJ1dCB0aGV5
IGFyZSBub3QuCisgICAgICAgIE9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluIHNlZW1zIGxpa2Ug
aXQgbWVhbnMgIm5vIHRoaXJkLXBhcnR5IGNvb2tpZXMsIiBidXQgaXQgYWN0dWFsbHkKKyAgICAg
ICAgbWVhbnMgIm5vIHRoaXJkLXBhcnR5IGNvb2tpZXMgdW5sZXNzIGZyb20gYSBkb21haW4gdGhh
dCBoYXMgcHJldmlvdXNseSBzZXQgY29va2llcywiIGUuZy4gYQorICAgICAgICBkb21haW4gdGhh
dCBoYXMgcHJldmlvdXNseSBiZWVuIHZpc2l0ZWQgaW4gYSBmaXJzdC1wYXJ0eSBjb250ZXh0LiBJ
biBjb250cmFzdCwKKyAgICAgICAgRXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluIGFj
dHVhbGx5IHJlYWxseSBtZWFucyBubyB0aGlyZC1wYXJ0eSBjb29raWVzIHBlcmlvZC4gVGhpcwor
ICAgICAgICBpcyBub3QgZ29vZC4KKworICAgICAgICBFeGNlcHQgdGhlIGFib3ZlIGlzIG9ubHkg
dHJ1ZSBmb3IgdGhlIENvY29hIGFuZCBDdXJsIGJhY2tlbmRzLiBGb3IgbGlic291cCwKKyAgICAg
ICAgT25seUZyb21NYWluRG9jdW1lbnREb21haW4gbWVhbnMgbm8gdGhpcmQtcGFydHkgY29va2ll
cyBwZXJpb2QsIHRoZSBzYW1lIHdheQorICAgICAgICBFeGNsdXNpdmVseUZvbU1haW5Eb2N1bWVu
dERvbWFpbiB3b3JrcyBmb3IgdGhlIG90aGVyIHBvcnRzLCBhbmQKKyAgICAgICAgRXhjbHVzaXZl
bHlGcm9tTWFpbkRvY3VtZW50RG9tYWluIGlzIHVuaW1wbGVtZW50ZWQuIFRoaXMgcGF0Y2ggZml4
ZXMgdGhpcyBpbmNvbnNpc3RlbmN5IGJ5CisgICAgICAgIHN3YXBwaW5nIHRoZSBzb3VwIGJhY2tl
bmQncyB1c2Ugb2YgT25seUZyb21NYWluRG9jdW1lbnREb21haW4gaW4gZmF2b3Igb2YKKyAgICAg
ICAgRXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluLCBsZWF2aW5nIE9ubHlGcm9tTWFp
bkRvY3VtZW50RG9tYWluIHVuaW1wbGVtZW50ZWQgaW5zdGVhZC4KKworICAgICAgICBOb3csIHRv
IHByb3Blcmx5IHJlc29sdmUgdGhlIGNvbmZ1c2lvbiBiZXR3ZWVuIHRoZXNlIGVudW0gdmFsdWVz
LCB3ZSBhbHNvIG5lZWQgdG8gcmVuYW1lCisgICAgICAgIE9ubHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluIHRvIHJlZmxlY3Qgd2hhdCBpdCBhY3R1YWxseSBkb2VzLiBVbmZvcnR1bmF0ZWx5LCBpdCBp
cyBkaWZmaWN1bHQKKyAgICAgICAgdG8gdGhpbmsgb2YgYSBtZWFuaW5nZnVsIHNob3J0IG5hbWUs
IHNvIHRoaXMgaXMgYSBiaXQgbGVuZ3RoeSwgYnV0CisgICAgICAgIE9ubHlGcm9tTWFpbkRvY3Vt
ZW50RG9tYWluQW5kR3JhbmRmYXRoZXJlZERvbWFpbnMgaXMgYWNjdXJhdGUgYW5kIHNob3J0ZXIg
dGhhbiBhbHRlcm5hdGl2ZXMKKyAgICAgICAgbGlrZSBPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFp
bkFuZERvbWFpbnNUaGF0SGF2ZVNldENvb2tpZXNCZWZvcmUgKHVnaCkuIEluIHRoaXMgY2FzZSwg
SQorICAgICAgICBkZWNpZGVkIHJlYWRhYmlsaXR5IHRydW1wcyBicmV2aXR5LiBJdCdzIG1vcmUg
aW1wb3J0YW50IGZvciBwcm9ncmFtbWVycyB0byBrbm93IHdoYXQgdGhlCisgICAgICAgIHBvbGlj
eSBhY3R1YWxseSBkb2VzLgorCisgICAgICAgIEkgYWxzbyByZW1vdmVkIHRoZSBjdXJsIGJhY2tl
bmQncyBzZXBhcmF0ZSBDb29raWVBY2NlcHRQb2xpY3kgZW51bSwgc2luY2UgaXQncyBpZGVudGlj
YWwgdG8KKyAgICAgICAgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBhbmQgbm90IGRvaW5nIGFueXRo
aW5nLiBJdCdzIG5vdCBwYXJ0IG9mIGFueSBwdWJsaWMgQVBJIGFuZCBjYW4KKyAgICAgICAgYWx3
YXlzIGJlIHJlc3RvcmVkIGluIHRoZSBmdXR1cmUgaWYgaXQgd291bGQgZXZlciBiZSB1c2VmdWws
IGJ1dCBpdCdzIG5vdCB1c2VmdWwgbm93LgorCisgICAgICAgIEZpbmFsbHksIG5vdGUgdGhhdCBJ
IGxlZnQgdHdvIHJlZmVyZW5jZXMgdG8gT25seUZyb21NYWluRG9jdW1lbnREb21haW4gdW5jaGFu
Z2VkIGluCisgICAgICAgIFdlYktpdExlZ2FjeS93aW4sIGJlY2F1c2UgdGhleSBhcHBlYXJlZCB0
byBiZSBwdWJsaWMgQVBJLCBpbiBJV2ViUHJlZmVyZW5jZXMuaWRsIGFuZCBpbgorICAgICAgICBX
ZWJQcmVmZXJlbmNlc0tleXNQcml2YXRlLmguIFRoZXNlIGxlZnQgbWUgcXVpdGUgY29uZnVzZWQs
IHRob3VnaCwgYmVjYXVzZSBpdCBkb2Vzbid0CisgICAgICAgIGFwcGVhciB0aGF0IHRoaXMgQVBJ
IGlzIGFjdHVhbGx5IGltcGxlbWVudGVkIGFueXdoZXJlLiBBdCBsZWFzdCwgSSBkb24ndCBzZWUg
YW55IGFjdHVhbAorICAgICAgICBwcmVmZXJlbmNlcyBiYWNraW5nIGl0LiBBdCBhbnkgcmF0ZSwg
SSBkYXJlIG5vdCBjaGFuZ2UgaXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0VuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNFbmFibGVkIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29va2llSmFyREI6OmlzRW5hYmxlZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb29raWVKYXJEQjo6Y2hlY2tDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oOgorICAgICAgICAoV2ViQ29yZTo6Q29v
a2llSmFyREI6OnNldEFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJE
Qjo6YWNjZXB0UG9saWN5IGNvbnN0KToKKwogMjAxOS0wNy0wNSAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+IGFuZCBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFRyaWdnZXIgYSBjb21wb3NpdGluZyB1cGRhdGUgd2hlbiB2aWRlbyBlbGVt
ZW50IGlzIGNoYW5naW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA0NDA2ODExZjZlYjczOTgyYTQ1
NjE3NWQ1ZDU3MWU3NGMzMzYxMjJkLi43MDA3NGRhODNkYzk0OTVkOGU3MGJiMDljMjc5ODMxZmM3
Yzk1YzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0wNy0wNSAg
TWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmVz
b2x2ZSBjb25mdXNpb24gYmV0d2VlbiBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpPbmx5RnJvbU1h
aW5Eb2N1bWVudERvbWFpbiBhbmQgSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6RXhjbHVzaXZlbHlG
cm9tTWFpbkRvY3VtZW50RG9tYWluCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTM0NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisKIDIwMTktMDctMDUg
IFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjI0NzE1OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWNlM2JlNGI0ZmRkNDYwZTk0MDNk
ODBkMTMxMTY0NGM0ZGYyZmE4YS4uMjM0ZTFmMzIzMjA1MWRlOWVjZjgzZTY0NWMwNDVjMGVkNDU5
OTE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxOS0wNy0wNSAgTWljaGFlbCBDYXRh
bnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmVzb2x2ZSBjb25mdXNp
b24gYmV0d2VlbiBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpPbmx5RnJvbU1haW5Eb2N1bWVudERv
bWFpbiBhbmQgSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3Vt
ZW50RG9tYWluCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTM0NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvY3VybC9XZWJDb29raWVNYW5hZ2VyQ3VybC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OnBsYXRmb3JtU2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OnBsYXRm
b3JtR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q29va2llcy9tYWMvV2ViQ29va2llTWFuYWdlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6dG9D
RkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlcjo6cGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpwbGF0Zm9ybVNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpwbGF0Zm9y
bUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIFNoYXJlZC9IVFRQQ29va2ll
QWNjZXB0UG9saWN5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgor
ICAgICAgICAoV2ViS2l0Ojp0b0hUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2Vi
S2l0Ojp0b0FQSSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAg
ICAgKHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAodG9XZWJLaXRDb29raWVBY2Nl
cHRQb2xpY3kpOgorICAgICAgICAodG9IVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKwogMjAxOS0wNy0wNSAgTWljaGFlbCBDYXRh
bnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4
IC1Xc3dpdGNoIHdhcm5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAwNzk3ZGIw
YWFjMjZjOTAyY2EyNGM1NTZkYmJkNjkzN2E1ODI3OTczLi44ZTBhMmE0ZTcwNTBjY2QzM2Y2ZTRj
MmY2ODJjYzhkYjIyMTM3ZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTktMDctMDUgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2Fs
aWEuY29tPgorCisgICAgICAgIFJlc29sdmUgY29uZnVzaW9uIGJldHdlZW4gSFRUUENvb2tpZUFj
Y2VwdFBvbGljeTo6T25seUZyb21NYWluRG9jdW1lbnREb21haW4gYW5kIEhUVFBDb29raWVBY2Nl
cHRQb2xpY3k6OkV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFpbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNDU4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVu
Y2VzLm1tOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc3luY2hyb25pemVXZWJTdG9yYWdl
UG9saWN5V2l0aENvb2tpZVBvbGljeV0pOgorCiAyMDE5LTA3LTAzICBTYW0gV2VpbmlnICA8d2Vp
bmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9wdCBzaW1wbGUgc3RydWN0dXJlZCBiaW5kaW5n
cyBpbiBtb3JlIHBsYWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y2YvQ0ZOZXR3b3JrU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdv
cmtTUEkuaAppbmRleCBlMDU1NDI1YWJhYjZmM2IxOTBmYTQ0ZGY0NzZkNzIxODUyY2FhYTU0Li41
OGYyMDQ2ZDQzYWE2MTAyZTM2NWViMThkMTNlYjhjNmEzOWZiMjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaApAQCAtMTA1LDcgKzEwNSw3IEBAIENG
X0VOVU0oQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeSkKIHsKICAgICBDRkhUVFBDb29r
aWVTdG9yYWdlQWNjZXB0UG9saWN5QWx3YXlzID0gMCwKICAgICBDRkhUVFBDb29raWVTdG9yYWdl
QWNjZXB0UG9saWN5TmV2ZXIgPSAxLAotICAgIENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xp
Y3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiA9IDIsCisgICAgQ0ZIVFRQQ29va2llU3RvcmFn
ZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluQW5kR3JhbmRmYXRoZXJlZERv
bWFpbnMgPSAyLAogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lFeGNsdXNpdmVs
eUZyb21NYWluRG9jdW1lbnREb21haW4gPSAzLAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNGTmV0V2luLmNwcAppbmRleCAzMzBhYTYwODY2MTQwYjI0ZDliNzA1MjM4M2E4MWNlY2Y5
MGI5OWY2Li41ZjU3YTIzOTNmYjRmYThkMjIxMzRlZDRkYTU1Mjc0OGY1ZDMyOTMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNGTmV0V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uCiBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
c0VuYWJsZWQoKSBjb25zdAogewogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kg
cG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFnZUdldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVT
dG9yYWdlKCkuZ2V0KCkpOwotICAgIHJldHVybiBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFn
ZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluIHx8IHBvbGljeSA9PSBDRkhU
VFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluIHx8IHBvbGljeSA9PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5QWx3YXlzOwor
ICAgIHJldHVybiBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeU9ubHlG
cm9tTWFpbkRvY3VtZW50RG9tYWluQW5kR3JhbmRmYXRoZXJlZERvbWFpbnMgfHwgcG9saWN5ID09
IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1l
bnREb21haW4gfHwgcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lBbHdh
eXM7CiB9CiAKIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNvY29hLm1tCmluZGV4IDg0YjczYjgzNDRiMGNhYjVhOTA0OGI0ODVlZmIxNzZkNWQz
NDA1ODEuLjk2ZmRlYmJmYzg2ODI5MzhiNTRmMWQzMjU2ODA1YjZmOTU2MGY1ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtNDM3LDcgKzQzNyw3IEBAIGJvb2wg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRW5hYmxlZCgpIGNvbnN0CiAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCiAgICAgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5IGNv
b2tpZUFjY2VwdFBvbGljeSA9IGh0dHBDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZSgp
LmdldCgpKTsKLSAgICByZXR1cm4gY29va2llQWNjZXB0UG9saWN5ID09IE5TSFRUUENvb2tpZUFj
Y2VwdFBvbGljeUFsd2F5cyB8fCBjb29raWVBY2NlcHRQb2xpY3kgPT0gTlNIVFRQQ29va2llQWNj
ZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4gfHwgY29va2llQWNjZXB0UG9saWN5
ID09IE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERv
bWFpbjsKKyAgICByZXR1cm4gY29va2llQWNjZXB0UG9saWN5ID09IE5TSFRUUENvb2tpZUFjY2Vw
dFBvbGljeUFsd2F5cyB8fCBjb29raWVBY2NlcHRQb2xpY3kgPT0gTlNIVFRQQ29va2llQWNjZXB0
UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW5BbmRHcmFuZGZhdGhlcmVkRG9tYWlucyB8
fCBjb29raWVBY2NlcHRQb2xpY3kgPT0gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVzaXZl
bHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCBhNDVhNWY0ZTRhMDI4ZmU2ZTdmMmRm
Yjc1ZWMyYzhhZWM5M2VkMmJiLi5iODQ3YWQwZGM1NTQ1YWYzN2MzY2ZjNzI4NzY5YjNiZGNkNjY1
MjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJEQi5jcHAKQEAgLTMwNywxNiArMzA3LDE2IEBAIGJvb2wgQ29va2llSmFyREI6Omlz
RW5hYmxlZCgpIGNvbnN0CiAgICAgaWYgKG1fZGF0YWJhc2VQYXRoLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIChtX2FjY2VwdFBvbGljeSA9PSBDb29raWVB
Y2NlcHRQb2xpY3k6OkFsd2F5cyB8fCBtX2FjY2VwdFBvbGljeSA9PSBDb29raWVBY2NlcHRQb2xp
Y3k6Ok9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluIHx8IG1fYWNjZXB0UG9saWN5ID09IENvb2tp
ZUFjY2VwdFBvbGljeTo6RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKTsKKyAgICBy
ZXR1cm4gKG1fYWNjZXB0UG9saWN5ID09IENvb2tpZUFjY2VwdFBvbGljeTo6QWx3YXlzIHx8IG1f
YWNjZXB0UG9saWN5ID09IENvb2tpZUFjY2VwdFBvbGljeTo6T25seUZyb21NYWluRG9jdW1lbnRE
b21haW5BbmRHcmFuZGZhdGhlcmVkRG9tYWlucyB8fCBtX2FjY2VwdFBvbGljeSA9PSBDb29raWVB
Y2NlcHRQb2xpY3k6OkV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFpbik7CiB9CiAKIGJv
b2wgQ29va2llSmFyREI6OmNoZWNrQ29va2llQWNjZXB0UG9saWN5KGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgaWYgKG1fYWNjZXB0UG9saWN5ID09IENvb2tp
ZUFjY2VwdFBvbGljeTo6QWx3YXlzKQorICAgIGlmIChtX2FjY2VwdFBvbGljeSA9PSBDb29raWVB
Y2NlcHRQb2xpY3k6OkFsd2F5c0FjY2VwdCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAv
LyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzQ1OCNjMAot
ICAgIGlmIChtX2FjY2VwdFBvbGljeSAhPSBDb29raWVBY2NlcHRQb2xpY3k6Ok9ubHlGcm9tTWFp
bkRvY3VtZW50RG9tYWluICYmIG1fYWNjZXB0UG9saWN5ICE9IENvb2tpZUFjY2VwdFBvbGljeTo6
RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKQorICAgIGlmIChtX2FjY2VwdFBvbGlj
eSAhPSBDb29raWVBY2NlcHRQb2xpY3k6Ok9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluQW5kR3Jh
bmRmYXRoZXJlZERvbWFpbnMgJiYgbV9hY2NlcHRQb2xpY3kgIT0gQ29va2llQWNjZXB0UG9saWN5
OjpFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnREb21haW4pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmIChmaXJzdFBhcnR5Lmhvc3QoKSA9PSB1cmwuaG9zdCgpKQpAQCAtMzI2LDcg
KzMyNiw3IEBAIGJvb2wgQ29va2llSmFyREI6OmNoZWNrQ29va2llQWNjZXB0UG9saWN5KGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgLy8gdGhpcmQtcGFydHkgcmVzb3VyY2VzIGNhbiByZWFkIG9yIHdyaXRlIGNvb2tpZXMg
aWYgdGhleSBoYXZlIHByZS1leGlzdGluZyBjb29raWVzLgotICAgIGlmIChtX2FjY2VwdFBvbGlj
eSA9PSBDb29raWVBY2NlcHRQb2xpY3k6Ok9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluICYmIGhh
c0Nvb2tpZXModXJsKSkKKyAgICBpZiAobV9hY2NlcHRQb2xpY3kgPT0gQ29va2llQWNjZXB0UG9s
aWN5OjpPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbkFuZEdyYW5kZmF0aGVyZWREb21haW5zICYm
IGhhc0Nvb2tpZXModXJsKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyREIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJEQi5oCmluZGV4IDBjMDNlOWQ2OTJjN2Y2ZGM2MTMwODZmZjI1NWMyMGU1YzZiYmU5ZTkuLjg2
MDhhZGYwOGZkMDFiMzNhZjc0MTc4NzZjNjg1ZWI0YWFhNTg0MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCkBAIC0yNSw2ICsy
NSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgorI2luY2x1ZGUgIkhU
VFBDb29raWVBY2NlcHRQb2xpY3kuaCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgogI2lu
Y2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0z
MywxMyArMzQsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgQ29va2ll
QWNjZXB0UG9saWN5IHsKLSAgICBBbHdheXMsCi0gICAgTmV2ZXIsCi0gICAgT25seUZyb21NYWlu
RG9jdW1lbnREb21haW4sCi0gICAgRXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluCi19
OwotCiBjbGFzcyBDb29raWVKYXJEQiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29va2ll
SmFyREIpOwogCkBAIC01Miw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIG9wZW4oKTsKICAg
ICBib29sIGlzRW5hYmxlZCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRBY2NlcHRQb2xpY3koQ29v
a2llQWNjZXB0UG9saWN5IHBvbGljeSkgeyBtX2FjY2VwdFBvbGljeSA9IHBvbGljeTsgfQotICAg
IENvb2tpZUFjY2VwdFBvbGljeSBhY2NlcHRQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2FjY2Vw
dFBvbGljeTsgfQorICAgIHZvaWQgc2V0QWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgcG9saWN5KSB7IG1fYWNjZXB0UG9saWN5ID0gcG9saWN5OyB9CisgICAgSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSBhY2NlcHRQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2FjY2VwdFBvbGljeTsg
fQogCiAgICAgT3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IHNlYXJjaENvb2tpZXMoY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHJlcXVlc3RVcmwsIGNvbnN0IE9wdGlvbmFsPGJvb2w+
JiBodHRwT25seSwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHNlY3VyZSwgY29uc3QgT3B0aW9uYWw8
Ym9vbD4mIHNlc3Npb24pOwogICAgIGJvb2wgc2V0Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWUsIFNvdXJjZSk7CkBAIC02Nyw3ICs2
MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB+Q29va2llSmFyREIoKTsKIAogcHJp
dmF0ZToKLSAgICBDb29raWVBY2NlcHRQb2xpY3kgbV9hY2NlcHRQb2xpY3kgeyBDb29raWVBY2Nl
cHRQb2xpY3k6OkFsd2F5cyB9OworICAgIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgbV9hY2NlcHRQ
b2xpY3kgeyBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpBbHdheXNBY2NlcHQgfTsKICAgICBTdHJp
bmcgbV9kYXRhYmFzZVBhdGg7CiAKICAgICBib29sIG1fZGV0ZWN0ZWREYXRhYmFzZUNvcnJ1cHRp
b24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
b29raWVzL2N1cmwvV2ViQ29va2llTWFuYWdlckN1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Db29raWVzL2N1cmwvV2ViQ29va2llTWFuYWdlckN1cmwuY3BwCmluZGV4IDgw
ZjNiNDk0YjU1Mzk2ZTgzNTVjOGRlZDQ4YmY2OGZiOTg5M2M1OWEuLjk1NzkxNGJhN2YzOGQ2MTE1
M2IzYWNlZjc0Y2IyYTFlMGU5YWQxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ29va2llcy9jdXJsL1dlYkNvb2tpZU1hbmFnZXJDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvY3VybC9XZWJDb29raWVNYW5hZ2VyQ3Vy
bC5jcHAKQEAgLTM1LDQzICszNSwxNSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9p
ZCBXZWJDb29raWVNYW5hZ2VyOjpwbGF0Zm9ybVNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRU
UENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCiB7Ci0gICAgQ29va2llQWNjZXB0UG9saWN5IGN1
cmxQb2xpY3kgPSBDb29raWVBY2NlcHRQb2xpY3k6Ok9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWlu
OwotICAgIHN3aXRjaCAocG9saWN5KSB7Ci0gICAgY2FzZSBIVFRQQ29va2llQWNjZXB0UG9saWN5
OjpBbHdheXNBY2NlcHQ6Ci0gICAgICAgIGN1cmxQb2xpY3kgPSBDb29raWVBY2NlcHRQb2xpY3k6
OkFsd2F5czsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVFRQQ29va2llQWNjZXB0UG9saWN5
OjpOZXZlcjoKLSAgICAgICAgY3VybFBvbGljeSA9IENvb2tpZUFjY2VwdFBvbGljeTo6TmV2ZXI7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6T25seUZy
b21NYWluRG9jdW1lbnREb21haW46Ci0gICAgICAgIGN1cmxQb2xpY3kgPSBDb29raWVBY2NlcHRQ
b2xpY3k6Ok9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEhUVFBDb29raWVBY2NlcHRQb2xpY3k6OkV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERv
bWFpbjoKLSAgICAgICAgY3VybFBvbGljeSA9IENvb2tpZUFjY2VwdFBvbGljeTo6RXhjbHVzaXZl
bHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBt
X3Byb2Nlc3MuZm9yRWFjaE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihbY3VybFBvbGljeV0gKGNvbnN0
IGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbikgewotICAgICAgICBuZXR3b3JrU3RvcmFnZVNl
c3Npb24uY29va2llU3RvcmFnZSgpLnNldENvb2tpZUFjY2VwdFBvbGljeShuZXR3b3JrU3RvcmFn
ZVNlc3Npb24sIGN1cmxQb2xpY3kpOworICAgIG1fcHJvY2Vzcy5mb3JFYWNoTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKFtwb2xpY3ldIChjb25zdCBhdXRvJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24pIHsK
KyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5zZXRDb29raWVB
Y2NlcHRQb2xpY3kobmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBwb2xpY3kpOwogICAgIH0pOwogfQog
CiBIVFRQQ29va2llQWNjZXB0UG9saWN5IFdlYkNvb2tpZU1hbmFnZXI6OnBsYXRmb3JtR2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeSgpCiB7CiAgICAgY29uc3QgYXV0byYgbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gbV9wcm9jZXNzLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwotICAgIHN3aXRjaCAo
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5jb29raWVBY2NlcHRQb2xpY3ko
bmV0d29ya1N0b3JhZ2VTZXNzaW9uKSkgewotICAgIGNhc2UgQ29va2llQWNjZXB0UG9saWN5OjpB
bHdheXM6Ci0gICAgICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpBbHdheXNBY2Nl
cHQ7Ci0gICAgY2FzZSBDb29raWVBY2NlcHRQb2xpY3k6Ok5ldmVyOgotICAgICAgICByZXR1cm4g
SFRUUENvb2tpZUFjY2VwdFBvbGljeTo6TmV2ZXI7Ci0gICAgY2FzZSBDb29raWVBY2NlcHRQb2xp
Y3k6Ok9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOgotICAgICAgICByZXR1cm4gSFRUUENvb2tp
ZUFjY2VwdFBvbGljeTo6T25seUZyb21NYWluRG9jdW1lbnREb21haW47Ci0gICAgY2FzZSBDb29r
aWVBY2NlcHRQb2xpY3k6OkV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjoKLSAgICAg
ICAgcmV0dXJuIEhUVFBDb29raWVBY2NlcHRQb2xpY3k6OkV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1
bWVudERvbWFpbjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6T25seUZyb21NYWluRG9jdW1lbnREb21haW47Cisg
ICAgcmV0dXJuIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuY29va2llQWNj
ZXB0UG9saWN5KG5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL21h
Yy9XZWJDb29raWVNYW5hZ2VyTWFjLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
b29raWVzL21hYy9XZWJDb29raWVNYW5hZ2VyTWFjLm1tCmluZGV4IGVlNDZhZTVkYzc0NmNmNTJk
ZmM4NWIwMjM2NTkwY2Q4NGU2YTdjMjMuLjRiMDM1NGZhMjkyNzVkOGE3MjhhMjg0MzkzMDZmODU0
MDhjMDY5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2ll
cy9tYWMvV2ViQ29va2llTWFuYWdlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Nvb2tpZXMvbWFjL1dlYkNvb2tpZU1hbmFnZXJNYWMubW0KQEAgLTQyLDggKzQyLDgg
QEAgc3RhdGljIENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgdG9DRkhUVFBDb29raWVT
dG9yYWdlQWNjZXB0UG9saWN5KEhUVFBDb28KICAgICAgICAgcmV0dXJuIENGSFRUUENvb2tpZVN0
b3JhZ2VBY2NlcHRQb2xpY3lBbHdheXM7CiAgICAgY2FzZSBIVFRQQ29va2llQWNjZXB0UG9saWN5
OjpOZXZlcjoKICAgICAgICAgcmV0dXJuIENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lO
ZXZlcjsKLSAgICBjYXNlIEhUVFBDb29raWVBY2NlcHRQb2xpY3k6Ok9ubHlGcm9tTWFpbkRvY3Vt
ZW50RG9tYWluOgotICAgICAgICByZXR1cm4gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGlj
eU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOworICAgIGNhc2UgSFRUUENvb2tpZUFjY2VwdFBv
bGljeTo6T25seUZyb21NYWluRG9jdW1lbnREb21haW5BbmRHcmFuZGZhdGhlcmVkRG9tYWluczoK
KyAgICAgICAgcmV0dXJuIENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1h
aW5Eb2N1bWVudERvbWFpbkFuZEdyYW5kZmF0aGVyZWREb21haW5zOwogICAgIGNhc2UgSFRUUENv
b2tpZUFjY2VwdFBvbGljeTo6RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOgogICAg
ICAgICByZXR1cm4gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJv
bU1haW5Eb2N1bWVudERvbWFpbjsKICAgICB9CkBAIC03MSw4ICs3MSw4IEBAIEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kgV2ViQ29va2llTWFuYWdlcjo6cGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KCkKICAgICBzd2l0Y2ggKFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29v
a2llU3RvcmFnZV0gY29va2llQWNjZXB0UG9saWN5XSkgewogICAgIGNhc2UgTlNIVFRQQ29va2ll
QWNjZXB0UG9saWN5QWx3YXlzOgogICAgICAgICByZXR1cm4gSFRUUENvb2tpZUFjY2VwdFBvbGlj
eTo6QWx3YXlzQWNjZXB0OwotICAgIGNhc2UgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZy
b21NYWluRG9jdW1lbnREb21haW46Ci0gICAgICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9s
aWN5OjpPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKKyAgICBjYXNlIE5TSFRUUENvb2tpZUFj
Y2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluQW5kR3JhbmRmYXRoZXJlZERvbWFp
bnM6CisgICAgICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpPbmx5RnJvbU1haW5E
b2N1bWVudERvbWFpbkFuZEdyYW5kZmF0aGVyZWREb21haW5zOwogICAgIGNhc2UgTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOgogICAgICAg
ICByZXR1cm4gSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3Vt
ZW50RG9tYWluOwogICAgIGNhc2UgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29r
aWVNYW5hZ2VyU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMv
c291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKaW5kZXggMjhjYWIyMDg5NGFkOTIwMzRlMzJm
ZTZmZGI5ZjllMTU2YWY2NzdhYS4uMzQ0ZTFmMTkwMTdlZGQ4ZWRiN2U5NGExYmY1NTg0ZWZiODFm
ZjZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL3Nv
dXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcApAQCAtNDcsMTAgKzQ3
LDEwIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6cGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kKICAgICBjYXNlIEhUVFBDb29raWVBY2NlcHRQ
b2xpY3k6Ok5ldmVyOgogICAgICAgICBzb3VwUG9saWN5ID0gU09VUF9DT09LSUVfSkFSX0FDQ0VQ
VF9ORVZFUjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVFRQQ29va2llQWNjZXB0UG9saWN5
OjpPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjoKKyAgICBjYXNlIEhUVFBDb29raWVBY2NlcHRQ
b2xpY3k6OkV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjoKICAgICAgICAgc291cFBv
bGljeSA9IFNPVVBfQ09PS0lFX0pBUl9BQ0NFUFRfTk9fVEhJUkRfUEFSVFk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6RXhjbHVzaXZlbHlGcm9tTWFp
bkRvY3VtZW50RG9tYWluOgorICAgIGNhc2UgSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6T25seUZy
b21NYWluRG9jdW1lbnREb21haW5BbmRHcmFuZGZhdGhlcmVkRG9tYWluczoKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTY4LDExICs2OCwx
MSBAQCBIVFRQQ29va2llQWNjZXB0UG9saWN5IFdlYkNvb2tpZU1hbmFnZXI6OnBsYXRmb3JtR2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpCiAgICAgY2FzZSBTT1VQX0NPT0tJRV9KQVJfQUNDRVBU
X05FVkVSOgogICAgICAgICByZXR1cm4gSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6TmV2ZXI7CiAg
ICAgY2FzZSBTT1VQX0NPT0tJRV9KQVJfQUNDRVBUX05PX1RISVJEX1BBUlRZOgotICAgICAgICBy
ZXR1cm4gSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6T25seUZyb21NYWluRG9jdW1lbnREb21haW47
CisgICAgICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpFeGNsdXNpdmVseUZyb21N
YWluRG9jdW1lbnREb21haW47CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIEhUVFBDb29raWVBY2NlcHRQb2xpY3k6Ok9ubHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluOworICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpPbmx5RnJvbU1haW5Eb2N1
bWVudERvbWFpbkFuZEdyYW5kZmF0aGVyZWREb21haW5zOwogfQogCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXI6OnNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCwgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdl
VHlwZSBzdG9yYWdlVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0hUVFBD
b29raWVBY2NlcHRQb2xpY3kuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0hUVFBDb29raWVBY2Nl
cHRQb2xpY3kuaAppbmRleCA0NTdjMjM0NGM5Yzg5ODZmZjZlMjMyMzMwNWEyODQzM2Q4NmVhMGVi
Li5iNDM1NDRkZDZiOWJmMjQwZDEzMmFmNjUwZTcwNzJiYTkyNjNiNmY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9IVFRQQ29va2llQWNjZXB0UG9saWN5LmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oCkBAIC0zMCw3ICszMCw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogZW51bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDog
dWludDhfdCB7CiAgICAgQWx3YXlzQWNjZXB0ID0gMCwKICAgICBOZXZlciA9IDEsCi0gICAgT25s
eUZyb21NYWluRG9jdW1lbnREb21haW4gPSAyLAorICAgIE9ubHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluQW5kR3JhbmRmYXRoZXJlZERvbWFpbnMgPSAyLAogICAgIEV4Y2x1c2l2ZWx5RnJvbU1haW5E
b2N1bWVudERvbWFpbiA9IDMsCiB9OwogCkBAIC00Myw3ICs0Myw3IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5PiB7CiAgICAgICAg
IFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSwKICAgICAgICAgV2ViS2l0OjpIVFRQQ29v
a2llQWNjZXB0UG9saWN5OjpBbHdheXNBY2NlcHQsCiAgICAgICAgIFdlYktpdDo6SFRUUENvb2tp
ZUFjY2VwdFBvbGljeTo6TmV2ZXIsCi0gICAgICAgIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBv
bGljeTo6T25seUZyb21NYWluRG9jdW1lbnREb21haW4sCisgICAgICAgIFdlYktpdDo6SFRUUENv
b2tpZUFjY2VwdFBvbGljeTo6T25seUZyb21NYWluRG9jdW1lbnREb21haW5BbmRHcmFuZGZhdGhl
cmVkRG9tYWlucywKICAgICAgICAgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5OjpFeGNs
dXNpdmVseUZyb21NYWluRG9jdW1lbnREb21haW4KICAgICA+OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKaW5kZXggNTE3Mzc1NTk0OGRkNDE1ZTI3YTVmNzNl
YTQ3MmZhYzgwOTViZWIxOS4uN2Y4Y2U4MTFkNjUwZmE1MDkxMmVhNGE4OTQ2OTAyMzkwMmI5OGE3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKQEAgLTM3Miw4
ICszNzIsOCBAQCBpbmxpbmUgSFRUUENvb2tpZUFjY2VwdFBvbGljeSB0b0hUVFBDb29raWVBY2Nl
cHRQb2xpY3koV0tIVFRQQ29va2llQWNjZXB0UG9saWN5CiAgICAgICAgIHJldHVybiBIVFRQQ29v
a2llQWNjZXB0UG9saWN5OjpBbHdheXNBY2NlcHQ7CiAgICAgY2FzZSBrV0tIVFRQQ29va2llQWNj
ZXB0UG9saWN5TmV2ZXI6CiAgICAgICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpO
ZXZlcjsKLSAgICBjYXNlIGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1
bWVudERvbWFpbjoKLSAgICAgICAgcmV0dXJuIEhUVFBDb29raWVBY2NlcHRQb2xpY3k6Ok9ubHlG
cm9tTWFpbkRvY3VtZW50RG9tYWluOworICAgIGNhc2Uga1dLSFRUUENvb2tpZUFjY2VwdFBvbGlj
eU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluQW5kR3JhbmRmYXRoZXJlZERvbWFpbnM6CisgICAg
ICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpPbmx5RnJvbU1haW5Eb2N1bWVudERv
bWFpbkFuZEdyYW5kZmF0aGVyZWREb21haW5zOwogICAgIGNhc2Uga1dLSFRUUENvb2tpZUFjY2Vw
dFBvbGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjoKICAgICAgICAgcmV0dXJu
IEhUVFBDb29raWVBY2NlcHRQb2xpY3k6OkV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFp
bjsKICAgICB9CkBAIC0zODksOCArMzg5LDggQEAgaW5saW5lIFdLSFRUUENvb2tpZUFjY2VwdFBv
bGljeSB0b0FQSShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkKICAgICAgICAgcmV0dXJu
IGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXM7CiAgICAgY2FzZSBIVFRQQ29va2llQWNj
ZXB0UG9saWN5OjpOZXZlcjoKICAgICAgICAgcmV0dXJuIGtXS0hUVFBDb29raWVBY2NlcHRQb2xp
Y3lOZXZlcjsKLSAgICBjYXNlIEhUVFBDb29raWVBY2NlcHRQb2xpY3k6Ok9ubHlGcm9tTWFpbkRv
Y3VtZW50RG9tYWluOgotICAgICAgICByZXR1cm4ga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeU9u
bHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOworICAgIGNhc2UgSFRUUENvb2tpZUFjY2VwdFBvbGlj
eTo6T25seUZyb21NYWluRG9jdW1lbnREb21haW5BbmRHcmFuZGZhdGhlcmVkRG9tYWluczoKKyAg
ICAgICAgcmV0dXJuIGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVu
dERvbWFpbkFuZEdyYW5kZmF0aGVyZWREb21haW5zOwogICAgIGNhc2UgSFRUUENvb2tpZUFjY2Vw
dFBvbGljeTo6RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOgogICAgICAgICByZXR1
cm4ga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERv
bWFpbjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0Nvb2tpZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2ll
TWFuYWdlci5oCmluZGV4IDczMzU0ZDJjYmE0ZWRmOTdiOWE1NzkyMGNkNDViYzc3NDI1MmJhYTUu
Ljk1ODQzMjg5N2FmYWNkYTY2ODNmYzlhMjUyMDJlYTk4ZTA0YTUwZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5oCkBAIC0zNSw3ICszNSw3
IEBAIGV4dGVybiAiQyIgewogZW51bSB7CiAgICAga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeUFs
d2F5cyA9IDAsCiAgICAga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyID0gMSwKLSAgICBr
V0tIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4gPSAyLAor
ICAgIGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbkFu
ZEdyYW5kZmF0aGVyZWREb21haW5zID0gMiwKICAgICBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5
RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluID0gMwogfTsKIHR5cGVkZWYgdWludDMy
X3QgV0tIVFRQQ29va2llQWNjZXB0UG9saWN5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCBjMDZlMWFmYjMzZmZhMzE4Yjdl
MjlkZmRjNGYwNjc5NTdhODM4YmYyLi5iNDA5NGZmZjMzMjExOWRjYTkzMDBlNTI2Y2Q2MjI3NjIz
MTg3MDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbQpAQCAtMjEwLDggKzIxMCw4IEBAIHN0YXRpYyBXZWJLaXQ6OkhUVFBDb29r
aWVBY2NlcHRQb2xpY3kgdG9IVFRQQ29va2llQWNjZXB0UG9saWN5KE5TSFRUUENvb2tpZUFjY2Vw
CiAgICAgICAgIHJldHVybiBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3k6OkFsd2F5c0Fj
Y2VwdDsKICAgICBjYXNlIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOgogICAgICAgICBy
ZXR1cm4gV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5OjpOZXZlcjsKLSAgICBjYXNlIE5T
SFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOgotICAgICAg
ICByZXR1cm4gV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5OjpPbmx5RnJvbU1haW5Eb2N1
bWVudERvbWFpbjsKKyAgICBjYXNlIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFp
bkRvY3VtZW50RG9tYWluQW5kR3JhbmRmYXRoZXJlZERvbWFpbnM6CisgICAgICAgIHJldHVybiBX
ZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3k6Ok9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWlu
QW5kR3JhbmRmYXRoZXJlZERvbWFpbnM7CiAgICAgY2FzZSBOU0hUVFBDb29raWVBY2NlcHRQb2xp
Y3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnREb21haW46CiAgICAgICAgIHJldHVybiBXZWJL
aXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3k6OkV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERv
bWFpbjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCmluZGV4IDgzMjdhZTkzMDg0ZjlkMWU3MjYwY2Zk
Y2YxNWI1YmNmMWMxNzk5YTAuLjA5M2IyZDdiYTA4N2ZlNDFhMDJjZjhjOWZiY2YyMTMyNzkyMzIy
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENv
b2tpZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdENvb2tpZU1hbmFnZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyBpbmxpbmUgV2Vi
S2l0Q29va2llQWNjZXB0UG9saWN5IHRvV2ViS2l0Q29va2llQWNjZXB0UG9saWN5KEhUVFBDb29r
aWVBY2NlCiAgICAgICAgIHJldHVybiBXRUJLSVRfQ09PS0lFX1BPTElDWV9BQ0NFUFRfQUxXQVlT
OwogICAgIGNhc2UgSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6TmV2ZXI6CiAgICAgICAgIHJldHVy
biBXRUJLSVRfQ09PS0lFX1BPTElDWV9BQ0NFUFRfTkVWRVI7Ci0gICAgY2FzZSBIVFRQQ29va2ll
QWNjZXB0UG9saWN5OjpPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjoKKyAgICBjYXNlIEhUVFBD
b29raWVBY2NlcHRQb2xpY3k6OkV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjoKICAg
ICAgICAgcmV0dXJuIFdFQktJVF9DT09LSUVfUE9MSUNZX0FDQ0VQVF9OT19USElSRF9QQVJUWTsK
ICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTExMCw3ICsx
MTAsNyBAQCBzdGF0aWMgaW5saW5lIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgdG9IVFRQQ29va2ll
QWNjZXB0UG9saWN5KFdlYktpdENvb2tpZUFjY2VwdAogICAgIGNhc2UgV0VCS0lUX0NPT0tJRV9Q
T0xJQ1lfQUNDRVBUX05FVkVSOgogICAgICAgICByZXR1cm4gSFRUUENvb2tpZUFjY2VwdFBvbGlj
eTo6TmV2ZXI7CiAgICAgY2FzZSBXRUJLSVRfQ09PS0lFX1BPTElDWV9BQ0NFUFRfTk9fVEhJUkRf
UEFSVFk6Ci0gICAgICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpPbmx5RnJvbU1h
aW5Eb2N1bWVudERvbWFpbjsKKyAgICAgICAgcmV0dXJuIEhUVFBDb29raWVBY2NlcHRQb2xpY3k6
OkV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKICAgICBkZWZhdWx0OgogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEhUVFBDb29raWVBY2NlcHRQ
b2xpY3k6OkFsd2F5c0FjY2VwdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCmluZGV4IDk5NjkxMTJkNjliM2MzOGM0MmM5ZjdhNjBhOTNhMmNjY2QxMGU0NTMuLmM5NmU3
MjA3NzZmMjBmM2I0OGUzZjViNDRkNDE1ODZlNTU0NmRiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNjgyLDcgKzY4Miw3IEBAIHByaXZhdGU6CiAgICAg
V2ViQ29udGV4dFN1cHBsZW1lbnRNYXAgbV9zdXBwbGVtZW50czsKIAogI2lmIFVTRShTT1VQKQot
ICAgIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSB7IEhUVFBDb29raWVBY2NlcHRQb2xpY3k6Ok9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluIH07
CisgICAgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBtX2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9s
aWN5IHsgSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50
RG9tYWluIH07CiAgICAgV2ViQ29yZTo6U291cE5ldHdvcmtQcm94eVNldHRpbmdzIG1fbmV0d29y
a1Byb3h5U2V0dGluZ3M7CiAjZW5kaWYKICAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
cy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0K
aW5kZXggZWM5MTMyNzY5MTQ4ZmE3MDA4YjFjNDliMjcxOGNjZDI2MjQ0YjA4ZC4uYTY1YzJkZTM1
NjRjNGJhNjc0NmY1YTIwNmVmZDg5MzEwMWIwOGQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCkBAIC0yNjAzLDcgKzI2MDMsNyBA
QCAtICh2b2lkKV9zeW5jaHJvbml6ZVdlYlN0b3JhZ2VQb2xpY3lXaXRoQ29va2llUG9saWN5CiAg
ICAgY2FzZSBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXM6CiAgICAgICAgIHN0b3JhZ2VC
bG9ja2luZ1BvbGljeSA9IFdlYkFsbG93QWxsU3RvcmFnZTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjoK
KyAgICBjYXNlIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluQW5kR3JhbmRmYXRoZXJlZERvbWFpbnM6CiAgICAgY2FzZSBOU0hUVFBDb29raWVBY2NlcHRQ
b2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnREb21haW46CiAgICAgICAgIHN0b3JhZ2VC
bG9ja2luZ1BvbGljeSA9IFdlYkJsb2NrVGhpcmRQYXJ0eVN0b3JhZ2U7CiAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdl
MDZkYzI4NDFiZThkOWM4YmIyMjQ3OWZhYTI4ZTkyYTM1YjlhMmYuLmE4MmY2MjlkMTQwNmNlYzVl
OGFhZTQxNmE3ZjNhNDAxMDU2ODg0ZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOS0wNy0wNSAgTWljaGFlbCBD
YXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmVzb2x2ZSBjb25m
dXNpb24gYmV0d2VlbiBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpPbmx5RnJvbU1haW5Eb2N1bWVu
dERvbWFpbiBhbmQgSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6RXhjbHVzaXZlbHlGcm9tTWFpbkRv
Y3VtZW50RG9tYWluCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTM0NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHJl
c2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0QWx3
YXlzQWNjZXB0Q29va2llcyk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRPbmx5QWNjZXB0Rmly
c3RQYXJ0eUNvb2tpZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9u
b3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjppbnZv
a2UpOgorCiAyMDE5LTA3LTA1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtpT1NdIENyYXNoIGluIFdlYktpdDo6V2ViUGFnZTo6cG9zaXRpb25JbmZvcm1hdGlv
biB2aWEgUmFuZ2U6OnN0YXJ0UG9zaXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbQppbmRleCA2NjYwYzMyZDkyMTVhMmM3MzcxN2Q5YzMzNmZiYjc4MDEyNmVm
ZjVlLi44MGFlOTdhYTBlZjgyZDZlYzAxYzUyODIxODQ2ODUwNDA1OTNmMzgzIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0xMDAwLDcgKzEwMDAsNyBA
QCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCkKICAg
ICBwcmVmZXJlbmNlcy5zZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCA9IFlF
UzsKIAogICAgIFtXZWJQcmVmZXJlbmNlcyBfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbl07Ci0g
ICAgW1dlYlByZWZlcmVuY2VzIF9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVB
Y2NlcHRQb2xpY3k6TlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnRE
b21haW5dOworICAgIFtXZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNz
aW9uQ29va2llQWNjZXB0UG9saWN5Ok5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFp
bkRvY3VtZW50RG9tYWluQW5kR3JhbmRmYXRoZXJlZERvbWFpbnNdOwogfQogCiBzdGF0aWMgdm9p
ZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRp
b25zKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCBjMDFi
ZGE1NjZlNTFiZmFhNmYwNzliMTEyOTQ1Zjk1NjJlZmMxNjE1Li5lNWY2MzdmZWQ5ZjAxNzdjMzk1
YzJjNTkyZDg5MWZjY2E5MTNkZDdlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbQpAQCAtMzk4LDcgKzM5OCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QWx3YXlz
QWNjZXB0Q29va2llcyhib29sIGFsd2F5c0FjY2VwdENvb2tpZXMpCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fYWx3YXlzQWNjZXB0Q29va2llcyA9IGFsd2F5c0FjY2VwdENvb2tpZXM7Ci0gICAg
TlNIVFRQQ29va2llQWNjZXB0UG9saWN5IGNvb2tpZUFjY2VwdFBvbGljeSA9IGFsd2F5c0FjY2Vw
dENvb2tpZXMgPyBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXMgOiBOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKKyAgICBOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5ID0gYWx3YXlzQWNjZXB0Q29va2llcyA/IE5T
SFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5cyA6IE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9u
bHlGcm9tTWFpbkRvY3VtZW50RG9tYWluQW5kR3JhbmRmYXRoZXJlZERvbWFpbnM7CiAgICAgW1dl
YlByZWZlcmVuY2VzIF9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQ
b2xpY3k6Y29va2llQWNjZXB0UG9saWN5XTsKIH0KIApAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0T25seUFjY2VwdEZpcnN0UGFydHlDb29raWVzKGJvb2wgb25seUFjY2Vw
dEZpcnN0UGFydHlDb29raWVzCiAgICAgaWYgKG9ubHlBY2NlcHRGaXJzdFBhcnR5Q29va2llcykK
ICAgICAgICAgbV9hbHdheXNBY2NlcHRDb29raWVzID0gTk87CiAKLSAgICBOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5ID0gb25seUFjY2VwdEZpcnN0UGFydHlDb29r
aWVzID8gc3RhdGljX2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9saWN5PihOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnREb21haW4pIDogTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW47CisgICAgTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5IGNvb2tpZUFjY2VwdFBvbGljeSA9IG9ubHlBY2NlcHRGaXJzdFBhcnR5
Q29va2llcyA/IHN0YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeT4oTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKSA6IE5TSFRU
UENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluQW5kR3JhbmRmYXRo
ZXJlZERvbWFpbnM7CiAgICAgW1dlYlByZWZlcmVuY2VzIF9zZXRDdXJyZW50TmV0d29ya0xvYWRl
clNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6Y29va2llQWNjZXB0UG9saWN5XTsKIH0KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBiZmFjMTkyMzM0YzM2
MmUxNzc0YTdiZWRmNzcyN2M2M2MxNjYyODBiLi4xZTIwNDEyZjAzOWFjZWQwNTM0ZjNjZDNjODI5
ODlkYzRiNzJmOWQxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cApAQCAtMjA5MiwxMyArMjA5MiwxMyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZl
U3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmCiAKICAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldEFsd2F5c0Fj
Y2VwdENvb2tpZXMiKSkgewogICAgICAgICBXS0Jvb2xlYW5SZWYgYWNjZXB0ID0gc3RhdGljX2Nh
c3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSk7Ci0gICAgICAgIFdLSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSBwb2xpY3kgPSBXS0Jvb2xlYW5HZXRWYWx1ZShhY2NlcHQpID8ga1dLSFRUUENvb2tp
ZUFjY2VwdFBvbGljeUFsd2F5cyA6IGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1h
aW5Eb2N1bWVudERvbWFpbjsKKyAgICAgICAgV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGlj
eSA9IFdLQm9vbGVhbkdldFZhbHVlKGFjY2VwdCkgPyBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5
QWx3YXlzIDoga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluQW5kR3JhbmRmYXRoZXJlZERvbWFpbnM7CiAgICAgICAgIHJldHVybiBzZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHBvbGljeSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0K
IAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0
T25seUFjY2VwdEZpcnN0UGFydHlDb29raWVzIikpIHsKICAgICAgICAgV0tCb29sZWFuUmVmIGFj
Y2VwdCA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpOwotICAgICAgICBX
S0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5ID0gV0tCb29sZWFuR2V0VmFsdWUoYWNjZXB0
KSA/IGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnRE
b21haW4gOiBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21h
aW47CisgICAgICAgIFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kgPSBXS0Jvb2xlYW5H
ZXRWYWx1ZShhY2NlcHQpID8ga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJv
bU1haW5Eb2N1bWVudERvbWFpbiA6IGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1h
aW5Eb2N1bWVudERvbWFpbkFuZEdyYW5kZmF0aGVyZWREb21haW5zOwogICAgICAgICByZXR1cm4g
c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAK
aW5kZXggYzRkNzdiODU5M2EwY2M3YTZjYWRkOWIyNmZlMTBjMjZmOTY2NzQwZS4uYzI0OGI2MTM4
ZWU0NWFkNzU4M2U4YzIwNTdjODA3MmYzZDM0YzZkYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFRlc3RJbnZvY2F0
aW9uOjppbnZva2UoKQogCiAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFNob3Vs
ZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3Moc2hvdWxkTG9nSGlzdG9yeUNsaWVudENhbGxiYWNr
cygpKTsKIAotICAgIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tD
b250ZXh0R2V0Q29va2llTWFuYWdlcihUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4
dCgpKSwga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWlu
LCBudWxscHRyLCBudWxscHRyKTsKKyAgICBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIoVGVzdENvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLmNvbnRleHQoKSksIGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5E
b2N1bWVudERvbWFpbkFuZEdyYW5kZmF0aGVyZWREb21haW5zLCBudWxscHRyLCBudWxscHRyKTsK
IAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2xlYXIgb3V0IHZpc2l0ZWQgbGlua3MgaGVyZS4K
IAo=
</data>
<flag name="review"
          id="389334"
          type_id="1"
          status="-"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>