<?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>195497</bug_id>
          
          <creation_ts>2019-03-08 17:06:23 -0800</creation_ts>
          <short_desc>Take UnboundedNetworking assertion when a file upload is in progress</short_desc>
          <delta_ts>2019-03-13 10:59:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>aestes</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1514270</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-03-08 17:06:23 -0800</bug_when>
    <thetext>Take UnboundedNetworking assertion when a file upload is in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515687</commentid>
    <comment_count>1</comment_count>
      <attachid>364448</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-03-12 14:43:47 -0700</bug_when>
    <thetext>Created attachment 364448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515718</commentid>
    <comment_count>2</comment_count>
      <attachid>364448</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-03-12 15:29:42 -0700</bug_when>
    <thetext>Comment on attachment 364448
Patch

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

r=me, some comments below, also please update to trunk

&gt; Source/WebKit/ChangeLog:8
&gt; +        This patch implememts whole bunch of bookkeeping in both the Networking and UI processes.

implememts =&gt; implements a

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:808
&gt; +void NetworkConnectionToWebProcess::setProcessIdentifier(ProcessIdentifier processIdentifier)

setProcessIdentifier =&gt; setWebProcessIdentifier

processIdentifier =&gt; webProcessIdentifier

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:813
&gt; +void NetworkConnectionToWebProcess::connectionHasUploads()

connectionHasUploads =&gt; setConnectionHasUploads

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:820
&gt; +void NetworkConnectionToWebProcess::connectionNoLongerHasUploads()

connectionNoLongerHasUploads =&gt; clearConnectionHasUploads

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoadMap.cpp:39
&gt; +        if (m_loadersWithUploads.size() == 1)
&gt; +            m_connectionToWebProcess.connectionHasUploads();

Nit: I think it&apos;s slightly clearer to check for zero before inserting than it is to check for 1 (or more) after inserting. One reason is that it matches the check in remove. Another reason is that zero is always zero, but non-zero is not always 1.

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1200
&gt; +void NetworkProcessProxy::releaseUploadAssertion()

releaseUploadAssertion =&gt; clearUploadAssertion

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:2502
&gt; +    if (m_processesWithUploads.size() == 1) {

Same comment about 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515743</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-03-12 16:19:54 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #2)
&gt; Comment on attachment 364448 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=364448&amp;action=review
&gt; 
&gt; r=me, some comments below, also please update to trunk

I was planning on *NOT* updating to trunk, though!

:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515996</commentid>
    <comment_count>4</comment_count>
      <attachid>364541</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-03-13 09:41:02 -0700</bug_when>
    <thetext>Created attachment 364541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516027</commentid>
    <comment_count>5</comment_count>
      <attachid>364541</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-03-13 10:32:09 -0700</bug_when>
    <thetext>Comment on attachment 364541
Patch

Not sure if I should review, but r=me :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516029</commentid>
    <comment_count>6</comment_count>
      <attachid>364541</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-13 10:36:35 -0700</bug_when>
    <thetext>Comment on attachment 364541
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoadMap.h:64
&gt; +    std::unique_ptr&lt;ProcessAssertion&gt; m_networkAssertion;

Where is this initialized?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516030</commentid>
    <comment_count>7</comment_count>
      <attachid>364541</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-13 10:39:08 -0700</bug_when>
    <thetext>Comment on attachment 364541
Patch

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

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:268
&gt; +    std::unique_ptr&lt;ProcessAssertion&gt; m_uploadAssertion;

If you take a ProcessAssertion and not a ProcessAndUIAssertion, then what prevents the UIProcess from getting suspended?
If the UIProcess gets suspended, how can this unbounded assertion get released?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516036</commentid>
    <comment_count>8</comment_count>
      <attachid>364541</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-13 10:41:51 -0700</bug_when>
    <thetext>Comment on attachment 364541
Patch

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

&gt; Source/WebKit/UIProcess/WebProcessPool.h:776
&gt; +    std::unique_ptr&lt;ProcessAssertion&gt; m_uiProcessUploadAssertion;

Currently seems like a misnomer no? AFAICT, it does not prevent UIProcess suspension at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516044</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-03-13 10:48:03 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; Comment on attachment 364541 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=364541&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:268
&gt; &gt; +    std::unique_ptr&lt;ProcessAssertion&gt; m_uploadAssertion;
&gt; 
&gt; If you take a ProcessAssertion and not a ProcessAndUIAssertion, then what
&gt; prevents the UIProcess from getting suspended?
&gt; If the UIProcess gets suspended, how can this unbounded assertion get
&gt; released?

Let&apos;s talk in person, but basically the names you think are important are not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516050</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-13 10:56:30 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #9)
&gt; (In reply to Chris Dumez from comment #7)
&gt; &gt; Comment on attachment 364541 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=364541&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:268
&gt; &gt; &gt; +    std::unique_ptr&lt;ProcessAssertion&gt; m_uploadAssertion;
&gt; &gt; 
&gt; &gt; If you take a ProcessAssertion and not a ProcessAndUIAssertion, then what
&gt; &gt; prevents the UIProcess from getting suspended?
&gt; &gt; If the UIProcess gets suspended, how can this unbounded assertion get
&gt; &gt; released?
&gt; 
&gt; Let&apos;s talk in person, but basically the names you think are important are
&gt; not.

Ok, looks good to me now besides the unused data member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516052</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-03-13 10:58:03 -0700</bug_when>
    <thetext>Committed r242891: &lt;https://trac.webkit.org/changeset/242891&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516054</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-13 10:59:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/48854017&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364448</attachid>
            <date>2019-03-12 14:43:47 -0700</date>
            <delta_ts>2019-03-13 09:41:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195497-20190312144347.patch</filename>
            <type>text/plain</type>
            <size>29776</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGIzNzgyNGQ1N2QzNDE5
M2I5MzlmZWMyMTVkZmE4OGI2MGMxZmM5NC4uYWQ1MmNjYTU2NzBhYjI3YmQ3MDViYTRlYjVhMzI0
NWRlMDk0NjA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAzLTEyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBUYWtlIFVuYm91bmRlZE5l
dHdvcmtpbmcgYXNzZXJ0aW9uIHdoZW4gYSBmaWxlIHVwbG9hZCBpcyBpbiBwcm9ncmVzcy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTQ5NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdEJhc2U6Omhhc1VwbG9hZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisKIDIwMTktMDMtMDggIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgRGV2aWNlIE9yaWVu
dGF0aW9uIC8gTW90aW9uIHBlcm1pc3Npb24gQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkyNzI1NjNmYWVjMmE4
ODQ1MDEzYzE1MmRhODIyYTc0Yjc5Y2EwYjMuLjcwYzhjYjU4NzQ0ZGE4ZjQyYWFiOTBlOWNlNDNi
ZTk4OTUzZGYzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTktMDMtMTIgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFRha2UgVW5ib3VuZGVkTmV0
d29ya2luZyBhc3NlcnRpb24gd2hlbiBhIGZpbGUgdXBsb2FkIGlzIGluIHByb2dyZXNzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1NDk3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBp
bXBsZW1lbXRzIHdob2xlIGJ1bmNoIG9mIGJvb2trZWVwaW5nIGluIGJvdGggdGhlIE5ldHdvcmtp
bmcgYW5kIFVJIHByb2Nlc3Nlcy4KKworICAgICAgICBUaGUgVExEUiBvZiB0aGF0IGJvb2trZWVw
aW5nIGlzOgorICAgICAgICAtIFdoZW5ldmVyIGFueSB1cGxvYWRzIGFyZSBpbiBwcm9ncmVzcywg
dGFrZSBhbiBhc3NlcnRpb24gZm9yIGJvdGggTmV0d29ya2luZyBhbmQgVUkgcHJvY2Vzc2VzLgor
ICAgICAgICAtIFdoZW5ldmVyIGEgcGFydGljdWxhciBXZWJQcm9jZXNzIGhhcyBhbiB1cGxvYWQg
aW4gcHJvZ3Jlc3MsIHRha2UgYW4gYXNzZXJ0aW9uIGZvciBpdC4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnNldFByb2Nlc3NJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNvbm5lY3Rpb25IYXNVcGxvYWRzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbm5lY3Rpb25Ob0xvbmdlckhhc1Vw
bG9hZHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkTWFwLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRNYXA6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRN
YXA6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRNYXA6Omdl
dCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZE1h
cC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZE1hcDo6TmV0
d29ya1Jlc291cmNlTG9hZE1hcCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRNYXA6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkTWFwOjpjb250YWlucyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRNYXA6OmJlZ2luKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZE1h
cDo6dmFsdWVzKToKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNw
cDoKKyAKKyAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorCisgICAgICAgICog
U291cmNlcy50eHQ6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6dGFrZVVw
bG9hZEFzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJl
bGVhc2VVcGxvYWRBc3NlcnRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp3ZWJQcm9jZXNzSGFzVXBsb2Fk
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp3ZWJQcm9jZXNzTm9Mb25nZXJI
YXNVcGxvYWRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW46CisgCisgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbik6CisKIDIwMTktMDMtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgRGV2aWNlIE9yaWVudGF0aW9u
IC8gTW90aW9uIHBlcm1pc3Npb24gQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAppbmRleCBkNTQwZjQ0YzNiZDI5
NDQ0MDhlNjdkYzUyMjdhNDdlYzM0MWMwNTI3Li40ZGJjMzdlNzI3MTdkOWRmNDZhMzI4NDUxMWI5
YzJkYThmMjIzZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTQ4OCw2ICs0ODgsMTggQEAgRm9ybURh
dGEqIFJlc291cmNlUmVxdWVzdEJhc2U6Omh0dHBCb2R5KCkgY29uc3QKICAgICByZXR1cm4gbV9o
dHRwQm9keS5nZXQoKTsKIH0KIAorYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpoYXNVcGxvYWQo
KSBjb25zdAoreworICAgIGlmIChhdXRvKiBib2R5ID0gaHR0cEJvZHkoKSkgeworICAgICAgICBm
b3IgKGF1dG8mIGVsZW1lbnQgOiBib2R5LT5lbGVtZW50cygpKSB7CisgICAgICAgICAgICBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRG
aWxlRGF0YT4oZWxlbWVudC5kYXRhKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFdlYkNvcmU6
OkZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRhPihlbGVtZW50LmRhdGEpKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVy
biBmYWxzZTsKK30KKwogdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQQm9keShSZWZQ
dHI8Rm9ybURhdGE+JiYgaHR0cEJvZHkpCiB7CiAgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVx
dWVzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5oCmluZGV4IDkyN2Y0M2FjYTk2NTViZTVjMTA2NzNlYjk4YjEwY2Y1NWIzOGFiYWIu
LjI1NTc2OGQyNmNhNjlmMThmZGFhOGVhNGJlYjQwNzEyMjA5MzQyNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBA
IC0xNDQsNiArMTQ0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVz
cG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoY29uc3QgU3RyaW5n
JiBlbmNvZGluZzEsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcyID0gU3RyaW5nKCksIGNvbnN0IFN0
cmluZyYgZW5jb2RpbmczID0gU3RyaW5nKCkpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgRm9ybURh
dGEqIGh0dHBCb2R5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNVcGxvYWQo
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhUVFBCb2R5KFJlZlB0cjxGb3Jt
RGF0YT4mJik7CiAKICAgICBib29sIGFsbG93Q29va2llcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAppbmRleCBmMzE0YmM2NTFkY2UwMmYxYmYzZWNjYzAyZDEzYjk1YzkwNjZl
MjBjLi5iMWZjMzU2ZWJiOTgxNDMyOGQyYmVmOGI3YzNhMzY2MjE2ZDYyNjg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIldlYkVycm9y
cy5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIgogI2luY2x1ZGUgIldl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bv
b2xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
IgogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXU2Vy
dmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCkBAIC03Myw2ICs3NCw3IEBAIFJlZjxOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcz4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0
ZShOZXR3b3JrCiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiAgICAgOiBtX2Nvbm5lY3Rp
b24oSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCAqdGhpcykpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQor
ICAgICwgbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzKCp0aGlzKQogI2lmIEVOQUJMRShXRUJfUlRD
KQogICAgICwgbV9tZG5zUmVnaXN0ZXIoKnRoaXMpCiAjZW5kaWYKQEAgLTgwMyw0ICs4MDUsMjMg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJD
b25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHMKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRQcm9jZXNzSWRlbnRpZmllcihQcm9jZXNzSWRlbnRpZmll
ciBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBtX3dlYlByb2Nlc3NJZGVudGlmaWVyID0gcHJv
Y2Vzc0lkZW50aWZpZXI7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNvbm5lY3Rpb25IYXNVcGxvYWRzKCkKK3sKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbkhhc1Vw
bG9hZHMpOworICAgIG1fY29ubmVjdGlvbkhhc1VwbG9hZHMgPSB0cnVlOworICAgIG1fbmV0d29y
a1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3NQb29sOjpXZWJQcm9jZXNzSGFzVXBsb2FkcyhtX3dlYlByb2Nlc3NJZGVudGlmaWVyKSwg
MCk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbm5lY3Rpb25O
b0xvbmdlckhhc1VwbG9hZHMoKQoreworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25IYXNVcGxvYWRz
KTsKKyAgICBtX2Nvbm5lY3Rpb25IYXNVcGxvYWRzID0gZmFsc2U7CisgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
c1Bvb2w6OldlYlByb2Nlc3NOb0xvbmdlckhhc1VwbG9hZHMobV93ZWJQcm9jZXNzSWRlbnRpZmll
ciksIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAppbmRleCBjZjQ3ZjM3M2VhMjE3YWU1NjdjODlhMzc2Nzk2ZDNhOWFmM2E3ZDg4Li40M2I3YWRi
Y2Q0NmY3ZGVjMGE3MGFhYWI0YTZhYjg3YjE4M2EzM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCkBAIC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtNRE5TUmVnaXN0ZXIuaCIKICNpbmNs
dWRlICJOZXR3b3JrUlRDUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2Fk
TWFwLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVn
aXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0xMjks
NiArMTMxLDEwIEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKGNvbnN0IFVSTCYpOwogICAgIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gcmVzb2x2ZUJsb2JSZWZlcmVuY2Vz
KGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJik7CiAKKyAgICB2b2lkIHNldFBy
b2Nlc3NJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNv
bm5lY3Rpb25IYXNVcGxvYWRzKCk7CisgICAgdm9pZCBjb25uZWN0aW9uTm9Mb25nZXJIYXNVcGxv
YWRzKCk7CisKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0
d29ya1Byb2Nlc3MmLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCkBAIC0yNDgsNyAr
MjU0LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nl
c3M7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8TmV0d29ya1NvY2tldFN0cmVhbT4+
IG1fbmV0d29ya1NvY2tldFN0cmVhbXM7Ci0gICAgSGFzaE1hcDxSZXNvdXJjZUxvYWRJZGVudGlm
aWVyLCBSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPj4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJz
OworICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRNYXAgbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzOwog
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNl
Pj4gbV9ibG9iRGF0YUZpbGVSZWZlcmVuY2VzOwogICAgIFZlY3RvcjxSZXNvdXJjZU5ldHdvcmtB
Y3Rpdml0eVRyYWNrZXI+IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlcnM7CiAKQEAgLTI3Myw2ICsy
NzksOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBIYXNoTWFw
PFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYWtQdHI8V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zOwogI2VuZGlmCisKKyAgICBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOworICAgIGJvb2wgbV9jb25u
ZWN0aW9uSGFzVXBsb2FkcyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDlmYzIxMjc1
NzIzNDI0N2VkZWYyMmUwMGYwYjI1MWJmNDE4ZjFiNTQuLmY4YWY0NGQ3YzQ3Zjk5M2VkNzFmN2U5
MmIwNzk3MmYzZWZmY2Y3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtODMsNCArODMsNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIEVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IC0+IChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyKSBMZWdhY3lTeW5jCiAjZW5kaWYKKworICAgIFNldFByb2Nlc3NJZGVudGlm
aWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZE1hcC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA3YzRkMzMzODc4MjZlNjJhYWUxZDNjZmU4MDQ5N2NhOGMy
NTI5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZE1hcC5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitOZXR3b3JrUmVzb3VyY2VMb2FkTWFwOjpNYXBUeXBlOjpB
ZGRSZXN1bHQgTmV0d29ya1Jlc291cmNlTG9hZE1hcDo6YWRkKFJlc291cmNlTG9hZElkZW50aWZp
ZXIgaWRlbnRpZmllciwgUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIpCit7Cisg
ICAgYXV0byByZXN1bHQgPSBtX2xvYWRlcnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUobG9hZGVy
KSk7CisgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgCisgICAgaWYgKHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUtPm9yaWdpbmFsUmVxdWVzdCgpLmhhc1VwbG9hZCgpKSB7Cisg
ICAgICAgIG1fbG9hZGVyc1dpdGhVcGxvYWRzLmFkZChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnB0
cigpKTsKKyAgICAgICAgaWYgKG1fbG9hZGVyc1dpdGhVcGxvYWRzLnNpemUoKSA9PSAxKQorICAg
ICAgICAgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb25IYXNVcGxvYWRzKCk7
CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBOZXR3b3JrUmVzb3VyY2VM
b2FkTWFwOjpyZW1vdmUoUmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAg
IGF1dG8gbG9hZGVyID0gbV9sb2FkZXJzLnRha2UoaWRlbnRpZmllcik7CisgICAgaWYgKCFsb2Fk
ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgoKmxvYWRlciktPm9yaWdpbmFs
UmVxdWVzdCgpLmhhc1VwbG9hZCgpKSB7CisgICAgICAgIG1fbG9hZGVyc1dpdGhVcGxvYWRzLnJl
bW92ZShsb2FkZXItPnB0cigpKTsKKyAgICAgICAgaWYgKG1fbG9hZGVyc1dpdGhVcGxvYWRzLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9u
Tm9Mb25nZXJIYXNVcGxvYWRzKCk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK05l
dHdvcmtSZXNvdXJjZUxvYWRlciogTmV0d29ya1Jlc291cmNlTG9hZE1hcDo6Z2V0KFJlc291cmNl
TG9hZElkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sb2FkZXJz
LmdldChpZGVudGlmaWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRNYXAuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZE1hcC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdjZmI3NzAyNTUzYTFmZTE5NDUwZmFjM2Q4MmI0MWUwMWE2NzU4YjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRNYXAuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5l
dHdvcmtSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKworI2lmIEVOQUJMRShUQUtFX1VOQk9VTkRFRF9ORVRXT1JLSU5H
X0FTU0VSVElPTikKKyNpbmNsdWRlICJQcm9jZXNzQXNzZXJ0aW9uLmgiCisjZW5kaWYKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3R5cGVkZWYgdWludDY0X3QgUmVzb3VyY2VMb2FkSWRlbnRpZmll
cjsKKworY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZE1hcCB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBIYXNoTWFwPFJlc291cmNlTG9hZElkZW50aWZpZXIsIFJlZjxOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI+PiBNYXBUeXBlOworCisgICAgTmV0d29ya1Jlc291cmNlTG9hZE1hcChOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikKKyAgICAgICAgOiBtX2Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoY29ubmVjdGlvbikKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gbV9sb2FkZXJzLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgY29udGFpbnMo
UmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX2xvYWRl
cnMuY29udGFpbnMoaWRlbnRpZmllcik7IH0KKyAgICBNYXBUeXBlOjppdGVyYXRvciBiZWdpbigp
IHsgcmV0dXJuIG1fbG9hZGVycy5iZWdpbigpOyB9CisgICAgTWFwVHlwZTo6VmFsdWVzSXRlcmF0
b3JSYW5nZSB2YWx1ZXMoKSB7IHJldHVybiBtX2xvYWRlcnMudmFsdWVzKCk7IH0KKworICAgIE1h
cFR5cGU6OkFkZFJlc3VsdCBhZGQoUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgUmVmPE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcj4mJik7CisgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyKiBnZXQoUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllcikgY29uc3Q7CisgICAgYm9vbCByZW1vdmUoUmVzb3VyY2VMb2FkSWRl
bnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IG1fY29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBNYXBUeXBlIG1fbG9hZGVyczsKKyAgICBI
YXNoU2V0PE5ldHdvcmtSZXNvdXJjZUxvYWRlcio+IG1fbG9hZGVyc1dpdGhVcGxvYWRzOworI2lm
IEVOQUJMRShUQUtFX1VOQk9VTkRFRF9ORVRXT1JLSU5HX0FTU0VSVElPTikKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4gbV9uZXR3b3JrQXNzZXJ0aW9uOworI2VuZGlmCit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZDg1NDExMzNiZWY5ZTk0MDljMDcwMzc1ZTli
MWM1N2NkZDRmMzM0NC4uNjJlODNiZTE5NTE4YzkzYjVjNmE2NzQ3MzEyOTk3ODY1OWNiY2Y1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAK
QEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJOZXR3b3JrQWRDbGlja0F0dHJpYnV0aW9uLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1By
b3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQ
YWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1
ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QWRDbGlja0F0dHJpYnV0aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQppbmRleCBiZmFiMDNhYjRjMDNlNWFiNWZkYzdjNTkwYWFhYTA3MjViYzZmZjllLi43MGU0
YjQ5MWUwMTM0MWIwYmE0MWRiZTE5MDdkNmQzZjg1OTM0ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTE5OCw2ICsxOTgsNyBAQCBkZWYgZm9yd2FyZF9k
ZWNsYXJhdGlvbnNfYW5kX2hlYWRlcnMocmVjZWl2ZXIpOgogICAgICAgICAnV2ViQ29yZTo6RG9j
dW1lbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLAorICAgICAgICAnV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXInLAogICAgICAgICAn
V2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50RGF0YScsCkBAIC00MjQsNiArNDI1LDcgQEAg
ZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5JbmZv
JzogWyc8V2ViQ29yZS9QbHVnaW5EYXRhLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpQb2xpY3lB
Y3Rpb24nOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllcic6IFsnPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5o
PiddLAorICAgICAgICAnV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXInOiBbJzxXZWJDb3JlL1By
b2Nlc3NJZGVudGlmaWVyLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpSZWNlbnRTZWFyY2gnOiBb
JzxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6Um91dGVT
aGFyaW5nUG9saWN5JzogWyc8V2ViQ29yZS9BdWRpb1Nlc3Npb24uaD4nXSwKICAgICAgICAgJ1dl
YkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXInOiBbJzxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJUeXBlcy5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNGFiMWZhMDAzYmExYzQyZjI3ZjZkNDdh
MTM2OWM0ZTNmOWIyNDUyMC4uZTc3OTdlOTgwOTE5NTBmOTljZDFkNTg2N2E4YjdjZjFkZjRhZjJi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CkBAIC0zNSw2ICszNSw3IEBAIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZE1hcC5jcHAKIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNw
cAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCBjNjM5MmM1M2VkMTQzNzg0YTgwMDRkNzFkY2Y4MWFlNjM1MWJiZDc0
Li44Njc1MTM1MDAwYzU0ZGU5OGI5ZjZkYTViZWFkOTk2ZTNmZDMyYTk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTExOTEsNiArMTE5MSwxOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVl
c3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZQogICAgIHN0
b3JlLT5jbGllbnQoKS5yZXF1ZXN0U3RvcmFnZVNwYWNlKG9yaWdpbi50b3BPcmlnaW4sIG9yaWdp
bi5jbGllbnRPcmlnaW4sIHF1b3RhLCBjdXJyZW50U2l6ZSwgc3BhY2VSZXF1aXJlZCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRh
a2VVcGxvYWRBc3NlcnRpb24oKQoreworICAgIEFTU0VSVCghbV91cGxvYWRBc3NlcnRpb24pOwor
ICAgIG1fdXBsb2FkQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9u
Pihwcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRl
OjpVbmJvdW5kZWROZXR3b3JraW5nKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpy
ZWxlYXNlVXBsb2FkQXNzZXJ0aW9uKCkKK3sKKyAgICBBU1NFUlQobV91cGxvYWRBc3NlcnRpb24p
OworICAgIG1fdXBsb2FkQXNzZXJ0aW9uID0gbnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGMxMjdhMGNhNzRj
ZWU2OGUxY2U4NjkyOWQ1MzZiYjZjNTQzZjQ0NTUuLjVjODdjY2NiYzdlZDNhNjQyMTgyNGNlY2Mz
ZmEyNzlmMmQ1MDA5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xNzIsNiArMTcyLDkgQEAgcHVibGljOgog
CiAgICAgdm9pZCBhZGRTZXNzaW9uKFJlZjxXZWJzaXRlRGF0YVN0b3JlPiYmKTsKICAgICB2b2lk
IHJlbW92ZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOworICAgIAorICAgIHZvaWQgdGFrZVVwbG9h
ZEFzc2VydGlvbigpOworICAgIHZvaWQgcmVsZWFzZVVwbG9hZEFzc2VydGlvbigpOwogCiBwcml2
YXRlOgogICAgIC8vIEF1eGlsaWFyeVByb2Nlc3NQcm94eQpAQCAtMjYwLDYgKzI2Myw4IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFJlZlB0cjxXZWJz
aXRlRGF0YVN0b3JlPj4gbV93ZWJzaXRlRGF0YVN0b3JlczsKKyAgICAKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4gbV91cGxvYWRBc3NlcnRpb247CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAppbmRleCBjZDZhNWEzNGE2NmFhNjkxNzIwYzJkM2QzZDlhNDIwZTQ3MzFmNzhhLi5lYWY5ZDYz
MDU0NDAyY2MxMzkzZTYwNWMwMWY2MWEzMzVlZjc1ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0yNDg4LDQgKzI0ODgsNDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6
OlNlc3Npb25JRCBzZXMKICNlbmRpZgogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjp3ZWJQcm9j
ZXNzSGFzVXBsb2FkcyhQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCit7CisgICAgYXV0byog
cHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIocHJvY2Vzc0lE
KTsKKyAgICBBU1NFUlQocHJvY2Vzcyk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fcHJvY2Vzc2Vz
V2l0aFVwbG9hZHMuYWRkKHByb2Nlc3NJRCwgbnVsbHB0cik7CisgICAgQVNTRVJUKHJlc3VsdC5p
c05ld0VudHJ5KTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1
ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0
IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKworICAg
IFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiV2ViIHByb2Nlc3MgcGlkICV1IG5vdyBo
YXMgdXBsb2FkcyBpbiBwcm9ncmVzcyIsICh1bnNpZ25lZClwcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpKTsKKyAgICAKKyAgICBpZiAobV9wcm9jZXNzZXNXaXRoVXBsb2Fkcy5zaXplKCkgPT0g
MSkgeworICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlRoZSBudW1iZXIg
b2YgdXBsb2FkcyBpbiBwcm9ncmVzcyBpcyBub3cgb25lLiBUYWtpbmcgTmV0d29ya2luZyBhbmQg
VUkgcHJvY2VzcyBhc3NlcnRpb25zLiIpOworCisgICAgICAgIEFTU0VSVChtX25ldHdvcmtQcm9j
ZXNzKTsKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+dGFrZVVwbG9hZEFzc2VydGlvbigpOwor
ICAgICAgICAKKyAgICAgICAgQVNTRVJUKCFtX3VpUHJvY2Vzc1VwbG9hZEFzc2VydGlvbik7Cisg
ICAgICAgIG1fdWlQcm9jZXNzVXBsb2FkQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9j
ZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgdXBsb2FkcyJfcywg
QXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgIH0KK30KKwordm9pZCBX
ZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc05vTG9uZ2VySGFzVXBsb2FkcyhQcm9jZXNzSWRlbnRp
ZmllciBwcm9jZXNzSUQpCit7CisgICAgYXV0byByZXN1bHQgPSBtX3Byb2Nlc3Nlc1dpdGhVcGxv
YWRzLnRha2UocHJvY2Vzc0lEKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsK
KworICAgIGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlm
aWVyKHByb2Nlc3NJRCk7CisgICAgQVNTRVJUKHByb2Nlc3MpOworICAgIFJFTEVBU0VfTE9HKFBy
b2Nlc3NTdXNwZW5zaW9uLCAiV2ViIHByb2Nlc3MgcGlkICV1IG5vIGxvbmdlciBoYXMgdXBsb2Fk
cyBpbiBwcm9ncmVzcyIsICh1bnNpZ25lZClwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsK
KworICAgIGlmIChtX3Byb2Nlc3Nlc1dpdGhVcGxvYWRzLmlzRW1wdHkoKSkgeworICAgICAgICBS
RUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlRoZSBudW1iZXIgb2YgdXBsb2FkcyBpbiBw
cm9ncmVzcyBpcyBub3cgemVyby4gUmVsZWFzaW5nIE5ldHdvcmtpbmcgYW5kIFVJIHByb2Nlc3Mg
YXNzZXJ0aW9ucy4iKTsKKworICAgICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAg
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPnJlbGVhc2VVcGxvYWRBc3NlcnRpb24oKTsKKyAgICAgICAg
CisgICAgICAgIEFTU0VSVChtX3VpUHJvY2Vzc1VwbG9hZEFzc2VydGlvbik7CisgICAgICAgIG1f
dWlQcm9jZXNzVXBsb2FkQXNzZXJ0aW9uID0gbnVsbHB0cjsKKyAgICB9CisgICAgCit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKaW5kZXggZDk2ZDZlMGEzZjZmNmEyYmM5OGIyODQ5Yzk0ZmQ2NzZhZjA4MmFlYy4uNzM4MTBk
OGY4YjE0NGYzMjg5NGExNGYzNTU4ZWFjOGJhMDY1MmNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiV2ViQ29u
dGV4dENsaWVudC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRDb25uZWN0aW9uQ2xpZW50LmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVkU3RyaW5nSGFzaC5oPgpAQCAtNTIsNyArNTMsNiBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KQEAgLTQ5NSw2ICs0OTUsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgSGFz
aE1hcDxDU3RyaW5nLCBTYW5kYm94UGVybWlzc2lvbj4mIHNhbmRib3hQYXRocygpIGNvbnN0IHsg
cmV0dXJuIG1fZXh0cmFTYW5kYm94UGF0aHM7IH07CiAgICAgYm9vbCBzYW5kYm94RW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEVuYWJsZWQ7IH07CiAjZW5kaWYKKyAgICAKKyAgICB2
b2lkIHdlYlByb2Nlc3NIYXNVcGxvYWRzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKyAg
ICB2b2lkIHdlYlByb2Nlc3NOb0xvbmdlckhhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIpOwogCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC03
NjMsNiArNzY2LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2FuZGJveEVuYWJsZWQgeyBmYWxz
ZSB9OwogICAgIEhhc2hNYXA8Q1N0cmluZywgU2FuZGJveFBlcm1pc3Npb24+IG1fZXh0cmFTYW5k
Ym94UGF0aHM7CiAjZW5kaWYKKworICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0aW9uPj4gbV9wcm9jZXNzZXNXaXRoVXBs
b2FkczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4gbV91aVByb2Nlc3NV
cGxvYWRBc3NlcnRpb247CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgppbmRleCBmMzJk
MTlkOWViYzZjOTc2NTdlOTdlMTVlMDc3ODZiZTllNDk2ZjI5Li45YTFkZjc2ZGNiOTA4MjQ1OTEy
ZDZkNmI0MzVkYjk5YzY1ZWQzMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgpAQCAtMzcsNiArMzcsOSBAQCBtZXNzYWdlcyAt
PiBXZWJQcm9jZXNzUG9vbCB7CiAKICAgICBSZXBvcnRXZWJDb250ZW50Q1BVVGltZShTZWNvbmRz
IGNwdVRpbWUsIHVpbnQ2NF90IGFjdGl2aXR5U3RhdGUpCiAKKyAgICBXZWJQcm9jZXNzSGFzVXBs
b2FkcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCisgICAgV2ViUHJvY2Vz
c05vTG9uZ2VySGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQp
CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlk
ZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIHN0cnVj
dCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc3OTVkZGExNDc1Y2EyMGRi
YzQzNWZiYzkzMjcxYmNmYTQzZGUzZDkuLjhiMjhjNzY2ZWI0MGZmZjU5ZDZkMTg5MzZiZjRlOWMx
OTdhOTJmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtOTIyLDYgKzkyMiw3IEBACiAJCTUxMjE3NDYxMTY0QzIwRTMwMDM3QTVDMSAv
KiBTaGFyZWFibGVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEyMTc0NUYxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNl
LmggKi87IH07CiAJCTUxMjNDRjFDMTMzRDI2MEEwMDU2RjgwMCAvKiBXS0ljb25EYXRhYmFzZUNH
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTIzQ0Yx
QTEzM0QyNjBBMDA1NkY4MDAgLyogV0tJY29uRGF0YWJhc2VDRy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMjQwRUJBMjIwQTA4RDIwMDVDRkM2
MyAvKiBEb3dubG9hZE1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEyNDBFQjgyMjBBMDhDQTAwNUNGQzYzIC8qIERvd25sb2FkTWFwLmggKi87IH07
CisJCTUxMjQwRUMwMjIwQjY5NEMwMDVDRkM2MyAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTI0MEVCRTIy
MEI2OTQ3MDA1Q0ZDNjMgLyogTmV0d29ya1Jlc291cmNlTG9hZE1hcC5oICovOyB9OwogCQk1MTI5
MzVEODEyODhEMTk0MDBBNEI2OTUgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTI5MzVENjEyODhEMTk0MDBBNEI2
OTUgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggKi87IH07CiAJCTUxMjkzNUU0MTI4OEQ5NzgwMEE0
QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyOTM1RTIxMjg4RDk3ODAwQTRC
Njk1IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJCTUx
MkUzNEU1MTMwQjREMDUwMEFCRDE5QSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBMzNCNDEzMEIz
MDhDMDBGODBDQjUgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMTYxLDYgKzMxNjIsOCBAQAog
CQk1MTIzQ0YxQTEzM0QyNjBBMDA1NkY4MDAgLyogV0tJY29uRGF0YWJhc2VDRy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0ljb25EYXRhYmFzZUNHLmg7IHBhdGggPSBjZy9X
S0ljb25EYXRhYmFzZUNHLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjQwRUI4
MjIwQTA4Q0EwMDVDRkM2MyAvKiBEb3dubG9hZE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEb3dubG9hZE1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTI0MEVCOTIyMEEwOENBMDA1Q0ZDNjMgLyogRG93bmxvYWRNYXAuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG93bmxvYWRNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MTI0MEVCRTIyMEI2OTQ3MDA1Q0ZDNjMgLyogTmV0d29ya1Jlc291cmNl
TG9hZE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrUmVzb3Vy
Y2VMb2FkTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMjQwRUJGMjIwQjY5
NDgwMDVDRkM2MyAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtSZXNvdXJjZUxvYWRNYXAuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTI5MzVENTEyODhEMTk0MDBBNEI2OTUgLyogV2ViQ29u
dGV4dE1lbnVJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YkNvbnRleHRNZW51SXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjkz
NUQ2MTI4OEQxOTQwMEE0QjY5NSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dE1lbnVJdGVtLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxMjkzNUUxMTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDk2LDYgKzY0OTksOCBAQAogCQkJCTUxRkQxOEIzMTY1
MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwICovLAogCQkJCTUxRkQx
OEI0MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQlF
MTUyNTUxNzE3MDEwOUZCMDAzRDdBREIgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2Vz
LmluICovLAorCQkJCTUxMjQwRUJGMjIwQjY5NDgwMDVDRkM2MyAvKiBOZXR3b3JrUmVzb3VyY2VM
b2FkTWFwLmNwcCAqLywKKwkJCQk1MTI0MEVCRTIyMEI2OTQ3MDA1Q0ZDNjMgLyogTmV0d29ya1Jl
c291cmNlTG9hZE1hcC5oICovLAogCQkJCTVDMTQyNkU1MUMyM0Y4MDUwMEQ0MTE4MyAvKiBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgKi8sCiAJCQkJNUMxNDI2RTYxQzIzRjgwNTAw
RDQxMTgzIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggKi8sCiAJCQkJNTMyMTU5
NTIxREJBRTZGQzAwNTRBQTNDIC8qIE5ldHdvcmtTZXNzaW9uLmNwcCAqLywKQEAgLTkyNDMsNiAr
OTI0OCw3IEBACiAJCQkJQTExNDU1QjAyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1p
dHlNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUZEMThCNjE2NTFGQkFEMDBEQkUxQ0Ug
LyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTUyNTUxQjE3
MDExODE5MDAzRDdBREIgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTUxMjQwRUMwMjIwQjY5NEMwMDVDRkM2MyAvKiBOZXR3b3JrUmVzb3VyY2VM
b2FkTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjZGMDFDMjNGODA5MDBENDExODMgLyog
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMzA3
NUFDMURFODVGMzcwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDFEQzQ1OTYxRTNENkUyMjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
ZDY1MjBkMTk5YjBkYjQ0OTg4OWZiYWQ1YWEzMzBjYjg4ZGYwZTAzYy4uYTRiNzYyY2MzYTg0ZDNh
M2Y1MmZmNDk1MjBmMTVjOTljYjIwZDQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcApAQCAtMTIyOSw2ICsxMjI5LDcgQEAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
JiBXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgICAgICAg
ICAgQ1JBU0goKTsKIAogICAgICAgICBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICAg
ICAgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0UHJvY2Vzc0lkZW50aWZpZXIoUHJv
Y2Vzczo6aWRlbnRpZmllcigpKSwgMCk7CiAgICAgfQogICAgIAogICAgIHJldHVybiAqbV9uZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364541</attachid>
            <date>2019-03-13 09:41:02 -0700</date>
            <delta_ts>2019-03-13 10:32:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195497-20190313094101.patch</filename>
            <type>text/plain</type>
            <size>29781</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyODMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWM1ZjE0N2MzMDU4ZmJi
YjkwMzIxYzU0N2FiYzdjNWJlNTAzNWI0Yi4uYmMzZGQ1Y2RmYjVhNDQwN2NmZjJkNjczMWZlOTIy
MTNjYzAwZTZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAzLTEyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBUYWtlIFVuYm91bmRlZE5l
dHdvcmtpbmcgYXNzZXJ0aW9uIHdoZW4gYSBmaWxlIHVwbG9hZCBpcyBpbiBwcm9ncmVzcy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTQ5NworCisg
ICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdEJhc2U6Omhhc1VwbG9hZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisKIDIwMTktMDMtMTIgIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEV4cG9zZSBkb2N1bWVudCBhdHRyaWJ1dGVz
IGFuZCBib2R5IGJhY2tncm91bmQgY29sb3IgdGhyb3VnaCBIVE1MQ29udmVydGVyLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA2YmVjY2UxMmNhMGZjMWFjNGJlZGY1NjFjNzMwYjY5OWMyY2M1NGUxLi5jY2MyMjczOWI1
N2NkZDAzMGYyYjc5YTA4ZDA1MzZmZTVlMDEzYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBA
CisyMDE5LTAzLTEyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBUYWtlIFVuYm91bmRlZE5ldHdvcmtpbmcgYXNzZXJ0aW9uIHdoZW4gYSBmaWxlIHVwbG9hZCBp
cyBpbiBwcm9ncmVzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTQ5NworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB3aG9sZSBidW5jaCBvZiBib29ra2VlcGluZyBpbiBi
b3RoIHRoZSBOZXR3b3JraW5nIGFuZCBVSSBwcm9jZXNzZXMuCisKKyAgICAgICAgVGhlIFRMRFIg
b2YgdGhhdCBib29ra2VlcGluZyBpczoKKyAgICAgICAgLSBXaGVuZXZlciBhbnkgdXBsb2FkcyBh
cmUgaW4gcHJvZ3Jlc3MsIHRha2UgYW4gYXNzZXJ0aW9uIGZvciBib3RoIE5ldHdvcmtpbmcgYW5k
IFVJIHByb2Nlc3Nlcy4KKyAgICAgICAgLSBXaGVuZXZlciBhIHBhcnRpY3VsYXIgV2ViUHJvY2Vz
cyBoYXMgYW4gdXBsb2FkIGluIHByb2dyZXNzLCB0YWtlIGFuIGFzc2VydGlvbiBmb3IgaXQuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRQcm9jZXNzSWRlbnRpZmllcik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb25uZWN0aW9uSGFzVXBsb2Fk
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVh
ckNvbm5lY3Rpb25IYXNVcGxvYWRzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZE1hcC5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkTWFwOjphZGQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkTWFwOjpyZW1vdmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkTWFwOjpnZXQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRNYXAuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRNYXA6Ok5ldHdvcmtSZXNvdXJjZUxvYWRNYXApOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkTWFwOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZE1hcDo6Y29udGFpbnMgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkTWFwOjpiZWdpbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRNYXA6OnZhbHVlcyk6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHA6CisgCisgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eToKKworICAgICAgICAqIFNvdXJjZXMudHh0OgorCisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnRha2VVcGxvYWRBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpjbGVhclVwbG9hZEFzc2VydGlvbik6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFdl
YlByb2Nlc3NIYXNVcGxvYWRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNs
ZWFyV2ViUHJvY2Vzc0hhc1VwbG9hZHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbjoK
KyAKKyAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKwogMjAxOS0wMy0xMiAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3JlIGF0dGVtcHRz
IGF0IGJ1aWxkIGZpeGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IGQ1NDBmNDRjM2JkMjk0NDQwOGU2
N2RjNTIyN2E0N2VjMzQxYzA1MjcuLjRkYmMzN2U3MjcxN2Q5ZGY0NmEzMjg0NTExYjljMmRhOGYy
MjNlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtNDg4LDYgKzQ4OCwxOCBAQCBGb3JtRGF0YSogUmVz
b3VyY2VSZXF1ZXN0QmFzZTo6aHR0cEJvZHkoKSBjb25zdAogICAgIHJldHVybiBtX2h0dHBCb2R5
LmdldCgpOwogfQogCitib29sIFJlc291cmNlUmVxdWVzdEJhc2U6Omhhc1VwbG9hZCgpIGNvbnN0
Cit7CisgICAgaWYgKGF1dG8qIGJvZHkgPSBodHRwQm9keSgpKSB7CisgICAgICAgIGZvciAoYXV0
byYgZWxlbWVudCA6IGJvZHktPmVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRh
PihlbGVtZW50LmRhdGEpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8V2ViQ29yZTo6Rm9ybURh
dGFFbGVtZW50OjpFbmNvZGVkQmxvYkRhdGE+KGVsZW1lbnQuZGF0YSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNl
OworfQorCiB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEhUVFBCb2R5KFJlZlB0cjxGb3Jt
RGF0YT4mJiBodHRwQm9keSkKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmgKaW5kZXggOTI3ZjQzYWNhOTY1NWJlNWMxMDY3M2ViOThiMTBjZjU1YjM4YWJhYi4uMjU1NzY4
ZDI2Y2E2OWYxOGZkYWE4ZWE0YmViNDA3MTIyMDkzNDI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKQEAgLTE0NCw2
ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXNwb25zZUNv
bnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheShjb25zdCBTdHJpbmcmIGVuY29k
aW5nMSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZzIgPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5nJiBl
bmNvZGluZzMgPSBTdHJpbmcoKSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGb3JtRGF0YSogaHR0
cEJvZHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc1VwbG9hZCgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUEJvZHkoUmVmUHRyPEZvcm1EYXRhPiYm
KTsKIAogICAgIGJvb2wgYWxsb3dDb29raWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCmluZGV4IGJkMTA5M2U0MDhmZGE2NmJhOTRjOWI5Mzc4Nzk4M2IyODgyZTk3NDQuLjhk
OTBhMDkwMjExYjVlMDFkMTdiYTMxZDU2ODBhNWYzMTgzYmExMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAj
aW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSURCQ29u
bmVjdGlvblRvQ2xpZW50TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5j
bHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uTWVzc2FnZXMuaCIKQEAgLTc3LDYgKzc4LDcgQEAgUmVmPE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKE5ldHdv
cmsKIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKICAgICA6IG1fY29ubmVjdGlvbihJUEM6
OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIs
ICp0aGlzKSkKICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCisgICAgLCBt
X25ldHdvcmtSZXNvdXJjZUxvYWRlcnMoKnRoaXMpCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAg
LCBtX21kbnNSZWdpc3RlcigqdGhpcykKICNlbmRpZgpAQCAtODIxLDQgKzgyMywyMyBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rp
b24oUEFMOjpTZXNzaW9uSUQgcwogfQogI2VuZGlmCiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnNldFdlYlByb2Nlc3NJZGVudGlmaWVyKFByb2Nlc3NJZGVudGlmaWVyIHdl
YlByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgPSB3ZWJQ
cm9jZXNzSWRlbnRpZmllcjsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c2V0Q29ubmVjdGlvbkhhc1VwbG9hZHMoKQoreworICAgIEFTU0VSVCghbV9jb25uZWN0aW9u
SGFzVXBsb2Fkcyk7CisgICAgbV9jb25uZWN0aW9uSGFzVXBsb2FkcyA9IHRydWU7CisgICAgbV9u
ZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViUHJvY2Vzc1Bvb2w6OlNldFdlYlByb2Nlc3NIYXNVcGxvYWRzKG1fd2ViUHJvY2Vzc0lkZW50
aWZpZXIpLCAwKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xl
YXJDb25uZWN0aW9uSGFzVXBsb2FkcygpCit7CisgICAgQVNTRVJUKG1fY29ubmVjdGlvbkhhc1Vw
bG9hZHMpOworICAgIG1fY29ubmVjdGlvbkhhc1VwbG9hZHMgPSBmYWxzZTsKKyAgICBtX25ldHdv
cmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUG9vbDo6Q2xlYXJXZWJQcm9jZXNzSGFzVXBsb2FkcyhtX3dlYlByb2Nlc3NJZGVudGlm
aWVyKSwgMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCmluZGV4IDM5ODQzMGU1ZTRhM2JlNmMwMDZmZWUzZmRmNzkyZTE1Y2RlYmUwMTguLjQ4ZTk3
NTNhOGQ5MDMzN2IwNjA2YWM2NzU1OTM4MTE0OTc3YTMyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKQEAgLTMyLDggKzMyLDEwIEBACiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtNRE5TUmVnaXN0ZXIuaCIKICNp
bmNsdWRlICJOZXR3b3JrUlRDUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VM
b2FkTWFwLmgiCiAjaW5jbHVkZSAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFp
bi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTEzNSw2ICsxMzcsMTAgQEAg
cHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNl
Pj4gZmlsZXNJbkJsb2IoY29uc3QgVVJMJik7CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpC
bG9iRGF0YUZpbGVSZWZlcmVuY2U+PiByZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmKTsKIAorICAgIHZvaWQgc2V0V2ViUHJvY2Vzc0lkZW50
aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIHZvaWQgc2V0Q29ubmVjdGlv
bkhhc1VwbG9hZHMoKTsKKyAgICB2b2lkIGNsZWFyQ29ubmVjdGlvbkhhc1VwbG9hZHMoKTsKKwog
cHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2Vz
cyYsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKQEAgLTI2OCw3ICsyNzQsNyBAQCBw
cml2YXRlOgogICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKIAogICAg
IEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxOZXR3b3JrU29ja2V0U3RyZWFtPj4gbV9uZXR3b3Jr
U29ja2V0U3RyZWFtczsKLSAgICBIYXNoTWFwPFJlc291cmNlTG9hZElkZW50aWZpZXIsIFJlZjxO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI+PiBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnM7CisgICAgTmV0
d29ya1Jlc291cmNlTG9hZE1hcCBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnM7CiAgICAgSGFzaE1h
cDxTdHJpbmcsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBtX2Jsb2JE
YXRhRmlsZVJlZmVyZW5jZXM7CiAgICAgVmVjdG9yPFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcj4gbV9uZXR3b3JrQWN0aXZpdHlUcmFja2VyczsKIApAQCAtMjk3LDYgKzMwMyw5IEBAIHBy
aXZhdGU6CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PiBtX3BheW1lbnRDb29yZGluYXRvcjsKICNl
bmRpZgorCisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRp
ZmllcjsKKyAgICBib29sIG1fY29ubmVjdGlvbkhhc1VwbG9hZHMgeyBmYWxzZSB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCBhZmU0MjBmOTYyY2I3MDE2ZDVmYmY5MTdjNTY3MzBkNjlhYmQxMTBhLi5k
MTI5OTQ2YmQ0N2UzODFiNzM0ZjVkYTcwMjJhOWIzODAyZjU1M2UzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTgzLDQgKzgzLDYgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICBFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikgTGVnYWN5U3luYwogI2VuZGlmCisK
KyAgICBTZXRXZWJQcm9jZXNzSWRlbnRpZmllcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBw
cm9jZXNzSWRlbnRpZmllcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZE1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRNYXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyMGZiOGE3ZTdi
YWI3ZWFmOWEyMmI3MzBhZWFjZmI5NjY4ZTU0Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRNYXAuY3BwCkBAIC0wLDAg
KzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0
d29ya1Jlc291cmNlTG9hZE1hcC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworTmV0d29ya1Jl
c291cmNlTG9hZE1hcDo6TWFwVHlwZTo6QWRkUmVzdWx0IE5ldHdvcmtSZXNvdXJjZUxvYWRNYXA6
OmFkZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI+JiYgbG9hZGVyKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9sb2FkZXJzLmFkZChp
ZGVudGlmaWVyLCBXVEZNb3ZlKGxvYWRlcikpOworICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRy
eSk7CisgICAgICAgIAorICAgIGlmIChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5vcmlnaW5hbFJl
cXVlc3QoKS5oYXNVcGxvYWQoKSkgeworICAgICAgICBpZiAobV9sb2FkZXJzV2l0aFVwbG9hZHMu
aXNFbXB0eSgpKQorICAgICAgICAgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLnNldENvbm5l
Y3Rpb25IYXNVcGxvYWRzKCk7CisgICAgICAgIG1fbG9hZGVyc1dpdGhVcGxvYWRzLmFkZChyZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLnB0cigpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRNYXA6OnJlbW92ZShSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBsb2FkZXIgPSBtX2xvYWRlcnMudGFrZShp
ZGVudGlmaWVyKTsKKyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCgqbG9hZGVyKS0+b3JpZ2luYWxSZXF1ZXN0KCkuaGFzVXBsb2FkKCkpIHsKKyAgICAg
ICAgbV9sb2FkZXJzV2l0aFVwbG9hZHMucmVtb3ZlKGxvYWRlci0+cHRyKCkpOworICAgICAgICBp
ZiAobV9sb2FkZXJzV2l0aFVwbG9hZHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9jb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNsZWFyQ29ubmVjdGlvbkhhc1VwbG9hZHMoKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworTmV0d29ya1Jlc291cmNlTG9hZGVyKiBOZXR3b3JrUmVzb3Vy
Y2VMb2FkTWFwOjpnZXQoUmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdAor
eworICAgIHJldHVybiBtX2xvYWRlcnMuZ2V0KGlkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZE1hcC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkTWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NmYjc3MDI1NTNhMWZlMTk0NTBmYWMz
ZDgyYjQxZTAxYTY3NThiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZE1hcC5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCisjaWYgRU5BQkxFKFRB
S0VfVU5CT1VOREVEX05FVFdPUktJTkdfQVNTRVJUSU9OKQorI2luY2x1ZGUgIlByb2Nlc3NBc3Nl
cnRpb24uaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordHlwZWRlZiB1aW50NjRf
dCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyOworCitjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkTWFw
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVzb3VyY2VMb2FkSWRlbnRpZmllciwg
UmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4+IE1hcFR5cGU7CisKKyAgICBOZXR3b3JrUmVzb3Vy
Y2VMb2FkTWFwKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQorICAg
ICAgICA6IG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25uZWN0aW9uKQorICAgIHsKKyAgICB9
CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlcnMuaXNFbXB0eSgp
OyB9CisgICAgYm9vbCBjb250YWlucyhSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIp
IGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVycy5jb250YWlucyhpZGVudGlmaWVyKTsgfQorICAgIE1h
cFR5cGU6Oml0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9sb2FkZXJzLmJlZ2luKCk7IH0KKyAg
ICBNYXBUeXBlOjpWYWx1ZXNJdGVyYXRvclJhbmdlIHZhbHVlcygpIHsgcmV0dXJuIG1fbG9hZGVy
cy52YWx1ZXMoKTsgfQorCisgICAgTWFwVHlwZTo6QWRkUmVzdWx0IGFkZChSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyLCBSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPiYmKTsKKyAgICBOZXR3b3JrUmVz
b3VyY2VMb2FkZXIqIGdldChSZXNvdXJjZUxvYWRJZGVudGlmaWVyKSBjb25zdDsKKyAgICBib29s
IHJlbW92ZShSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIE1h
cFR5cGUgbV9sb2FkZXJzOworICAgIEhhc2hTZXQ8TmV0d29ya1Jlc291cmNlTG9hZGVyKj4gbV9s
b2FkZXJzV2l0aFVwbG9hZHM7CisjaWYgRU5BQkxFKFRBS0VfVU5CT1VOREVEX05FVFdPUktJTkdf
QVNTRVJUSU9OKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX25ldHdv
cmtBc3NlcnRpb247CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCBhMGIw
NjVjODFkN2E3MDAxYTg1MGIwMzcwYjQ0M2EzY2E1MTc5NDk5Li4zYzhjOTM4NDZkNTlmN2YxZTM5
MWFlMjNkZDJiZmFjYWYyYzg2ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgIk5ldHdv
cmtBZENsaWNrQXR0cmlidXRpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZENsaWNrQXR0cmlidXRpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKaW5kZXggOGRlZjg0NTdlODM3ZDAwNmI2MzVjZDhjYzlkNmVlZGVjM2Qw
MmMzOS4uOGM4NjdhOGMxZTQzNzBlMjIwYjU4YjViMTRlNDkxMTExNGVkMGJjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0xOTgsNiArMTk4LDcgQEAgZGVm
IGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzKHJlY2VpdmVyKToKICAgICAgICAgJ1dl
YkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGZXRjaElkZW50
aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UG9pbnRlcklEJywKKyAgICAgICAgJ1dlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEnLApAQCAtNDI0LDYg
KzQyNSw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6
UGx1Z2luSW5mbyc6IFsnPFdlYkNvcmUvUGx1Z2luRGF0YS5oPiddLAogICAgICAgICAnV2ViQ29y
ZTo6UG9saWN5QWN0aW9uJzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXInOiBbJzxXZWJDb3JlL0ZyYW1lTG9h
ZGVyVHlwZXMuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJzogWyc8
V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6UmVjZW50
U2VhcmNoJzogWyc8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4nXSwKICAgICAgICAgJ1dlYkNv
cmU6OlJvdXRlU2hhcmluZ1BvbGljeSc6IFsnPFdlYkNvcmUvQXVkaW9TZXNzaW9uLmg+J10sCiAg
ICAgICAgICdXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJzogWyc8V2ViQ29y
ZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDFjNjQ2YmRjMWRiNmUz
MmUwZWMzMDkwZjUyNmUyMDlkMzJjYzQ3NDIuLjFjOWVlMmM0MDFmNTVmZTVkZDA5M2QxZjQ0MmM4
MmQ4Mzk5MzQ4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzUsNiArMzUsNyBAQCBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5jcHAKK05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRNYXAuY3BwCiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYTU2ZDEwZmY4YzIzM2IzMjVlMWEzNmE0NjJiMWRl
M2U0ZDcyMDQzYi4uZDYwZDhlZTgyOWZmYmM1YTVmYjgyY2RiYTgyMDhkNzY5NDliZWI5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCkBAIC0xMjAxLDYgKzEyMDEsMTggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
V2UKICAgICBzdG9yZS0+Y2xpZW50KCkucmVxdWVzdFN0b3JhZ2VTcGFjZShvcmlnaW4udG9wT3Jp
Z2luLCBvcmlnaW4uY2xpZW50T3JpZ2luLCBxdW90YSwgY3VycmVudFNpemUsIHNwYWNlUmVxdWly
ZWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp0YWtlVXBsb2FkQXNzZXJ0aW9uKCkKK3sKKyAgICBBU1NFUlQoIW1fdXBsb2FkQXNz
ZXJ0aW9uKTsKKyAgICBtX3VwbG9hZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vz
c0Fzc2VydGlvbj4ocHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3Nl
cnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6Y2xlYXJVcGxvYWRBc3NlcnRpb24oKQoreworICAgIEFTU0VSVChtX3VwbG9hZEFz
c2VydGlvbik7CisgICAgbV91cGxvYWRBc3NlcnRpb24gPSBudWxscHRyOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0sKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMWVl
MzA2OTEyMTkzM2JjZjBhZmVkYzFkNzhkYTMzOTJlNzk4YTViMS4uYjJmYmNhNWUyOWQwYjE4ZjBm
Njc0Mzc2ZDY2YTYyZjQwYjc0YjQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE3Myw2ICsxNzMsOSBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGFkZFNlc3Npb24oUmVmPFdlYnNpdGVEYXRhU3RvcmU+JiYpOwog
ICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CisgICAgCisgICAgdm9pZCB0
YWtlVXBsb2FkQXNzZXJ0aW9uKCk7CisgICAgdm9pZCBjbGVhclVwbG9hZEFzc2VydGlvbigpOwog
CiBwcml2YXRlOgogICAgIC8vIEF1eGlsaWFyeVByb2Nlc3NQcm94eQpAQCAtMjYxLDYgKzI2NCw4
IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFJlZlB0
cjxXZWJzaXRlRGF0YVN0b3JlPj4gbV93ZWJzaXRlRGF0YVN0b3JlczsKKyAgICAKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4gbV91cGxvYWRBc3NlcnRpb247CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAppbmRleCBhYWM1MmFhMjI1MDE1MTQ0NGRlZmIwZGQ2NmMwM2FkYmNjMmQ3MjNiLi5m
ZTk2OGVhZDk4NGUxNjFjNjdkYzk2MWYxZmEzZWVhNTRjZDQxZWRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0yNTExLDQgKzI1MTEsNDcgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bihQQUw6OlNlc3Npb25JRCBzZXMKICNlbmRpZgogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpz
ZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCit7Cisg
ICAgYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIo
cHJvY2Vzc0lEKTsKKyAgICBBU1NFUlQocHJvY2Vzcyk7CisKKyAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgIldlYiBwcm9jZXNzIHBpZCAldSBub3cgaGFzIHVwbG9hZHMgaW4gcHJv
Z3Jlc3MiLCAodW5zaWduZWQpcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisKKyAgICBp
ZiAobV9wcm9jZXNzZXNXaXRoVXBsb2Fkcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0coUHJvY2Vzc1N1c3BlbnNpb24sICJUaGUgbnVtYmVyIG9mIHVwbG9hZHMgaW4gcHJvZ3Jlc3Mg
aXMgbm93IG9uZS4gVGFraW5nIE5ldHdvcmtpbmcgYW5kIFVJIHByb2Nlc3MgYXNzZXJ0aW9ucy4i
KTsKKworICAgICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzcyk7CisgICAgICAgIG1fbmV0d29y
a1Byb2Nlc3MtPnRha2VVcGxvYWRBc3NlcnRpb24oKTsKKyAgICAgICAgCisgICAgICAgIEFTU0VS
VCghbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24pOworICAgICAgICBtX3VpUHJvY2Vzc1VwbG9h
ZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVu
dFByb2Nlc3NJRCgpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5k
ZWROZXR3b3JraW5nKTsKKyAgICB9CisgICAgCisgICAgYXV0byByZXN1bHQgPSBtX3Byb2Nlc3Nl
c1dpdGhVcGxvYWRzLmFkZChwcm9jZXNzSUQsIG51bGxwdHIpOworICAgIEFTU0VSVChyZXN1bHQu
aXNOZXdFbnRyeSk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktp
dCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7Cit9CisK
K3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyV2ViUHJvY2Vzc0hhc1VwbG9hZHMoUHJvY2Vzc0lk
ZW50aWZpZXIgcHJvY2Vzc0lEKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNzZXNXaXRo
VXBsb2Fkcy50YWtlKHByb2Nlc3NJRCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCk7CisKKyAgICBhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRl
bnRpZmllcihwcm9jZXNzSUQpOworICAgIEFTU0VSVChwcm9jZXNzKTsKKyAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgIldlYiBwcm9jZXNzIHBpZCAldSBubyBsb25nZXIgaGFzIHVw
bG9hZHMgaW4gcHJvZ3Jlc3MiLCAodW5zaWduZWQpcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSk7CisKKyAgICBpZiAobV9wcm9jZXNzZXNXaXRoVXBsb2Fkcy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJUaGUgbnVtYmVyIG9mIHVwbG9hZHMg
aW4gcHJvZ3Jlc3MgaXMgbm93IHplcm8uIFJlbGVhc2luZyBOZXR3b3JraW5nIGFuZCBVSSBwcm9j
ZXNzIGFzc2VydGlvbnMuIik7CisKKyAgICAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCisgICAg
ICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5jbGVhclVwbG9hZEFzc2VydGlvbigpOworICAgICAg
ICAKKyAgICAgICAgQVNTRVJUKG1fdWlQcm9jZXNzVXBsb2FkQXNzZXJ0aW9uKTsKKyAgICAgICAg
bV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24gPSBudWxscHRyOworICAgIH0KKyAgICAKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAppbmRleCAzZDJiNTk4ZWZiMDlmMjRmNGI2Zjg5YzBjM2YyZjcyN2JjMjQ5M2JjLi45YzQ3
M2FmZGFiNzNiYzU2NWVmNzNmM2U5YThlOGIxYWJhNzgyYTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJXZWJD
b250ZXh0Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRTdHJpbmdIYXNoLmg+CkBAIC01Miw3ICs1Myw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuaD4KLSNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgpAQCAtNDk1LDYgKzQ5NSw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBI
YXNoTWFwPENTdHJpbmcsIFNhbmRib3hQZXJtaXNzaW9uPiYgc2FuZGJveFBhdGhzKCkgY29uc3Qg
eyByZXR1cm4gbV9leHRyYVNhbmRib3hQYXRoczsgfTsKICAgICBib29sIHNhbmRib3hFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94RW5hYmxlZDsgfTsKICNlbmRpZgorICAgIAorICAg
IHZvaWQgc2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIp
OworICAgIHZvaWQgY2xlYXJXZWJQcm9jZXNzSGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAg
LTc2OCw2ICs3NzEsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zYW5kYm94RW5hYmxlZCB7IGZh
bHNlIH07CiAgICAgSGFzaE1hcDxDU3RyaW5nLCBTYW5kYm94UGVybWlzc2lvbj4gbV9leHRyYVNh
bmRib3hQYXRoczsKICNlbmRpZgorCisgICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NBc3NlcnRpb24+PiBtX3Byb2Nlc3Nlc1dpdGhV
cGxvYWRzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX3VpUHJvY2Vz
c1VwbG9hZEFzc2VydGlvbjsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluCmluZGV4IGYz
MmQxOWQ5ZWJjNmM5NzY1N2U5N2UxNWUwNzc4NmJlOWU0OTZmMjkuLmViZjJjM2JhMmZiMzkyM2Y0
MTAwMzIyYzc0MzE3Y2VmYTRiOTEwNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluCkBAIC0zNyw2ICszNyw5IEBAIG1lc3NhZ2Vz
IC0+IFdlYlByb2Nlc3NQb29sIHsKIAogICAgIFJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKFNlY29u
ZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTdGF0ZSkKIAorICAgIFNldFdlYlByb2Nlc3NI
YXNVcGxvYWRzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCkKKyAgICBDbGVh
cldlYlByb2Nlc3NIYXNVcGxvYWRzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJ
RCkKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBQb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlckNsaWVudChzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNl
SWRlbnRpZmllciwgU3RyaW5nIHNvdXJjZU9yaWdpbikKICAgICBQb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgc3Ry
dWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXIgc291cmNlLCBXZWJDb3JlOjpTV1NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjc3ZWNmMTZkOTBjY2Q2
NWRhMTY0NWI4YjExNzk5MGI1OWY1NGI5Mi4uMzM5NDVmMjk1MmQ5YmI1MTUwMWEyM2U2MDE1ZDhi
MDYwYjRmNWNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC05MjQsNiArOTI0LDcgQEAKIAkJNTEyMTc0NjExNjRDMjBFMzAwMzdBNUMx
IC8qIFNoYXJlYWJsZVJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTIxNzQ1RjE2NEMyMEUzMDAzN0E1QzEgLyogU2hhcmVhYmxlUmVzb3Vy
Y2UuaCAqLzsgfTsKIAkJNTEyM0NGMUMxMzNEMjYwQTAwNTZGODAwIC8qIFdLSWNvbkRhdGFiYXNl
Q0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjND
RjFBMTMzRDI2MEEwMDU2RjgwMCAvKiBXS0ljb25EYXRhYmFzZUNHLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEyNDBFQkEyMjBBMDhEMjAwNUNG
QzYzIC8qIERvd25sb2FkTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTI0MEVCODIyMEEwOENBMDA1Q0ZDNjMgLyogRG93bmxvYWRNYXAuaCAqLzsg
fTsKKwkJNTEyNDBFQzAyMjBCNjk0QzAwNUNGQzYzIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRNYXAu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjQwRUJF
MjIwQjY5NDcwMDVDRkM2MyAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmggKi87IH07CiAJCTUx
MjkzNUQ4MTI4OEQxOTQwMEE0QjY5NSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjkzNUQ2MTI4OEQxOTQwMEE0
QjY5NSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCAqLzsgfTsKIAkJNTEyOTM1RTQxMjg4RDk3ODAw
QTRCNjk1IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTI5MzVFMjEyODhEOTc4MDBB
NEI2OTUgLyogSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKIAkJ
NTEyRTM0RTUxMzBCNEQwNTAwQUJEMTlBIC8qIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0EzM0I0MTMw
QjMwOEMwMEY4MENCNSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMxNjksNiArMzE3MCw4IEBA
CiAJCTUxMjNDRjFBMTMzRDI2MEEwMDU2RjgwMCAvKiBXS0ljb25EYXRhYmFzZUNHLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLSWNvbkRhdGFiYXNlQ0cuaDsgcGF0aCA9IGNn
L1dLSWNvbkRhdGFiYXNlQ0cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyNDBF
QjgyMjBBMDhDQTAwNUNGQzYzIC8qIERvd25sb2FkTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERvd25sb2FkTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMjQwRUI5MjIwQTA4Q0EwMDVDRkM2MyAvKiBEb3dubG9hZE1hcC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb3dubG9hZE1hcC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxMjQwRUJFMjIwQjY5NDcwMDVDRkM2MyAvKiBOZXR3b3JrUmVzb3Vy
Y2VMb2FkTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtSZXNv
dXJjZUxvYWRNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyNDBFQkYyMjBC
Njk0ODAwNUNGQzYzIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRNYXAuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1Jlc291cmNlTG9hZE1hcC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjkzNUQ1MTI4OEQxOTQwMEE0QjY5NSAvKiBXZWJD
b250ZXh0TWVudUl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViQ29udGV4dE1lbnVJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEy
OTM1RDYxMjg4RDE5NDAwQTRCNjk1IC8qIFdlYkNvbnRleHRNZW51SXRlbS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudUl0ZW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTEyOTM1RTExMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVu
ZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1MTIsNiArNjUxNSw4IEBACiAJCQkJNTFGRDE4QjMx
NjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgKi8sCiAJCQkJNTFG
RDE4QjQxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5oICovLAogCQkJ
CUUxNTI1NTE3MTcwMTA5RkIwMDNEN0FEQiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2Fn
ZXMuaW4gKi8sCisJCQkJNTEyNDBFQkYyMjBCNjk0ODAwNUNGQzYzIC8qIE5ldHdvcmtSZXNvdXJj
ZUxvYWRNYXAuY3BwICovLAorCQkJCTUxMjQwRUJFMjIwQjY5NDcwMDVDRkM2MyAvKiBOZXR3b3Jr
UmVzb3VyY2VMb2FkTWFwLmggKi8sCiAJCQkJNUMxNDI2RTUxQzIzRjgwNTAwRDQxMTgzIC8qIE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCAqLywKIAkJCQk1QzE0MjZFNjFDMjNGODA1
MDBENDExODMgLyogTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCAqLywKIAkJCQk1MzIx
NTk1MjFEQkFFNkZDMDA1NEFBM0MgLyogTmV0d29ya1Nlc3Npb24uY3BwICovLApAQCAtOTI2Miw2
ICs5MjY3LDcgQEAKIAkJCQlBMTE0NTVCMDIxMUZEMjUyMDBDQTkzNUIgLyogTmV0d29ya1Byb3hp
bWl0eU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRkQxOEI2MTY1MUZCQUQwMERCRTFD
RSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNTI1NTFC
MTcwMTE4MTkwMDNEN0FEQiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTEyNDBFQzAyMjBCNjk0QzAwNUNGQzYzIC8qIE5ldHdvcmtSZXNvdXJj
ZUxvYWRNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMTQyNkYwMUMyM0Y4MDkwMEQ0MTE4MyAv
KiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEz
MDc1QUMxREU4NUYzNzAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MURDNDU5NjFFM0Q2RTIyMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRl
eCBjMWU0NGYxMTg3ZDQzMGVhM2ZiY2NlZDlmY2IyMjY2YjE2MDkxZmY0Li41ZDgzYzVjMWVkODM2
YzYxMzVkMWEwOTM0MGQxY2NkOWUyZDg2OTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC0xMjMwLDYgKzEyMzAsNyBAQCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24mIFdlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAgICAg
ICAgICBDUkFTSCgpOwogCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoY29ubmVjdGlvbklkZW50aWZpZXIpOworICAg
ICAgICBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRXZWJQcm9jZXNzSWRlbnRpZmll
cihQcm9jZXNzOjppZGVudGlmaWVyKCkpLCAwKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuICpt
X25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsK
</data>
<flag name="review"
          id="381067"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>