<?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>198960</bug_id>
          
          <creation_ts>2019-06-18 05:44:03 -0700</creation_ts>
          <short_desc>Introduce LinkLoadParameters</short_desc>
          <delta_ts>2023-08-07 16:00:16 -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>Page Loading</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=231150</see_also>
          <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="Rob Buis">rbuis</reporter>
          <assigned_to name="Rob Buis">rbuis</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1545592</commentid>
    <comment_count>0</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2019-06-18 05:44:03 -0700</bug_when>
    <thetext>LinkLoader methods have too many parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545594</commentid>
    <comment_count>1</comment_count>
      <attachid>372335</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2019-06-18 05:48:46 -0700</bug_when>
    <thetext>Created attachment 372335
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545609</commentid>
    <comment_count>2</comment_count>
      <attachid>372338</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2019-06-18 07:55:56 -0700</bug_when>
    <thetext>Created attachment 372338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545624</commentid>
    <comment_count>3</comment_count>
      <attachid>372338</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-06-18 08:56:45 -0700</bug_when>
    <thetext>Comment on attachment 372338
Patch

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

&gt; Source/WebCore/html/HTMLLinkElement.cpp:265
&gt; +    const LinkLoadParameters params(

No need for const. Use uniform initializer syntax.

&gt; Source/WebCore/loader/LinkLoader.cpp:64
&gt; +LinkLoadParameters::LinkLoadParameters(const LinkRelAttribute&amp; relAttribute, const URL&amp; href, const String&amp; as, const String&amp; media, const String&amp; mimeType, const String&amp; crossOrigin, const String&amp; imageSrcSet, const String&amp; imageSizes)

Remove.

&gt; Source/WebCore/loader/LinkLoader.cpp:126
&gt; +        const LinkLoadParameters params(relAttribute, url, header.as(), header.media(), header.mimeType(), header.crossOrigin(), header.imageSrcSet(), header.imageSizes());

Ditto.

&gt; Source/WebCore/loader/LinkLoader.cpp:320
&gt; +    m_cachedLinkResource = document.cachedResourceLoader().requestLinkResource(type, CachedResourceRequest(ResourceRequest(document.completeURL(params.href)), options, priority)).value_or(nullptr);

Use uniform initializer syntax.

&gt; Source/WebCore/loader/LinkLoader.cpp:331
&gt; +bool LinkLoader::loadLink(const LinkLoadParameters&amp; params, Document&amp; document)

params could be rvalue reference I think.

&gt; Source/WebCore/loader/LinkLoader.h:48
&gt; +    LinkLoadParameters(const LinkRelAttribute&amp;,

Remove. Use aggregate initialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545656</commentid>
    <comment_count>4</comment_count>
      <attachid>372338</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2019-06-18 10:26:58 -0700</bug_when>
    <thetext>Comment on attachment 372338
Patch

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

&gt;&gt; Source/WebCore/html/HTMLLinkElement.cpp:265
&gt;&gt; +    const LinkLoadParameters params(
&gt; 
&gt; No need for const. Use uniform initializer syntax.

Done.

&gt;&gt; Source/WebCore/loader/LinkLoader.cpp:64
&gt;&gt; +LinkLoadParameters::LinkLoadParameters(const LinkRelAttribute&amp; relAttribute, const URL&amp; href, const String&amp; as, const String&amp; media, const String&amp; mimeType, const String&amp; crossOrigin, const String&amp; imageSrcSet, const String&amp; imageSizes)
&gt; 
&gt; Remove.

Done.

&gt;&gt; Source/WebCore/loader/LinkLoader.cpp:126
&gt;&gt; +        const LinkLoadParameters params(relAttribute, url, header.as(), header.media(), header.mimeType(), header.crossOrigin(), header.imageSrcSet(), header.imageSizes());
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/WebCore/loader/LinkLoader.cpp:320
&gt;&gt; +    m_cachedLinkResource = document.cachedResourceLoader().requestLinkResource(type, CachedResourceRequest(ResourceRequest(document.completeURL(params.href)), options, priority)).value_or(nullptr);
&gt; 
&gt; Use uniform initializer syntax.

I assume you meant ResourceRequest here.

&gt;&gt; Source/WebCore/loader/LinkLoader.cpp:331
&gt;&gt; +bool LinkLoader::loadLink(const LinkLoadParameters&amp; params, Document&amp; document)
&gt; 
&gt; params could be rvalue reference I think.

Since. we don&apos;t store the params in LinkLoader but just pass it around, I don&apos;t think that is needed.

&gt;&gt; Source/WebCore/loader/LinkLoader.h:48
&gt;&gt; +    LinkLoadParameters(const LinkRelAttribute&amp;,
&gt; 
&gt; Remove. Use aggregate initialization.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545657</commentid>
    <comment_count>5</comment_count>
      <attachid>372346</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2019-06-18 10:27:19 -0700</bug_when>
    <thetext>Created attachment 372346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1547633</commentid>
    <comment_count>6</comment_count>
      <attachid>372346</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2019-06-25 00:08:35 -0700</bug_when>
    <thetext>Comment on attachment 372346
Patch

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

&gt; Source/WebCore/html/HTMLLinkElement.cpp:273
&gt; +        attributeWithoutSynchronization(imagesizesAttr) };

I would put the closing &quot;};&quot; on a new line. Not sure if check-webkit-style likes it or not...

&gt; Source/WebCore/loader/LinkLoader.cpp:218
&gt; +    if (!params.relAttribute.isLinkPreconnect || !href.isValid() || !params.href.protocolIsInHTTPFamily() || !document.frame())

I see you are using href.isValid(), params.href.protocolIsInHTTPFamily() and SecurityOrigin::create(href)

Is introducing this local href variable actually needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1547634</commentid>
    <comment_count>7</comment_count>
      <attachid>372820</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2019-06-25 00:26:07 -0700</bug_when>
    <thetext>Created attachment 372820
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1547650</commentid>
    <comment_count>8</comment_count>
      <attachid>372346</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2019-06-25 01:37:18 -0700</bug_when>
    <thetext>Comment on attachment 372346
Patch

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

&gt;&gt; Source/WebCore/html/HTMLLinkElement.cpp:273
&gt;&gt; +        attributeWithoutSynchronization(imagesizesAttr) };
&gt; 
&gt; I would put the closing &quot;};&quot; on a new line. Not sure if check-webkit-style likes it or not...

Done.

&gt;&gt; Source/WebCore/loader/LinkLoader.cpp:218
&gt;&gt; +    if (!params.relAttribute.isLinkPreconnect || !href.isValid() || !params.href.protocolIsInHTTPFamily() || !document.frame())
&gt; 
&gt; I see you are using href.isValid(), params.href.protocolIsInHTTPFamily() and SecurityOrigin::create(href)
&gt; 
&gt; Is introducing this local href variable actually needed?

It is not needed, but I think it makes things a bit easier to read, and it matches the old situation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1547651</commentid>
    <comment_count>9</comment_count>
      <attachid>372820</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-25 01:42:36 -0700</bug_when>
    <thetext>Comment on attachment 372820
Patch

Clearing flags on attachment: 372820

Committed r246786: &lt;https://trac.webkit.org/changeset/246786&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1547652</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-25 01:42:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1547653</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-06-25 01:43:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/52100030&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372335</attachid>
            <date>2019-06-18 05:48:46 -0700</date>
            <delta_ts>2019-06-18 07:55:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198960-20190618144845.patch</filename>
            <type>text/plain</type>
            <size>14573</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE1NDhiMzIwYTdjOTUw
OGY5M2Q0YmFlNzg1YjQ2ZTRhZTY5OGU2MS4uOWQxYjJiOTc1ZjI4Yzc4MTVjMTE2YzgzOWNhNjgz
NTBiYjhjY2QyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA2LTE4ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIExpbmtMb2FkUGFy
YW1ldGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4OTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExp
bmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZFBhcmFtZXRlcnM6OkxpbmtMb2FkUGFyYW1ldGVycyk6
CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZGVyOjpsb2FkTGlua3NGcm9tSGVhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OnByZWNvbm5lY3RJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpMaW5rTG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGlua0xvYWRlcjo6cHJlZmV0Y2hJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5r
TG9hZGVyOjpsb2FkTGluayk6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuaDoKKwogMjAx
OS0wNi0xNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICAtW1dL
V2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczptb2RpZmllZFNpbmNlOmNvbXBsZXRp
b25IYW5kbGVyOl0gZG9lc24ndCBkZWxldGUgX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCA2M2UwZjg5MDE1ZmYy
Njk2NWY3NDlhMDI3OWM4YWNjZGM1ZjAwNjY3Li5hNmM2YjMzODJjNzJjOGYyMjk4OTAyZTE5ZDg0
ODM4MGY5ZjhlYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBA
IC0yNjIsNyArMjYyLDE3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKIAogICAg
IFVSTCB1cmwgPSBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShocmVmQXR0cik7CiAKLSAgICBpZiAo
IW1fbGlua0xvYWRlci5sb2FkTGluayhtX3JlbEF0dHJpYnV0ZSwgdXJsLCBhdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKGFzQXR0ciksIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24obWVkaWFBdHRyKSwgYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciks
IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY3Jvc3NvcmlnaW5BdHRyKSwgYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihpbWFnZXNyY3NldEF0dHIpLCAgYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihpbWFnZXNpemVzQXR0ciksIGRvY3VtZW50KCkpKQorICAgIGNv
bnN0IExpbmtMb2FkUGFyYW1ldGVycyBwYXJhbXMoCisgICAgICAgIG1fcmVsQXR0cmlidXRlLAor
ICAgICAgICB1cmwsCisgICAgICAgIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXNB
dHRyKSwKKyAgICAgICAgYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihtZWRpYUF0dHIp
LAorICAgICAgICBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyKSwKKyAg
ICAgICAgYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjcm9zc29yaWdpbkF0dHIpLAor
ICAgICAgICBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGltYWdlc3Jjc2V0QXR0ciks
CisgICAgICAgIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oaW1hZ2VzaXplc0F0dHIp
KTsKKworICAgIGlmICghbV9saW5rTG9hZGVyLmxvYWRMaW5rKHBhcmFtcywgZG9jdW1lbnQoKSkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgdHJlYXRBc1N0eWxlU2hlZXQgPSBtX3JlbEF0
dHJpYnV0ZS5pc1N0eWxlU2hlZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
aW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAppbmRl
eCBhY2IzNmMyMGMyNzhkNTJiZDVkZWIyYWYxOTc5NDg4NjllODZjYzVjLi5mZjk3N2MwMDZmMWU0
NTkxZmNjNWUwMjU2YjIzZmQyODA3Y2I1Y2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2Fk
ZXIuY3BwCkBAIC02MSw2ICs2MSwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0xpbmtM
b2FkUGFyYW1ldGVyczo6TGlua0xvYWRQYXJhbWV0ZXJzKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUm
IHJlbEF0dHJpYnV0ZSwgY29uc3QgVVJMJiBocmVmLCBjb25zdCBTdHJpbmcmIGFzLCBjb25zdCBT
dHJpbmcmIG1lZGlhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGNyb3Nz
T3JpZ2luLCBjb25zdCBTdHJpbmcmIGltYWdlU3JjU2V0LCBjb25zdCBTdHJpbmcmIGltYWdlU2l6
ZXMpCisgICAgOiByZWxBdHRyaWJ1dGUocmVsQXR0cmlidXRlKQorICAgICwgaHJlZihocmVmKQor
ICAgICwgYXMoYXMpCisgICAgLCBtZWRpYShtZWRpYSkKKyAgICAsIG1pbWVUeXBlKG1pbWVUeXBl
KQorICAgICwgY3Jvc3NPcmlnaW4oY3Jvc3NPcmlnaW4pCisgICAgLCBpbWFnZVNyY1NldChpbWFn
ZVNyY1NldCkKKyAgICAsIGltYWdlU2l6ZXMoaW1hZ2VTaXplcykKK3sKK30KKwogTGlua0xvYWRl
cjo6TGlua0xvYWRlcihMaW5rTG9hZGVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChj
bGllbnQpCiB7CkBAIC0xMTAsOCArMTIyLDEwIEBAIHZvaWQgTGlua0xvYWRlcjo6bG9hZExpbmtz
RnJvbUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlclZhbHVlLCBjb25zdCBVUkwmIGJhc2VVCiAg
ICAgICAgIC8vIFNhbml0eSBjaGVjayB0byBhdm9pZCByZS1lbnRyYW5jeSBoZXJlLgogICAgICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIGJhc2VVUkwpKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHByZWNvbm5lY3RJZk5lZWRlZChyZWxBdHRyaWJ1
dGUsIHVybCwgZG9jdW1lbnQsIGhlYWRlci5jcm9zc09yaWdpbigpKTsKLSAgICAgICAgcHJlbG9h
ZElmTmVlZGVkKHJlbEF0dHJpYnV0ZSwgdXJsLCBkb2N1bWVudCwgaGVhZGVyLmFzKCksIGhlYWRl
ci5tZWRpYSgpLCBoZWFkZXIubWltZVR5cGUoKSwgaGVhZGVyLmNyb3NzT3JpZ2luKCksIGhlYWRl
ci5pbWFnZVNyY1NldCgpLCBoZWFkZXIuaW1hZ2VTaXplcygpLCBudWxscHRyKTsKKworICAgICAg
ICBjb25zdCBMaW5rTG9hZFBhcmFtZXRlcnMgcGFyYW1zKHJlbEF0dHJpYnV0ZSwgdXJsLCBoZWFk
ZXIuYXMoKSwgaGVhZGVyLm1lZGlhKCksIGhlYWRlci5taW1lVHlwZSgpLCBoZWFkZXIuY3Jvc3NP
cmlnaW4oKSwgaGVhZGVyLmltYWdlU3JjU2V0KCksIGhlYWRlci5pbWFnZVNpemVzKCkpOworICAg
ICAgICBwcmVjb25uZWN0SWZOZWVkZWQocGFyYW1zLCBkb2N1bWVudCk7CisgICAgICAgIHByZWxv
YWRJZk5lZWRlZChwYXJhbXMsIGRvY3VtZW50LCBudWxscHRyKTsKICAgICB9CiB9CiAKQEAgLTIx
MCwxMyArMjI0LDE0IEBAIGJvb2wgTGlua0xvYWRlcjo6aXNTdXBwb3J0ZWRUeXBlKENhY2hlZFJl
c291cmNlOjpUeXBlIHJlc291cmNlVHlwZSwgY29uc3QgU3RyaW5nCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIExpbmtMb2FkZXI6OnByZWNvbm5lY3RJZk5lZWRlZChjb25zdCBMaW5rUmVs
QXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFVSTCYgaHJlZiwgRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luKQordm9pZCBMaW5rTG9hZGVyOjpwcmVjb25u
ZWN0SWZOZWVkZWQoY29uc3QgTGlua0xvYWRQYXJhbWV0ZXJzJiBwYXJhbXMsIERvY3VtZW50JiBk
b2N1bWVudCkKIHsKLSAgICBpZiAoIXJlbEF0dHJpYnV0ZS5pc0xpbmtQcmVjb25uZWN0IHx8ICFo
cmVmLmlzVmFsaWQoKSB8fCAhaHJlZi5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgIWRvY3Vt
ZW50LmZyYW1lKCkpCisgICAgY29uc3QgVVJMIGhyZWYgPSBwYXJhbXMuaHJlZjsKKyAgICBpZiAo
IXBhcmFtcy5yZWxBdHRyaWJ1dGUuaXNMaW5rUHJlY29ubmVjdCB8fCAhaHJlZi5pc1ZhbGlkKCkg
fHwgIXBhcmFtcy5ocmVmLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCAhZG9jdW1lbnQuZnJh
bWUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChkb2N1bWVudC5zZXR0aW5ncygpLmxp
bmtQcmVjb25uZWN0RW5hYmxlZCgpKTsKICAgICBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9y
YWdlQ3JlZGVudGlhbHNQb2xpY3kgPSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOwotICAg
IGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNyb3NzT3JpZ2luLCAiYW5vbnltb3VzIikgJiYg
ZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3MoU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShocmVmKSkpCisgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocGFyYW1zLmNyb3NzT3Jp
Z2luLCAiYW5vbnltb3VzIikgJiYgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3Mo
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShocmVmKSkpCiAgICAgICAgIHN0b3JhZ2VDcmVkZW50aWFs
c1BvbGljeSA9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZTsKICAgICBBU1NFUlQo
ZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQoKSk7CiAgICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPnByZWNvbm5lY3RUbyhkb2N1bWVu
dC5mcmFtZSgpLT5sb2FkZXIoKSwgaHJlZiwgc3RvcmFnZUNyZWRlbnRpYWxzUG9saWN5LCBbd2Vh
a0RvY3VtZW50ID0gbWFrZVdlYWtQdHIoZG9jdW1lbnQpLCBocmVmXShSZXNvdXJjZUVycm9yIGVy
cm9yKSB7CkBAIC0yMzAsMzkgKzI0NSwzOSBAQCB2b2lkIExpbmtMb2FkZXI6OnByZWNvbm5lY3RJ
Zk5lZWRlZChjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0CiAgICAg
fSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50PiBMaW5r
TG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYgcmVsQXR0cmli
dXRlLCBjb25zdCBVUkwmIGhyZWYsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBh
cywgY29uc3QgU3RyaW5nJiBtZWRpYSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3Ry
aW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgaW1hZ2VTcmNTZXQsIGNvbnN0IFN0
cmluZyYgaW1hZ2VTaXplcywgTGlua0xvYWRlciogbG9hZGVyKQorc3RkOjp1bmlxdWVfcHRyPExp
bmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IExpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZChjb25z
dCBMaW5rTG9hZFBhcmFtZXRlcnMmIHBhcmFtcywgRG9jdW1lbnQmIGRvY3VtZW50LCBMaW5rTG9h
ZGVyKiBsb2FkZXIpCiB7Ci0gICAgaWYgKCFkb2N1bWVudC5sb2FkZXIoKSB8fCAhcmVsQXR0cmli
dXRlLmlzTGlua1ByZWxvYWQpCisgICAgaWYgKCFkb2N1bWVudC5sb2FkZXIoKSB8fCAhcGFyYW1z
LnJlbEF0dHJpYnV0ZS5pc0xpbmtQcmVsb2FkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxpbmtQ
cmVsb2FkRW5hYmxlZCgpKTsKLSAgICBhdXRvIHR5cGUgPSBMaW5rTG9hZGVyOjpyZXNvdXJjZVR5
cGVGcm9tQXNBdHRyaWJ1dGUoYXMpOworICAgIGF1dG8gdHlwZSA9IExpbmtMb2FkZXI6OnJlc291
cmNlVHlwZUZyb21Bc0F0dHJpYnV0ZShwYXJhbXMuYXMpOwogICAgIGlmICghdHlwZSkgewogICAg
ICAgICBkb2N1bWVudC5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVz
c2FnZUxldmVsOjpFcnJvciwgIjxsaW5rIHJlbD1wcmVsb2FkPiBtdXN0IGhhdmUgYSB2YWxpZCBg
YXNgIHZhbHVlIl9zKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIFVSTCB1
cmw7Ci0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGlu
a1ByZWxvYWRSZXNwb25zaXZlSW1hZ2VzRW5hYmxlZCgpICYmIHR5cGUgPT0gQ2FjaGVkUmVzb3Vy
Y2U6OlR5cGU6OkltYWdlUmVzb3VyY2UgJiYgIWltYWdlU3JjU2V0LmlzRW1wdHkoKSkgewotICAg
ICAgICBhdXRvIHNvdXJjZVNpemUgPSBTaXplc0F0dHJpYnV0ZVBhcnNlcihpbWFnZVNpemVzLCBk
b2N1bWVudCkubGVuZ3RoKCk7Ci0gICAgICAgIGF1dG8gY2FuZGlkYXRlID0gYmVzdEZpdFNvdXJj
ZUZvckltYWdlQXR0cmlidXRlcyhkb2N1bWVudC5kZXZpY2VTY2FsZUZhY3RvcigpLCBocmVmLnN0
cmluZygpLCBpbWFnZVNyY1NldCwgc291cmNlU2l6ZSk7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGlua1ByZWxvYWRSZXNwb25zaXZlSW1hZ2VzRW5h
YmxlZCgpICYmIHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkltYWdlUmVzb3VyY2UgJiYg
IXBhcmFtcy5pbWFnZVNyY1NldC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBzb3VyY2VTaXpl
ID0gU2l6ZXNBdHRyaWJ1dGVQYXJzZXIocGFyYW1zLmltYWdlU2l6ZXMsIGRvY3VtZW50KS5sZW5n
dGgoKTsKKyAgICAgICAgYXV0byBjYW5kaWRhdGUgPSBiZXN0Rml0U291cmNlRm9ySW1hZ2VBdHRy
aWJ1dGVzKGRvY3VtZW50LmRldmljZVNjYWxlRmFjdG9yKCksIHBhcmFtcy5ocmVmLnN0cmluZygp
LCBwYXJhbXMuaW1hZ2VTcmNTZXQsIHNvdXJjZVNpemUpOwogICAgICAgICB1cmwgPSBkb2N1bWVu
dC5jb21wbGV0ZVVSTChVUkwoeyB9LCBjYW5kaWRhdGUuc3RyaW5nLnRvU3RyaW5nKCkpKTsKICAg
ICB9IGVsc2UKLSAgICAgICAgdXJsID0gZG9jdW1lbnQuY29tcGxldGVVUkwoaHJlZik7CisgICAg
ICAgIHVybCA9IGRvY3VtZW50LmNvbXBsZXRlVVJMKHBhcmFtcy5ocmVmKTsKIAogICAgIGlmICgh
dXJsLmlzVmFsaWQoKSkgewotICAgICAgICBpZiAoaW1hZ2VTcmNTZXQuaXNFbXB0eSgpKQorICAg
ICAgICBpZiAocGFyYW1zLmltYWdlU3JjU2V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGRvY3Vt
ZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCAiPGxpbmsgcmVsPXByZWxvYWQ+IGhhcyBhbiBpbnZhbGlkIGBocmVmYCB2YWx1ZSJf
cyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRvY3VtZW50LmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiPGxpbmsgcmVsPXBy
ZWxvYWQ+IGhhcyBhbiBpbnZhbGlkIGBpbWFnZXNyY3NldGAgdmFsdWUiX3MpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgaWYgKCFNZWRpYVF1ZXJ5RXZhbHVhdG9yOjptZWRp
YUF0dHJpYnV0ZU1hdGNoZXMoZG9jdW1lbnQsIG1lZGlhKSkKKyAgICBpZiAoIU1lZGlhUXVlcnlF
dmFsdWF0b3I6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcyhkb2N1bWVudCwgcGFyYW1zLm1lZGlhKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFpc1N1cHBvcnRlZFR5cGUodHlwZS52
YWx1ZSgpLCBtaW1lVHlwZSkpCisgICAgaWYgKCFpc1N1cHBvcnRlZFR5cGUodHlwZS52YWx1ZSgp
LCBwYXJhbXMubWltZVR5cGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8g
b3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRp
b25zKCk7Ci0gICAgYXV0byBsaW5rUmVxdWVzdCA9IGNyZWF0ZVBvdGVudGlhbEFjY2Vzc0NvbnRy
b2xSZXF1ZXN0KHVybCwgZG9jdW1lbnQsIGNyb3NzT3JpZ2luTW9kZSwgV1RGTW92ZShvcHRpb25z
KSk7CisgICAgYXV0byBsaW5rUmVxdWVzdCA9IGNyZWF0ZVBvdGVudGlhbEFjY2Vzc0NvbnRyb2xS
ZXF1ZXN0KHVybCwgZG9jdW1lbnQsIHBhcmFtcy5jcm9zc09yaWdpbiwgV1RGTW92ZShvcHRpb25z
KSk7CiAgICAgbGlua1JlcXVlc3Quc2V0UHJpb3JpdHkoQ2FjaGVkUmVzb3VyY2U6OmRlZmF1bHRQ
cmlvcml0eUZvclJlc291cmNlVHlwZSh0eXBlLnZhbHVlKCkpKTsKICAgICBsaW5rUmVxdWVzdC5z
ZXRJbml0aWF0b3IoImxpbmsiKTsKICAgICBsaW5rUmVxdWVzdC5zZXRJZ25vcmVGb3JSZXF1ZXN0
Q291bnQodHJ1ZSk7CkBAIC0yNzgsOSArMjkzLDkgQEAgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVs
b2FkUmVzb3VyY2VDbGllbnQ+IExpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZChjb25zdCBMaW4K
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBMaW5rTG9hZGVyOjpwcmVmZXRjaElmTmVl
ZGVkKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSwgY29uc3QgVVJMJiBocmVm
LCBEb2N1bWVudCYgZG9jdW1lbnQpCit2b2lkIExpbmtMb2FkZXI6OnByZWZldGNoSWZOZWVkZWQo
Y29uc3QgTGlua0xvYWRQYXJhbWV0ZXJzJiBwYXJhbXMsIERvY3VtZW50JiBkb2N1bWVudCkKIHsK
LSAgICBpZiAoIXJlbEF0dHJpYnV0ZS5pc0xpbmtQcmVmZXRjaCB8fCAhaHJlZi5pc1ZhbGlkKCkg
fHwgIWRvY3VtZW50LmZyYW1lKCkgfHwgIW1fY2xpZW50LnNob3VsZExvYWRMaW5rKCkpCisgICAg
aWYgKCFwYXJhbXMucmVsQXR0cmlidXRlLmlzTGlua1ByZWZldGNoIHx8ICFwYXJhbXMuaHJlZi5p
c1ZhbGlkKCkgfHwgIWRvY3VtZW50LmZyYW1lKCkgfHwgIW1fY2xpZW50LnNob3VsZExvYWRMaW5r
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmxpbmtQcmVmZXRjaEVuYWJsZWQoKSk7CkBAIC0zMDIsNyArMzE3
LDcgQEAgdm9pZCBMaW5rTG9hZGVyOjpwcmVmZXRjaElmTmVlZGVkKGNvbnN0IExpbmtSZWxBdHRy
aWJ1dGUmIHJlbEF0dHJpYnV0ZSwgY29uc3QgVVIKICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9w
dGlvbnM6Ok1vZGU6Ok5hdmlnYXRlOwogICAgIG9wdGlvbnMuc2VydmljZVdvcmtlcnNNb2RlID0g
U2VydmljZVdvcmtlcnNNb2RlOjpOb25lOwogICAgIG9wdGlvbnMuY2FjaGluZ1BvbGljeSA9IENh
Y2hpbmdQb2xpY3k6OkRpc2FsbG93Q2FjaGluZzsKLSAgICBtX2NhY2hlZExpbmtSZXNvdXJjZSA9
IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdExpbmtSZXNvdXJjZSh0eXBl
LCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50LmNvbXBsZXRl
VVJMKGhyZWYpKSwgb3B0aW9ucywgcHJpb3JpdHkpKS52YWx1ZV9vcihudWxscHRyKTsKKyAgICBt
X2NhY2hlZExpbmtSZXNvdXJjZSA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVx
dWVzdExpbmtSZXNvdXJjZSh0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0KGRvY3VtZW50LmNvbXBsZXRlVVJMKHBhcmFtcy5ocmVmKSksIG9wdGlvbnMsIHByaW9yaXR5
KSkudmFsdWVfb3IobnVsbHB0cik7CiAgICAgaWYgKG1fY2FjaGVkTGlua1Jlc291cmNlKQogICAg
ICAgICBtX2NhY2hlZExpbmtSZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKIH0KQEAgLTMxMywy
NiArMzI4LDI2IEBAIHZvaWQgTGlua0xvYWRlcjo6Y2FuY2VsTG9hZCgpCiAgICAgICAgIG1fcHJl
bG9hZFJlc291cmNlQ2xpZW50LT5jbGVhcigpOwogfQogCi1ib29sIExpbmtMb2FkZXI6OmxvYWRM
aW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSwgY29uc3QgVVJMJiBocmVm
LCBjb25zdCBTdHJpbmcmIGFzLCBjb25zdCBTdHJpbmcmIG1lZGlhLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luLCBjb25zdCBTdHJpbmcmIGltYWdlU3Jj
U2V0LCBjb25zdCBTdHJpbmcmIGltYWdlU2l6ZXMsIERvY3VtZW50JiBkb2N1bWVudCkKK2Jvb2wg
TGlua0xvYWRlcjo6bG9hZExpbmsoY29uc3QgTGlua0xvYWRQYXJhbWV0ZXJzJiBwYXJhbXMsIERv
Y3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBpZiAocmVsQXR0cmlidXRlLmlzRE5TUHJlZmV0Y2gp
IHsKKyAgICBpZiAocGFyYW1zLnJlbEF0dHJpYnV0ZS5pc0ROU1ByZWZldGNoKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBUaGUgaHJlZiBhdHRyaWJ1dGUgb2YgdGhlIGxpbmsgZWxlbWVudCBjYW4gYmUg
aW4gIi8vaG9zdG5hbWUiIGZvcm0sIGFuZCB3ZSBzaG91bGRuJ3QgYXR0ZW1wdAogICAgICAgICAv
LyB0byBjb21wbGV0ZSB0aGF0IGFzIFVSTCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ4ODU3Pi4KLSAgICAgICAgaWYgKGRvY3VtZW50LnNldHRpbmdzKCkuZG5zUHJl
ZmV0Y2hpbmdFbmFibGVkKCkgJiYgaHJlZi5pc1ZhbGlkKCkgJiYgIWhyZWYuaXNFbXB0eSgpICYm
IGRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAgICAgICBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIo
KS5jbGllbnQoKS5wcmVmZXRjaEROUyhocmVmLmhvc3QoKS50b1N0cmluZygpKTsKKyAgICAgICAg
aWYgKGRvY3VtZW50LnNldHRpbmdzKCkuZG5zUHJlZmV0Y2hpbmdFbmFibGVkKCkgJiYgcGFyYW1z
LmhyZWYuaXNWYWxpZCgpICYmICFwYXJhbXMuaHJlZi5pc0VtcHR5KCkgJiYgZG9jdW1lbnQuZnJh
bWUoKSkKKyAgICAgICAgICAgIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLnBy
ZWZldGNoRE5TKHBhcmFtcy5ocmVmLmhvc3QoKS50b1N0cmluZygpKTsKICAgICB9CiAKLSAgICBw
cmVjb25uZWN0SWZOZWVkZWQocmVsQXR0cmlidXRlLCBocmVmLCBkb2N1bWVudCwgY3Jvc3NPcmln
aW4pOworICAgIHByZWNvbm5lY3RJZk5lZWRlZChwYXJhbXMsIGRvY3VtZW50KTsKIAogICAgIGlm
IChtX2NsaWVudC5zaG91bGRMb2FkTGluaygpKSB7Ci0gICAgICAgIGF1dG8gcmVzb3VyY2VDbGll
bnQgPSBwcmVsb2FkSWZOZWVkZWQocmVsQXR0cmlidXRlLCBocmVmLCBkb2N1bWVudCwgYXMsIG1l
ZGlhLCBtaW1lVHlwZSwgY3Jvc3NPcmlnaW4sIGltYWdlU3JjU2V0LCBpbWFnZVNpemVzLCB0aGlz
KTsKKyAgICAgICAgYXV0byByZXNvdXJjZUNsaWVudCA9IHByZWxvYWRJZk5lZWRlZChwYXJhbXMs
IGRvY3VtZW50LCB0aGlzKTsKICAgICAgICAgaWYgKG1fcHJlbG9hZFJlc291cmNlQ2xpZW50KQog
ICAgICAgICAgICAgbV9wcmVsb2FkUmVzb3VyY2VDbGllbnQtPmNsZWFyKCk7CiAgICAgICAgIGlm
IChyZXNvdXJjZUNsaWVudCkKICAgICAgICAgICAgIG1fcHJlbG9hZFJlc291cmNlQ2xpZW50ID0g
V1RGTW92ZShyZXNvdXJjZUNsaWVudCk7CiAgICAgfQogCi0gICAgcHJlZmV0Y2hJZk5lZWRlZChy
ZWxBdHRyaWJ1dGUsIGhyZWYsIGRvY3VtZW50KTsKKyAgICBwcmVmZXRjaElmTmVlZGVkKHBhcmFt
cywgZG9jdW1lbnQpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtM
b2FkZXIuaAppbmRleCBjNmRmYjg0NGFmNWMyMGNlMzQxNjhhZTM5OTVkYWU0ZmVlZmIyNjdiLi4w
ZWViNDQzOThjMjRjY2E2Mjc5ZjI5YzM2ZjA3MTFiMzQ3ZTJjMDIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9MaW5rTG9hZGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAi
TGlua0xvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkxpbmtSZWxBdHRyaWJ1dGUuaCIKIAogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTQzLDE0ICs0NCwzMiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ7
CiAKLXN0cnVjdCBMaW5rUmVsQXR0cmlidXRlOworc3RydWN0IExpbmtMb2FkUGFyYW1ldGVycyB7
CisgICAgTGlua0xvYWRQYXJhbWV0ZXJzKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLAorICAgICAg
ICBjb25zdCBVUkwmIGhyZWYsCisgICAgICAgIGNvbnN0IFN0cmluZyYgYXMsCisgICAgICAgIGNv
bnN0IFN0cmluZyYgbWVkaWEsCisgICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsCisgICAg
ICAgIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW4sCisgICAgICAgIGNvbnN0IFN0cmluZyYgaW1h
Z2VTcmNTZXQsCisgICAgICAgIGNvbnN0IFN0cmluZyYgaW1hZ2VTaXplcyk7CisKKyAgICBMaW5r
UmVsQXR0cmlidXRlIHJlbEF0dHJpYnV0ZTsKKyAgICBVUkwgaHJlZjsKKyAgICBTdHJpbmcgYXM7
CisgICAgU3RyaW5nIG1lZGlhOworICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICBTdHJpbmcgY3Jv
c3NPcmlnaW47CisgICAgU3RyaW5nIGltYWdlU3JjU2V0OworICAgIFN0cmluZyBpbWFnZVNpemVz
OworfTsKIAogY2xhc3MgTGlua0xvYWRlciA6IHByaXZhdGUgQ2FjaGVkUmVzb3VyY2VDbGllbnQs
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxMaW5rTG9hZGVyPiB7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgTGlua0xvYWRlcihMaW5rTG9hZGVyQ2xpZW50Jik7CiAgICAgdmlydHVhbCB+TGlua0xvYWRl
cigpOwogCi0gICAgYm9vbCBsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiwgY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiBhcywgY29uc3QgU3RyaW5nJiBtZWRpYSwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luLCBjb25zdCBTdHJpbmcmIGltYWdlU3Jj
U2V0LCBjb25zdCBTdHJpbmcmIGltYWdlU2l6ZXMsIERvY3VtZW50Jik7CisgICAgYm9vbCBsb2Fk
TGluayhjb25zdCBMaW5rTG9hZFBhcmFtZXRlcnMmLCBEb2N1bWVudCYpOwogICAgIHN0YXRpYyBP
cHRpb25hbDxDYWNoZWRSZXNvdXJjZTo6VHlwZT4gcmVzb3VyY2VUeXBlRnJvbUFzQXR0cmlidXRl
KGNvbnN0IFN0cmluZyYgYXMpOwogCiAgICAgZW51bSBjbGFzcyBNZWRpYUF0dHJpYnV0ZUNoZWNr
IHsgTWVkaWFBdHRyaWJ1dGVFbXB0eSwgTWVkaWFBdHRyaWJ1dGVOb3RFbXB0eSwgU2tpcE1lZGlh
QXR0cmlidXRlQ2hlY2sgfTsKQEAgLTYyLDkgKzgxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBvdmVycmlkZTsKLSAgICBz
dGF0aWMgdm9pZCBwcmVjb25uZWN0SWZOZWVkZWQoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYsIGNv
bnN0IFVSTCYgaHJlZiwgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luKTsKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IHByZWxv
YWRJZk5lZWRlZChjb25zdCBMaW5rUmVsQXR0cmlidXRlJiwgY29uc3QgVVJMJiBocmVmLCBEb2N1
bWVudCYsIGNvbnN0IFN0cmluZyYgYXMsIGNvbnN0IFN0cmluZyYgbWVkaWEsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgaW1h
Z2VTcmNTZXQsIGNvbnN0IFN0cmluZyYgaW1hZ2VTaXplcywgTGlua0xvYWRlciopOwotICAgIHZv
aWQgcHJlZmV0Y2hJZk5lZWRlZChjb25zdCBMaW5rUmVsQXR0cmlidXRlJiwgY29uc3QgVVJMJiBo
cmVmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyB2b2lkIHByZWNvbm5lY3RJZk5lZWRlZChjb25z
dCBMaW5rTG9hZFBhcmFtZXRlcnMmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4gcHJlbG9hZElmTmVlZGVkKGNvbnN0IExp
bmtMb2FkUGFyYW1ldGVycyYsIERvY3VtZW50JiwgTGlua0xvYWRlciopOworICAgIHZvaWQgcHJl
ZmV0Y2hJZk5lZWRlZChjb25zdCBMaW5rTG9hZFBhcmFtZXRlcnMmLCBEb2N1bWVudCYpOwogCiAg
ICAgTGlua0xvYWRlckNsaWVudCYgbV9jbGllbnQ7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmVzb3VyY2U+IG1fY2FjaGVkTGlua1Jlc291cmNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372338</attachid>
            <date>2019-06-18 07:55:56 -0700</date>
            <delta_ts>2019-06-18 10:27:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198960-20190618165555.patch</filename>
            <type>text/plain</type>
            <size>14677</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE1NDhiMzIwYTdjOTUw
OGY5M2Q0YmFlNzg1YjQ2ZTRhZTY5OGU2MS4uMDVmZDcyZWUxZTQ3ZGZlMDIwZDMzZDEzOTZkZTYz
NDJlMWE3ODMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA2LTE4ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIExpbmtMb2FkUGFy
YW1ldGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4OTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QXZvaWQgdGhlIGxvbmcgcGFyYW1ldGVycyBsaXN0cyBpbiBMaW5rTG9hZGVyIGJ5IG1vdmluZyB0
aGVtCisgICAgICAgIHRvIExpbmtMb2FkUGFyYW1ldGVycy4KKworICAgICAgICBObyBuZXcgdGVz
dHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnByb2Nlc3MpOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxpbmtMb2FkUGFyYW1ldGVyczo6TGlua0xvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxpbmtMb2FkZXI6OmxvYWRMaW5rc0Zyb21IZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TGlua0xvYWRlcjo6cHJlY29ubmVjdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9h
ZGVyOjpwcmVmZXRjaElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6Omxv
YWRMaW5rKToKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5oOgorCiAyMDE5LTA2LTE3ICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIC1bV0tXZWJzaXRlRGF0
YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOm1vZGlmaWVkU2luY2U6Y29tcGxldGlvbkhhbmRsZXI6
XSBkb2Vzbid0IGRlbGV0ZSBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IDYzZTBmODkwMTVmZjI2OTY1Zjc0OWEw
Mjc5YzhhY2NkYzVmMDA2NjcuLmE2YzZiMzM4MmM3MmM4ZjIyOTg5MDJlMTlkODQ4MzgwZjlmOGVi
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTI2Miw3ICsy
NjIsMTcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MoKQogCiAgICAgVVJMIHVybCA9
IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGhyZWZBdHRyKTsKIAotICAgIGlmICghbV9saW5rTG9h
ZGVyLmxvYWRMaW5rKG1fcmVsQXR0cmlidXRlLCB1cmwsIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oYXNBdHRyKSwgYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihtZWRpYUF0
dHIpLCBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyKSwgYXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihjcm9zc29yaWdpbkF0dHIpLCBhdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGltYWdlc3Jjc2V0QXR0ciksICBhdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGltYWdlc2l6ZXNBdHRyKSwgZG9jdW1lbnQoKSkpCisgICAgY29uc3QgTGlua0xv
YWRQYXJhbWV0ZXJzIHBhcmFtcygKKyAgICAgICAgbV9yZWxBdHRyaWJ1dGUsCisgICAgICAgIHVy
bCwKKyAgICAgICAgYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhc0F0dHIpLAorICAg
ICAgICBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1lZGlhQXR0ciksCisgICAgICAg
IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHlwZUF0dHIpLAorICAgICAgICBhdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNyb3Nzb3JpZ2luQXR0ciksCisgICAgICAgIGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oaW1hZ2VzcmNzZXRBdHRyKSwKKyAgICAgICAg
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihpbWFnZXNpemVzQXR0cikpOworCisgICAg
aWYgKCFtX2xpbmtMb2FkZXIubG9hZExpbmsocGFyYW1zLCBkb2N1bWVudCgpKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYm9vbCB0cmVhdEFzU3R5bGVTaGVldCA9IG1fcmVsQXR0cmlidXRlLmlz
U3R5bGVTaGVldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IGFjYjM2YzIw
YzI3OGQ1MmJkNWRlYjJhZjE5Nzk0ODg2OWU4NmNjNWMuLmZmOTc3YzAwNmYxZTQ1OTFmY2M1ZTAy
NTZiMjNmZDI4MDdjYjVjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5r
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAg
LTYxLDYgKzYxLDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorTGlua0xvYWRQYXJhbWV0
ZXJzOjpMaW5rTG9hZFBhcmFtZXRlcnMoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYgcmVsQXR0cmli
dXRlLCBjb25zdCBVUkwmIGhyZWYsIGNvbnN0IFN0cmluZyYgYXMsIGNvbnN0IFN0cmluZyYgbWVk
aWEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW4sIGNv
bnN0IFN0cmluZyYgaW1hZ2VTcmNTZXQsIGNvbnN0IFN0cmluZyYgaW1hZ2VTaXplcykKKyAgICA6
IHJlbEF0dHJpYnV0ZShyZWxBdHRyaWJ1dGUpCisgICAgLCBocmVmKGhyZWYpCisgICAgLCBhcyhh
cykKKyAgICAsIG1lZGlhKG1lZGlhKQorICAgICwgbWltZVR5cGUobWltZVR5cGUpCisgICAgLCBj
cm9zc09yaWdpbihjcm9zc09yaWdpbikKKyAgICAsIGltYWdlU3JjU2V0KGltYWdlU3JjU2V0KQor
ICAgICwgaW1hZ2VTaXplcyhpbWFnZVNpemVzKQoreworfQorCiBMaW5rTG9hZGVyOjpMaW5rTG9h
ZGVyKExpbmtMb2FkZXJDbGllbnQmIGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKIHsK
QEAgLTExMCw4ICsxMjIsMTAgQEAgdm9pZCBMaW5rTG9hZGVyOjpsb2FkTGlua3NGcm9tSGVhZGVy
KGNvbnN0IFN0cmluZyYgaGVhZGVyVmFsdWUsIGNvbnN0IFVSTCYgYmFzZVUKICAgICAgICAgLy8g
U2FuaXR5IGNoZWNrIHRvIGF2b2lkIHJlLWVudHJhbmN5IGhlcmUuCiAgICAgICAgIGlmIChlcXVh
bElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCwgYmFzZVVSTCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgcHJlY29ubmVjdElmTmVlZGVkKHJlbEF0dHJpYnV0ZSwgdXJsLCBk
b2N1bWVudCwgaGVhZGVyLmNyb3NzT3JpZ2luKCkpOwotICAgICAgICBwcmVsb2FkSWZOZWVkZWQo
cmVsQXR0cmlidXRlLCB1cmwsIGRvY3VtZW50LCBoZWFkZXIuYXMoKSwgaGVhZGVyLm1lZGlhKCks
IGhlYWRlci5taW1lVHlwZSgpLCBoZWFkZXIuY3Jvc3NPcmlnaW4oKSwgaGVhZGVyLmltYWdlU3Jj
U2V0KCksIGhlYWRlci5pbWFnZVNpemVzKCksIG51bGxwdHIpOworCisgICAgICAgIGNvbnN0IExp
bmtMb2FkUGFyYW1ldGVycyBwYXJhbXMocmVsQXR0cmlidXRlLCB1cmwsIGhlYWRlci5hcygpLCBo
ZWFkZXIubWVkaWEoKSwgaGVhZGVyLm1pbWVUeXBlKCksIGhlYWRlci5jcm9zc09yaWdpbigpLCBo
ZWFkZXIuaW1hZ2VTcmNTZXQoKSwgaGVhZGVyLmltYWdlU2l6ZXMoKSk7CisgICAgICAgIHByZWNv
bm5lY3RJZk5lZWRlZChwYXJhbXMsIGRvY3VtZW50KTsKKyAgICAgICAgcHJlbG9hZElmTmVlZGVk
KHBhcmFtcywgZG9jdW1lbnQsIG51bGxwdHIpOwogICAgIH0KIH0KIApAQCAtMjEwLDEzICsyMjQs
MTQgQEAgYm9vbCBMaW5rTG9hZGVyOjppc1N1cHBvcnRlZFR5cGUoQ2FjaGVkUmVzb3VyY2U6OlR5
cGUgcmVzb3VyY2VUeXBlLCBjb25zdCBTdHJpbmcKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgTGlua0xvYWRlcjo6cHJlY29ubmVjdElmTmVlZGVkKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUm
IHJlbEF0dHJpYnV0ZSwgY29uc3QgVVJMJiBocmVmLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFN0cmluZyYgY3Jvc3NPcmlnaW4pCit2b2lkIExpbmtMb2FkZXI6OnByZWNvbm5lY3RJZk5lZWRl
ZChjb25zdCBMaW5rTG9hZFBhcmFtZXRlcnMmIHBhcmFtcywgRG9jdW1lbnQmIGRvY3VtZW50KQog
ewotICAgIGlmICghcmVsQXR0cmlidXRlLmlzTGlua1ByZWNvbm5lY3QgfHwgIWhyZWYuaXNWYWxp
ZCgpIHx8ICFocmVmLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCAhZG9jdW1lbnQuZnJhbWUo
KSkKKyAgICBjb25zdCBVUkwgaHJlZiA9IHBhcmFtcy5ocmVmOworICAgIGlmICghcGFyYW1zLnJl
bEF0dHJpYnV0ZS5pc0xpbmtQcmVjb25uZWN0IHx8ICFocmVmLmlzVmFsaWQoKSB8fCAhcGFyYW1z
LmhyZWYucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8ICFkb2N1bWVudC5mcmFtZSgpKQogICAg
ICAgICByZXR1cm47CiAgICAgQVNTRVJUKGRvY3VtZW50LnNldHRpbmdzKCkubGlua1ByZWNvbm5l
Y3RFbmFibGVkKCkpOwogICAgIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JhZ2VDcmVkZW50
aWFsc1BvbGljeSA9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7Ci0gICAgaWYgKGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UoY3Jvc3NPcmlnaW4sICJhbm9ueW1vdXMiKSAmJiBkb2N1bWVudC5z
ZWN1cml0eU9yaWdpbigpLmNhbkFjY2VzcyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGhyZWYpKSkK
KyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShwYXJhbXMuY3Jvc3NPcmlnaW4sICJhbm9u
eW1vdXMiKSAmJiBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2VzcyhTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKGhyZWYpKSkKICAgICAgICAgc3RvcmFnZUNyZWRlbnRpYWxzUG9saWN5ID0g
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlOwogICAgIEFTU0VSVChkb2N1bWVudC5m
cmFtZSgpLT5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpKTsKICAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+cHJlY29ubmVjdFRvKGRvY3VtZW50LmZyYW1lKCkt
PmxvYWRlcigpLCBocmVmLCBzdG9yYWdlQ3JlZGVudGlhbHNQb2xpY3ksIFt3ZWFrRG9jdW1lbnQg
PSBtYWtlV2Vha1B0cihkb2N1bWVudCksIGhyZWZdKFJlc291cmNlRXJyb3IgZXJyb3IpIHsKQEAg
LTIzMCwzOSArMjQ1LDM5IEBAIHZvaWQgTGlua0xvYWRlcjo6cHJlY29ubmVjdElmTmVlZGVkKGNv
bnN0IExpbmtSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSwgY29uc3QKICAgICB9KTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IExpbmtMb2FkZXI6OnBy
ZWxvYWRJZk5lZWRlZChjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0
IFVSTCYgaHJlZiwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGFzLCBjb25zdCBT
dHJpbmcmIG1lZGlhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGNyb3Nz
T3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBpbWFnZVNyY1NldCwgY29uc3QgU3RyaW5nJiBpbWFn
ZVNpemVzLCBMaW5rTG9hZGVyKiBsb2FkZXIpCitzdGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRS
ZXNvdXJjZUNsaWVudD4gTGlua0xvYWRlcjo6cHJlbG9hZElmTmVlZGVkKGNvbnN0IExpbmtMb2Fk
UGFyYW1ldGVycyYgcGFyYW1zLCBEb2N1bWVudCYgZG9jdW1lbnQsIExpbmtMb2FkZXIqIGxvYWRl
cikKIHsKLSAgICBpZiAoIWRvY3VtZW50LmxvYWRlcigpIHx8ICFyZWxBdHRyaWJ1dGUuaXNMaW5r
UHJlbG9hZCkKKyAgICBpZiAoIWRvY3VtZW50LmxvYWRlcigpIHx8ICFwYXJhbXMucmVsQXR0cmli
dXRlLmlzTGlua1ByZWxvYWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQVNTRVJU
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGlua1ByZWxvYWRFbmFi
bGVkKCkpOwotICAgIGF1dG8gdHlwZSA9IExpbmtMb2FkZXI6OnJlc291cmNlVHlwZUZyb21Bc0F0
dHJpYnV0ZShhcyk7CisgICAgYXV0byB0eXBlID0gTGlua0xvYWRlcjo6cmVzb3VyY2VUeXBlRnJv
bUFzQXR0cmlidXRlKHBhcmFtcy5hcyk7CiAgICAgaWYgKCF0eXBlKSB7CiAgICAgICAgIGRvY3Vt
ZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCAiPGxpbmsgcmVsPXByZWxvYWQ+IG11c3QgaGF2ZSBhIHZhbGlkIGBhc2AgdmFsdWUi
X3MpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgVVJMIHVybDsKLSAgICBp
ZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5saW5rUHJlbG9hZFJl
c3BvbnNpdmVJbWFnZXNFbmFibGVkKCkgJiYgdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6
SW1hZ2VSZXNvdXJjZSAmJiAhaW1hZ2VTcmNTZXQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8g
c291cmNlU2l6ZSA9IFNpemVzQXR0cmlidXRlUGFyc2VyKGltYWdlU2l6ZXMsIGRvY3VtZW50KS5s
ZW5ndGgoKTsKLSAgICAgICAgYXV0byBjYW5kaWRhdGUgPSBiZXN0Rml0U291cmNlRm9ySW1hZ2VB
dHRyaWJ1dGVzKGRvY3VtZW50LmRldmljZVNjYWxlRmFjdG9yKCksIGhyZWYuc3RyaW5nKCksIGlt
YWdlU3JjU2V0LCBzb3VyY2VTaXplKTsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5saW5rUHJlbG9hZFJlc3BvbnNpdmVJbWFnZXNFbmFibGVkKCkgJiYg
dHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6SW1hZ2VSZXNvdXJjZSAmJiAhcGFyYW1zLmlt
YWdlU3JjU2V0LmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIHNvdXJjZVNpemUgPSBTaXplc0F0
dHJpYnV0ZVBhcnNlcihwYXJhbXMuaW1hZ2VTaXplcywgZG9jdW1lbnQpLmxlbmd0aCgpOworICAg
ICAgICBhdXRvIGNhbmRpZGF0ZSA9IGJlc3RGaXRTb3VyY2VGb3JJbWFnZUF0dHJpYnV0ZXMoZG9j
dW1lbnQuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcGFyYW1zLmhyZWYuc3RyaW5nKCksIHBhcmFtcy5p
bWFnZVNyY1NldCwgc291cmNlU2l6ZSk7CiAgICAgICAgIHVybCA9IGRvY3VtZW50LmNvbXBsZXRl
VVJMKFVSTCh7IH0sIGNhbmRpZGF0ZS5zdHJpbmcudG9TdHJpbmcoKSkpOwogICAgIH0gZWxzZQot
ICAgICAgICB1cmwgPSBkb2N1bWVudC5jb21wbGV0ZVVSTChocmVmKTsKKyAgICAgICAgdXJsID0g
ZG9jdW1lbnQuY29tcGxldGVVUkwocGFyYW1zLmhyZWYpOwogCiAgICAgaWYgKCF1cmwuaXNWYWxp
ZCgpKSB7Ci0gICAgICAgIGlmIChpbWFnZVNyY1NldC5pc0VtcHR5KCkpCisgICAgICAgIGlmIChw
YXJhbXMuaW1hZ2VTcmNTZXQuaXNFbXB0eSgpKQogICAgICAgICAgICAgZG9jdW1lbnQuYWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICI8
bGluayByZWw9cHJlbG9hZD4gaGFzIGFuIGludmFsaWQgYGhyZWZgIHZhbHVlIl9zKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgZG9jdW1lbnQuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICI8bGluayByZWw9cHJlbG9hZD4gaGFz
IGFuIGludmFsaWQgYGltYWdlc3Jjc2V0YCB2YWx1ZSJfcyk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KLSAgICBpZiAoIU1lZGlhUXVlcnlFdmFsdWF0b3I6Om1lZGlhQXR0cmlidXRl
TWF0Y2hlcyhkb2N1bWVudCwgbWVkaWEpKQorICAgIGlmICghTWVkaWFRdWVyeUV2YWx1YXRvcjo6
bWVkaWFBdHRyaWJ1dGVNYXRjaGVzKGRvY3VtZW50LCBwYXJhbXMubWVkaWEpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoIWlzU3VwcG9ydGVkVHlwZSh0eXBlLnZhbHVlKCksIG1p
bWVUeXBlKSkKKyAgICBpZiAoIWlzU3VwcG9ydGVkVHlwZSh0eXBlLnZhbHVlKCksIHBhcmFtcy5t
aW1lVHlwZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBvcHRpb25zID0g
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKLSAg
ICBhdXRvIGxpbmtSZXF1ZXN0ID0gY3JlYXRlUG90ZW50aWFsQWNjZXNzQ29udHJvbFJlcXVlc3Qo
dXJsLCBkb2N1bWVudCwgY3Jvc3NPcmlnaW5Nb2RlLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBh
dXRvIGxpbmtSZXF1ZXN0ID0gY3JlYXRlUG90ZW50aWFsQWNjZXNzQ29udHJvbFJlcXVlc3QodXJs
LCBkb2N1bWVudCwgcGFyYW1zLmNyb3NzT3JpZ2luLCBXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICBs
aW5rUmVxdWVzdC5zZXRQcmlvcml0eShDYWNoZWRSZXNvdXJjZTo6ZGVmYXVsdFByaW9yaXR5Rm9y
UmVzb3VyY2VUeXBlKHR5cGUudmFsdWUoKSkpOwogICAgIGxpbmtSZXF1ZXN0LnNldEluaXRpYXRv
cigibGluayIpOwogICAgIGxpbmtSZXF1ZXN0LnNldElnbm9yZUZvclJlcXVlc3RDb3VudCh0cnVl
KTsKQEAgLTI3OCw5ICsyOTMsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJj
ZUNsaWVudD4gTGlua0xvYWRlcjo6cHJlbG9hZElmTmVlZGVkKGNvbnN0IExpbgogICAgIHJldHVy
biBudWxscHRyOwogfQogCi12b2lkIExpbmtMb2FkZXI6OnByZWZldGNoSWZOZWVkZWQoY29uc3Qg
TGlua1JlbEF0dHJpYnV0ZSYgcmVsQXR0cmlidXRlLCBjb25zdCBVUkwmIGhyZWYsIERvY3VtZW50
JiBkb2N1bWVudCkKK3ZvaWQgTGlua0xvYWRlcjo6cHJlZmV0Y2hJZk5lZWRlZChjb25zdCBMaW5r
TG9hZFBhcmFtZXRlcnMmIHBhcmFtcywgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGlmICgh
cmVsQXR0cmlidXRlLmlzTGlua1ByZWZldGNoIHx8ICFocmVmLmlzVmFsaWQoKSB8fCAhZG9jdW1l
bnQuZnJhbWUoKSB8fCAhbV9jbGllbnQuc2hvdWxkTG9hZExpbmsoKSkKKyAgICBpZiAoIXBhcmFt
cy5yZWxBdHRyaWJ1dGUuaXNMaW5rUHJlZmV0Y2ggfHwgIXBhcmFtcy5ocmVmLmlzVmFsaWQoKSB8
fCAhZG9jdW1lbnQuZnJhbWUoKSB8fCAhbV9jbGllbnQuc2hvdWxkTG9hZExpbmsoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkubGlua1ByZWZldGNoRW5hYmxlZCgpKTsKQEAgLTMwMiw3ICszMTcsNyBAQCB2b2lk
IExpbmtMb2FkZXI6OnByZWZldGNoSWZOZWVkZWQoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYgcmVs
QXR0cmlidXRlLCBjb25zdCBVUgogICAgIG9wdGlvbnMubW9kZSA9IEZldGNoT3B0aW9uczo6TW9k
ZTo6TmF2aWdhdGU7CiAgICAgb3B0aW9ucy5zZXJ2aWNlV29ya2Vyc01vZGUgPSBTZXJ2aWNlV29y
a2Vyc01vZGU6Ok5vbmU7CiAgICAgb3B0aW9ucy5jYWNoaW5nUG9saWN5ID0gQ2FjaGluZ1BvbGlj
eTo6RGlzYWxsb3dDYWNoaW5nOwotICAgIG1fY2FjaGVkTGlua1Jlc291cmNlID0gZG9jdW1lbnQu
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0TGlua1Jlc291cmNlKHR5cGUsIENhY2hlZFJl
c291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQuY29tcGxldGVVUkwoaHJlZikp
LCBvcHRpb25zLCBwcmlvcml0eSkpLnZhbHVlX29yKG51bGxwdHIpOworICAgIG1fY2FjaGVkTGlu
a1Jlc291cmNlID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0TGlua1Jl
c291cmNlKHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoZG9jdW1l
bnQuY29tcGxldGVVUkwocGFyYW1zLmhyZWYpKSwgb3B0aW9ucywgcHJpb3JpdHkpKS52YWx1ZV9v
cihudWxscHRyKTsKICAgICBpZiAobV9jYWNoZWRMaW5rUmVzb3VyY2UpCiAgICAgICAgIG1fY2Fj
aGVkTGlua1Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwogfQpAQCAtMzEzLDI2ICszMjgsMjYg
QEAgdm9pZCBMaW5rTG9hZGVyOjpjYW5jZWxMb2FkKCkKICAgICAgICAgbV9wcmVsb2FkUmVzb3Vy
Y2VDbGllbnQtPmNsZWFyKCk7CiB9CiAKLWJvb2wgTGlua0xvYWRlcjo6bG9hZExpbmsoY29uc3Qg
TGlua1JlbEF0dHJpYnV0ZSYgcmVsQXR0cmlidXRlLCBjb25zdCBVUkwmIGhyZWYsIGNvbnN0IFN0
cmluZyYgYXMsIGNvbnN0IFN0cmluZyYgbWVkaWEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYgY3Jvc3NPcmlnaW4sIGNvbnN0IFN0cmluZyYgaW1hZ2VTcmNTZXQsIGNvbnN0
IFN0cmluZyYgaW1hZ2VTaXplcywgRG9jdW1lbnQmIGRvY3VtZW50KQorYm9vbCBMaW5rTG9hZGVy
Ojpsb2FkTGluayhjb25zdCBMaW5rTG9hZFBhcmFtZXRlcnMmIHBhcmFtcywgRG9jdW1lbnQmIGRv
Y3VtZW50KQogewotICAgIGlmIChyZWxBdHRyaWJ1dGUuaXNETlNQcmVmZXRjaCkgeworICAgIGlm
IChwYXJhbXMucmVsQXR0cmlidXRlLmlzRE5TUHJlZmV0Y2gpIHsKICAgICAgICAgLy8gRklYTUU6
IFRoZSBocmVmIGF0dHJpYnV0ZSBvZiB0aGUgbGluayBlbGVtZW50IGNhbiBiZSBpbiAiLy9ob3N0
bmFtZSIgZm9ybSwgYW5kIHdlIHNob3VsZG4ndCBhdHRlbXB0CiAgICAgICAgIC8vIHRvIGNvbXBs
ZXRlIHRoYXQgYXMgVVJMIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDg4NTc+LgotICAgICAgICBpZiAoZG9jdW1lbnQuc2V0dGluZ3MoKS5kbnNQcmVmZXRjaGluZ0Vu
YWJsZWQoKSAmJiBocmVmLmlzVmFsaWQoKSAmJiAhaHJlZi5pc0VtcHR5KCkgJiYgZG9jdW1lbnQu
ZnJhbWUoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgp
LnByZWZldGNoRE5TKGhyZWYuaG9zdCgpLnRvU3RyaW5nKCkpOworICAgICAgICBpZiAoZG9jdW1l
bnQuc2V0dGluZ3MoKS5kbnNQcmVmZXRjaGluZ0VuYWJsZWQoKSAmJiBwYXJhbXMuaHJlZi5pc1Zh
bGlkKCkgJiYgIXBhcmFtcy5ocmVmLmlzRW1wdHkoKSAmJiBkb2N1bWVudC5mcmFtZSgpKQorICAg
ICAgICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkucHJlZmV0Y2hETlMo
cGFyYW1zLmhyZWYuaG9zdCgpLnRvU3RyaW5nKCkpOwogICAgIH0KIAotICAgIHByZWNvbm5lY3RJ
Zk5lZWRlZChyZWxBdHRyaWJ1dGUsIGhyZWYsIGRvY3VtZW50LCBjcm9zc09yaWdpbik7CisgICAg
cHJlY29ubmVjdElmTmVlZGVkKHBhcmFtcywgZG9jdW1lbnQpOwogCiAgICAgaWYgKG1fY2xpZW50
LnNob3VsZExvYWRMaW5rKCkpIHsKLSAgICAgICAgYXV0byByZXNvdXJjZUNsaWVudCA9IHByZWxv
YWRJZk5lZWRlZChyZWxBdHRyaWJ1dGUsIGhyZWYsIGRvY3VtZW50LCBhcywgbWVkaWEsIG1pbWVU
eXBlLCBjcm9zc09yaWdpbiwgaW1hZ2VTcmNTZXQsIGltYWdlU2l6ZXMsIHRoaXMpOworICAgICAg
ICBhdXRvIHJlc291cmNlQ2xpZW50ID0gcHJlbG9hZElmTmVlZGVkKHBhcmFtcywgZG9jdW1lbnQs
IHRoaXMpOwogICAgICAgICBpZiAobV9wcmVsb2FkUmVzb3VyY2VDbGllbnQpCiAgICAgICAgICAg
ICBtX3ByZWxvYWRSZXNvdXJjZUNsaWVudC0+Y2xlYXIoKTsKICAgICAgICAgaWYgKHJlc291cmNl
Q2xpZW50KQogICAgICAgICAgICAgbV9wcmVsb2FkUmVzb3VyY2VDbGllbnQgPSBXVEZNb3ZlKHJl
c291cmNlQ2xpZW50KTsKICAgICB9CiAKLSAgICBwcmVmZXRjaElmTmVlZGVkKHJlbEF0dHJpYnV0
ZSwgaHJlZiwgZG9jdW1lbnQpOworICAgIHByZWZldGNoSWZOZWVkZWQocGFyYW1zLCBkb2N1bWVu
dCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9MaW5rTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCmlu
ZGV4IGM2ZGZiODQ0YWY1YzIwY2UzNDE2OGFlMzk5NWRhZTRmZWVmYjI2N2IuLjBlZWI0NDM5OGMy
NGNjYTYyNzlmMjljMzZmMDcxMWIzNDdlMmMwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9MaW5rTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2Fk
ZXIuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJMaW5rTG9hZGVy
Q2xpZW50LmgiCisjaW5jbHVkZSAiTGlua1JlbEF0dHJpYnV0ZS5oIgogCiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIApAQCAtNDMsMTQgKzQ0LDMyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudDsKIAotc3RydWN0
IExpbmtSZWxBdHRyaWJ1dGU7CitzdHJ1Y3QgTGlua0xvYWRQYXJhbWV0ZXJzIHsKKyAgICBMaW5r
TG9hZFBhcmFtZXRlcnMoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYsCisgICAgICAgIGNvbnN0IFVS
TCYgaHJlZiwKKyAgICAgICAgY29uc3QgU3RyaW5nJiBhcywKKyAgICAgICAgY29uc3QgU3RyaW5n
JiBtZWRpYSwKKyAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwKKyAgICAgICAgY29uc3Qg
U3RyaW5nJiBjcm9zc09yaWdpbiwKKyAgICAgICAgY29uc3QgU3RyaW5nJiBpbWFnZVNyY1NldCwK
KyAgICAgICAgY29uc3QgU3RyaW5nJiBpbWFnZVNpemVzKTsKKworICAgIExpbmtSZWxBdHRyaWJ1
dGUgcmVsQXR0cmlidXRlOworICAgIFVSTCBocmVmOworICAgIFN0cmluZyBhczsKKyAgICBTdHJp
bmcgbWVkaWE7CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIFN0cmluZyBjcm9zc09yaWdpbjsK
KyAgICBTdHJpbmcgaW1hZ2VTcmNTZXQ7CisgICAgU3RyaW5nIGltYWdlU2l6ZXM7Cit9OwogCiBj
bGFzcyBMaW5rTG9hZGVyIDogcHJpdmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCwgcHVibGljIENh
bk1ha2VXZWFrUHRyPExpbmtMb2FkZXI+IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMaW5rTG9h
ZGVyKExpbmtMb2FkZXJDbGllbnQmKTsKICAgICB2aXJ0dWFsIH5MaW5rTG9hZGVyKCk7CiAKLSAg
ICBib29sIGxvYWRMaW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIGFzLCBjb25zdCBTdHJpbmcmIG1lZGlhLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgY3Jvc3NPcmlnaW4sIGNvbnN0IFN0cmluZyYgaW1hZ2VTcmNTZXQsIGNvbnN0
IFN0cmluZyYgaW1hZ2VTaXplcywgRG9jdW1lbnQmKTsKKyAgICBib29sIGxvYWRMaW5rKGNvbnN0
IExpbmtMb2FkUGFyYW1ldGVycyYsIERvY3VtZW50Jik7CiAgICAgc3RhdGljIE9wdGlvbmFsPENh
Y2hlZFJlc291cmNlOjpUeXBlPiByZXNvdXJjZVR5cGVGcm9tQXNBdHRyaWJ1dGUoY29uc3QgU3Ry
aW5nJiBhcyk7CiAKICAgICBlbnVtIGNsYXNzIE1lZGlhQXR0cmlidXRlQ2hlY2sgeyBNZWRpYUF0
dHJpYnV0ZUVtcHR5LCBNZWRpYUF0dHJpYnV0ZU5vdEVtcHR5LCBTa2lwTWVkaWFBdHRyaWJ1dGVD
aGVjayB9OwpAQCAtNjIsOSArODEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIG92ZXJyaWRlOwotICAgIHN0YXRpYyB2b2lk
IHByZWNvbm5lY3RJZk5lZWRlZChjb25zdCBMaW5rUmVsQXR0cmlidXRlJiwgY29uc3QgVVJMJiBo
cmVmLCBEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW4pOwotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4gcHJlbG9hZElmTmVlZGVk
KGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25zdCBVUkwmIGhyZWYsIERvY3VtZW50JiwgY29u
c3QgU3RyaW5nJiBhcywgY29uc3QgU3RyaW5nJiBtZWRpYSwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBpbWFnZVNyY1NldCwg
Y29uc3QgU3RyaW5nJiBpbWFnZVNpemVzLCBMaW5rTG9hZGVyKik7Ci0gICAgdm9pZCBwcmVmZXRj
aElmTmVlZGVkKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25zdCBVUkwmIGhyZWYsIERvY3Vt
ZW50Jik7CisgICAgc3RhdGljIHZvaWQgcHJlY29ubmVjdElmTmVlZGVkKGNvbnN0IExpbmtMb2Fk
UGFyYW1ldGVycyYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMaW5r
UHJlbG9hZFJlc291cmNlQ2xpZW50PiBwcmVsb2FkSWZOZWVkZWQoY29uc3QgTGlua0xvYWRQYXJh
bWV0ZXJzJiwgRG9jdW1lbnQmLCBMaW5rTG9hZGVyKik7CisgICAgdm9pZCBwcmVmZXRjaElmTmVl
ZGVkKGNvbnN0IExpbmtMb2FkUGFyYW1ldGVycyYsIERvY3VtZW50Jik7CiAKICAgICBMaW5rTG9h
ZGVyQ2xpZW50JiBtX2NsaWVudDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNv
dXJjZT4gbV9jYWNoZWRMaW5rUmVzb3VyY2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372346</attachid>
            <date>2019-06-18 10:27:19 -0700</date>
            <delta_ts>2019-06-25 00:26:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198960-20190618192718.patch</filename>
            <type>text/plain</type>
            <size>13765</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE1NDhiMzIwYTdjOTUw
OGY5M2Q0YmFlNzg1YjQ2ZTRhZTY5OGU2MS4uM2RlNzkxNzhiYzNkMGJjNDU4ZGUxOGFiMjAyYmUx
Y2U0OGY2MmZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTA2LTE4ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIExpbmtMb2FkUGFy
YW1ldGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4OTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QXZvaWQgdGhlIGxvbmcgcGFyYW1ldGVycyBsaXN0cyBpbiBMaW5rTG9hZGVyIGJ5IG1vdmluZyB0
aGVtCisgICAgICAgIHRvIExpbmtMb2FkUGFyYW1ldGVycy4KKworICAgICAgICBObyBuZXcgdGVz
dHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnByb2Nlc3MpOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxpbmtMb2FkZXI6OmxvYWRMaW5rc0Zyb21IZWFkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TGlua0xvYWRlcjo6cHJlY29ubmVjdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okxp
bmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZGVy
OjpwcmVmZXRjaElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmxvYWRM
aW5rKToKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5oOgorCiAyMDE5LTA2LTE3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHJlbW92ZURhdGFPZlR5cGVzOm1vZGlmaWVkU2luY2U6Y29tcGxldGlvbkhhbmRsZXI6XSBk
b2Vzbid0IGRlbGV0ZSBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IDYzZTBmODkwMTVmZjI2OTY1Zjc0OWEwMjc5
YzhhY2NkYzVmMDA2NjcuLjVkMGEyNzJkNDdlNDVhMzk3NGU1YjBiNWMzOGU3M2IxNTU5YTM5N2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTI2Miw3ICsyNjIs
MTcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MoKQogCiAgICAgVVJMIHVybCA9IGdl
dE5vbkVtcHR5VVJMQXR0cmlidXRlKGhyZWZBdHRyKTsKIAotICAgIGlmICghbV9saW5rTG9hZGVy
LmxvYWRMaW5rKG1fcmVsQXR0cmlidXRlLCB1cmwsIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oYXNBdHRyKSwgYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihtZWRpYUF0dHIp
LCBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyKSwgYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihjcm9zc29yaWdpbkF0dHIpLCBhdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGltYWdlc3Jjc2V0QXR0ciksICBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGltYWdlc2l6ZXNBdHRyKSwgZG9jdW1lbnQoKSkpCisgICAgTGlua0xvYWRQYXJhbWV0
ZXJzIHBhcmFtcyB7CisgICAgICAgIG1fcmVsQXR0cmlidXRlLAorICAgICAgICB1cmwsCisgICAg
ICAgIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXNBdHRyKSwKKyAgICAgICAgYXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihtZWRpYUF0dHIpLAorICAgICAgICBhdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyKSwKKyAgICAgICAgYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihjcm9zc29yaWdpbkF0dHIpLAorICAgICAgICBhdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGltYWdlc3Jjc2V0QXR0ciksCisgICAgICAgIGF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oaW1hZ2VzaXplc0F0dHIpIH07CisKKyAgICBpZiAoIW1f
bGlua0xvYWRlci5sb2FkTGluayhwYXJhbXMsIGRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm47
CiAKICAgICBib29sIHRyZWF0QXNTdHlsZVNoZWV0ID0gbV9yZWxBdHRyaWJ1dGUuaXNTdHlsZVNo
ZWV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5kZXggYWNiMzZjMjBjMjc4ZDUy
YmQ1ZGViMmFmMTk3OTQ4ODY5ZTg2Y2M1Yy4uZDYzODY2OGU0NWMwODgwOTc5MGE4ODgxZTEwZGU2
MDVkY2MyZjg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApAQCAtMTEwLDgg
KzExMCwxMCBAQCB2b2lkIExpbmtMb2FkZXI6OmxvYWRMaW5rc0Zyb21IZWFkZXIoY29uc3QgU3Ry
aW5nJiBoZWFkZXJWYWx1ZSwgY29uc3QgVVJMJiBiYXNlVQogICAgICAgICAvLyBTYW5pdHkgY2hl
Y2sgdG8gYXZvaWQgcmUtZW50cmFuY3kgaGVyZS4KICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdG
cmFnbWVudElkZW50aWZpZXIodXJsLCBiYXNlVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBwcmVjb25uZWN0SWZOZWVkZWQocmVsQXR0cmlidXRlLCB1cmwsIGRvY3VtZW50LCBo
ZWFkZXIuY3Jvc3NPcmlnaW4oKSk7Ci0gICAgICAgIHByZWxvYWRJZk5lZWRlZChyZWxBdHRyaWJ1
dGUsIHVybCwgZG9jdW1lbnQsIGhlYWRlci5hcygpLCBoZWFkZXIubWVkaWEoKSwgaGVhZGVyLm1p
bWVUeXBlKCksIGhlYWRlci5jcm9zc09yaWdpbigpLCBoZWFkZXIuaW1hZ2VTcmNTZXQoKSwgaGVh
ZGVyLmltYWdlU2l6ZXMoKSwgbnVsbHB0cik7CisKKyAgICAgICAgTGlua0xvYWRQYXJhbWV0ZXJz
IHBhcmFtcyB7IHJlbEF0dHJpYnV0ZSwgdXJsLCBoZWFkZXIuYXMoKSwgaGVhZGVyLm1lZGlhKCks
IGhlYWRlci5taW1lVHlwZSgpLCBoZWFkZXIuY3Jvc3NPcmlnaW4oKSwgaGVhZGVyLmltYWdlU3Jj
U2V0KCksIGhlYWRlci5pbWFnZVNpemVzKCkgfTsKKyAgICAgICAgcHJlY29ubmVjdElmTmVlZGVk
KHBhcmFtcywgZG9jdW1lbnQpOworICAgICAgICBwcmVsb2FkSWZOZWVkZWQocGFyYW1zLCBkb2N1
bWVudCwgbnVsbHB0cik7CiAgICAgfQogfQogCkBAIC0yMTAsMTMgKzIxMiwxNCBAQCBib29sIExp
bmtMb2FkZXI6OmlzU3VwcG9ydGVkVHlwZShDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5
cGUsIGNvbnN0IFN0cmluZwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBMaW5rTG9hZGVy
OjpwcmVjb25uZWN0SWZOZWVkZWQoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYgcmVsQXR0cmlidXRl
LCBjb25zdCBVUkwmIGhyZWYsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBjcm9z
c09yaWdpbikKK3ZvaWQgTGlua0xvYWRlcjo6cHJlY29ubmVjdElmTmVlZGVkKGNvbnN0IExpbmtM
b2FkUGFyYW1ldGVycyYgcGFyYW1zLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgaWYgKCFy
ZWxBdHRyaWJ1dGUuaXNMaW5rUHJlY29ubmVjdCB8fCAhaHJlZi5pc1ZhbGlkKCkgfHwgIWhyZWYu
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8ICFkb2N1bWVudC5mcmFtZSgpKQorICAgIGNvbnN0
IFVSTCBocmVmID0gcGFyYW1zLmhyZWY7CisgICAgaWYgKCFwYXJhbXMucmVsQXR0cmlidXRlLmlz
TGlua1ByZWNvbm5lY3QgfHwgIWhyZWYuaXNWYWxpZCgpIHx8ICFwYXJhbXMuaHJlZi5wcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCkgfHwgIWRvY3VtZW50LmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBBU1NFUlQoZG9jdW1lbnQuc2V0dGluZ3MoKS5saW5rUHJlY29ubmVjdEVuYWJsZWQoKSk7
CiAgICAgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmFnZUNyZWRlbnRpYWxzUG9saWN5ID0g
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShjcm9zc09yaWdpbiwgImFub255bW91cyIpICYmIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2lu
KCkuY2FuQWNjZXNzKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZikpKQorICAgIGlmIChlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKHBhcmFtcy5jcm9zc09yaWdpbiwgImFub255bW91cyIpICYmIGRv
Y3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
aHJlZikpKQogICAgICAgICBzdG9yYWdlQ3JlZGVudGlhbHNQb2xpY3kgPSBTdG9yZWRDcmVkZW50
aWFsc1BvbGljeTo6RG9Ob3RVc2U7CiAgICAgQVNTRVJUKGRvY3VtZW50LmZyYW1lKCktPmxvYWRl
cigpLm5ldHdvcmtpbmdDb250ZXh0KCkpOwogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2Fk
ZXJTdHJhdGVneSgpLT5wcmVjb25uZWN0VG8oZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCksIGhy
ZWYsIHN0b3JhZ2VDcmVkZW50aWFsc1BvbGljeSwgW3dlYWtEb2N1bWVudCA9IG1ha2VXZWFrUHRy
KGRvY3VtZW50KSwgaHJlZl0oUmVzb3VyY2VFcnJvciBlcnJvcikgewpAQCAtMjMwLDM5ICsyMzMs
MzkgQEAgdm9pZCBMaW5rTG9hZGVyOjpwcmVjb25uZWN0SWZOZWVkZWQoY29uc3QgTGlua1JlbEF0
dHJpYnV0ZSYgcmVsQXR0cmlidXRlLCBjb25zdAogICAgIH0pOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4gTGlua0xvYWRlcjo6cHJlbG9hZElmTmVlZGVk
KGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSwgY29uc3QgVVJMJiBocmVmLCBE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgYXMsIGNvbnN0IFN0cmluZyYgbWVkaWEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBj
b25zdCBTdHJpbmcmIGltYWdlU3JjU2V0LCBjb25zdCBTdHJpbmcmIGltYWdlU2l6ZXMsIExpbmtM
b2FkZXIqIGxvYWRlcikKK3N0ZDo6dW5pcXVlX3B0cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50
PiBMaW5rTG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQoY29uc3QgTGlua0xvYWRQYXJhbWV0ZXJzJiBw
YXJhbXMsIERvY3VtZW50JiBkb2N1bWVudCwgTGlua0xvYWRlciogbG9hZGVyKQogewotICAgIGlm
ICghZG9jdW1lbnQubG9hZGVyKCkgfHwgIXJlbEF0dHJpYnV0ZS5pc0xpbmtQcmVsb2FkKQorICAg
IGlmICghZG9jdW1lbnQubG9hZGVyKCkgfHwgIXBhcmFtcy5yZWxBdHRyaWJ1dGUuaXNMaW5rUHJl
bG9hZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBBU1NFUlQoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5saW5rUHJlbG9hZEVuYWJsZWQoKSk7Ci0gICAg
YXV0byB0eXBlID0gTGlua0xvYWRlcjo6cmVzb3VyY2VUeXBlRnJvbUFzQXR0cmlidXRlKGFzKTsK
KyAgICBhdXRvIHR5cGUgPSBMaW5rTG9hZGVyOjpyZXNvdXJjZVR5cGVGcm9tQXNBdHRyaWJ1dGUo
cGFyYW1zLmFzKTsKICAgICBpZiAoIXR5cGUpIHsKICAgICAgICAgZG9jdW1lbnQuYWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICI8bGlu
ayByZWw9cHJlbG9hZD4gbXVzdCBoYXZlIGEgdmFsaWQgYGFzYCB2YWx1ZSJfcyk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBVUkwgdXJsOwotICAgIGlmIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxpbmtQcmVsb2FkUmVzcG9uc2l2ZUltYWdl
c0VuYWJsZWQoKSAmJiB0eXBlID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpJbWFnZVJlc291cmNl
ICYmICFpbWFnZVNyY1NldC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBzb3VyY2VTaXplID0g
U2l6ZXNBdHRyaWJ1dGVQYXJzZXIoaW1hZ2VTaXplcywgZG9jdW1lbnQpLmxlbmd0aCgpOwotICAg
ICAgICBhdXRvIGNhbmRpZGF0ZSA9IGJlc3RGaXRTb3VyY2VGb3JJbWFnZUF0dHJpYnV0ZXMoZG9j
dW1lbnQuZGV2aWNlU2NhbGVGYWN0b3IoKSwgaHJlZi5zdHJpbmcoKSwgaW1hZ2VTcmNTZXQsIHNv
dXJjZVNpemUpOworICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLmxpbmtQcmVsb2FkUmVzcG9uc2l2ZUltYWdlc0VuYWJsZWQoKSAmJiB0eXBlID09IENhY2hl
ZFJlc291cmNlOjpUeXBlOjpJbWFnZVJlc291cmNlICYmICFwYXJhbXMuaW1hZ2VTcmNTZXQuaXNF
bXB0eSgpKSB7CisgICAgICAgIGF1dG8gc291cmNlU2l6ZSA9IFNpemVzQXR0cmlidXRlUGFyc2Vy
KHBhcmFtcy5pbWFnZVNpemVzLCBkb2N1bWVudCkubGVuZ3RoKCk7CisgICAgICAgIGF1dG8gY2Fu
ZGlkYXRlID0gYmVzdEZpdFNvdXJjZUZvckltYWdlQXR0cmlidXRlcyhkb2N1bWVudC5kZXZpY2VT
Y2FsZUZhY3RvcigpLCBwYXJhbXMuaHJlZi5zdHJpbmcoKSwgcGFyYW1zLmltYWdlU3JjU2V0LCBz
b3VyY2VTaXplKTsKICAgICAgICAgdXJsID0gZG9jdW1lbnQuY29tcGxldGVVUkwoVVJMKHsgfSwg
Y2FuZGlkYXRlLnN0cmluZy50b1N0cmluZygpKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHVybCA9
IGRvY3VtZW50LmNvbXBsZXRlVVJMKGhyZWYpOworICAgICAgICB1cmwgPSBkb2N1bWVudC5jb21w
bGV0ZVVSTChwYXJhbXMuaHJlZik7CiAKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpIHsKLSAgICAg
ICAgaWYgKGltYWdlU3JjU2V0LmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKHBhcmFtcy5pbWFnZVNy
Y1NldC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBkb2N1bWVudC5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpFcnJvciwgIjxsaW5rIHJlbD1wcmVs
b2FkPiBoYXMgYW4gaW52YWxpZCBgaHJlZmAgdmFsdWUiX3MpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBkb2N1bWVudC5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwg
TWVzc2FnZUxldmVsOjpFcnJvciwgIjxsaW5rIHJlbD1wcmVsb2FkPiBoYXMgYW4gaW52YWxpZCBg
aW1hZ2VzcmNzZXRgIHZhbHVlIl9zKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQot
ICAgIGlmICghTWVkaWFRdWVyeUV2YWx1YXRvcjo6bWVkaWFBdHRyaWJ1dGVNYXRjaGVzKGRvY3Vt
ZW50LCBtZWRpYSkpCisgICAgaWYgKCFNZWRpYVF1ZXJ5RXZhbHVhdG9yOjptZWRpYUF0dHJpYnV0
ZU1hdGNoZXMoZG9jdW1lbnQsIHBhcmFtcy5tZWRpYSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIGlmICghaXNTdXBwb3J0ZWRUeXBlKHR5cGUudmFsdWUoKSwgbWltZVR5cGUpKQorICAg
IGlmICghaXNTdXBwb3J0ZWRUeXBlKHR5cGUudmFsdWUoKSwgcGFyYW1zLm1pbWVUeXBlKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOwotICAgIGF1dG8gbGlua1Jl
cXVlc3QgPSBjcmVhdGVQb3RlbnRpYWxBY2Nlc3NDb250cm9sUmVxdWVzdCh1cmwsIGRvY3VtZW50
LCBjcm9zc09yaWdpbk1vZGUsIFdURk1vdmUob3B0aW9ucykpOworICAgIGF1dG8gbGlua1JlcXVl
c3QgPSBjcmVhdGVQb3RlbnRpYWxBY2Nlc3NDb250cm9sUmVxdWVzdCh1cmwsIGRvY3VtZW50LCBw
YXJhbXMuY3Jvc3NPcmlnaW4sIFdURk1vdmUob3B0aW9ucykpOwogICAgIGxpbmtSZXF1ZXN0LnNl
dFByaW9yaXR5KENhY2hlZFJlc291cmNlOjpkZWZhdWx0UHJpb3JpdHlGb3JSZXNvdXJjZVR5cGUo
dHlwZS52YWx1ZSgpKSk7CiAgICAgbGlua1JlcXVlc3Quc2V0SW5pdGlhdG9yKCJsaW5rIik7CiAg
ICAgbGlua1JlcXVlc3Quc2V0SWdub3JlRm9yUmVxdWVzdENvdW50KHRydWUpOwpAQCAtMjc4LDkg
KzI4MSw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50PiBMaW5r
TG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQoY29uc3QgTGluCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLXZvaWQgTGlua0xvYWRlcjo6cHJlZmV0Y2hJZk5lZWRlZChjb25zdCBMaW5rUmVsQXR0cmli
dXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFVSTCYgaHJlZiwgRG9jdW1lbnQmIGRvY3VtZW50KQor
dm9pZCBMaW5rTG9hZGVyOjpwcmVmZXRjaElmTmVlZGVkKGNvbnN0IExpbmtMb2FkUGFyYW1ldGVy
cyYgcGFyYW1zLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgaWYgKCFyZWxBdHRyaWJ1dGUu
aXNMaW5rUHJlZmV0Y2ggfHwgIWhyZWYuaXNWYWxpZCgpIHx8ICFkb2N1bWVudC5mcmFtZSgpIHx8
ICFtX2NsaWVudC5zaG91bGRMb2FkTGluaygpKQorICAgIGlmICghcGFyYW1zLnJlbEF0dHJpYnV0
ZS5pc0xpbmtQcmVmZXRjaCB8fCAhcGFyYW1zLmhyZWYuaXNWYWxpZCgpIHx8ICFkb2N1bWVudC5m
cmFtZSgpIHx8ICFtX2NsaWVudC5zaG91bGRMb2FkTGluaygpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5saW5r
UHJlZmV0Y2hFbmFibGVkKCkpOwpAQCAtMzAyLDcgKzMwNSw3IEBAIHZvaWQgTGlua0xvYWRlcjo6
cHJlZmV0Y2hJZk5lZWRlZChjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNv
bnN0IFVSCiAgICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZTsK
ICAgICBvcHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSA9IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9u
ZTsKICAgICBvcHRpb25zLmNhY2hpbmdQb2xpY3kgPSBDYWNoaW5nUG9saWN5OjpEaXNhbGxvd0Nh
Y2hpbmc7Ci0gICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UgPSBkb2N1bWVudC5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLnJlcXVlc3RMaW5rUmVzb3VyY2UodHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdChkb2N1bWVudC5jb21wbGV0ZVVSTChocmVmKSksIG9wdGlvbnMsIHBy
aW9yaXR5KSkudmFsdWVfb3IobnVsbHB0cik7CisgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UgPSBk
b2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RMaW5rUmVzb3VyY2UodHlwZSwg
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCB7IGRvY3VtZW50LmNvbXBsZXRl
VVJMKHBhcmFtcy5ocmVmKSB9LCBvcHRpb25zLCBwcmlvcml0eSkpLnZhbHVlX29yKG51bGxwdHIp
OwogICAgIGlmIChtX2NhY2hlZExpbmtSZXNvdXJjZSkKICAgICAgICAgbV9jYWNoZWRMaW5rUmVz
b3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CiB9CkBAIC0zMTMsMjYgKzMxNiwyNiBAQCB2b2lkIExp
bmtMb2FkZXI6OmNhbmNlbExvYWQoKQogICAgICAgICBtX3ByZWxvYWRSZXNvdXJjZUNsaWVudC0+
Y2xlYXIoKTsKIH0KIAotYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0
cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFVSTCYgaHJlZiwgY29uc3QgU3RyaW5nJiBhcywg
Y29uc3QgU3RyaW5nJiBtZWRpYSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5n
JiBjcm9zc09yaWdpbiwgY29uc3QgU3RyaW5nJiBpbWFnZVNyY1NldCwgY29uc3QgU3RyaW5nJiBp
bWFnZVNpemVzLCBEb2N1bWVudCYgZG9jdW1lbnQpCitib29sIExpbmtMb2FkZXI6OmxvYWRMaW5r
KGNvbnN0IExpbmtMb2FkUGFyYW1ldGVycyYgcGFyYW1zLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7
Ci0gICAgaWYgKHJlbEF0dHJpYnV0ZS5pc0ROU1ByZWZldGNoKSB7CisgICAgaWYgKHBhcmFtcy5y
ZWxBdHRyaWJ1dGUuaXNETlNQcmVmZXRjaCkgewogICAgICAgICAvLyBGSVhNRTogVGhlIGhyZWYg
YXR0cmlidXRlIG9mIHRoZSBsaW5rIGVsZW1lbnQgY2FuIGJlIGluICIvL2hvc3RuYW1lIiBmb3Jt
LCBhbmQgd2Ugc2hvdWxkbid0IGF0dGVtcHQKICAgICAgICAgLy8gdG8gY29tcGxldGUgdGhhdCBh
cyBVUkwgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODg1Nz4uCi0g
ICAgICAgIGlmIChkb2N1bWVudC5zZXR0aW5ncygpLmRuc1ByZWZldGNoaW5nRW5hYmxlZCgpICYm
IGhyZWYuaXNWYWxpZCgpICYmICFocmVmLmlzRW1wdHkoKSAmJiBkb2N1bWVudC5mcmFtZSgpKQot
ICAgICAgICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkucHJlZmV0Y2hE
TlMoaHJlZi5ob3N0KCkudG9TdHJpbmcoKSk7CisgICAgICAgIGlmIChkb2N1bWVudC5zZXR0aW5n
cygpLmRuc1ByZWZldGNoaW5nRW5hYmxlZCgpICYmIHBhcmFtcy5ocmVmLmlzVmFsaWQoKSAmJiAh
cGFyYW1zLmhyZWYuaXNFbXB0eSgpICYmIGRvY3VtZW50LmZyYW1lKCkpCisgICAgICAgICAgICBk
b2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wcmVmZXRjaEROUyhwYXJhbXMuaHJl
Zi5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCi0gICAgcHJlY29ubmVjdElmTmVlZGVkKHJl
bEF0dHJpYnV0ZSwgaHJlZiwgZG9jdW1lbnQsIGNyb3NzT3JpZ2luKTsKKyAgICBwcmVjb25uZWN0
SWZOZWVkZWQocGFyYW1zLCBkb2N1bWVudCk7CiAKICAgICBpZiAobV9jbGllbnQuc2hvdWxkTG9h
ZExpbmsoKSkgewotICAgICAgICBhdXRvIHJlc291cmNlQ2xpZW50ID0gcHJlbG9hZElmTmVlZGVk
KHJlbEF0dHJpYnV0ZSwgaHJlZiwgZG9jdW1lbnQsIGFzLCBtZWRpYSwgbWltZVR5cGUsIGNyb3Nz
T3JpZ2luLCBpbWFnZVNyY1NldCwgaW1hZ2VTaXplcywgdGhpcyk7CisgICAgICAgIGF1dG8gcmVz
b3VyY2VDbGllbnQgPSBwcmVsb2FkSWZOZWVkZWQocGFyYW1zLCBkb2N1bWVudCwgdGhpcyk7CiAg
ICAgICAgIGlmIChtX3ByZWxvYWRSZXNvdXJjZUNsaWVudCkKICAgICAgICAgICAgIG1fcHJlbG9h
ZFJlc291cmNlQ2xpZW50LT5jbGVhcigpOwogICAgICAgICBpZiAocmVzb3VyY2VDbGllbnQpCiAg
ICAgICAgICAgICBtX3ByZWxvYWRSZXNvdXJjZUNsaWVudCA9IFdURk1vdmUocmVzb3VyY2VDbGll
bnQpOwogICAgIH0KIAotICAgIHByZWZldGNoSWZOZWVkZWQocmVsQXR0cmlidXRlLCBocmVmLCBk
b2N1bWVudCk7CisgICAgcHJlZmV0Y2hJZk5lZWRlZChwYXJhbXMsIGRvY3VtZW50KTsKIAogICAg
IHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKaW5kZXggYzZkZmI4
NDRhZjVjMjBjZTM0MTY4YWUzOTk1ZGFlNGZlZWZiMjY3Yi4uYjM2ZDU5ZDAwOTE5ZTU5OTljZWRi
MWVkMTQwOTgxOGMwODY4ODRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xp
bmtMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkxpbmtMb2FkZXJDbGllbnQuaCIK
KyNpbmNsdWRlICJMaW5rUmVsQXR0cmlidXRlLmgiCiAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCkBAIC00MywxNCArNDQsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1l
bnQ7CiBjbGFzcyBMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50OwogCi1zdHJ1Y3QgTGlua1JlbEF0
dHJpYnV0ZTsKK3N0cnVjdCBMaW5rTG9hZFBhcmFtZXRlcnMgeworICAgIExpbmtSZWxBdHRyaWJ1
dGUgcmVsQXR0cmlidXRlOworICAgIFVSTCBocmVmOworICAgIFN0cmluZyBhczsKKyAgICBTdHJp
bmcgbWVkaWE7CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIFN0cmluZyBjcm9zc09yaWdpbjsK
KyAgICBTdHJpbmcgaW1hZ2VTcmNTZXQ7CisgICAgU3RyaW5nIGltYWdlU2l6ZXM7Cit9OwogCiBj
bGFzcyBMaW5rTG9hZGVyIDogcHJpdmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCwgcHVibGljIENh
bk1ha2VXZWFrUHRyPExpbmtMb2FkZXI+IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMaW5rTG9h
ZGVyKExpbmtMb2FkZXJDbGllbnQmKTsKICAgICB2aXJ0dWFsIH5MaW5rTG9hZGVyKCk7CiAKLSAg
ICBib29sIGxvYWRMaW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIGFzLCBjb25zdCBTdHJpbmcmIG1lZGlhLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgY3Jvc3NPcmlnaW4sIGNvbnN0IFN0cmluZyYgaW1hZ2VTcmNTZXQsIGNvbnN0
IFN0cmluZyYgaW1hZ2VTaXplcywgRG9jdW1lbnQmKTsKKyAgICBib29sIGxvYWRMaW5rKGNvbnN0
IExpbmtMb2FkUGFyYW1ldGVycyYsIERvY3VtZW50Jik7CiAgICAgc3RhdGljIE9wdGlvbmFsPENh
Y2hlZFJlc291cmNlOjpUeXBlPiByZXNvdXJjZVR5cGVGcm9tQXNBdHRyaWJ1dGUoY29uc3QgU3Ry
aW5nJiBhcyk7CiAKICAgICBlbnVtIGNsYXNzIE1lZGlhQXR0cmlidXRlQ2hlY2sgeyBNZWRpYUF0
dHJpYnV0ZUVtcHR5LCBNZWRpYUF0dHJpYnV0ZU5vdEVtcHR5LCBTa2lwTWVkaWFBdHRyaWJ1dGVD
aGVjayB9OwpAQCAtNjIsOSArNzIsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIG92ZXJyaWRlOwotICAgIHN0YXRpYyB2b2lk
IHByZWNvbm5lY3RJZk5lZWRlZChjb25zdCBMaW5rUmVsQXR0cmlidXRlJiwgY29uc3QgVVJMJiBo
cmVmLCBEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW4pOwotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4gcHJlbG9hZElmTmVlZGVk
KGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25zdCBVUkwmIGhyZWYsIERvY3VtZW50JiwgY29u
c3QgU3RyaW5nJiBhcywgY29uc3QgU3RyaW5nJiBtZWRpYSwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBpbWFnZVNyY1NldCwg
Y29uc3QgU3RyaW5nJiBpbWFnZVNpemVzLCBMaW5rTG9hZGVyKik7Ci0gICAgdm9pZCBwcmVmZXRj
aElmTmVlZGVkKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25zdCBVUkwmIGhyZWYsIERvY3Vt
ZW50Jik7CisgICAgc3RhdGljIHZvaWQgcHJlY29ubmVjdElmTmVlZGVkKGNvbnN0IExpbmtMb2Fk
UGFyYW1ldGVycyYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMaW5r
UHJlbG9hZFJlc291cmNlQ2xpZW50PiBwcmVsb2FkSWZOZWVkZWQoY29uc3QgTGlua0xvYWRQYXJh
bWV0ZXJzJiwgRG9jdW1lbnQmLCBMaW5rTG9hZGVyKik7CisgICAgdm9pZCBwcmVmZXRjaElmTmVl
ZGVkKGNvbnN0IExpbmtMb2FkUGFyYW1ldGVycyYsIERvY3VtZW50Jik7CiAKICAgICBMaW5rTG9h
ZGVyQ2xpZW50JiBtX2NsaWVudDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNv
dXJjZT4gbV9jYWNoZWRMaW5rUmVzb3VyY2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372820</attachid>
            <date>2019-06-25 00:26:07 -0700</date>
            <delta_ts>2019-06-25 01:42:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198960-20190625092606.patch</filename>
            <type>text/plain</type>
            <size>13759</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTU0ZTMyNmVmYzJiZjEx
ZTEyOGQ3MzgxNzA3ODk2Yjg4NGZiNzE3OS4uODhmN2E3M2Q5YjNiMGE2MTRkY2NlZTFmZTY1MWJk
NGU2NDM5YmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTA2LTI1ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIExpbmtMb2FkUGFy
YW1ldGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4OTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRnLDqWTDqXJpYyBXYW5nLgorCisgICAgICAg
IEF2b2lkIHRoZSBsb25nIHBhcmFtZXRlcnMgbGlzdHMgaW4gTGlua0xvYWRlciBieSBtb3Zpbmcg
dGhlbQorICAgICAgICB0byBMaW5rTG9hZFBhcmFtZXRlcnMuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogaHRt
bC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50
Ojpwcm9jZXNzKToKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMaW5rTG9hZGVyOjpsb2FkTGlua3NGcm9tSGVhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpbmtMb2FkZXI6OnByZWNvbm5lY3RJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpM
aW5rTG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGlua0xvYWRl
cjo6cHJlZmV0Y2hJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZGVyOjpsb2Fk
TGluayk6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuaDoKKwogMjAxOS0wNi0yNCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbVGV4dCBhdXRv
c2l6aW5nXSBbaVBhZE9TXSBSZXZpc2Ugb3VyIGhldXJpc3RpY3MgdG8gZGV0ZXJtaW5lIGlkZW1w
b3RlbnQgdGV4dCBhdXRvc2l6aW5nIGNhbmRpZGF0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcAppbmRleCA2M2UwZjg5MDE1ZmYyNjk2NWY3NDlhMDI3OWM4YWNjZGM1ZjAw
NjY3Li5jMmMwMGEyNjI4OGJhNGMxNGU3NWIwMzJiZTM4MzhjNzBlYmJjNWMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0yNjIsNyArMjYyLDE4IEBAIHZvaWQg
SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKIAogICAgIFVSTCB1cmwgPSBnZXROb25FbXB0eVVS
TEF0dHJpYnV0ZShocmVmQXR0cik7CiAKLSAgICBpZiAoIW1fbGlua0xvYWRlci5sb2FkTGluayht
X3JlbEF0dHJpYnV0ZSwgdXJsLCBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFzQXR0
ciksIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWVkaWFBdHRyKSwgYXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciksIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oY3Jvc3NvcmlnaW5BdHRyKSwgYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihpbWFnZXNyY3NldEF0dHIpLCAgYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihpbWFn
ZXNpemVzQXR0ciksIGRvY3VtZW50KCkpKQorICAgIExpbmtMb2FkUGFyYW1ldGVycyBwYXJhbXMg
eworICAgICAgICBtX3JlbEF0dHJpYnV0ZSwKKyAgICAgICAgdXJsLAorICAgICAgICBhdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFzQXR0ciksCisgICAgICAgIGF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24obWVkaWFBdHRyKSwKKyAgICAgICAgYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbih0eXBlQXR0ciksCisgICAgICAgIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oY3Jvc3NvcmlnaW5BdHRyKSwKKyAgICAgICAgYXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihpbWFnZXNyY3NldEF0dHIpLAorICAgICAgICBhdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGltYWdlc2l6ZXNBdHRyKQorICAgIH07CisKKyAgICBpZiAoIW1fbGlua0xv
YWRlci5sb2FkTGluayhwYXJhbXMsIGRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBib29sIHRyZWF0QXNTdHlsZVNoZWV0ID0gbV9yZWxBdHRyaWJ1dGUuaXNTdHlsZVNoZWV0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5kZXggYWNiMzZjMjBjMjc4ZDUyYmQ1ZGVi
MmFmMTk3OTQ4ODY5ZTg2Y2M1Yy4uZDYzODY2OGU0NWMwODgwOTc5MGE4ODgxZTEwZGU2MDVkY2My
Zjg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApAQCAtMTEwLDggKzExMCwx
MCBAQCB2b2lkIExpbmtMb2FkZXI6OmxvYWRMaW5rc0Zyb21IZWFkZXIoY29uc3QgU3RyaW5nJiBo
ZWFkZXJWYWx1ZSwgY29uc3QgVVJMJiBiYXNlVQogICAgICAgICAvLyBTYW5pdHkgY2hlY2sgdG8g
YXZvaWQgcmUtZW50cmFuY3kgaGVyZS4KICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdGcmFnbWVu
dElkZW50aWZpZXIodXJsLCBiYXNlVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBwcmVjb25uZWN0SWZOZWVkZWQocmVsQXR0cmlidXRlLCB1cmwsIGRvY3VtZW50LCBoZWFkZXIu
Y3Jvc3NPcmlnaW4oKSk7Ci0gICAgICAgIHByZWxvYWRJZk5lZWRlZChyZWxBdHRyaWJ1dGUsIHVy
bCwgZG9jdW1lbnQsIGhlYWRlci5hcygpLCBoZWFkZXIubWVkaWEoKSwgaGVhZGVyLm1pbWVUeXBl
KCksIGhlYWRlci5jcm9zc09yaWdpbigpLCBoZWFkZXIuaW1hZ2VTcmNTZXQoKSwgaGVhZGVyLmlt
YWdlU2l6ZXMoKSwgbnVsbHB0cik7CisKKyAgICAgICAgTGlua0xvYWRQYXJhbWV0ZXJzIHBhcmFt
cyB7IHJlbEF0dHJpYnV0ZSwgdXJsLCBoZWFkZXIuYXMoKSwgaGVhZGVyLm1lZGlhKCksIGhlYWRl
ci5taW1lVHlwZSgpLCBoZWFkZXIuY3Jvc3NPcmlnaW4oKSwgaGVhZGVyLmltYWdlU3JjU2V0KCks
IGhlYWRlci5pbWFnZVNpemVzKCkgfTsKKyAgICAgICAgcHJlY29ubmVjdElmTmVlZGVkKHBhcmFt
cywgZG9jdW1lbnQpOworICAgICAgICBwcmVsb2FkSWZOZWVkZWQocGFyYW1zLCBkb2N1bWVudCwg
bnVsbHB0cik7CiAgICAgfQogfQogCkBAIC0yMTAsMTMgKzIxMiwxNCBAQCBib29sIExpbmtMb2Fk
ZXI6OmlzU3VwcG9ydGVkVHlwZShDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUsIGNv
bnN0IFN0cmluZwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBMaW5rTG9hZGVyOjpwcmVj
b25uZWN0SWZOZWVkZWQoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYgcmVsQXR0cmlidXRlLCBjb25z
dCBVUkwmIGhyZWYsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdp
bikKK3ZvaWQgTGlua0xvYWRlcjo6cHJlY29ubmVjdElmTmVlZGVkKGNvbnN0IExpbmtMb2FkUGFy
YW1ldGVycyYgcGFyYW1zLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgaWYgKCFyZWxBdHRy
aWJ1dGUuaXNMaW5rUHJlY29ubmVjdCB8fCAhaHJlZi5pc1ZhbGlkKCkgfHwgIWhyZWYucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpIHx8ICFkb2N1bWVudC5mcmFtZSgpKQorICAgIGNvbnN0IFVSTCBo
cmVmID0gcGFyYW1zLmhyZWY7CisgICAgaWYgKCFwYXJhbXMucmVsQXR0cmlidXRlLmlzTGlua1By
ZWNvbm5lY3QgfHwgIWhyZWYuaXNWYWxpZCgpIHx8ICFwYXJhbXMuaHJlZi5wcm90b2NvbElzSW5I
VFRQRmFtaWx5KCkgfHwgIWRvY3VtZW50LmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKICAgICBB
U1NFUlQoZG9jdW1lbnQuc2V0dGluZ3MoKS5saW5rUHJlY29ubmVjdEVuYWJsZWQoKSk7CiAgICAg
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmFnZUNyZWRlbnRpYWxzUG9saWN5ID0gU3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShj
cm9zc09yaWdpbiwgImFub255bW91cyIpICYmIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuY2Fu
QWNjZXNzKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZikpKQorICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKHBhcmFtcy5jcm9zc09yaWdpbiwgImFub255bW91cyIpICYmIGRvY3VtZW50
LnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZikp
KQogICAgICAgICBzdG9yYWdlQ3JlZGVudGlhbHNQb2xpY3kgPSBTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeTo6RG9Ob3RVc2U7CiAgICAgQVNTRVJUKGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLm5l
dHdvcmtpbmdDb250ZXh0KCkpOwogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJh
dGVneSgpLT5wcmVjb25uZWN0VG8oZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCksIGhyZWYsIHN0
b3JhZ2VDcmVkZW50aWFsc1BvbGljeSwgW3dlYWtEb2N1bWVudCA9IG1ha2VXZWFrUHRyKGRvY3Vt
ZW50KSwgaHJlZl0oUmVzb3VyY2VFcnJvciBlcnJvcikgewpAQCAtMjMwLDM5ICsyMzMsMzkgQEAg
dm9pZCBMaW5rTG9hZGVyOjpwcmVjb25uZWN0SWZOZWVkZWQoY29uc3QgTGlua1JlbEF0dHJpYnV0
ZSYgcmVsQXR0cmlidXRlLCBjb25zdAogICAgIH0pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8TGlu
a1ByZWxvYWRSZXNvdXJjZUNsaWVudD4gTGlua0xvYWRlcjo6cHJlbG9hZElmTmVlZGVkKGNvbnN0
IExpbmtSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSwgY29uc3QgVVJMJiBocmVmLCBEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgYXMsIGNvbnN0IFN0cmluZyYgbWVkaWEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBT
dHJpbmcmIGltYWdlU3JjU2V0LCBjb25zdCBTdHJpbmcmIGltYWdlU2l6ZXMsIExpbmtMb2FkZXIq
IGxvYWRlcikKK3N0ZDo6dW5pcXVlX3B0cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50PiBMaW5r
TG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQoY29uc3QgTGlua0xvYWRQYXJhbWV0ZXJzJiBwYXJhbXMs
IERvY3VtZW50JiBkb2N1bWVudCwgTGlua0xvYWRlciogbG9hZGVyKQogewotICAgIGlmICghZG9j
dW1lbnQubG9hZGVyKCkgfHwgIXJlbEF0dHJpYnV0ZS5pc0xpbmtQcmVsb2FkKQorICAgIGlmICgh
ZG9jdW1lbnQubG9hZGVyKCkgfHwgIXBhcmFtcy5yZWxBdHRyaWJ1dGUuaXNMaW5rUHJlbG9hZCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5saW5rUHJlbG9hZEVuYWJsZWQoKSk7Ci0gICAgYXV0byB0
eXBlID0gTGlua0xvYWRlcjo6cmVzb3VyY2VUeXBlRnJvbUFzQXR0cmlidXRlKGFzKTsKKyAgICBh
dXRvIHR5cGUgPSBMaW5rTG9hZGVyOjpyZXNvdXJjZVR5cGVGcm9tQXNBdHRyaWJ1dGUocGFyYW1z
LmFzKTsKICAgICBpZiAoIXR5cGUpIHsKICAgICAgICAgZG9jdW1lbnQuYWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICI8bGluayByZWw9
cHJlbG9hZD4gbXVzdCBoYXZlIGEgdmFsaWQgYGFzYCB2YWx1ZSJfcyk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KICAgICBVUkwgdXJsOwotICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxpbmtQcmVsb2FkUmVzcG9uc2l2ZUltYWdlc0VuYWJs
ZWQoKSAmJiB0eXBlID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpJbWFnZVJlc291cmNlICYmICFp
bWFnZVNyY1NldC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBzb3VyY2VTaXplID0gU2l6ZXNB
dHRyaWJ1dGVQYXJzZXIoaW1hZ2VTaXplcywgZG9jdW1lbnQpLmxlbmd0aCgpOwotICAgICAgICBh
dXRvIGNhbmRpZGF0ZSA9IGJlc3RGaXRTb3VyY2VGb3JJbWFnZUF0dHJpYnV0ZXMoZG9jdW1lbnQu
ZGV2aWNlU2NhbGVGYWN0b3IoKSwgaHJlZi5zdHJpbmcoKSwgaW1hZ2VTcmNTZXQsIHNvdXJjZVNp
emUpOworICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxp
bmtQcmVsb2FkUmVzcG9uc2l2ZUltYWdlc0VuYWJsZWQoKSAmJiB0eXBlID09IENhY2hlZFJlc291
cmNlOjpUeXBlOjpJbWFnZVJlc291cmNlICYmICFwYXJhbXMuaW1hZ2VTcmNTZXQuaXNFbXB0eSgp
KSB7CisgICAgICAgIGF1dG8gc291cmNlU2l6ZSA9IFNpemVzQXR0cmlidXRlUGFyc2VyKHBhcmFt
cy5pbWFnZVNpemVzLCBkb2N1bWVudCkubGVuZ3RoKCk7CisgICAgICAgIGF1dG8gY2FuZGlkYXRl
ID0gYmVzdEZpdFNvdXJjZUZvckltYWdlQXR0cmlidXRlcyhkb2N1bWVudC5kZXZpY2VTY2FsZUZh
Y3RvcigpLCBwYXJhbXMuaHJlZi5zdHJpbmcoKSwgcGFyYW1zLmltYWdlU3JjU2V0LCBzb3VyY2VT
aXplKTsKICAgICAgICAgdXJsID0gZG9jdW1lbnQuY29tcGxldGVVUkwoVVJMKHsgfSwgY2FuZGlk
YXRlLnN0cmluZy50b1N0cmluZygpKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHVybCA9IGRvY3Vt
ZW50LmNvbXBsZXRlVVJMKGhyZWYpOworICAgICAgICB1cmwgPSBkb2N1bWVudC5jb21wbGV0ZVVS
TChwYXJhbXMuaHJlZik7CiAKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgaWYg
KGltYWdlU3JjU2V0LmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKHBhcmFtcy5pbWFnZVNyY1NldC5p
c0VtcHR5KCkpCiAgICAgICAgICAgICBkb2N1bWVudC5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpFcnJvciwgIjxsaW5rIHJlbD1wcmVsb2FkPiBo
YXMgYW4gaW52YWxpZCBgaHJlZmAgdmFsdWUiX3MpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBkb2N1bWVudC5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgIjxsaW5rIHJlbD1wcmVsb2FkPiBoYXMgYW4gaW52YWxpZCBgaW1hZ2Vz
cmNzZXRgIHZhbHVlIl9zKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGlm
ICghTWVkaWFRdWVyeUV2YWx1YXRvcjo6bWVkaWFBdHRyaWJ1dGVNYXRjaGVzKGRvY3VtZW50LCBt
ZWRpYSkpCisgICAgaWYgKCFNZWRpYVF1ZXJ5RXZhbHVhdG9yOjptZWRpYUF0dHJpYnV0ZU1hdGNo
ZXMoZG9jdW1lbnQsIHBhcmFtcy5tZWRpYSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IGlmICghaXNTdXBwb3J0ZWRUeXBlKHR5cGUudmFsdWUoKSwgbWltZVR5cGUpKQorICAgIGlmICgh
aXNTdXBwb3J0ZWRUeXBlKHR5cGUudmFsdWUoKSwgcGFyYW1zLm1pbWVUeXBlKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOwotICAgIGF1dG8gbGlua1JlcXVlc3Qg
PSBjcmVhdGVQb3RlbnRpYWxBY2Nlc3NDb250cm9sUmVxdWVzdCh1cmwsIGRvY3VtZW50LCBjcm9z
c09yaWdpbk1vZGUsIFdURk1vdmUob3B0aW9ucykpOworICAgIGF1dG8gbGlua1JlcXVlc3QgPSBj
cmVhdGVQb3RlbnRpYWxBY2Nlc3NDb250cm9sUmVxdWVzdCh1cmwsIGRvY3VtZW50LCBwYXJhbXMu
Y3Jvc3NPcmlnaW4sIFdURk1vdmUob3B0aW9ucykpOwogICAgIGxpbmtSZXF1ZXN0LnNldFByaW9y
aXR5KENhY2hlZFJlc291cmNlOjpkZWZhdWx0UHJpb3JpdHlGb3JSZXNvdXJjZVR5cGUodHlwZS52
YWx1ZSgpKSk7CiAgICAgbGlua1JlcXVlc3Quc2V0SW5pdGlhdG9yKCJsaW5rIik7CiAgICAgbGlu
a1JlcXVlc3Quc2V0SWdub3JlRm9yUmVxdWVzdENvdW50KHRydWUpOwpAQCAtMjc4LDkgKzI4MSw5
IEBAIHN0ZDo6dW5pcXVlX3B0cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50PiBMaW5rTG9hZGVy
OjpwcmVsb2FkSWZOZWVkZWQoY29uc3QgTGluCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZv
aWQgTGlua0xvYWRlcjo6cHJlZmV0Y2hJZk5lZWRlZChjb25zdCBMaW5rUmVsQXR0cmlidXRlJiBy
ZWxBdHRyaWJ1dGUsIGNvbnN0IFVSTCYgaHJlZiwgRG9jdW1lbnQmIGRvY3VtZW50KQordm9pZCBM
aW5rTG9hZGVyOjpwcmVmZXRjaElmTmVlZGVkKGNvbnN0IExpbmtMb2FkUGFyYW1ldGVycyYgcGFy
YW1zLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgaWYgKCFyZWxBdHRyaWJ1dGUuaXNMaW5r
UHJlZmV0Y2ggfHwgIWhyZWYuaXNWYWxpZCgpIHx8ICFkb2N1bWVudC5mcmFtZSgpIHx8ICFtX2Ns
aWVudC5zaG91bGRMb2FkTGluaygpKQorICAgIGlmICghcGFyYW1zLnJlbEF0dHJpYnV0ZS5pc0xp
bmtQcmVmZXRjaCB8fCAhcGFyYW1zLmhyZWYuaXNWYWxpZCgpIHx8ICFkb2N1bWVudC5mcmFtZSgp
IHx8ICFtX2NsaWVudC5zaG91bGRMb2FkTGluaygpKQogICAgICAgICByZXR1cm47CiAKICAgICBB
U1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5saW5rUHJlZmV0
Y2hFbmFibGVkKCkpOwpAQCAtMzAyLDcgKzMwNSw3IEBAIHZvaWQgTGlua0xvYWRlcjo6cHJlZmV0
Y2hJZk5lZWRlZChjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFVS
CiAgICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZTsKICAgICBv
cHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSA9IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZTsKICAg
ICBvcHRpb25zLmNhY2hpbmdQb2xpY3kgPSBDYWNoaW5nUG9saWN5OjpEaXNhbGxvd0NhY2hpbmc7
Ci0gICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UgPSBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpLnJlcXVlc3RMaW5rUmVzb3VyY2UodHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdChkb2N1bWVudC5jb21wbGV0ZVVSTChocmVmKSksIG9wdGlvbnMsIHByaW9yaXR5
KSkudmFsdWVfb3IobnVsbHB0cik7CisgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UgPSBkb2N1bWVu
dC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RMaW5rUmVzb3VyY2UodHlwZSwgQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCB7IGRvY3VtZW50LmNvbXBsZXRlVVJMKHBh
cmFtcy5ocmVmKSB9LCBvcHRpb25zLCBwcmlvcml0eSkpLnZhbHVlX29yKG51bGxwdHIpOwogICAg
IGlmIChtX2NhY2hlZExpbmtSZXNvdXJjZSkKICAgICAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2Ut
PmFkZENsaWVudCgqdGhpcyk7CiB9CkBAIC0zMTMsMjYgKzMxNiwyNiBAQCB2b2lkIExpbmtMb2Fk
ZXI6OmNhbmNlbExvYWQoKQogICAgICAgICBtX3ByZWxvYWRSZXNvdXJjZUNsaWVudC0+Y2xlYXIo
KTsKIH0KIAotYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRl
JiByZWxBdHRyaWJ1dGUsIGNvbnN0IFVSTCYgaHJlZiwgY29uc3QgU3RyaW5nJiBhcywgY29uc3Qg
U3RyaW5nJiBtZWRpYSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBjcm9z
c09yaWdpbiwgY29uc3QgU3RyaW5nJiBpbWFnZVNyY1NldCwgY29uc3QgU3RyaW5nJiBpbWFnZVNp
emVzLCBEb2N1bWVudCYgZG9jdW1lbnQpCitib29sIExpbmtMb2FkZXI6OmxvYWRMaW5rKGNvbnN0
IExpbmtMb2FkUGFyYW1ldGVycyYgcGFyYW1zLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAg
aWYgKHJlbEF0dHJpYnV0ZS5pc0ROU1ByZWZldGNoKSB7CisgICAgaWYgKHBhcmFtcy5yZWxBdHRy
aWJ1dGUuaXNETlNQcmVmZXRjaCkgewogICAgICAgICAvLyBGSVhNRTogVGhlIGhyZWYgYXR0cmli
dXRlIG9mIHRoZSBsaW5rIGVsZW1lbnQgY2FuIGJlIGluICIvL2hvc3RuYW1lIiBmb3JtLCBhbmQg
d2Ugc2hvdWxkbid0IGF0dGVtcHQKICAgICAgICAgLy8gdG8gY29tcGxldGUgdGhhdCBhcyBVUkwg
PGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODg1Nz4uCi0gICAgICAg
IGlmIChkb2N1bWVudC5zZXR0aW5ncygpLmRuc1ByZWZldGNoaW5nRW5hYmxlZCgpICYmIGhyZWYu
aXNWYWxpZCgpICYmICFocmVmLmlzRW1wdHkoKSAmJiBkb2N1bWVudC5mcmFtZSgpKQotICAgICAg
ICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkucHJlZmV0Y2hETlMoaHJl
Zi5ob3N0KCkudG9TdHJpbmcoKSk7CisgICAgICAgIGlmIChkb2N1bWVudC5zZXR0aW5ncygpLmRu
c1ByZWZldGNoaW5nRW5hYmxlZCgpICYmIHBhcmFtcy5ocmVmLmlzVmFsaWQoKSAmJiAhcGFyYW1z
LmhyZWYuaXNFbXB0eSgpICYmIGRvY3VtZW50LmZyYW1lKCkpCisgICAgICAgICAgICBkb2N1bWVu
dC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wcmVmZXRjaEROUyhwYXJhbXMuaHJlZi5ob3N0
KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCi0gICAgcHJlY29ubmVjdElmTmVlZGVkKHJlbEF0dHJp
YnV0ZSwgaHJlZiwgZG9jdW1lbnQsIGNyb3NzT3JpZ2luKTsKKyAgICBwcmVjb25uZWN0SWZOZWVk
ZWQocGFyYW1zLCBkb2N1bWVudCk7CiAKICAgICBpZiAobV9jbGllbnQuc2hvdWxkTG9hZExpbmso
KSkgewotICAgICAgICBhdXRvIHJlc291cmNlQ2xpZW50ID0gcHJlbG9hZElmTmVlZGVkKHJlbEF0
dHJpYnV0ZSwgaHJlZiwgZG9jdW1lbnQsIGFzLCBtZWRpYSwgbWltZVR5cGUsIGNyb3NzT3JpZ2lu
LCBpbWFnZVNyY1NldCwgaW1hZ2VTaXplcywgdGhpcyk7CisgICAgICAgIGF1dG8gcmVzb3VyY2VD
bGllbnQgPSBwcmVsb2FkSWZOZWVkZWQocGFyYW1zLCBkb2N1bWVudCwgdGhpcyk7CiAgICAgICAg
IGlmIChtX3ByZWxvYWRSZXNvdXJjZUNsaWVudCkKICAgICAgICAgICAgIG1fcHJlbG9hZFJlc291
cmNlQ2xpZW50LT5jbGVhcigpOwogICAgICAgICBpZiAocmVzb3VyY2VDbGllbnQpCiAgICAgICAg
ICAgICBtX3ByZWxvYWRSZXNvdXJjZUNsaWVudCA9IFdURk1vdmUocmVzb3VyY2VDbGllbnQpOwog
ICAgIH0KIAotICAgIHByZWZldGNoSWZOZWVkZWQocmVsQXR0cmlidXRlLCBocmVmLCBkb2N1bWVu
dCk7CisgICAgcHJlZmV0Y2hJZk5lZWRlZChwYXJhbXMsIGRvY3VtZW50KTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKaW5kZXggYzZkZmI4NDRhZjVj
MjBjZTM0MTY4YWUzOTk1ZGFlNGZlZWZiMjY3Yi4uYjM2ZDU5ZDAwOTE5ZTU5OTljZWRiMWVkMTQw
OTgxOGMwODY4ODRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkxpbmtMb2FkZXJDbGllbnQuaCIKKyNpbmNs
dWRlICJMaW5rUmVsQXR0cmlidXRlLmgiCiAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBA
IC00MywxNCArNDQsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBj
bGFzcyBMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50OwogCi1zdHJ1Y3QgTGlua1JlbEF0dHJpYnV0
ZTsKK3N0cnVjdCBMaW5rTG9hZFBhcmFtZXRlcnMgeworICAgIExpbmtSZWxBdHRyaWJ1dGUgcmVs
QXR0cmlidXRlOworICAgIFVSTCBocmVmOworICAgIFN0cmluZyBhczsKKyAgICBTdHJpbmcgbWVk
aWE7CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIFN0cmluZyBjcm9zc09yaWdpbjsKKyAgICBT
dHJpbmcgaW1hZ2VTcmNTZXQ7CisgICAgU3RyaW5nIGltYWdlU2l6ZXM7Cit9OwogCiBjbGFzcyBM
aW5rTG9hZGVyIDogcHJpdmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPExpbmtMb2FkZXI+IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMaW5rTG9hZGVyKExp
bmtMb2FkZXJDbGllbnQmKTsKICAgICB2aXJ0dWFsIH5MaW5rTG9hZGVyKCk7CiAKLSAgICBib29s
IGxvYWRMaW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIGFzLCBjb25zdCBTdHJpbmcmIG1lZGlhLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgY3Jvc3NPcmlnaW4sIGNvbnN0IFN0cmluZyYgaW1hZ2VTcmNTZXQsIGNvbnN0IFN0cmlu
ZyYgaW1hZ2VTaXplcywgRG9jdW1lbnQmKTsKKyAgICBib29sIGxvYWRMaW5rKGNvbnN0IExpbmtM
b2FkUGFyYW1ldGVycyYsIERvY3VtZW50Jik7CiAgICAgc3RhdGljIE9wdGlvbmFsPENhY2hlZFJl
c291cmNlOjpUeXBlPiByZXNvdXJjZVR5cGVGcm9tQXNBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBh
cyk7CiAKICAgICBlbnVtIGNsYXNzIE1lZGlhQXR0cmlidXRlQ2hlY2sgeyBNZWRpYUF0dHJpYnV0
ZUVtcHR5LCBNZWRpYUF0dHJpYnV0ZU5vdEVtcHR5LCBTa2lwTWVkaWFBdHRyaWJ1dGVDaGVjayB9
OwpAQCAtNjIsOSArNzIsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIG92ZXJyaWRlOwotICAgIHN0YXRpYyB2b2lkIHByZWNv
bm5lY3RJZk5lZWRlZChjb25zdCBMaW5rUmVsQXR0cmlidXRlJiwgY29uc3QgVVJMJiBocmVmLCBE
b2N1bWVudCYsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW4pOwotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4gcHJlbG9hZElmTmVlZGVkKGNvbnN0
IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25zdCBVUkwmIGhyZWYsIERvY3VtZW50JiwgY29uc3QgU3Ry
aW5nJiBhcywgY29uc3QgU3RyaW5nJiBtZWRpYSwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBpbWFnZVNyY1NldCwgY29uc3Qg
U3RyaW5nJiBpbWFnZVNpemVzLCBMaW5rTG9hZGVyKik7Ci0gICAgdm9pZCBwcmVmZXRjaElmTmVl
ZGVkKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25zdCBVUkwmIGhyZWYsIERvY3VtZW50Jik7
CisgICAgc3RhdGljIHZvaWQgcHJlY29ubmVjdElmTmVlZGVkKGNvbnN0IExpbmtMb2FkUGFyYW1l
dGVycyYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMaW5rUHJlbG9h
ZFJlc291cmNlQ2xpZW50PiBwcmVsb2FkSWZOZWVkZWQoY29uc3QgTGlua0xvYWRQYXJhbWV0ZXJz
JiwgRG9jdW1lbnQmLCBMaW5rTG9hZGVyKik7CisgICAgdm9pZCBwcmVmZXRjaElmTmVlZGVkKGNv
bnN0IExpbmtMb2FkUGFyYW1ldGVycyYsIERvY3VtZW50Jik7CiAKICAgICBMaW5rTG9hZGVyQ2xp
ZW50JiBtX2NsaWVudDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4g
bV9jYWNoZWRMaW5rUmVzb3VyY2U7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>