<?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>162144</bug_id>
          
          <creation_ts>2016-09-19 02:43:16 -0700</creation_ts>
          <short_desc>Refactor CachedResourceLoader::canRequest</short_desc>
          <delta_ts>2016-09-21 01:45:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1231045</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-19 02:43:16 -0700</bug_when>
    <thetext>This method is doing security checks including CORS mode and CSP.
But it is hard to relate to fetch, especially since it is based on the resource type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231048</commentid>
    <comment_count>1</comment_count>
      <attachid>289221</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-19 03:12:26 -0700</bug_when>
    <thetext>Created attachment 289221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231717</commentid>
    <comment_count>2</comment_count>
      <attachid>289221</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-20 09:55:59 -0700</bug_when>
    <thetext>Comment on attachment 289221
Patch

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

&gt; Source/WebCore/dom/ProcessingInstruction.cpp:142
&gt; +                ResourceLoaderOptions options = CachedResourceLoader::defaultCachedResourceOptions();

I would use auto here.

&gt; Source/WebCore/dom/ScriptElement.cpp:284
&gt; +    Document&amp; document = m_element.document();

I would use auto&amp; here.

&gt; Source/WebCore/dom/ScriptElement.cpp:286
&gt; +    if (document.frame() &amp;&amp; !document.frame()-&gt;settings().isScriptEnabled())
&gt; +        return nullptr;

I probably would have gone directly to document.settings() instead of going through document.frame(). Still would have needed a null check though.

    auto* settings = document.settings();
    if (settings &amp;&amp; !settings.isScriptEnabled())
        return nullptr;

&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:366
&gt; +        ResourceLoaderOptions options = m_options;

I would have used auto here.

&gt; Source/WebCore/loader/LinkLoader.cpp:203
&gt; +        ResourceLoaderOptions options = CachedResourceLoader::defaultCachedResourceOptions();

I would have used auto here.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:393
&gt; +    ContentSecurityPolicy::RedirectResponseReceived redirectResponseReceived = didReceiveRedirectResponse ? ContentSecurityPolicy::RedirectResponseReceived::Yes : ContentSecurityPolicy::RedirectResponseReceived::No;

I would have used auto here. This is really ugly too. The dark side of using enum class instead of boolean!

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:400
&gt; +        if (!m_document-&gt;contentSecurityPolicy()-&gt;allowScriptFromSource(url, false, redirectResponseReceived))

Mysterious false here.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:404
&gt; +        if (!m_document-&gt;contentSecurityPolicy()-&gt;allowStyleFromSource(url, false, redirectResponseReceived))

Mysterious false here.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:409
&gt; +        if (!m_document-&gt;contentSecurityPolicy()-&gt;allowImageFromSource(url, false, redirectResponseReceived))

Mysterious false here.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:416
&gt; +        if (!m_document-&gt;contentSecurityPolicy()-&gt;allowFontFromSource(url, false, redirectResponseReceived))

Mysterious false here.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:423
&gt; +        if (!m_document-&gt;contentSecurityPolicy()-&gt;allowMediaFromSource(url, false, redirectResponseReceived))

Mysterious false here.

&gt; Source/WebCore/loader/cache/CachedSVGDocumentReference.cpp:55
&gt; +    ResourceLoaderOptions fetchOptions = options;

I would have used auto here.

&gt; Source/WebCore/xml/XSLImportRule.cpp:104
&gt; +    ResourceLoaderOptions options = CachedResourceLoader::defaultCachedResourceOptions();

I would have used auto here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232011</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-21 01:09:48 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #2)
&gt; Comment on attachment 289221 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=289221&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/ProcessingInstruction.cpp:142
&gt; &gt; +                ResourceLoaderOptions options = CachedResourceLoader::defaultCachedResourceOptions();
&gt; 

OK

&gt; 
&gt; &gt; Source/WebCore/dom/ScriptElement.cpp:284
&gt; &gt; +    Document&amp; document = m_element.document();
&gt; 
&gt; I would use auto&amp; here.

OK

&gt; &gt; Source/WebCore/dom/ScriptElement.cpp:286
&gt; &gt; +    if (document.frame() &amp;&amp; !document.frame()-&gt;settings().isScriptEnabled())
&gt; &gt; +        return nullptr;
&gt; 
&gt; I probably would have gone directly to document.settings() instead of going
&gt; through document.frame(). Still would have needed a null check though.
&gt; 
&gt;     auto* settings = document.settings();
&gt;     if (settings &amp;&amp; !settings.isScriptEnabled())
&gt;         return nullptr;

OK

&gt; &gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:366
&gt; &gt; +        ResourceLoaderOptions options = m_options;
&gt; 
&gt; I would have used auto here.

m_options is ThreadableLoaderOptions.

&gt; &gt; Source/WebCore/loader/LinkLoader.cpp:203
&gt; &gt; +        ResourceLoaderOptions options = CachedResourceLoader::defaultCachedResourceOptions();
&gt; 
&gt; I would have used auto here.

OK

&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:393
&gt; &gt; +    ContentSecurityPolicy::RedirectResponseReceived redirectResponseReceived = didReceiveRedirectResponse ? ContentSecurityPolicy::RedirectResponseReceived::Yes : ContentSecurityPolicy::RedirectResponseReceived::No;
&gt; 
&gt; I would have used auto here. This is really ugly too. The dark side of using
&gt; enum class instead of boolean!

OK for auto.
It is especially ugly since the called function will pass to a submethod a boolean computed as: redirectResponseReceived == ContentSecurityPolicy::RedirectResponseReceived::Yes

&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:400
&gt; &gt; +        if (!m_document-&gt;contentSecurityPolicy()-&gt;allowScriptFromSource(url, false, redirectResponseReceived))
&gt; 
&gt; Mysterious false here.

I plan to remove the second parameter which is not very useful for all allowXXFromSource.

&gt; &gt; Source/WebCore/loader/cache/CachedSVGDocumentReference.cpp:55
&gt; &gt; +    ResourceLoaderOptions fetchOptions = options;
&gt; 
&gt; I would have used auto here.

OK

&gt; &gt; Source/WebCore/xml/XSLImportRule.cpp:104
&gt; &gt; +    ResourceLoaderOptions options = CachedResourceLoader::defaultCachedResourceOptions();
&gt; 
&gt; I would have used auto here.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232012</commentid>
    <comment_count>4</comment_count>
      <attachid>289436</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-21 01:12:46 -0700</bug_when>
    <thetext>Created attachment 289436
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232014</commentid>
    <comment_count>5</comment_count>
      <attachid>289436</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-21 01:45:38 -0700</bug_when>
    <thetext>Comment on attachment 289436
Patch for landing

Clearing flags on attachment: 289436

Committed r206203: &lt;http://trac.webkit.org/changeset/206203&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232015</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-21 01:45:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289221</attachid>
            <date>2016-09-19 03:12:26 -0700</date>
            <delta_ts>2016-09-21 01:12:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162144-20160919120941.patch</filename>
            <type>text/plain</type>
            <size>24590</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZiZWE3ZGU2M2E1NmM2
MjdhNTM1MThjNzNmZjliMGFjYjc0MGI5Ny4uZTYwNDY2NjYyNWZjNjUyZDJjZGM1MjQxMzBiNDVh
OWJmMmRjNWY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE2LTA5LTE5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBT
aW1wbGlmeWluZyBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdCBieSBkb2luZzoKKyAg
ICAgICAgLSBDU1AgY2hlY2tzIGluIGFub3RoZXIgbWV0aG9kCisgICAgICAgIC0gUmVtb3Zpbmcg
U2FtZS1PcmlnaW4gdHlwZS1zcGVjaWZpYyBjaGVja3MgYnkgc2V0dGluZyBGZXRjaE9wdGlvbnM6
Ok1vZGUgYXBwcm9wcmlhdGVseSBpbiByZXNvdXJjZSBsb2FkZXIgY2xpZW50cworICAgICAgICAt
IE1vdmluZyBzY3JpcHQgc3BlY2lmaWMgY2hlY2sgaW4gU2NyaXB0RWxlbWVudAorCisgICAgICAg
IE5vdGUgdGhhdCB0aGUgbGFzdCBjaGVjayBtYXkgYWZmZWN0IHRoZSBsb2FkaW5nIGJlaGF2aW9y
IGluIHRoZSBjYXNlIHNjcmlwdHMgYXJlIGVuYWJsZWQgd2hlbiBzdGFydGluZyB0aGUgbG9hZAor
ICAgICAgICBvZiBhIHNjcmlwdCwgYnV0IGdldHMgZGlzYWJsZWQgYmVmb3JlIHJlY2VpdmluZyBh
IHJlZGlyZWN0aW9uIGZvciB0aGUgc2NyaXB0IGxvYWQuCisKKyAgICAgICAgKiBkb20vUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVj
dGlvbjo6Y2hlY2tTdHlsZVNoZWV0KTogU2V0dGluZyBYU0xUIHN0eWxlc2hlZXQgZmV0Y2ggbW9k
ZSB0byBTYW1lT3JpZ2luLgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUpOiBSZXR1
cm5pbmcgZWFybHkgaWYgc2NyaXB0cyBhcmUgZGlzYWJsZWQuCisgICAgICAgICogbG9hZGVyL0Ny
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09y
aWdpblByZWZsaWdodENoZWNrZXI6OnN0YXJ0UHJlZmxpZ2h0KTogQnlwYXNzaW5nIENTUCBjaGVj
a3MuCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UpOiBCeXBhc3Npbmcg
Q1NQIGNoZWNrcyBhcyBDYWNoZWRSZXNvdXJjZUxvYWRlciB3YXMgbm90CisgICAgICAgIGNoZWNr
aW5nIHRoZW0gZm9yIE1haW5SZXNvdXJjZS4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQpOiBVc2lu
ZyBuZXcgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGNvbnN0cnVjdG9yIHRvIGVuYWJsZSBtb3Zpbmcg
dGhlIFJlc291cmNlUmVxdWVzdC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmxvYWRM
aW5rKTogU2tpcHBpbmcgQ1NQIGNoZWNrcyBmb3IgbGluayBwcmVmZXRjaC9zdWJyZXNvdXJjZXMg
YXMgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgd2FzCisgICAgICAgIG5vdCBjaGVja2luZyB0aGVtIGZv
ciBMaW5rIFByZWZldGNoIGFuZCBTdWJyZXNvdXJjZSB0eXBlcy4KKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OmFsbG93ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeSk6IEhlbHBlciBy
b3V0aW5lIHRvIGNoZWNrIGZvciBDU1AuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6Y2FuUmVxdWVzdCk6IE1ha2luZyB1c2Ugb2YgaW50cm9kdWNlZCBoZWxwZXIgcm91
dGluZS4KKyAgICAgICAgU2ltcGxpZmllZCBzYW1lIG9yaWdpbiBjaGVjayBhcyBhbGwgcmVxdWVz
dHMgc2hvdWxkIGhhdmUgdGhlaXIgb3B0aW9ucyBzZXQuCisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVl
c3Q6OkNhY2hlZFJlc291cmNlUmVxdWVzdCk6IE1vcmUgZWZmaWNpZW50IGNvbnN0cnVjdG9yLgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmxvYWQpOiBTZXR0aW5nIGZldGNo
IG1vZGUgdG8gU2FtZU9yaWdpbi4KKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojp1cGRhdGVFeHRlcm5hbERvY3VtZW50KTog
RGl0dG8uCisgICAgICAgICogeG1sL1hTTEltcG9ydFJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WFNMSW1wb3J0UnVsZTo6bG9hZFNoZWV0KTogRGl0dG8uCisKIDIwMTYtMDktMTggIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUg
dW5uZWNlc3NhcnkgU3RyaW5nIGFsbG9jYXRpb25zIGluIFVSTFBhcnNlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAppbmRleCBiOGQ0YmMyOThkZTUxM2Yy
Y2U0M2IxMDAyZThhYzQ2MjkzMWNiYjM2Li42ZGEyZTVhM2Y4NjMyNWZkN2I2MWI4YmRhNWE1MTY1
Njc0NDlhOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmNwcApAQCAtMTM3LDEzICsxMzcsMTUgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNo
ZWNrU3R5bGVTaGVldCgpCiAgICAgICAgICAgICBtX2xvYWRpbmcgPSB0cnVlOwogICAgICAgICAg
ICAgZG9jdW1lbnQoKS5hdXRob3JTdHlsZVNoZWV0cygpLmFkZFBlbmRpbmdTaGVldCgpOwogCi0g
ICAgICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qo
ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKSkpOwogI2lmIEVOQUJMRShYU0xUKQotICAgICAg
ICAgICAgaWYgKG1faXNYU0wpCi0gICAgICAgICAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3Vt
ZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0WFNMU3R5bGVTaGVldChXVEZNb3Zl
KHJlcXVlc3QpKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChtX2lzWFNMKSB7
CisgICAgICAgICAgICAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOworICAgICAgICAg
ICAgICAgIG9wdGlvbnMubW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbjsKKyAg
ICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxv
YWRlcigpLnJlcXVlc3RYU0xTdHlsZVNoZWV0KHtSZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQoKS5j
b21wbGV0ZVVSTChocmVmKSksIG9wdGlvbnN9KTsKKyAgICAgICAgICAgIH0gZWxzZQogI2VuZGlm
CiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZikpKTsKICAg
ICAgICAgICAgICAgICBTdHJpbmcgY2hhcnNldCA9IGF0dHJzLmdldCgiY2hhcnNldCIpOwogICAg
ICAgICAgICAgICAgIGlmIChjaGFyc2V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAg
Y2hhcnNldCA9IGRvY3VtZW50KCkuY2hhcnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1l
bnQuY3BwCmluZGV4IGMwMzNlOTViYWNlYTc1ZGQ4ZWEwYjgyODhlODhmNTM0ZTA0NjU5NGMuLmY4
MmEyY2UxOGJlNzE4ZmE1YzkwMWY2NDJjNzMxNDI0ZTA0YmQzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudC5jcHAKQEAgLTI4MSwxOSArMjgxLDI0IEBAIGJvb2wgU2NyaXB0RWxlbWVu
dDo6cmVxdWVzdENsYXNzaWNTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiAKIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gU2NyaXB0RWxlbWVudDo6cmVxdWVzdFNjcmlw
dFdpdGhDYWNoZShjb25zdCBVUkwmIHNvdXJjZVVSTCwgY29uc3QgU3RyaW5nJiBub25jZUF0dHJp
YnV0ZSkKIHsKLSAgICBib29sIGhhc0tub3duTm9uY2UgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5j
b250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dTY3JpcHRXaXRoTm9uY2Uobm9uY2VBdHRyaWJ1
dGUsIG1fZWxlbWVudC5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpKTsKKyAgICBEb2N1bWVudCYg
ZG9jdW1lbnQgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKTsKKyAgICBpZiAoZG9jdW1lbnQuZnJhbWUo
KSAmJiAhZG9jdW1lbnQuZnJhbWUoKS0+c2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBBU1NFUlQoZG9jdW1lbnQuY29udGVudFNlY3Vy
aXR5UG9saWN5KCkpOworICAgIGJvb2wgaGFzS25vd25Ob25jZSA9IGRvY3VtZW50LmNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpLT5hbGxvd1NjcmlwdFdpdGhOb25jZShub25jZUF0dHJpYnV0ZSwgbV9l
bGVtZW50LmlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKCkpOwogICAgIFJlc291cmNlTG9hZGVyT3B0
aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJj
ZU9wdGlvbnMoKTsKICAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24g
PSBoYXNLbm93bk5vbmNlID8gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBv
bGljeUNoZWNrIDogQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVj
azsKIAogICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChz
b3VyY2VVUkwpLCBvcHRpb25zKTsKLSAgICByZXF1ZXN0LnNldEFzUG90ZW50aWFsbHlDcm9zc09y
aWdpbihtX2VsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6
OmNyb3Nzb3JpZ2luQXR0ciksIG1fZWxlbWVudC5kb2N1bWVudCgpKTsKKyAgICByZXF1ZXN0LnNl
dEFzUG90ZW50aWFsbHlDcm9zc09yaWdpbihtX2VsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihIVE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0ciksIGRvY3VtZW50KTsKIAotICAg
IG1fZWxlbWVudC5kb2N1bWVudCgpLmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT51cGdyYWRlSW5z
ZWN1cmVSZXF1ZXN0SWZOZWVkZWQocmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCksIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TG9hZCk7CisgICAgZG9j
dW1lbnQuY29udGVudFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5l
ZWRlZChyZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKIAogICAgIHJlcXVlc3Quc2V0Q2hhcnNl
dChzY3JpcHRDaGFyc2V0KCkpOwogICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKCZlbGVtZW50KCkp
OwogCi0gICAgcmV0dXJuIG1fZWxlbWVudC5kb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVy
KCkucmVxdWVzdFNjcmlwdChXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICByZXR1cm4gZG9jdW1lbnQu
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0U2NyaXB0KFdURk1vdmUocmVxdWVzdCkpOwog
fQogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNl
Q29kZSYgc291cmNlQ29kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOWU4Y2Y2MTA5MjRiMDkyOWUxNTIwYjY0
OTRjMTk1NGExOGUzM2MzZS4uMGY2YzEyOTliMDNhNjI4MmRjMDhlMGFkZmUzZTZmYzQyMzQ0ZmZl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0
Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlci5jcHAKQEAgLTEwMyw2ICsxMDMsNyBAQCB2b2lkIENyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlcjo6c3RhcnRQcmVmbGlnaHQoKQogICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBv
cHRpb25zOwogICAgIG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBtX2xvYWRlci5vcHRpb25zKCku
cmVmZXJyZXJQb2xpY3k7CiAgICAgb3B0aW9ucy5yZWRpcmVjdCA9IEZldGNoT3B0aW9uczo6UmVk
aXJlY3Q6Ok1hbnVhbDsKKyAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRp
b24gPSBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2s7CiAK
ICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdChjcmVhdGVBY2Nlc3ND
b250cm9sUHJlZmxpZ2h0UmVxdWVzdChtX3JlcXVlc3QsIG1fbG9hZGVyLnNlY3VyaXR5T3JpZ2lu
KCkpLCBvcHRpb25zKTsKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5yZXNvdXJjZVRpbWluZ0VuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCmluZGV4IDVjODBhNmFiMjI1NzM1MjhiY2Y5NjI0MjBjMDAwOTU5NTJi
MzJmNTYuLjA2YmY3ZDQwOTAxY2YxM2ViNDk0ZWJkOWZiZDRiOGM1NmFhZWU2YjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTUwOSw3ICsxNTA5LDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCkKICAgICAvLyBJ
ZiB0aGlzIGlzIGEgcmVsb2FkIHRoZSBjYWNoZSBsYXllciBtaWdodCBoYXZlIG1hZGUgdGhlIHBy
ZXZpb3VzIHJlcXVlc3QgY29uZGl0aW9uYWwuIERvY3VtZW50TG9hZGVyIGNhbid0IGhhbmRsZSAz
MDQgcmVzcG9uc2VzIGl0c2VsZi4KICAgICByZXF1ZXN0Lm1ha2VVbmNvbmRpdGlvbmFsKCk7CiAK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVzb3VyY2VMb2FkZXJPcHRpb25zPiBtYWluUmVz
b3VyY2VMb2FkT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEs
IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0Ns
aWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlLCBT
a2lwU2VjdXJpdHlDaGVjaywgRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMsIEluY2x1ZGVDZXJ0
aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hl
Y2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZywgQ2FjaGluZ1BvbGlj
eTo6QWxsb3dDYWNoaW5nKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVzb3VyY2VMb2Fk
ZXJPcHRpb25zPiBtYWluUmVzb3VyY2VMb2FkT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNv
bnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIENsaWVudENyZWRlbnRp
YWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnM6OkNyZWRl
bnRpYWxzOjpJbmNsdWRlLCBTa2lwU2VjdXJpdHlDaGVjaywgRmV0Y2hPcHRpb25zOjpNb2RlOjpO
b0NvcnMsIEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9z
aXRpb246OlNraXBQb2xpY3lDaGVjaywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNM
b2FkaW5nLCBDYWNoaW5nUG9saWN5OjpBbGxvd0NhY2hpbmcpOwogICAgIG1fbWFpblJlc291cmNl
ID0gbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdE1haW5SZXNvdXJjZShDYWNoZWRSZXNv
dXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBtYWluUmVzb3VyY2VMb2FkT3B0
aW9ucykpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYTQ4YmM3
ODJkMWZiOGY2NzFiOTMwNTE1MzcwNGNhYjkxMzdjZmQwOS4uZDQyNTFjM2E0YjQ1MTQ4YWVkNjZm
NzVmMzIzYmM3N2ExMGQ2ODBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTM2Myw4ICszNjMsOSBAQCB2b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgU2VjdXJpdHlDaAogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtX3JlZmVycmVy
KTsKIAogICAgIGlmIChtX2FzeW5jKSB7Ci0gICAgICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25z
IG9wdGlvbnMgPSBtX29wdGlvbnM7CisgICAgICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRp
b25zID0gbV9vcHRpb25zOwogICAgICAgICBvcHRpb25zLmNsaWVudENyZWRlbnRpYWxQb2xpY3kg
PSBtX3NhbWVPcmlnaW5SZXF1ZXN0ID8gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xp
ZW50Rm9yQ3JlZGVudGlhbHMgOiBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGll
bnRGb3JDcmVkZW50aWFsczsKKyAgICAgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJ
bXBvc2l0aW9uID0gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNo
ZWNrOwogCiAgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0KFdURk1vdmUo
cmVxdWVzdCksIG9wdGlvbnMpOwogICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5yZXNvdXJjZVRpbWluZ0VuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9MaW5rTG9hZGVyLmNwcAppbmRleCAyZGFjOTJhNTc2MDEzMjNhMjE4YTA4MGMzYWU4YjY2Y2E1
Nzg0NDEzLi42M2U5OWM1NTRiNDI4YWI3ODQ1M2YwYTAzNDdjZTdhOTA4YmFjZDA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBMaW5r
TG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYgcmVsQXR0cmli
dXRlLCBjb25zdCBVUkwKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QoZG9j
dW1lbnQuY29tcGxldGVVUkwoaHJlZikpOwogICAgIHJlc291cmNlUmVxdWVzdC5zZXRJZ25vcmVG
b3JSZXF1ZXN0Q291bnQodHJ1ZSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGxpbmtSZXF1
ZXN0KHJlc291cmNlUmVxdWVzdCwgQ2FjaGVkUmVzb3VyY2U6OmRlZmF1bHRQcmlvcml0eUZvclJl
c291cmNlVHlwZSh0eXBlLnZhbHVlKCkpKTsKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgbGlu
a1JlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBDYWNoZWRSZXNvdXJjZTo6ZGVmYXVsdFBy
aW9yaXR5Rm9yUmVzb3VyY2VUeXBlKHR5cGUudmFsdWUoKSkpOwogICAgIGxpbmtSZXF1ZXN0LnNl
dEluaXRpYXRvcigibGluayIpOwogCiAgICAgbGlua1JlcXVlc3Quc2V0QXNQb3RlbnRpYWxseUNy
b3NzT3JpZ2luKGNyb3NzT3JpZ2luTW9kZSwgZG9jdW1lbnQpOwpAQCAtMjAwLDcgKzIwMCw5IEBA
IGJvb2wgTGlua0xvYWRlcjo6bG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYgcmVsQXR0
cmlidXRlLCBjb25zdCBVUkwmIGhyZWYsCiAgICAgICAgICAgICBtX2NhY2hlZExpbmtSZXNvdXJj
ZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgICAgICAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2Ug
PSBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIG1fY2FjaGVkTGlua1Jlc291cmNlID0gZG9j
dW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0TGlua1Jlc291cmNlKHR5cGUsIENh
Y2hlZFJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQuY29tcGxldGVVUkwo
aHJlZikpLCBwcmlvcml0eSkpOworICAgICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9u
cyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7
CisgICAgICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9IENvbnRl
bnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjazsKKyAgICAgICAgbV9j
YWNoZWRMaW5rUmVzb3VyY2UgPSBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVl
c3RMaW5rUmVzb3VyY2UodHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dChkb2N1bWVudC5jb21wbGV0ZVVSTChocmVmKSksIG9wdGlvbnMsIHByaW9yaXR5KSk7CiAgICAg
ICAgIGlmIChtX2NhY2hlZExpbmtSZXNvdXJjZSkKICAgICAgICAgICAgIG1fY2FjaGVkTGlua1Jl
c291cmNlLT5hZGRDbGllbnQodGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYWMwMjcyNTNkNzRl
ZGUzOGEwNTU3ZjIzNjRkZTM5MGI4Mjk2NTgzOS4uZjE2MmVlMzMwYmMwODc5MTk3OTNlNTM5ZjJi
YWJiMGQ3NjM1NjIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zODIsMTAwICszODIsNzMgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzU2FtZU9yaWdpbkRhdGFVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW8KICAgICByZXR1cm4gIWRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICYm
IHVybC5wcm90b2NvbElzRGF0YSgpICYmIG9wdGlvbnMuc2FtZU9yaWdpbkRhdGFVUkxGbGFnID09
IFNhbWVPcmlnaW5EYXRhVVJMRmxhZzo6U2V0OwogfQogCi1ib29sIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgZm9yUHJlbG9hZCwg
Ym9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSkKK2Jvb2wgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmFsbG93ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0
eXBlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25z
LCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKQogewotICAgIGlmIChkb2N1bWVudCgp
ICYmICFkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCkpIHsKLSAg
ICAgICAgaWYgKCFmb3JQcmVsb2FkKQotICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExv
Y2FsTG9hZEZhaWxlZChmcmFtZSgpLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KCkpOwotICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnJlcXVlc3RSZXNvdXJjZSBVUkwgd2FzIG5vdCBhbGxvd2VkIGJ5IFNlY3VyaXR5T3JpZ2luOjpj
YW5EaXNwbGF5Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgaWYgKG9wdGlv
bnMuY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9PSBDb250ZW50U2VjdXJpdHlQb2xp
Y3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2spCisgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgYm9vbCBza2lwQ29udGVudFNlY3VyaXR5UG9saWN5Q2hlY2sgPSBvcHRpb25zLmNvbnRlbnRT
ZWN1cml0eVBvbGljeUltcG9zaXRpb24gPT0gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlv
bjo6U2tpcFBvbGljeUNoZWNrOwotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJlY3RS
ZXNwb25zZVJlY2VpdmVkIHJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCA9IGRpZFJlY2VpdmVSZWRp
cmVjdFJlc3BvbnNlID8gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVj
ZWl2ZWQ6OlllcyA6IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25zZVJlY2Vp
dmVkOjpObzsKKyAgICBBU1NFUlQobV9kb2N1bWVudCk7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQt
PmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKIAotICAgIC8vIFNvbWUgdHlwZXMgb2YgcmVzb3Vy
Y2VzIGNhbiBiZSBsb2FkZWQgb25seSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gT3RoZXIgdHlwZXMg
b2YgcmVzb3VyY2VzLCBsaWtlIEltYWdlcywgU2NyaXB0cywgYW5kIENTUywgY2FuIGJlIGxvYWRl
ZCBmcm9tIGFueSBVUkwuCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW1vdmUgdGhhdCBjaGVj
ayBhbmQgaGFuZGxlIGl0IGJ5IHNldHRpbmcgdGhlIGNvcnJlY3QgUmVzb3VyY2VMb2FkZXJPcHRp
b25zOjptb2RlLgotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6
Ok1haW5SZXNvdXJjZToKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgot
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6Ci0gICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6U2NyaXB0OgotI2lmIEVOQUJMRShTVkdfRk9OVFMpCi0gICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6U1ZHRm9udFJlc291cmNlOgotI2VuZGlmCi0gICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6TWVkaWFSZXNvdXJjZToKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6
Ci0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2U6Ci0jaWYgRU5BQkxFKExJTktf
UFJFRkVUQ0gpCi0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgotICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtTdWJyZXNvdXJjZToKLSNlbmRpZgotI2lmIEVOQUJMRShW
SURFT19UUkFDSykKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUZXh0VHJhY2tSZXNvdXJjZToK
LSNlbmRpZgotICAgICAgICBpZiAob3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6
U2FtZU9yaWdpbiAmJiAhaXNTYW1lT3JpZ2luRGF0YVVSTCh1cmwsIG9wdGlvbnMsIGRpZFJlY2Vp
dmVSZWRpcmVjdFJlc3BvbnNlKSAmJiFtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5S
ZXF1ZXN0KHVybCkpIHsKLSAgICAgICAgICAgIHByaW50QWNjZXNzRGVuaWVkTWVzc2FnZSh1cmwp
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNWR0RvY3VtZW50UmVzb3VyY2U6Ci0jaWYgRU5BQkxF
KFhTTFQpCi0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6WFNMU3R5bGVTaGVldDoKLSAgICAgICAg
aWYgKCFtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHVybCkpIHsKLSAg
ICAgICAgICAgIHByaW50QWNjZXNzRGVuaWVkTWVzc2FnZSh1cmwpOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAg
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkIHJlZGlyZWN0
UmVzcG9uc2VSZWNlaXZlZCA9IGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlID8gQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6OlllcyA6IENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpObzsKIAogICAgIHN3aXRjaCAo
dHlwZSkgewogI2lmIEVOQUJMRShYU0xUKQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhTTFN0
eWxlU2hlZXQ6Ci0gICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5
KCktPmFsbG93U2NyaXB0RnJvbVNvdXJjZSh1cmwsIHNraXBDb250ZW50U2VjdXJpdHlQb2xpY3lD
aGVjaywgcmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3Jp
cHQ6Ci0gICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFs
bG93U2NyaXB0RnJvbVNvdXJjZSh1cmwsIHNraXBDb250ZW50U2VjdXJpdHlQb2xpY3lDaGVjaywg
cmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgaWYgKGZyYW1lKCkgJiYgIWZyYW1lKCktPnNldHRpbmdzKCkuaXNTY3JpcHRFbmFibGVk
KCkpCisgICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFs
bG93U2NyaXB0RnJvbVNvdXJjZSh1cmwsIGZhbHNlLCByZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENh
Y2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OgotICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd1N0eWxlRnJvbVNvdXJjZSh1cmwsIHNraXBDb250
ZW50U2VjdXJpdHlQb2xpY3lDaGVjaywgcmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkKSkKKyAgICAg
ICAgaWYgKCFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dTdHlsZUZy
b21Tb3VyY2UodXJsLCBmYWxzZSwgcmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6U1ZHRG9jdW1lbnRSZXNvdXJjZToKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJl
c291cmNlOgotICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgp
LT5hbGxvd0ltYWdlRnJvbVNvdXJjZSh1cmwsIHNraXBDb250ZW50U2VjdXJpdHlQb2xpY3lDaGVj
aywgcmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkKSkKKyAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5j
b250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dJbWFnZUZyb21Tb3VyY2UodXJsLCBmYWxzZSwg
cmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFNWR19GT05UUykKICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpTVkdGb250UmVzb3VyY2U6CiAjZW5kaWYKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpG
b250UmVzb3VyY2U6IHsKLSAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQ
b2xpY3koKS0+YWxsb3dGb250RnJvbVNvdXJjZSh1cmwsIHNraXBDb250ZW50U2VjdXJpdHlQb2xp
Y3lDaGVjaywgcmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkKSkKKyAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpGb250UmVzb3VyY2U6CisgICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCktPmFsbG93Rm9udEZyb21Tb3VyY2UodXJsLCBmYWxzZSwgcmVkaXJlY3RSZXNw
b25zZVJlY2VpdmVkKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZToKLSAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZToKLSNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkK
LSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2g6Ci0gICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6TGlua1N1YnJlc291cmNlOgotI2VuZGlmCi0gICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6Ok1lZGlhUmVzb3VyY2U6CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlRleHRUcmFja1Jlc291cmNlOgogI2VuZGlmCi0g
ICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93TWVk
aWFGcm9tU291cmNlKHVybCwgc2tpcENvbnRlbnRTZWN1cml0eVBvbGljeUNoZWNrLCByZWRpcmVj
dFJlc3BvbnNlUmVjZWl2ZWQpKQorICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1
cml0eVBvbGljeSgpLT5hbGxvd01lZGlhRnJvbVNvdXJjZSh1cmwsIGZhbHNlLCByZWRpcmVjdFJl
c3BvbnNlUmVjZWl2ZWQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBicmVh
azsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZToKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5S
ZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgZm9yUHJlbG9hZCwgYm9vbCBkaWRS
ZWNlaXZlUmVkaXJlY3RSZXNwb25zZSkKK3sKKyAgICBpZiAoZG9jdW1lbnQoKSAmJiAhZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwpKSB7CisgICAgICAgIGlmICgh
Zm9yUHJlbG9hZCkKKyAgICAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWls
ZWQoZnJhbWUoKSwgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpKTsKKyAgICAg
ICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVz
b3VyY2UgVVJMIHdhcyBub3QgYWxsb3dlZCBieSBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheSIp
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgLy8gRklYTUU6IFJlbW92ZSBz
YW1lLW9yaWdpbiBkYXRhIFVSTCBmbGFnIHNpbmNlIGl0IHdhcyByZW1vdmVkIGZyb20gZmV0Y2gg
c3BlYyAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvZmV0Y2gvaXNzdWVzLzM4MSkuCisg
ICAgaWYgKG9wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW4gJiYg
IWlzU2FtZU9yaWdpbkRhdGFVUkwodXJsLCBvcHRpb25zLCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNw
b25zZSkgJiYgIW1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QodXJsKSkg
eworICAgICAgICBwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UodXJsKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmICghYWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5
KHR5cGUsIHVybCwgb3B0aW9ucywgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICAvLyBTVkcgSW1hZ2VzIGhhdmUgdW5pcXVlIHNlY3VyaXR5
IHJ1bGVzIHRoYXQgcHJldmVudCBhbGwgc3VicmVzb3VyY2UgcmVxdWVzdHMgZXhjZXB0IGZvciBk
YXRhIHVybHMuCiAgICAgaWYgKHR5cGUgIT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSAm
JiBmcmFtZSgpICYmIGZyYW1lKCktPnBhZ2UoKSkgewogICAgICAgICBpZiAoZnJhbWUoKS0+cGFn
ZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5pc1NWR0ltYWdlQ2hyb21lQ2xpZW50KCkgJiYgIXVybC5w
cm90b2NvbElzRGF0YSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCA1YWY3MWQyYWFhMmMzMzAzOWFlYzBlNmQ4ZmE3ODEy
MTc4Yjc3NDc5Li43NTk5M2NiMDg4ZmU0MWMzNWRmNWZjYjE0YzQ3OTlhZjJjZDE1MWRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aApAQCAtMTYxLDYgKzE2MSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZENvbnRpbnVl
QWZ0ZXJOb3RpZnlpbmdMb2FkZWRGcm9tTWVtb3J5Q2FjaGUoY29uc3QgQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBib29sIGNoZWNrSW5zZWN1cmVDb250ZW50
KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBVUkwmKSBjb25zdDsKKyAgICBib29sIGFsbG93
ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgVVJM
JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgYm9vbCk7CiAKICAgICB2b2lkIHBlcmZv
cm1Qb3N0TG9hZEFjdGlvbnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAppbmRleCBkYzU0YmRmMTA0NTYxN2QzYThj
Yzc0OTEyMWM3NGY5NzkxNWZiMjE3Li4yZmYzZmM3N2JmZDcyYmQ3NWRjYjU2ZGQwNDgyYTM3YTll
ZmE4OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0LmNwcApAQCAtNTIsOSArNTIsOSBAQCBDYWNoZWRSZXNvdXJjZVJlcXVl
c3Q6OkNhY2hlZFJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXNvdXJjZVJlcXVl
c3QsCiB7CiB9CiAKLUNhY2hlZFJlc291cmNlUmVxdWVzdDo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBPcHRpb25hbDxSZXNvdXJj
ZUxvYWRQcmlvcml0eT4gcHJpb3JpdHkpCi0gICAgOiBtX3Jlc291cmNlUmVxdWVzdChyZXNvdXJj
ZVJlcXVlc3QpCi0gICAgLCBtX29wdGlvbnMoQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRD
YWNoZWRSZXNvdXJjZU9wdGlvbnMoKSkKK0NhY2hlZFJlc291cmNlUmVxdWVzdDo6Q2FjaGVkUmVz
b3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0
eT4gcHJpb3JpdHkpCisgICAgOiBtX3Jlc291cmNlUmVxdWVzdChXVEZNb3ZlKHJlc291cmNlUmVx
dWVzdCkpCisgICAgLCBtX29wdGlvbnMob3B0aW9ucykKICAgICAsIG1fcHJpb3JpdHkocHJpb3Jp
dHkpCiAgICAgLCBtX2ZvclByZWxvYWQoZmFsc2UpCiAgICAgLCBtX2RlZmVyKE5vRGVmZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
LmgKaW5kZXggODI3ZWJiYmU1ODY2NzRlYmJhNzY5OGI0OTc4M2FkM2Q4ZmRmYzAyMC4uNTRkODhk
OWRhZTQ0OWE1OThlMTVkMDBhZDljYzAxZDcxNGNlZTEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaApAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAKICAgICBleHBsaWNpdCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0ID0gU3RyaW5nKCksIE9wdGlv
bmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiA9IE51bGxvcHQpOwogICAgIENhY2hlZFJlc291cmNl
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7
Ci0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlv
bmFsPFJlc291cmNlTG9hZFByaW9yaXR5Pik7CisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBPcHRpb25hbDxS
ZXNvdXJjZUxvYWRQcmlvcml0eT4pOwogICAgIH5DYWNoZWRSZXNvdXJjZVJlcXVlc3QoKTsKIAog
ICAgIFJlc291cmNlUmVxdWVzdCYgbXV0YWJsZVJlc291cmNlUmVxdWVzdCgpIHsgcmV0dXJuIG1f
cmVzb3VyY2VSZXF1ZXN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcAppbmRleCA1ZTQ4YTEzOTI5Njdh
N2IzYjZkMDg0YmRhOGYwNzhhYjFkZjFlMzg1Li4wNzAwMGQwN2M0MDQzZmY3YzUxNDAxMWJiMTE1
YmJhZjJiZmIxOTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAKQEAgLTUyLDcgKzUyLDkgQEAgdm9p
ZCBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYg
bG9hZGVyLCBjb25zdCBSZXNvdXIKICAgICBpZiAobV9sb2FkUmVxdWVzdGVkKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QobG9hZGVyLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKG1fdXJsKSksIG9wdGlvbnMpOworICAg
IFJlc291cmNlTG9hZGVyT3B0aW9ucyBmZXRjaE9wdGlvbnMgPSBvcHRpb25zOworICAgIGZldGNo
T3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luOworICAgIENhY2hl
ZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChsb2FkZXIuZG9jdW1lbnQo
KS0+Y29tcGxldGVVUkwobV91cmwpKSwgZmV0Y2hPcHRpb25zKTsKICAgICByZXF1ZXN0LnNldElu
aXRpYXRvcihjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKICAgICBtX2Rv
Y3VtZW50ID0gbG9hZGVyLnJlcXVlc3RTVkdEb2N1bWVudChXVEZNb3ZlKHJlcXVlc3QpKTsKICAg
ICBpZiAobV9kb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCAy
MWUyNzFmYTYxYmMyMzczY2E3NmQ0MzAxN2E4MzJjM2ViYzQ5ODU0Li5hMDQ3YWQ2ODgzYmU4YTg1
OGM1ZGY1Y2Y0YjMwMTc5MWNiY2NjMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQu
Y3BwCkBAIC01NzAsNyArNTcwLDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojp1cGRhdGVFeHRlcm5h
bERvY3VtZW50KCkKICAgICBlbHNlIHsKICAgICAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9w
dGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9u
cygpOwogICAgICAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24gPSBp
c0luVXNlckFnZW50U2hhZG93VHJlZSgpID8gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlv
bjo6U2tpcFBvbGljeUNoZWNrIDogQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Q
b2xpY3lDaGVjazsKLQorICAgICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6
OlNhbWVPcmlnaW47CiAgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0IHsgUmVz
b3VyY2VSZXF1ZXN0IHsgZXh0ZXJuYWxEb2N1bWVudFVSTCB9LCBvcHRpb25zIH07CiAgICAgICAg
IHJlcXVlc3Quc2V0SW5pdGlhdG9yKHRoaXMpOwogICAgICAgICBtX2V4dGVybmFsRG9jdW1lbnQg
PSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFNWR0RvY3VtZW50KFdU
Rk1vdmUocmVxdWVzdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9y
dFJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwCmluZGV4IGVi
OTZiNGI5MGYxZGIwNjdmNmE2ODBmOGJjZGRmNjM2YmI5NDU1ZDIuLjg1Mjg3MjBmNzEwMzVkZmIz
NWUzYjI2NThiNmIxOWNjNWNkZWNiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xJbXBvcnRSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5j
cHAKQEAgLTEwMCw3ICsxMDAsMTAgQEAgdm9pZCBYU0xJbXBvcnRSdWxlOjpsb2FkU2hlZXQoKQog
CiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAgICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNs
aWVudCh0aGlzKTsKLSAgICBtX2NhY2hlZFNoZWV0ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJl
cXVlc3RYU0xTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qo
Y2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGFic0hyZWYpKSkp
OworCisgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOworICAgIG9wdGlvbnMubW9kZSA9
IEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbjsKKyAgICBtX2NhY2hlZFNoZWV0ID0gY2Fj
aGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RYU0xTdHlsZVNoZWV0KHtSZXNvdXJjZVJlcXVlc3Qo
Y2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGFic0hyZWYpKSwg
b3B0aW9uc30pOwogCiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpIHsKICAgICAgICAgbV9jYWNoZWRT
aGVldC0+YWRkQ2xpZW50KHRoaXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289436</attachid>
            <date>2016-09-21 01:12:46 -0700</date>
            <delta_ts>2016-09-21 01:45:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-162144-20160921100957.patch</filename>
            <type>text/plain</type>
            <size>24888</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjgyODYyNTYyNGEzY2Q5
YWZjYTQ5MDFkMzk2MTVjNmFjM2E2NzNlNi4uOTQ3M2QwMWM5NjgzMzMwMmI3ZDNlZTUyZDY4YWFh
MTIwZTcwNTJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE2LTA5LTIxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBTaW1w
bGlmeWluZyBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdCBieSBkb2luZzoKKyAgICAg
ICAgLSBDU1AgY2hlY2tzIGluIGFub3RoZXIgbWV0aG9kCisgICAgICAgIC0gUmVtb3ZpbmcgU2Ft
ZS1PcmlnaW4gdHlwZS1zcGVjaWZpYyBjaGVja3MgYnkgc2V0dGluZyBGZXRjaE9wdGlvbnM6Ok1v
ZGUgYXBwcm9wcmlhdGVseSBpbiByZXNvdXJjZSBsb2FkZXIgY2xpZW50cworICAgICAgICAtIE1v
dmluZyBzY3JpcHQgc3BlY2lmaWMgY2hlY2sgaW4gU2NyaXB0RWxlbWVudAorCisgICAgICAgIE5v
dGUgdGhhdCB0aGUgbGFzdCBjaGVjayBtYXkgYWZmZWN0IHRoZSBsb2FkaW5nIGJlaGF2aW9yIGlu
IHRoZSBjYXNlIHNjcmlwdHMgYXJlIGVuYWJsZWQgd2hlbiBzdGFydGluZyB0aGUgbG9hZAorICAg
ICAgICBvZiBhIHNjcmlwdCwgYnV0IGdldHMgZGlzYWJsZWQgYmVmb3JlIHJlY2VpdmluZyBhIHJl
ZGlyZWN0aW9uIGZvciB0aGUgc2NyaXB0IGxvYWQuCisKKyAgICAgICAgKiBkb20vUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlv
bjo6Y2hlY2tTdHlsZVNoZWV0KTogU2V0dGluZyBYU0xUIHN0eWxlc2hlZXQgZmV0Y2ggbW9kZSB0
byBTYW1lT3JpZ2luLgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUpOiBSZXR1cm5p
bmcgZWFybHkgaWYgc2NyaXB0cyBhcmUgZGlzYWJsZWQuCisgICAgICAgICogbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXI6OnN0YXJ0UHJlZmxpZ2h0KTogQnlwYXNzaW5nIENTUCBjaGVja3Mu
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UpOiBCeXBhc3NpbmcgQ1NQ
IGNoZWNrcyBhcyBDYWNoZWRSZXNvdXJjZUxvYWRlciB3YXMgbm90CisgICAgICAgIGNoZWNraW5n
IHRoZW0gZm9yIE1haW5SZXNvdXJjZS4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6bG9hZFJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQpOiBVc2luZyBu
ZXcgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGNvbnN0cnVjdG9yIHRvIGVuYWJsZSBtb3ZpbmcgdGhl
IFJlc291cmNlUmVxdWVzdC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmxvYWRMaW5r
KTogU2tpcHBpbmcgQ1NQIGNoZWNrcyBmb3IgbGluayBwcmVmZXRjaC9zdWJyZXNvdXJjZXMgYXMg
Q2FjaGVkUmVzb3VyY2VMb2FkZXIgd2FzCisgICAgICAgIG5vdCBjaGVja2luZyB0aGVtIGZvciBM
aW5rIFByZWZldGNoIGFuZCBTdWJyZXNvdXJjZSB0eXBlcy4KKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VMb2FkZXI6OmFsbG93ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeSk6IEhlbHBlciByb3V0
aW5lIHRvIGNoZWNrIGZvciBDU1AuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6Y2FuUmVxdWVzdCk6IE1ha2luZyB1c2Ugb2YgaW50cm9kdWNlZCBoZWxwZXIgcm91dGlu
ZS4KKyAgICAgICAgU2ltcGxpZmllZCBzYW1lIG9yaWdpbiBjaGVjayBhcyBhbGwgcmVxdWVzdHMg
c2hvdWxkIGhhdmUgdGhlaXIgb3B0aW9ucyBzZXQuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6
OkNhY2hlZFJlc291cmNlUmVxdWVzdCk6IE1vcmUgZWZmaWNpZW50IGNvbnN0cnVjdG9yLgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmxvYWQpOiBTZXR0aW5nIGZldGNoIG1v
ZGUgdG8gU2FtZU9yaWdpbi4KKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojp1cGRhdGVFeHRlcm5hbERvY3VtZW50KTogRGl0
dG8uCisgICAgICAgICogeG1sL1hTTEltcG9ydFJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
WFNMSW1wb3J0UnVsZTo6bG9hZFNoZWV0KTogRGl0dG8uCisKIDIwMTYtMDktMjEgIEplcmVteSBI
dWRkbGVzdG9uIFNlcXVvaWEgIDxqZXJlbXlodUBhcHBsZS5jb20+CiAKICAgICAgICAgW0dUS10g
Rml4IGJ1aWxkIGZhaWx1cmUgaW4gY2xpcGJvYXJkIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKaW5kZXggYjhkNGJjMjk4ZGU1MTNmMmNlNDNi
MTAwMmU4YWM0NjI5MzFjYmIzNi4uYTliZjhlMTU4YjhkNDIxMzM3NjM5MTU3ZmJlYmU2YzY3ZmUw
NWJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAK
QEAgLTEzNywxMyArMTM3LDE1IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0
eWxlU2hlZXQoKQogICAgICAgICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIGRv
Y3VtZW50KCkuYXV0aG9yU3R5bGVTaGVldHMoKS5hZGRQZW5kaW5nU2hlZXQoKTsKIAotICAgICAg
ICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3Vt
ZW50KCkuY29tcGxldGVVUkwoaHJlZikpKTsKICNpZiBFTkFCTEUoWFNMVCkKLSAgICAgICAgICAg
IGlmIChtX2lzWFNMKQotICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgp
LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFhTTFN0eWxlU2hlZXQoV1RGTW92ZShyZXF1
ZXN0KSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAobV9pc1hTTCkgeworICAg
ICAgICAgICAgICAgIGF1dG8gb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0
Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CisgICAgICAgICAgICAgICAgb3B0aW9ucy5tb2RlID0g
RmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luOworICAgICAgICAgICAgICAgIG1fY2FjaGVk
U2hlZXQgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFhTTFN0eWxl
U2hlZXQoe1Jlc291cmNlUmVxdWVzdChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpKSwgb3B0
aW9uc30pOworICAgICAgICAgICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qo
ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKSkpOwogICAgICAgICAgICAgICAgIFN0cmluZyBj
aGFyc2V0ID0gYXR0cnMuZ2V0KCJjaGFyc2V0Iik7CiAgICAgICAgICAgICAgICAgaWYgKGNoYXJz
ZXQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gZG9jdW1lbnQoKS5j
aGFyc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggYzAzM2U5NWJh
Y2VhNzVkZDhlYTBiODI4OGU4OGY1MzRlMDQ2NTk0Yy4uMmI2OTU4MTEzN2JlMjUyZmM1OGRmOGEx
ZjgzYmI0NDAzMGNhMDM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAt
MjgxLDE5ICsyODEsMjUgQEAgYm9vbCBTY3JpcHRFbGVtZW50OjpyZXF1ZXN0Q2xhc3NpY1Njcmlw
dChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIAogQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
U2NyaXB0PiBTY3JpcHRFbGVtZW50OjpyZXF1ZXN0U2NyaXB0V2l0aENhY2hlKGNvbnN0IFVSTCYg
c291cmNlVVJMLCBjb25zdCBTdHJpbmcmIG5vbmNlQXR0cmlidXRlKQogewotICAgIGJvb2wgaGFz
S25vd25Ob25jZSA9IG1fZWxlbWVudC5kb2N1bWVudCgpLmNvbnRlbnRTZWN1cml0eVBvbGljeSgp
LT5hbGxvd1NjcmlwdFdpdGhOb25jZShub25jZUF0dHJpYnV0ZSwgbV9lbGVtZW50LmlzSW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlKCkpOworICAgIERvY3VtZW50JiBkb2N1bWVudCA9IG1fZWxlbWVudC5k
b2N1bWVudCgpOworICAgIGF1dG8qIHNldHRpbmdzID0gZG9jdW1lbnQuc2V0dGluZ3MoKTsKKyAg
ICBpZiAoc2V0dGluZ3MgJiYgIXNldHRpbmdzLT5pc1NjcmlwdEVuYWJsZWQoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBBU1NFUlQoZG9jdW1lbnQuY29udGVudFNlY3VyaXR5UG9s
aWN5KCkpOworICAgIGJvb2wgaGFzS25vd25Ob25jZSA9IGRvY3VtZW50LmNvbnRlbnRTZWN1cml0
eVBvbGljeSgpLT5hbGxvd1NjcmlwdFdpdGhOb25jZShub25jZUF0dHJpYnV0ZSwgbV9lbGVtZW50
LmlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKCkpOwogICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBv
cHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlv
bnMoKTsKICAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24gPSBoYXNL
bm93bk5vbmNlID8gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNo
ZWNrIDogQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjazsKIAog
ICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChzb3VyY2VV
UkwpLCBvcHRpb25zKTsKLSAgICByZXF1ZXN0LnNldEFzUG90ZW50aWFsbHlDcm9zc09yaWdpbiht
X2VsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNyb3Nz
b3JpZ2luQXR0ciksIG1fZWxlbWVudC5kb2N1bWVudCgpKTsKKyAgICByZXF1ZXN0LnNldEFzUG90
ZW50aWFsbHlDcm9zc09yaWdpbihtX2VsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihIVE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0ciksIGRvY3VtZW50KTsKIAotICAgIG1fZWxl
bWVudC5kb2N1bWVudCgpLmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT51cGdyYWRlSW5zZWN1cmVS
ZXF1ZXN0SWZOZWVkZWQocmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCksIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TG9hZCk7CisgICAgZG9jdW1lbnQu
Y29udGVudFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChy
ZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpJ
bnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKIAogICAgIHJlcXVlc3Quc2V0Q2hhcnNldChzY3Jp
cHRDaGFyc2V0KCkpOwogICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKCZlbGVtZW50KCkpOwogCi0g
ICAgcmV0dXJuIG1fZWxlbWVudC5kb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVx
dWVzdFNjcmlwdChXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICByZXR1cm4gZG9jdW1lbnQuY2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0U2NyaXB0KFdURk1vdmUocmVxdWVzdCkpOwogfQogCiB2
b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYg
c291cmNlQ29kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2lu
UHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOWU4Y2Y2MTA5MjRiMDkyOWUxNTIwYjY0OTRjMTk1
NGExOGUzM2MzZS4uMGY2YzEyOTliMDNhNjI4MmRjMDhlMGFkZmUzZTZmYzQyMzQ0ZmZlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hl
Y2tlci5jcHAKQEAgLTEwMyw2ICsxMDMsNyBAQCB2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hl
Y2tlcjo6c3RhcnRQcmVmbGlnaHQoKQogICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25z
OwogICAgIG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBtX2xvYWRlci5vcHRpb25zKCkucmVmZXJy
ZXJQb2xpY3k7CiAgICAgb3B0aW9ucy5yZWRpcmVjdCA9IEZldGNoT3B0aW9uczo6UmVkaXJlY3Q6
Ok1hbnVhbDsKKyAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24gPSBD
b250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2s7CiAKICAgICBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdChjcmVhdGVBY2Nlc3NDb250cm9s
UHJlZmxpZ2h0UmVxdWVzdChtX3JlcXVlc3QsIG1fbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCkpLCBv
cHRpb25zKTsKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5yZXNvdXJjZVRpbWluZ0VuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCmluZGV4IDU4MjY1YzYwZGU2OTc3NTg2MGUxYjdjYTZmODNlYmFiOWMxOTEyMGYu
LmQ3NDhkMDg4NTYzY2VmOWYwNjc3NzA2ZjQzYzEzN2MyODA4ZWI4MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTUxOCw3ICsxNTE4LDcgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCkKIAogICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZTogU3RhcnRpbmcgbG9hZCAo
ZnJhbWUgPSAlcCwgbWFpbiA9ICVkKSIsIG1fZnJhbWUsIG1fZnJhbWUtPmlzTWFpbkZyYW1lKCkp
OwogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlc291cmNlTG9hZGVyT3B0aW9ucz4gbWFp
blJlc291cmNlTG9hZE9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJE
YXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlB
c2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVk
ZSwgU2tpcFNlY3VyaXR5Q2hlY2ssIEZldGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzLCBJbmNsdWRl
Q2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGlj
eUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIENhY2hpbmdQ
b2xpY3k6OkFsbG93Q2FjaGluZyk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlc291cmNl
TG9hZGVyT3B0aW9ucz4gbWFpblJlc291cmNlTG9hZE9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25p
ZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zOjpD
cmVkZW50aWFsczo6SW5jbHVkZSwgU2tpcFNlY3VyaXR5Q2hlY2ssIEZldGNoT3B0aW9uczo6TW9k
ZTo6Tm9Db3JzLCBJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJ
bXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVm
ZXJzTG9hZGluZywgQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nKTsKICAgICBtX21haW5SZXNv
dXJjZSA9IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RNYWluUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgbWFpblJlc291cmNlTG9h
ZE9wdGlvbnMpKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGE0
OGJjNzgyZDFmYjhmNjcxYjkzMDUxNTM3MDRjYWI5MTM3Y2ZkMDkuLmQ0MjUxYzNhNGI0NTE0OGFl
ZDY2Zjc1ZjMyM2JjNzdhMTBkNjgwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0zNjMsOCArMzYzLDkgQEAgdm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFNlY3VyaXR5Q2gKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIobV9yZWZl
cnJlcik7CiAKICAgICBpZiAobV9hc3luYykgewotICAgICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucyBvcHRpb25zID0gbV9vcHRpb25zOworICAgICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMg
b3B0aW9ucyA9IG1fb3B0aW9uczsKICAgICAgICAgb3B0aW9ucy5jbGllbnRDcmVkZW50aWFsUG9s
aWN5ID0gbV9zYW1lT3JpZ2luUmVxdWVzdCA/IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFz
a0NsaWVudEZvckNyZWRlbnRpYWxzIDogQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNr
Q2xpZW50Rm9yQ3JlZGVudGlhbHM7CisgICAgICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5UG9s
aWN5SW1wb3NpdGlvbiA9IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xp
Y3lDaGVjazsKIAogICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdChXVEZN
b3ZlKHJlcXVlc3QpLCBvcHRpb25zKTsKICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTGlua0xvYWRlci5jcHAKaW5kZXggMmRhYzkyYTU3NjAxMzIzYTIxOGEwODBjM2FlOGI2
NmNhNTc4NDQxMy4uNjNlOTljNTU0YjQyOGFiNzg0NTNmMGEwMzQ3Y2U3YTkwOGJhY2QwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQg
TGlua0xvYWRlcjo6cHJlbG9hZElmTmVlZGVkKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmIHJlbEF0
dHJpYnV0ZSwgY29uc3QgVVJMCiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0
KGRvY3VtZW50LmNvbXBsZXRlVVJMKGhyZWYpKTsKICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SWdu
b3JlRm9yUmVxdWVzdENvdW50KHRydWUpOwotICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBsaW5r
UmVxdWVzdChyZXNvdXJjZVJlcXVlc3QsIENhY2hlZFJlc291cmNlOjpkZWZhdWx0UHJpb3JpdHlG
b3JSZXNvdXJjZVR5cGUodHlwZS52YWx1ZSgpKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
IGxpbmtSZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSwgQ2FjaGVkUmVzb3VyY2U6OmRlZmF1
bHRQcmlvcml0eUZvclJlc291cmNlVHlwZSh0eXBlLnZhbHVlKCkpKTsKICAgICBsaW5rUmVxdWVz
dC5zZXRJbml0aWF0b3IoImxpbmsiKTsKIAogICAgIGxpbmtSZXF1ZXN0LnNldEFzUG90ZW50aWFs
bHlDcm9zc09yaWdpbihjcm9zc09yaWdpbk1vZGUsIGRvY3VtZW50KTsKQEAgLTIwMCw3ICsyMDAs
OSBAQCBib29sIExpbmtMb2FkZXI6OmxvYWRMaW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmIHJl
bEF0dHJpYnV0ZSwgY29uc3QgVVJMJiBocmVmLAogICAgICAgICAgICAgbV9jYWNoZWRMaW5rUmVz
b3VyY2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICAgICAgICAgIG1fY2FjaGVkTGlua1Jlc291
cmNlID0gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBtX2NhY2hlZExpbmtSZXNvdXJjZSA9
IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdExpbmtSZXNvdXJjZSh0eXBl
LCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50LmNvbXBsZXRl
VVJMKGhyZWYpKSwgcHJpb3JpdHkpKTsKKyAgICAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9w
dGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9u
cygpOworICAgICAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24gPSBD
b250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2s7CisgICAgICAg
IG1fY2FjaGVkTGlua1Jlc291cmNlID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5y
ZXF1ZXN0TGlua1Jlc291cmNlKHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QoZG9jdW1lbnQuY29tcGxldGVVUkwoaHJlZikpLCBvcHRpb25zLCBwcmlvcml0eSkpOwog
ICAgICAgICBpZiAobV9jYWNoZWRMaW5rUmVzb3VyY2UpCiAgICAgICAgICAgICBtX2NhY2hlZExp
bmtSZXNvdXJjZS0+YWRkQ2xpZW50KHRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGY2OTJjMmRk
OWVjZDFjYTI2N2ExY2UzNTE5YWFkNWE1NmJjNzAxNDYuLmMzODFlNTVhMDk1Yzk4M2QxN2QzNzU4
NjkwZDY0ZDc2ZTM0MWZiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtMzg0LDk5ICszODQsNzIgQEAgc3RhdGlj
IGlubGluZSBib29sIGlzU2FtZU9yaWdpbkRhdGFVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJl
c291cmNlTG9hZGVyT3B0aW8KICAgICByZXR1cm4gIWRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNl
ICYmIHVybC5wcm90b2NvbElzRGF0YSgpICYmIG9wdGlvbnMuc2FtZU9yaWdpbkRhdGFVUkxGbGFn
ID09IFNhbWVPcmlnaW5EYXRhVVJMRmxhZzo6U2V0OwogfQogCi1ib29sIENhY2hlZFJlc291cmNl
TG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgZm9yUHJlbG9h
ZCwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSkKK2Jvb2wgQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmFsbG93ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeShDYWNoZWRSZXNvdXJjZTo6VHlw
ZSB0eXBlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRp
b25zLCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKQogewotICAgIGlmIChkb2N1bWVu
dCgpICYmICFkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCkpIHsK
LSAgICAgICAgaWYgKCFmb3JQcmVsb2FkKQotICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9y
dExvY2FsTG9hZEZhaWxlZChmcmFtZSgpLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVu
Z3RoKCkpOwotICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RSZXNvdXJjZSBVUkwgd2FzIG5vdCBhbGxvd2VkIGJ5IFNlY3VyaXR5T3JpZ2lu
OjpjYW5EaXNwbGF5Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgaWYgKG9w
dGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9PSBDb250ZW50U2VjdXJpdHlQ
b2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2spCisgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgYm9vbCBza2lwQ29udGVudFNlY3VyaXR5UG9saWN5Q2hlY2sgPSBvcHRpb25zLmNvbnRl
bnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24gPT0gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3Np
dGlvbjo6U2tpcFBvbGljeUNoZWNrOwotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJl
Y3RSZXNwb25zZVJlY2VpdmVkIHJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCA9IGRpZFJlY2VpdmVS
ZWRpcmVjdFJlc3BvbnNlID8gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNl
UmVjZWl2ZWQ6OlllcyA6IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25zZVJl
Y2VpdmVkOjpObzsKKyAgICBBU1NFUlQobV9kb2N1bWVudCk7CisgICAgQVNTRVJUKG1fZG9jdW1l
bnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKIAotICAgIC8vIFNvbWUgdHlwZXMgb2YgcmVz
b3VyY2VzIGNhbiBiZSBsb2FkZWQgb25seSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gT3RoZXIgdHlw
ZXMgb2YgcmVzb3VyY2VzLCBsaWtlIEltYWdlcywgU2NyaXB0cywgYW5kIENTUywgY2FuIGJlIGxv
YWRlZCBmcm9tIGFueSBVUkwuCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW1vdmUgdGhhdCBj
aGVjayBhbmQgaGFuZGxlIGl0IGJ5IHNldHRpbmcgdGhlIGNvcnJlY3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zOjptb2RlLgotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6Ok1haW5SZXNvdXJjZToKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNl
OgotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6Ci0gICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6U2NyaXB0OgotI2lmIEVOQUJMRShTVkdfRk9OVFMpCi0gICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6U1ZHRm9udFJlc291cmNlOgotI2VuZGlmCi0gICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6TWVkaWFSZXNvdXJjZToKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3Vy
Y2U6Ci0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2U6Ci0jaWYgRU5BQkxFKExJ
TktfUFJFRkVUQ0gpCi0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgotICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtTdWJyZXNvdXJjZToKLSNlbmRpZgotI2lmIEVOQUJM
RShWSURFT19UUkFDSykKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUZXh0VHJhY2tSZXNvdXJj
ZToKLSNlbmRpZgotICAgICAgICBpZiAob3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9k
ZTo6U2FtZU9yaWdpbiAmJiAhaXNTYW1lT3JpZ2luRGF0YVVSTCh1cmwsIG9wdGlvbnMsIGRpZFJl
Y2VpdmVSZWRpcmVjdFJlc3BvbnNlKSAmJiFtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5j
YW5SZXF1ZXN0KHVybCkpIHsKLSAgICAgICAgICAgIHByaW50QWNjZXNzRGVuaWVkTWVzc2FnZSh1
cmwpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNWR0RvY3VtZW50UmVzb3VyY2U6Ci0jaWYgRU5B
QkxFKFhTTFQpCi0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6WFNMU3R5bGVTaGVldDoKLSAgICAg
ICAgaWYgKCFtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHVybCkpIHsK
LSAgICAgICAgICAgIHByaW50QWNjZXNzRGVuaWVkTWVzc2FnZSh1cmwpOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgYnJlYWs7Ci0gICAgfQor
ICAgIGF1dG8gcmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkID0gZGlkUmVjZWl2ZVJlZGlyZWN0UmVz
cG9uc2UgPyBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6
WWVzIDogQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6Ok5v
OwogCiAgICAgc3dpdGNoICh0eXBlKSB7CiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6WFNMU3R5bGVTaGVldDoKLSAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250
ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dTY3JpcHRGcm9tU291cmNlKHVybCwgc2tpcENvbnRl
bnRTZWN1cml0eVBvbGljeUNoZWNrLCByZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OlNjcmlwdDoKLSAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250ZW50U2Vj
dXJpdHlQb2xpY3koKS0+YWxsb3dTY3JpcHRGcm9tU291cmNlKHVybCwgc2tpcENvbnRlbnRTZWN1
cml0eVBvbGljeUNoZWNrLCByZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoZnJhbWUoKSAmJiAhZnJhbWUoKS0+c2V0dGluZ3Mo
KS5pc1NjcmlwdEVuYWJsZWQoKSkKKyAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250ZW50U2Vj
dXJpdHlQb2xpY3koKS0+YWxsb3dTY3JpcHRGcm9tU291cmNlKHVybCwgZmFsc2UsIHJlZGlyZWN0
UmVzcG9uc2VSZWNlaXZlZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6Ci0gICAgICAgIGlm
ICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93U3R5bGVGcm9tU291
cmNlKHVybCwgc2tpcENvbnRlbnRTZWN1cml0eVBvbGljeUNoZWNrLCByZWRpcmVjdFJlc3BvbnNl
UmVjZWl2ZWQpKQorICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpLT5hbGxvd1N0eWxlRnJvbVNvdXJjZSh1cmwsIGZhbHNlLCByZWRpcmVjdFJlc3BvbnNlUmVj
ZWl2ZWQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpTVkdEb2N1bWVudFJlc291cmNlOgogICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6Ci0gICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVu
dFNlY3VyaXR5UG9saWN5KCktPmFsbG93SW1hZ2VGcm9tU291cmNlKHVybCwgc2tpcENvbnRlbnRT
ZWN1cml0eVBvbGljeUNoZWNrLCByZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQpKQorICAgICAgICBp
ZiAoIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0ltYWdlRnJvbVNv
dXJjZSh1cmwsIGZhbHNlLCByZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNWR0ZvbnRSZXNvdXJjZToKICNlbmRpZgotICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZTogewotICAgICAgICBpZiAoIW1fZG9jdW1lbnQt
PmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0ZvbnRGcm9tU291cmNlKHVybCwgc2tpcENv
bnRlbnRTZWN1cml0eVBvbGljeUNoZWNrLCByZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQpKQorICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKKyAgICAgICAgaWYgKCFtX2RvY3Vt
ZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dGb250RnJvbVNvdXJjZSh1cmwsIGZh
bHNlLCByZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TWFpblJl
c291cmNlOgotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlOgotI2lmIEVOQUJM
RShMSU5LX1BSRUZFVENIKQotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoK
LSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rU3VicmVzb3VyY2U6Ci0jZW5kaWYKLSAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TWVkaWFSZXNvdXJjZToKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VGV4dFRyYWNrUmVz
b3VyY2U6CiAjZW5kaWYKLSAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQ
b2xpY3koKS0+YWxsb3dNZWRpYUZyb21Tb3VyY2UodXJsLCBza2lwQ29udGVudFNlY3VyaXR5UG9s
aWN5Q2hlY2ssIHJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCkpCisgICAgICAgIGlmICghbV9kb2N1
bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93TWVkaWFGcm9tU291cmNlKHVybCwg
ZmFsc2UsIHJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNl
OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgYm9vbCBmb3JQ
cmVsb2FkLCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKQoreworICAgIGlmIChkb2N1
bWVudCgpICYmICFkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCkp
IHsKKyAgICAgICAgaWYgKCFmb3JQcmVsb2FkKQorICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJl
cG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSgpLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRv
TGVuZ3RoKCkpOworICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJlcXVlc3RSZXNvdXJjZSBVUkwgd2FzIG5vdCBhbGxvd2VkIGJ5IFNlY3VyaXR5T3Jp
Z2luOjpjYW5EaXNwbGF5Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAv
LyBGSVhNRTogUmVtb3ZlIHNhbWUtb3JpZ2luIGRhdGEgVVJMIGZsYWcgc2luY2UgaXQgd2FzIHJl
bW92ZWQgZnJvbSBmZXRjaCBzcGVjIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9mZXRj
aC9pc3N1ZXMvMzgxKS4KKyAgICBpZiAob3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9k
ZTo6U2FtZU9yaWdpbiAmJiAhaXNTYW1lT3JpZ2luRGF0YVVSTCh1cmwsIG9wdGlvbnMsIGRpZFJl
Y2VpdmVSZWRpcmVjdFJlc3BvbnNlKSAmJiAhbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+
Y2FuUmVxdWVzdCh1cmwpKSB7CisgICAgICAgIHByaW50QWNjZXNzRGVuaWVkTWVzc2FnZSh1cmwp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFhbGxvd2VkQnlDb250
ZW50U2VjdXJpdHlQb2xpY3kodHlwZSwgdXJsLCBvcHRpb25zLCBkaWRSZWNlaXZlUmVkaXJlY3RS
ZXNwb25zZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFNWRyBJbWFnZXMgaGF2
ZSB1bmlxdWUgc2VjdXJpdHkgcnVsZXMgdGhhdCBwcmV2ZW50IGFsbCBzdWJyZXNvdXJjZSByZXF1
ZXN0cyBleGNlcHQgZm9yIGRhdGEgdXJscy4KICAgICBpZiAodHlwZSAhPSBDYWNoZWRSZXNvdXJj
ZTo6TWFpblJlc291cmNlICYmIGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4
IDFkYTI0MWE3YTYxMDlkMDQ4YzcxNjE1ZTM5M2Y3YjcxODQ0N2RhYmEuLmY1ZDhjNGJhOTJkMTE2
ZWY1MDQ1ZWY2ZTNlZDEzNjlkNjY5ZGZkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCkBAIC0xNjMsNiArMTYzLDcgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgc2hvdWxkQ29udGludWVBZnRlck5vdGlmeWluZ0xvYWRlZEZyb21N
ZW1vcnlDYWNoZShjb25zdCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZWRSZXNvdXJjZSop
OwogICAgIGJvb2wgY2hlY2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNv
bnN0IFVSTCYpIGNvbnN0OworICAgIGJvb2wgYWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5
KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmLCBib29sKTsKIAogICAgIHZvaWQgcGVyZm9ybVBvc3RMb2FkQWN0aW9ucygpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVl
c3QuY3BwCmluZGV4IGRjNTRiZGYxMDQ1NjE3ZDNhOGNjNzQ5MTIxYzc0Zjk3OTE1ZmIyMTcuLmI4
NjczMmEwZWVmMDg3NmQwYmNmZTYxZDYxOGI1NDBlNTU5ZDdjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCkBAIC00
NCwyNyArNDQsMTUgQEAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpDYWNoZWRSZXNvdXJjZVJlcXVl
c3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXUKIHsKIH0KIAotQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0OjpDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVz
b3VyY2VSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitDYWNo
ZWRSZXNvdXJjZVJlcXVlc3Q6OkNhY2hlZFJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywg
T3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+IHByaW9yaXR5KQogICAgIDogbV9yZXNvdXJj
ZVJlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpKQogICAgICwgbV9vcHRpb25zKG9wdGlv
bnMpCi0gICAgLCBtX2ZvclByZWxvYWQoZmFsc2UpCi0gICAgLCBtX2RlZmVyKE5vRGVmZXIpCi17
Ci19Ci0KLUNhY2hlZFJlc291cmNlUmVxdWVzdDo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBPcHRpb25hbDxSZXNvdXJjZUxvYWRQ
cmlvcml0eT4gcHJpb3JpdHkpCi0gICAgOiBtX3Jlc291cmNlUmVxdWVzdChyZXNvdXJjZVJlcXVl
c3QpCi0gICAgLCBtX29wdGlvbnMoQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRS
ZXNvdXJjZU9wdGlvbnMoKSkKICAgICAsIG1fcHJpb3JpdHkocHJpb3JpdHkpCiAgICAgLCBtX2Zv
clByZWxvYWQoZmFsc2UpCiAgICAgLCBtX2RlZmVyKE5vRGVmZXIpCiB7CiB9CiAKLUNhY2hlZFJl
c291cmNlUmVxdWVzdDo6fkNhY2hlZFJlc291cmNlUmVxdWVzdCgpCi17Ci19Ci0KIHZvaWQgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0OjpzZXRJbml0aWF0b3IoUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVt
ZW50KQogewogICAgIEFTU0VSVCghbV9pbml0aWF0b3JFbGVtZW50ICYmIG1faW5pdGlhdG9yTmFt
ZS5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlUmVxdWVzdC5oCmluZGV4IDgyN2ViYmJlNTg2Njc0ZWJiYTc2OThiNDk3ODNhZDNk
OGZkZmMwMjAuLmExZDgwZWVhNTc3ZGNmOWJlMmUyMmQxNjQ4MGEwMjY3YjU3MjZhZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
LmgKQEAgLTQyLDkgKzQyLDcgQEAgcHVibGljOgogICAgIGVudW0gRGVmZXJPcHRpb24geyBOb0Rl
ZmVyLCBEZWZlcnJlZEJ5Q2xpZW50IH07CiAKICAgICBleHBsaWNpdCBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0ID0gU3Ry
aW5nKCksIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiA9IE51bGxvcHQpOwotICAgIENh
Y2hlZFJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zJik7Ci0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5Pik7Ci0gICAgfkNhY2hlZFJlc291
cmNlUmVxdWVzdCgpOworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJp
b3JpdHk+ID0gTnVsbG9wdCk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QmIG11dGFibGVSZXNvdXJj
ZVJlcXVlc3QoKSB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsgfQogICAgIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJl
cXVlc3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudFJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwCmluZGV4IDVlNDhhMTM5Mjk2N2E3YjNiNmQwODRi
ZGE4ZjA3OGFiMWRmMWUzODUuLjEwY2YzYTNmYWE4ZGMzYzgyOGM1OTk5NjEwMTNmYzkzNzUwY2Iw
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcApAQCAtNTIsNyArNTIsOSBAQCB2b2lkIENhY2hlZFNW
R0RvY3VtZW50UmVmZXJlbmNlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNv
bnN0IFJlc291cgogICAgIGlmIChtX2xvYWRSZXF1ZXN0ZWQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChsb2FkZXIu
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobV91cmwpKSwgb3B0aW9ucyk7CisgICAgYXV0byBmZXRj
aE9wdGlvbnMgPSBvcHRpb25zOworICAgIGZldGNoT3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25z
OjpNb2RlOjpTYW1lT3JpZ2luOworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJl
c291cmNlUmVxdWVzdChsb2FkZXIuZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobV91cmwpKSwgZmV0
Y2hPcHRpb25zKTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRvcihjYWNoZWRSZXNvdXJjZVJlcXVl
c3RJbml0aWF0b3JzKCkuY3NzKTsKICAgICBtX2RvY3VtZW50ID0gbG9hZGVyLnJlcXVlc3RTVkdE
b2N1bWVudChXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICBpZiAobV9kb2N1bWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCAyMWUyNzFmYTYxYmMyMzczY2E3NmQ0MzAxN2E4
MzJjM2ViYzQ5ODU0Li5hMDQ3YWQ2ODgzYmU4YTg1OGM1ZGY1Y2Y0YjMwMTc5MWNiY2NjMDhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC01NzAsNyArNTcwLDcgQEAgdm9p
ZCBTVkdVc2VFbGVtZW50Ojp1cGRhdGVFeHRlcm5hbERvY3VtZW50KCkKICAgICBlbHNlIHsKICAg
ICAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOwogICAgICAgICBvcHRpb25zLmNvbnRl
bnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24gPSBpc0luVXNlckFnZW50U2hhZG93VHJlZSgpID8g
Q29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrIDogQ29udGVu
dFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjazsKLQorICAgICAgICBvcHRp
b25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW47CiAgICAgICAgIENhY2hl
ZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0IHsgUmVzb3VyY2VSZXF1ZXN0IHsgZXh0ZXJuYWxEb2N1
bWVudFVSTCB9LCBvcHRpb25zIH07CiAgICAgICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKHRoaXMp
OwogICAgICAgICBtX2V4dGVybmFsRG9jdW1lbnQgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNl
TG9hZGVyKCkucmVxdWVzdFNWR0RvY3VtZW50KFdURk1vdmUocmVxdWVzdCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hTTEltcG9ydFJ1bGUuY3BwCmluZGV4IGViOTZiNGI5MGYxZGIwNjdmNmE2ODBmOGJjZGRm
NjM2YmI5NDU1ZDIuLmIzZDRlMWE0OWE1ZTQ3ZTJlOTY5OGM4NGU2NTQxMmJiYjhjMGJlNTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAKQEAgLTEwMCw3ICsxMDAsMTAgQEAgdm9p
ZCBYU0xJbXBvcnRSdWxlOjpsb2FkU2hlZXQoKQogCiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAg
ICAgICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVudCh0aGlzKTsKLSAgICBtX2NhY2hlZFNo
ZWV0ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RYU0xTdHlsZVNoZWV0KENhY2hlZFJl
c291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3Vt
ZW50KCktPmNvbXBsZXRlVVJMKGFic0hyZWYpKSkpOworCisgICAgYXV0byBvcHRpb25zID0gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKKyAgICBv
cHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW47CisgICAgbV9jYWNo
ZWRTaGVldCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0WFNMU3R5bGVTaGVldCh7UmVz
b3VyY2VSZXF1ZXN0KGNhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVS
TChhYnNIcmVmKSksIG9wdGlvbnN9KTsKIAogICAgIGlmIChtX2NhY2hlZFNoZWV0KSB7CiAgICAg
ICAgIG1fY2FjaGVkU2hlZXQtPmFkZENsaWVudCh0aGlzKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>