<?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>165028</bug_id>
          
          <creation_ts>2016-11-22 01:47:20 -0800</creation_ts>
          <short_desc>Reduce platform ifdefs in WebKit2 custom protocols implementation</short_desc>
          <delta_ts>2017-02-21 10:26:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=164922</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1253359</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-22 01:47:20 -0800</bug_when>
    <thetext>There are several ifdefs for soup and cocoa that could be avoided with just some refactorings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253361</commentid>
    <comment_count>1</comment_count>
      <attachid>295332</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-22 01:52:09 -0800</bug_when>
    <thetext>Created attachment 295332
WIP patch

This patch adds CustomProtocolManagerProxy.cpp that is cross-platform and adds an API::CustomProtocolManagerClient implementation for cocoa. As usual, I need help with the Xcode changes, I could have removed the deleted files myself, but since there are new files someone with a Mac will have to edit the xcode file in any case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267690</commentid>
    <comment_count>2</comment_count>
      <attachid>299123</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-18 01:11:52 -0800</bug_when>
    <thetext>Created attachment 299123
WIP with xcode changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267697</commentid>
    <comment_count>3</comment_count>
      <attachid>299125</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-18 01:37:39 -0800</bug_when>
    <thetext>Created attachment 299125
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267701</commentid>
    <comment_count>4</comment_count>
      <attachid>299126</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-18 02:14:16 -0800</bug_when>
    <thetext>Created attachment 299126
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267709</commentid>
    <comment_count>5</comment_count>
      <attachid>299129</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-18 02:30:10 -0800</bug_when>
    <thetext>Created attachment 299129
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267711</commentid>
    <comment_count>6</comment_count>
      <attachid>299130</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-18 02:59:59 -0800</bug_when>
    <thetext>Created attachment 299130
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267718</commentid>
    <comment_count>7</comment_count>
      <attachid>299133</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-18 05:03:30 -0800</bug_when>
    <thetext>Created attachment 299133
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276624</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-13 23:50:06 -0800</bug_when>
    <thetext>Ping reviewers :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276817</commentid>
    <comment_count>9</comment_count>
      <attachid>299133</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-02-14 10:53:05 -0800</bug_when>
    <thetext>Comment on attachment 299133
Patch

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

&gt; Source/WebKit2/UIProcess/Cocoa/CustomProtocolManagerClient.h:46
&gt; +    void startLoading(CustomProtocolManagerProxy&amp;, uint64_t /*customProtocolID*/, const WebCore::ResourceRequest&amp;) override;
&gt; +    void stopLoading(CustomProtocolManagerProxy&amp;, uint64_t /*customProtocolID*/) override;
&gt; +    void invalidate(CustomProtocolManagerProxy&amp;) override;

WebKit coding style says to use final, not override.

&gt; Source/WebKit2/UIProcess/Cocoa/CustomProtocolManagerClient.mmSource/WebKit2/UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm:143
&gt; +    // FIXME: iterate the loader map and remove loaders for the given manager.

Why is it safe to leave this unimplemented?

&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:371
&gt; +    for (const auto&amp; scheme : globalURLSchemesWithCustomProtocolHandlers())
&gt; +        parameters.urlSchemesRegisteredForCustomProtocols.append(scheme);
&gt; +
&gt; +    for (const auto&amp; scheme : m_urlSchemesRegisteredForCustomProtocols)
&gt; +        parameters.urlSchemesRegisteredForCustomProtocols.append(scheme);

I suggest just auto&amp; rather than const auto&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277194</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-15 08:40:55 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 299133 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=299133&amp;action=review

Thanks for the review!

&gt; &gt; Source/WebKit2/UIProcess/Cocoa/CustomProtocolManagerClient.h:46
&gt; &gt; +    void startLoading(CustomProtocolManagerProxy&amp;, uint64_t /*customProtocolID*/, const WebCore::ResourceRequest&amp;) override;
&gt; &gt; +    void stopLoading(CustomProtocolManagerProxy&amp;, uint64_t /*customProtocolID*/) override;
&gt; &gt; +    void invalidate(CustomProtocolManagerProxy&amp;) override;
&gt; 
&gt; WebKit coding style says to use final, not override.

Even for a class already marked as final?
 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/CustomProtocolManagerClient.mmSource/WebKit2/UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm:143
&gt; &gt; +    // FIXME: iterate the loader map and remove loaders for the given manager.
&gt; 
&gt; Why is it safe to leave this unimplemented?

Because it&apos;s a refactoring, this is already unimplemented with current code. I was afraid of breaking something trying to implement this, since I&apos;m not familiar with how custom protocols work in Mac and I don&apos;t have a way to test it. So, I think it&apos;s better if someone who knows this code can implement this afterwards.

&gt; &gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:371
&gt; &gt; +    for (const auto&amp; scheme : globalURLSchemesWithCustomProtocolHandlers())
&gt; &gt; +        parameters.urlSchemesRegisteredForCustomProtocols.append(scheme);
&gt; &gt; +
&gt; &gt; +    for (const auto&amp; scheme : m_urlSchemesRegisteredForCustomProtocols)
&gt; &gt; +        parameters.urlSchemesRegisteredForCustomProtocols.append(scheme);
&gt; 
&gt; I suggest just auto&amp; rather than const auto&amp;.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277216</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-15 09:11:38 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; WebKit coding style says to use final, not override.
&gt; 
&gt; Even for a class already marked as final?

I strongly prefer override to final because it&apos;s much more descriptive and it doesn&apos;t seem particularly useful to prohibit overriding particular methods. But yes, we discussed it on webkit-dev a while back and IIRC agreed to use final in all cases except where the function needs to be overridden a second time, for better or for worse. We&apos;ve been ignoring that in our GTK+ patches but should probably start using it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278888</commentid>
    <comment_count>12</comment_count>
      <attachid>302130</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-20 02:48:53 -0800</bug_when>
    <thetext>Created attachment 302130
Rebased patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278904</commentid>
    <comment_count>13</comment_count>
      <attachid>302130</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-20 04:29:45 -0800</bug_when>
    <thetext>Comment on attachment 302130
Rebased patch for landing

Clearing flags on attachment: 302130

Committed r212632: &lt;http://trac.webkit.org/changeset/212632&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278905</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-20 04:29:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278973</commentid>
    <comment_count>15</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-02-20 10:09:52 -0800</bug_when>
    <thetext>This change appears to have caused 21 API test failures/timeouts:

https://build.webkit.org/builders/Apple%20Sierra%20Release%20WK2%20%28Tests%29/builds/3724</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278975</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-20 10:14:58 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; This change appears to have caused 21 API test failures/timeouts:
&gt; 
&gt; https://build.webkit.org/builders/
&gt; Apple%20Sierra%20Release%20WK2%20%28Tests%29/builds/3724

hmm, I&apos;m sorry, I&apos;m surprised it causes failures in tests other than the custom protocols one, that is failing too. Anyway, feel free to roll it out, and I&apos;ll try to find time to look at it again in more detail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278979</commentid>
    <comment_count>17</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-02-20 10:18:34 -0800</bug_when>
    <thetext>Reverted r212632 for reason:

This change appears to have caused API test failures.

Committed r212655: &lt;http://trac.webkit.org/changeset/212655&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279335</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-21 08:24:27 -0800</bug_when>
    <thetext>Ok, found the issue, git rebase messed it up, adding setCustomProtocolManagerClient() call to WebProcessPool::updateProcessSuppressionState() instead of WebProcessPool::platformInitialize() :-/ I&apos;ll submit a new patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279336</commentid>
    <comment_count>19</comment_count>
      <attachid>302262</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-21 08:28:03 -0800</bug_when>
    <thetext>Created attachment 302262
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279411</commentid>
    <comment_count>20</comment_count>
      <attachid>302262</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-21 10:26:37 -0800</bug_when>
    <thetext>Comment on attachment 302262
Patch for landing

Clearing flags on attachment: 302262

Committed r212724: &lt;http://trac.webkit.org/changeset/212724&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279412</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-21 10:26:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295332</attachid>
            <date>2016-11-22 01:52:09 -0800</date>
            <delta_ts>2017-01-18 01:11:52 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>wk2-custom-protocols.diff</filename>
            <type>text/plain</type>
            <size>28614</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggODcyNjY4ZS4uNDRiMzkzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTQ5Myw2ICs0OTMsOCBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAogCisgICAgVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcAorCiAgICAg
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKIAogICAgIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQppbmRleCA5OTQ0YWRhLi4yZjgzYWVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQpAQCAtMTI5LDggKzEyOSw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNF
UwogCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCiAK
LSAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eVNvdXAuY3BwCi0KICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdp
bkluZm9TdG9yZVVuaXguY3BwCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9j
ZXNzUHJveHlVbml4LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDU5NTRiNzIu
LjY0NzE0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yODEsOCArMjgxLDYgQEAg
bGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvbGludXgvTWVtb3J5
UHJlc3N1cmVNb25pdG9yLmNwcAogCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcAotCiAgICAgVUlQcm9j
ZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKIAogICAgIFVJUHJvY2Vzcy9QbHVn
aW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UK
aW5kZXggOGU2MDg5Ny4uYzlmYzQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTI0
OSw4ICsyNDksNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vz
cy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCiAKLSAgICBVSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1t
Ci0KICAgICBVSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbQog
CiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpbkluZm9TdG9yZU1hYy5tbQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50LmgKaW5kZXggNTFlMThiZC4uOTQ1ZGUzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRMb2FkaW5nKFdlYktpdDo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCAvKiBjdXN0b21Qcm90b2NvbElEICovLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzdGFydExvYWRpbmcoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYsIHVpbnQ2NF90IC8qIGN1c3RvbVByb3RvY29sSUQgKi8sIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzdG9wTG9hZGluZyhXZWJLaXQ6OkN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLyogY3VzdG9tUHJvdG9jb2xJRCAq
LykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZShXZWJLaXQ6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCmluZGV4IGY1NTQ4NGIu
LjhjOTY5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQg
RXdrVXJsU2NoZW1lUmVxdWVzdDo6ZmluaXNoKGNvbnN0IHZvaWQqIGNvbnRlbnREYXRhLCB1aW50
NjRfdCBjb250ZW50TGVuZ3RoCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgobV91cmwpKSwK
ICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChtaW1lVHlwZSksIGNvbnRlbnRMZW5ndGgsIGVtcHR5
U3RyaW5nKCkpOwogCi0gICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRSZWNlaXZlUmVzcG9uc2Uo
bV9yZXF1ZXN0SUQsIHJlc3BvbnNlKTsKKyAgICBtX3drUmVxdWVzdE1hbmFnZXItPmRpZFJlY2Vp
dmVSZXNwb25zZShtX3JlcXVlc3RJRCwgcmVzcG9uc2UsIDApOwogICAgIG1fd2tSZXF1ZXN0TWFu
YWdlci0+ZGlkTG9hZERhdGEobV9yZXF1ZXN0SUQsIHRvSW1wbCh3a0RhdGEuZ2V0KCkpLT5kYXRh
UmVmZXJlbmNlKCkpOwogICAgIG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkRmluaXNoTG9hZGluZyht
X3JlcXVlc3RJRCk7CiAgICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5zdG9wTG9hZGluZyhtX3JlcXVl
c3RJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAppbmRleCBj
YjJmMzE0Li42YWJkOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5jcHAKQEAgLTM2LDEwICszNiw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
Ym9vbCBzdGFydExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkg
b3ZlcnJpZGUKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dFN0
YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKG1fd2ViQ29udGV4dCwgY3VzdG9tUHJvdG9jb2xJRCwg
cmVxdWVzdCwgbWFuYWdlcik7Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHZv
aWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElEKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCBhYmExYjk2
Li41OWJkYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2soR0lucHV0U3RyZWFt
KiBpbnB1dFN0cmVhbSwgR0FzeW5jCiAgICAgICAgIC8vIEZpcnN0IGNodW5rIHJlYWQuIEluIGNh
c2Ugb2YgZW1wdHkgcmVwbHkgYW4gZW1wdHkgQVBJOjpEYXRhIGlzIHNlbnQgdG8gdGhlIG5ldHdv
cmtpbmcgcHJvY2Vzcy4KICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwoVVJM
KCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+
bWltZVR5cGUuZGF0YSgpKSwKICAgICAgICAgICAgIHByaXYtPnN0cmVhbUxlbmd0aCwgZW1wdHlT
dHJpbmcoKSk7Ci0gICAgICAgIHByaXYtPm1hbmFnZXItPmRpZFJlY2VpdmVSZXNwb25zZShwcml2
LT5yZXF1ZXN0SUQsIHJlc3BvbnNlKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKHByaXYtPnJlcXVlc3RJRCwgcmVzcG9uc2UsIDApOwogICAgICAgICBwcml2LT5t
YW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEpOwogICAgIH0gZWxz
ZSBpZiAoYnl0ZXNSZWFkIHx8ICghYnl0ZXNSZWFkICYmICFwcml2LT5zdHJlYW1MZW5ndGgpKSB7
CiAgICAgICAgIC8vIFN1YnNlcXVlbnQgY2h1bmsgcmVhZC4gV2Ugb25seSBzZW5kIGFuIGVtcHR5
IEFQSTo6RGF0YSB0byB0aGUgbmV0d29ya2luZyBwcm9jZXNzIHdoZW4gc3RyZWFtIGxlbmd0aCBp
cyB1bmtub3duLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmM4YzYzNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2ltcG9ydCAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmgi
CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitP
QkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OworCitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQg
eworcHJpdmF0ZToKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSYsIHVpbnQ2NF90IC8qY3VzdG9tUHJvdG9jb2xJRCovLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BMb2FkaW5nKEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLypjdXN0b21Qcm90b2NvbElEKi8pIG92ZXJyaWRl
OworICAgIHZvaWQgaW52YWxpZGF0ZShDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYpIG92ZXJy
aWRlOworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2xM
b2FkZXI+PiBtX2xvYWRlck1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
bWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbQpzaW1pbGFyaXR5IGlu
ZGV4IDY5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCnJlbmFtZSB0
byBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50Lm1tCmluZGV4IDk3OWIwZDIuLjY1Mjg2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5tbQpAQCAtMjQsMzYgKzI0LDMwIEBACiAgKi8KIAogI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgor
I2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAKLSNpbXBvcnQgIkNoaWxk
UHJvY2Vzc1Byb3h5LmgiCi0jaW1wb3J0ICJDb25uZWN0aW9uLmgiCi0jaW1wb3J0ICJDdXN0b21Q
cm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgotI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIK
ICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+
CiAKLXVzaW5nIG5hbWVzcGFjZSBJUEM7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFj
ZSBXS0N1c3RvbVByb3RvY29sTG9hZGVyIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVn
YXRlPiB7CiBAcHJpdmF0ZQogICAgIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KiBfY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk7CiAgICAgdWludDY0X3QgX2N1c3RvbVByb3RvY29sSUQ7Ci0g
ICAgUmVmUHRyPENvbm5lY3Rpb24+IF9jb25uZWN0aW9uOwogICAgIE5TVVJMQ2FjaGVTdG9yYWdl
UG9saWN5IF9zdG9yYWdlUG9saWN5OwogICAgIE5TVVJMQ29ubmVjdGlvbiAqX3VybENvbm5lY3Rp
b247CiB9Ci0tIChpZClpbml0V2l0aEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OihDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSopY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgY3VzdG9tUHJv
dG9jb2xJRDoodWludDY0X3QpY3VzdG9tUHJvdG9jb2xJRCByZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyZXF1ZXN0IGNvbm5lY3Rpb246KENvbm5lY3Rpb24gKiljb25uZWN0aW9uOworLSAoaWQpaW5p
dFdpdGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkqKWN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90
KWN1c3RvbVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIKIAotLSAoaWQpaW5pdFdp
dGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkq
KWN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90KWN1
c3RvbVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb25uZWN0aW9u
OihDb25uZWN0aW9uICopY29ubmVjdGlvbgorLSAoaWQpaW5pdFdpdGhDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqKWN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90KWN1c3RvbVByb3RvY29sSUQgcmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
CiAgICAgaWYgKCFzZWxmKQpAQCAtNjEsMTAgKzU1LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogICAgIEFTU0VSVChjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSk7CiAgICAgQVNTRVJU
KHJlcXVlc3QpOwotICAgIEFTU0VSVChjb25uZWN0aW9uKTsKICAgICBfY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkgPSBjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTsKICAgICBfY3VzdG9tUHJv
dG9jb2xJRCA9IGN1c3RvbVByb3RvY29sSUQ7Ci0gICAgX2Nvbm5lY3Rpb24gPSBjb25uZWN0aW9u
OwogICAgIF9zdG9yYWdlUG9saWN5ID0gTlNVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2VkOwogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgpAQCAtNzgsNyArNzAsNiBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBfY29ubmVjdGlvbiA9
IG51bGxwdHI7CiAgICAgW191cmxDb25uZWN0aW9uIGNhbmNlbF07CiAgICAgW191cmxDb25uZWN0
aW9uIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKQEAgLTg3LDcgKzc4LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9u
ICopY29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKIHsKICAgICBS
ZXNvdXJjZUVycm9yIGNvcmVFcnJvcihlcnJvcik7Ci0gICAgX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkRmFpbFdpdGhFcnJvcihfY3VzdG9tUHJv
dG9jb2xJRCwgY29yZUVycm9yKSwgMCk7CisgICAgX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
LT5kaWRGYWlsV2l0aEVycm9yKF9jdXN0b21Qcm90b2NvbElELCBjb3JlRXJyb3IpOwogICAgIF9j
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS0+c3RvcExvYWRpbmcoX2N1c3RvbVByb3RvY29sSUQp
OwogfQogCkBAIC0xMDEsMTkgKzkyLDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAtICh2
b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZVJl
c3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKIHsKICAgICBSZXNvdXJjZVJlc3BvbnNl
IGNvcmVSZXNwb25zZShyZXNwb25zZSk7Ci0gICAgX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKF9jdXN0b21Qcm90b2Nv
bElELCBjb3JlUmVzcG9uc2UsIF9zdG9yYWdlUG9saWN5KSwgMCk7CisgICAgX2N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5LT5kaWRSZWNlaXZlUmVzcG9uc2UoX2N1c3RvbVByb3RvY29sSUQsIGNv
cmVSZXNwb25zZSwgX3N0b3JhZ2VQb2xpY3kpOwogfQogCiAtICh2b2lkKWNvbm5lY3Rpb246KE5T
VVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEK
IHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY29yZURhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwotICAgIF9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZExvYWREYXRhKF9jdXN0b21Q
cm90b2NvbElELCBjb3JlRGF0YSksIDApOworICAgIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS0+ZGlkTG9hZERhdGEoX2N1c3RvbVByb3RvY29sSUQsIGNvcmVEYXRhKTsKIH0KIAogLSAoTlNV
UkxSZXF1ZXN0ICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiB3aWxs
U2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNV
UkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UKIHsKICAgICBpZiAocmVkaXJlY3RSZXNwb25z
ZSkgewotICAgICAgICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjpXYXNSZWRpcmVjdGVkVG9SZXF1ZXN0KF9jdXN0b21Qcm90b2NvbElELCByZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlKSwgMCk7CisgICAgICAgIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eS0+d2FzUmVkaXJlY3RlZFRvUmVxdWVzdChfY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSk7CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogICAgIHJldHVy
biByZXF1ZXN0OwpAQCAtMTIxLDcgKzExMiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
IC0gKHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29ubmVjdGlvbiAqKWNv
bm5lY3Rpb24KIHsKLSAgICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpEaWRGaW5pc2hMb2FkaW5nKF9jdXN0b21Qcm90b2NvbElEKSwgMCk7CisgICAg
X2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LT5kaWRGaW5pc2hMb2FkaW5nKF9jdXN0b21Qcm90
b2NvbElEKTsKICAgICBfY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHktPnN0b3BMb2FkaW5nKF9j
dXN0b21Qcm90b2NvbElEKTsKIH0KIApAQCAtMTI5LDM5ICsxMjAsMjcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGlsZFByb2Nlc3NQcm94eSogY2hp
bGRQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKLSAgICA6IG1fY2hp
bGRQcm9jZXNzUHJveHkoY2hpbGRQcm9jZXNzUHJveHkpCi0gICAgLCBtX3Byb2Nlc3NQb29sKHBy
b2Nlc3NQb29sKQotewotICAgIEFTU0VSVChtX2NoaWxkUHJvY2Vzc1Byb3h5KTsKLSAgICBtX2No
aWxkUHJvY2Vzc1Byb3h5LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKLX0KLQotQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgpCi17
Ci0gICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLX0K
LQotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY29yZVJlcXVlc3QpCit2
b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3RhcnRMb2FkaW5nKEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIGNvcmVSZXF1ZXN0KQogewogICAgIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCA9IGNvcmVSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKICAg
ICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLQ3VzdG9tUHJvdG9jb2xM
b2FkZXIgKmxvYWRlciA9IFtbV0tDdXN0b21Qcm90b2NvbExvYWRlciBhbGxvY10gaW5pdFdpdGhD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTp0aGlzIGN1c3RvbVByb3RvY29sSUQ6Y3VzdG9tUHJv
dG9jb2xJRCByZXF1ZXN0OnJlcXVlc3QgY29ubmVjdGlvbjptX2NoaWxkUHJvY2Vzc1Byb3h5LT5j
b25uZWN0aW9uKCldOworICAgIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgKmxvYWRlciA9IFtbV0tD
dXN0b21Qcm90b2NvbExvYWRlciBhbGxvY10gaW5pdFdpdGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eTombWFuYWdlciBjdXN0b21Qcm90b2NvbElEOmN1c3RvbVByb3RvY29sSUQgcmVxdWVzdDpy
ZXF1ZXN0XTsKICAgICBBU1NFUlQobG9hZGVyKTsKICAgICBBU1NFUlQoIW1fbG9hZGVyTWFwLmNv
bnRhaW5zKGN1c3RvbVByb3RvY29sSUQpKTsKICAgICBtX2xvYWRlck1hcC5hZGQoY3VzdG9tUHJv
dG9jb2xJRCwgbG9hZGVyKTsKICAgICBbbG9hZGVyIHJlbGVhc2VdOwogfQogCi12b2lkIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElEKQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0b3BMb2FkaW5nKEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKIHsKICAg
ICBtX2xvYWRlck1hcC5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CiB9CiAKLXZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCit2b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudDo6aW52YWxpZGF0ZShDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYp
CiB7CisgICAgLy8gRklYTUU6IGl0ZXJhdGUgdGhlIGxvYWRlciBtYXAgYW5kIHJlbW92ZSBsb2Fk
ZXJzIGZvciB0aGUgZ2l2ZW4gbWFuYWdlci4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCmluZGV4IDQ5ZDRkNWIuLmZlMzEzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAKKyNp
bXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2ltcG9ydCAiTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKQEAgLTE0NCw2ICsxNDUsOCBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIElQQzo6c2V0
QWxsb3dzRGVjb2RpbmdTZWNLZXlSZWYodHJ1ZSk7CiAgICAgV2ViS2l0OjpXZWJNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpOwogI2VuZGlmCisKKyAgICBzZXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQ+KCkpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMjMwLDkgKzIzMyw2IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgcGFyYW1ldGVycy5wYXJlbnRQcm9jZXNzTmFtZSA9IFtb
TlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gcHJvY2Vzc05hbWVdOwogICAgIHBhcmFtZXRlcnMu
dWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllciA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxl
SWRlbnRpZmllcl07CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGdsb2JhbFVSTFNj
aGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpKQotICAgICAgICBwYXJhbWV0ZXJzLnVy
bFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwotCiAg
ICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXTsKIAogICAgIHBhcmFtZXRlcnMuaHR0cFByb3h5ID0gW2RlZmF1bHRzIHN0cmlu
Z0ZvcktleTpXZWJLaXQySFRUUFByb3h5RGVmYXVsdHNLZXldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAppbmRleCA0Yzc0M2NkLi5mZmU5
OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHkuaApAQCAtNTksMTIgKzU5LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJvY2Vzc0Rp
ZENsb3NlKCk7CiAKLSNpZiBVU0UoU09VUCkKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
Jik7CisgICAgdm9pZCB3YXNSZWRpcmVjdGVkVG9SZXF1ZXN0KHVpbnQ2NF90IGN1c3RvbVByb3Rv
Y29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBj
dXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgdWludDMy
X3QgY2FjaGVTdG9yYWdlUG9saWN5KTsKICAgICB2b2lkIGRpZExvYWREYXRhKHVpbnQ2NF90IGN1
c3RvbVByb3RvY29sSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlk
RmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3Rv
bVByb3RvY29sSUQpOwotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzZmIzNDVkLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eS5oIgotCi0jaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50LmgiCi0jaW5jbHVkZSAiQ2hpbGRQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlICJDdXN0b21Q
cm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgotI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+Ci0KLSNpZiBQTEFURk9STShHVEspCi0jaW5jbHVk
ZSA8V2ViQ29yZS9FcnJvcnNHdGsuaD4KLSNlbGlmIFBMQVRGT1JNKEVGTCkKLSNpbmNsdWRlIDxX
ZWJDb3JlL0Vycm9yc0VmbC5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1DdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoQ2hpbGRQ
cm9jZXNzUHJveHkqIGNoaWxkUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wpCi0gICAgOiBtX2NoaWxkUHJvY2Vzc1Byb3h5KGNoaWxkUHJvY2Vzc1Byb3h5KQotICAgICwg
bV9wcm9jZXNzUG9vbChwcm9jZXNzUG9vbCkKLXsKLSAgICBBU1NFUlQobV9jaGlsZFByb2Nlc3NQ
cm94eSk7Ci0gICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAq
dGhpcyk7Ci19Ci0KLUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojp+Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkoKQotewotICAgIG1fY2hpbGRQcm9jZXNzUHJveHktPnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSk7Ci19Ci0KLXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnByb2Nl
c3NEaWRDbG9zZSgpCi17Ci0gICAgbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQoKS5pbnZhbGlkYXRlKCp0aGlzKTsKLX0KLQotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eTo6c3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bv
b2wuY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KCkuc3RhcnRMb2FkaW5nKCp0aGlzLCBjdXN0
b21Qcm90b2NvbElELCByZXF1ZXN0KSkKLSAgICAgICAgZGlkRmFpbFdpdGhFcnJvcihjdXN0b21Q
cm90b2NvbElELCBXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IocmVxdWVzdCkpOwotfQotCi12
b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElEKQotewotICAgIG1fcHJvY2Vzc1Bvb2wuY3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50KCkuc3RvcExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQpOwotfQotCi12b2lk
IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qg
Y3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCi17Ci0gICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOjpEaWRSZWNlaXZlUmVzcG9uc2UoY3VzdG9tUHJvdG9jb2xJRCwgcmVzcG9u
c2UsIDApLCAwKTsKLX0KLQotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkTG9h
ZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhKQotewotICAgIG1fY2hpbGRQcm9jZXNzUHJveHktPnNlbmQoTWVzc2FnZXM6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6RGlkTG9hZERhdGEoY3VzdG9tUHJvdG9jb2xJRCwgZGF0YSksIDAp
OwotfQotCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGYWlsV2l0aEVycm9y
KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
IGVycm9yKQotewotICAgIG1fY2hpbGRQcm9jZXNzUHJveHktPnNlbmQoTWVzc2FnZXM6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6RGlkRmFpbFdpdGhFcnJvcihjdXN0b21Qcm90b2NvbElELCBlcnJv
ciksIDApOwotfQotCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGaW5pc2hM
b2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCi17Ci0gICAgbV9jaGlsZFByb2Nlc3NQ
cm94eS0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRGaW5pc2hMb2Fk
aW5nKGN1c3RvbVByb3RvY29sSUQpLCAwKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBmN2NlNjlm
Li5mZDMwZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKQEAgLTE0Niw2ICsxNDYsMTIgQEAgc3RhdGljIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3Vy
YXRpb24gbGVnYWN5V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oQVBJOjoKICAgICByZXR1
cm4gY29uZmlndXJhdGlvbjsKIH0KIAorc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+JiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxl
cnMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPj4gc2V0OworICAgIHJldHVybiBzZXQ7Cit9CisKIFdlYlByb2Nl
c3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbikKICAgICA6IG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLmNvcHkoKSkK
ICAgICAsIG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MoZmFsc2UpCkBAIC0xNTQsOSArMTYwLDcg
QEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgICwgbV9hdXRvbWF0aW9uQ2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpKQogICAgICwgbV9kb3dubG9hZENsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCiAgICAgLCBtX2hpc3Rv
cnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50
PigpKQotI2lmIFVTRShTT1VQKQogICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKLSNl
bmRpZgogICAgICwgbV92aXNpdGVkTGlua1N0b3JlKFZpc2l0ZWRMaW5rU3RvcmU6OmNyZWF0ZSgp
KQogICAgICwgbV92aXNpdGVkTGlua3NQb3B1bGF0ZWQoZmFsc2UpCiAgICAgLCBtX3BsdWdJbkF1
dG9TdGFydFByb3ZpZGVyKHRoaXMpCkBAIC0zNDYsNiArMzUwLDEyIEBAIE5ldHdvcmtQcm9jZXNz
UHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcygpCiAgICAgcGFyYW1l
dGVycy5kaXNrQ2FjaGVTaXplT3ZlcnJpZGUgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNoZVNp
emVPdmVycmlkZSgpOwogICAgIHBhcmFtZXRlcnMuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2
YWx1YXRpb24gPSBtX2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uOwogCisgICAg
Zm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3Rv
Y29sSGFuZGxlcnMoKSkKKyAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZv
ckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKKworICAgIGZvciAoY29uc3QgYXV0byYg
c2NoZW1lIDogbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scykKKyAgICAg
ICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBl
bmQoc2NoZW1lKTsKKwogICAgIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gbV9jb25m
aWd1cmF0aW9uLT5kaXNrQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBpZiAoIXBhcmFtZXRlcnMuZGlz
a0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0
b3J5LCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CkBAIC05
NjAsMTIgKzk3MCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyVVJMU2NoZW1lQXND
T1JTRW5hYmxlZChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKICAgICBzZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZCh1
cmxTY2hlbWUpKTsKIH0KIAotSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIFdlYlByb2Nlc3NQb29sOjpnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFu
ZGxlcnMoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gc2V0OwotICAgIHJldHVybiBzZXQ7Ci19Ci0KIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90
b2NvbEhhbmRsZXJzKGNvbnN0IFN0cmluZyYgdXJsU2NoZW1lKQogewogICAgIGlmICghdXJsU2No
ZW1lKQpAQCAtMTM1OCwxNyArMTM2MiwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRQbHVn
SW5BdXRvU3RhcnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50cmllc0FkZGVkQWZ0ZXJUaW1lKAogCiB2
b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0
IFN0cmluZyYgc2NoZW1lKQogewotI2lmIFVTRShTT1VQKQotICAgIG1fdXJsU2NoZW1lc1JlZ2lz
dGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYWRkKHNjaGVtZSk7Ci0jZW5kaWYKKyAgICBpZiAoIWds
b2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpLmNvbnRhaW5zKHNjaGVt
ZSkpCisgICAgICAgIG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYWRk
KHNjaGVtZSk7CiAgICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OkN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6UmVnaXN0ZXJTY2hlbWUoc2NoZW1lKSk7CiB9CiAKIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcm
IHNjaGVtZSkKIHsKLSNpZiBVU0UoU09VUCkKICAgICBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9y
Q3VzdG9tUHJvdG9jb2xzLnJlbW92ZShzY2hlbWUpOwotI2VuZGlmCiAgICAgc2VuZFRvTmV0d29y
a2luZ1Byb2Nlc3MoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6VW5yZWdpc3RlclNj
aGVtZShzY2hlbWUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAppbmRleCA2ZjA4MGZhLi40NDdjZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaApAQCAtMTM2LDkgKzEzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQ+KTsKICAgICB2b2lkIHNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OkRvd25sb2FkQ2xpZW50Pik7CiAgICAgdm9pZCBzZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KTsKLSNpZiBVU0UoU09VUCkKICAgICB2b2lk
IHNldEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+JiYpOwotI2VuZGlmCiAKICAgICB2b2lkIHNldE1heGlt
dW1OdW1iZXJPZlByb2Nlc3Nlcyh1bnNpZ25lZCk7IC8vIENhbiBvbmx5IGJlIGNhbGxlZCB3aGVu
IHRoZXJlIGFyZSBubyBwcm9jZXNzZXMgcnVubmluZy4KICAgICB1bnNpZ25lZCBtYXhpbXVtTnVt
YmVyT2ZQcm9jZXNzZXMoKSBjb25zdCB7IHJldHVybiAhbV9jb25maWd1cmF0aW9uLT5tYXhpbXVt
UHJvY2Vzc0NvdW50KCkgPyBVSU5UX01BWCA6IG1fY29uZmlndXJhdGlvbi0+bWF4aW11bVByb2Nl
c3NDb3VudCgpOyB9CkBAIC0zMjgsNyArMzI2LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0
ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHVucmVn
aXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmKTsKIAotICAgIHN0YXRp
YyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2xvYmFsVVJMU2No
ZW1lc1dpdGhDdXN0b21Qcm90b2NvbEhhbmRsZXJzKCk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0
ZXJHbG9iYWxVUkxTY2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoY29uc3QgU3Ry
aW5nJik7CiAgICAgc3RhdGljIHZvaWQgdW5yZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5n
Q3VzdG9tUHJvdG9jb2xIYW5kbGVycyhjb25zdCBTdHJpbmcmKTsKIApAQCAtNDYzLDkgKzQ2MCw3
IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4g
bV9hdXRvbWF0aW9uQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25sb2FkQ2xp
ZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxlZ2FjeUNv
bnRleHRIaXN0b3J5Q2xpZW50PiBtX2hpc3RvcnlDbGllbnQ7Ci0jaWYgVVNFKFNPVVApCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PiBtX2N1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudDsKLSNlbmRpZgogCiAgICAgUmVmUHRyPFdlYkF1dG9tYXRp
b25TZXNzaW9uPiBtX2F1dG9tYXRpb25TZXNzaW9uOwogCkBAIC00ODksNiArNDg0LDcgQEAgcHJp
dmF0ZToKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDYWNoZVBhcnRpdGlvbmVkOwogI2VuZGlmCisgICAgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV91cmxTY2hlbWVzUmVnaXN0
ZXJlZEZvckN1c3RvbVByb3RvY29sczsKIAogICAgIGJvb2wgbV9hbHdheXNVc2VzQ29tcGxleFRl
eHRDb2RlUGF0aDsKICAgICBib29sIG1fc2hvdWxkVXNlRm9udFNtb290aGluZzsKQEAgLTU0MSw3
ICs1MzcsNiBAQCBwcml2YXRlOgogCiAjaWYgVVNFKFNPVVApCiAgICAgYm9vbCBtX2lnbm9yZVRM
U0Vycm9ycyB7IHRydWUgfTsKLSAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzOwogI2VuZGlm
CiAKICAgICBib29sIG1fbWVtb3J5Q2FjaGVEaXNhYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5jcHAKaW5kZXgg
Y2QxZDM3Ny4uZmE2NDNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgcHVi
bGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBib29sIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpIG92ZXJyaWRlCisg
ICAgdm9pZCBzdGFydExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIs
IHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVzb3VyY2VSZXF1ZXN0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgYXV0byB1cmxSZXF1
ZXN0ID0gQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsKICAgICAgICAg
UmVmUHRyPEV3a1VybFNjaGVtZVJlcXVlc3Q+IHJlcXVlc3QgPSBFd2tVcmxTY2hlbWVSZXF1ZXN0
OjpjcmVhdGUobWFuYWdlciwgdXJsUmVxdWVzdC5wdHIoKSwgY3VzdG9tUHJvdG9jb2xJRCk7CkBA
IC00OSwxMSArNDksMTAgQEAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVt
ZUhhbmRsZXI+IGhhbmRsZXIgPSAobV9jbGllbnQtPm1fdXJpU2NoZW1lSGFuZGxlcnMpLmdldChz
Y2hlbWUpOwogICAgICAgICBBU1NFUlQoaGFuZGxlci5nZXQoKSk7CiAgICAgICAgIGlmICghaGFu
ZGxlci0+aGFzQ2FsbGJhY2soKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIChtX2NsaWVudC0+bV91cmlTY2hlbWVSZXF1ZXN0cykuc2V0
KGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3QpOwogICAgICAgICBoYW5kbGVyLT5wZXJmb3JtQ2Fs
bGJhY2socmVxdWVzdC5nZXQoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAg
IHZvaWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCBj
dXN0b21Qcm90b2NvbElEKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAKaW5kZXggNGU0MmM1YS4uM2Q4MWQzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9v
bFNvdXAuY3BwCkBAIC00MCw4ICs0MCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3Jt
SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhCiAgICAg
cGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3kgPSBtX2luaXRpYWxIVFRQQ29va2llQWNjZXB0
UG9saWN5OwogICAgIHBhcmFtZXRlcnMuaWdub3JlVExTRXJyb3JzID0gbV9pZ25vcmVUTFNFcnJv
cnM7CiAgICAgcGFyYW1ldGVycy5sYW5ndWFnZXMgPSBXZWJDb3JlOjp1c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzKCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBtX3VybFNjaGVtZXNSZWdp
c3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzKQotICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNS
ZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwogICAgIHBhcmFtZXRl
cnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nID0gZmFsc2U7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299123</attachid>
            <date>2017-01-18 01:11:52 -0800</date>
            <delta_ts>2017-01-18 01:37:39 -0800</delta_ts>
            <desc>WIP with xcode changes</desc>
            <filename>wk2-custom-protocols.diff</filename>
            <type>text/plain</type>
            <size>34470</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggZjA3NDAyYS4uZGRjMmE5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTQxNyw2ICs0MTcsOCBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAogCisgICAgVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcAorCiAgICAg
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKIAogICAgIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlNzQ4NTQ1Li4wODhkOGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQpAQCAtMTI4LDggKzEyOCw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNF
UwogCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCiAK
LSAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eVNvdXAuY3BwCi0KICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdp
bkluZm9TdG9yZVVuaXguY3BwCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9j
ZXNzUHJveHlVbml4LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDg3YTU1OWEu
LjY2ZTU1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yODMsOCArMjgzLDYgQEAg
bGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvbGludXgvTWVtb3J5
UHJlc3N1cmVNb25pdG9yLmNwcAogCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcAotCiAgICAgVUlQcm9j
ZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKIAogICAgIFVJUHJvY2Vzcy9QbHVn
aW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UK
aW5kZXggYzc1ZGFlZS4uMGJmY2M2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTI1
MSw4ICsyNTEsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vz
cy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCiAKLSAgICBVSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1t
Ci0KICAgICBVSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbQog
CiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpbkluZm9TdG9yZU1hYy5tbQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50LmgKaW5kZXggNTFlMThiZC4uOTQ1ZGUzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRMb2FkaW5nKFdlYktpdDo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCAvKiBjdXN0b21Qcm90b2NvbElEICovLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzdGFydExvYWRpbmcoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYsIHVpbnQ2NF90IC8qIGN1c3RvbVByb3RvY29sSUQgKi8sIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzdG9wTG9hZGluZyhXZWJLaXQ6OkN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLyogY3VzdG9tUHJvdG9jb2xJRCAq
LykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZShXZWJLaXQ6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCmluZGV4IGY1NTQ4NGIu
LjhjOTY5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQg
RXdrVXJsU2NoZW1lUmVxdWVzdDo6ZmluaXNoKGNvbnN0IHZvaWQqIGNvbnRlbnREYXRhLCB1aW50
NjRfdCBjb250ZW50TGVuZ3RoCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgobV91cmwpKSwK
ICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChtaW1lVHlwZSksIGNvbnRlbnRMZW5ndGgsIGVtcHR5
U3RyaW5nKCkpOwogCi0gICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRSZWNlaXZlUmVzcG9uc2Uo
bV9yZXF1ZXN0SUQsIHJlc3BvbnNlKTsKKyAgICBtX3drUmVxdWVzdE1hbmFnZXItPmRpZFJlY2Vp
dmVSZXNwb25zZShtX3JlcXVlc3RJRCwgcmVzcG9uc2UsIDApOwogICAgIG1fd2tSZXF1ZXN0TWFu
YWdlci0+ZGlkTG9hZERhdGEobV9yZXF1ZXN0SUQsIHRvSW1wbCh3a0RhdGEuZ2V0KCkpLT5kYXRh
UmVmZXJlbmNlKCkpOwogICAgIG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkRmluaXNoTG9hZGluZyht
X3JlcXVlc3RJRCk7CiAgICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5zdG9wTG9hZGluZyhtX3JlcXVl
c3RJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAppbmRleCBj
YjJmMzE0Li42YWJkOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5jcHAKQEAgLTM2LDEwICszNiw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
Ym9vbCBzdGFydExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkg
b3ZlcnJpZGUKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dFN0
YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKG1fd2ViQ29udGV4dCwgY3VzdG9tUHJvdG9jb2xJRCwg
cmVxdWVzdCwgbWFuYWdlcik7Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHZv
aWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElEKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCBhYmExYjk2
Li41OWJkYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2soR0lucHV0U3RyZWFt
KiBpbnB1dFN0cmVhbSwgR0FzeW5jCiAgICAgICAgIC8vIEZpcnN0IGNodW5rIHJlYWQuIEluIGNh
c2Ugb2YgZW1wdHkgcmVwbHkgYW4gZW1wdHkgQVBJOjpEYXRhIGlzIHNlbnQgdG8gdGhlIG5ldHdv
cmtpbmcgcHJvY2Vzcy4KICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwoVVJM
KCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+
bWltZVR5cGUuZGF0YSgpKSwKICAgICAgICAgICAgIHByaXYtPnN0cmVhbUxlbmd0aCwgZW1wdHlT
dHJpbmcoKSk7Ci0gICAgICAgIHByaXYtPm1hbmFnZXItPmRpZFJlY2VpdmVSZXNwb25zZShwcml2
LT5yZXF1ZXN0SUQsIHJlc3BvbnNlKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKHByaXYtPnJlcXVlc3RJRCwgcmVzcG9uc2UsIDApOwogICAgICAgICBwcml2LT5t
YW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEpOwogICAgIH0gZWxz
ZSBpZiAoYnl0ZXNSZWFkIHx8ICghYnl0ZXNSZWFkICYmICFwcml2LT5zdHJlYW1MZW5ndGgpKSB7
CiAgICAgICAgIC8vIFN1YnNlcXVlbnQgY2h1bmsgcmVhZC4gV2Ugb25seSBzZW5kIGFuIGVtcHR5
IEFQSTo6RGF0YSB0byB0aGUgbmV0d29ya2luZyBwcm9jZXNzIHdoZW4gc3RyZWFtIGxlbmd0aCBp
cyB1bmtub3duLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjY3YTQ1YWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2ltcG9ydCAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmgi
CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitP
QkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OworCitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQg
eworcHJpdmF0ZToKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSYsIHVpbnQ2NF90IC8qY3VzdG9tUHJvdG9jb2xJRCovLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BMb2FkaW5nKEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLypjdXN0b21Qcm90b2NvbElEKi8pIG92ZXJyaWRl
OworICAgIHZvaWQgaW52YWxpZGF0ZShDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYpIG92ZXJy
aWRlOworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2xM
b2FkZXI+PiBtX2xvYWRlck1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
bWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbQpzaW1pbGFyaXR5IGlu
ZGV4IDY5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCnJlbmFtZSB0
byBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50Lm1tCmluZGV4IDk3OWIwZDIuLjY1Mjg2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5tbQpAQCAtMjQsMzYgKzI0LDMwIEBACiAgKi8KIAogI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgor
I2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAKLSNpbXBvcnQgIkNoaWxk
UHJvY2Vzc1Byb3h5LmgiCi0jaW1wb3J0ICJDb25uZWN0aW9uLmgiCi0jaW1wb3J0ICJDdXN0b21Q
cm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgotI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIK
ICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+
CiAKLXVzaW5nIG5hbWVzcGFjZSBJUEM7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFj
ZSBXS0N1c3RvbVByb3RvY29sTG9hZGVyIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVn
YXRlPiB7CiBAcHJpdmF0ZQogICAgIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KiBfY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk7CiAgICAgdWludDY0X3QgX2N1c3RvbVByb3RvY29sSUQ7Ci0g
ICAgUmVmUHRyPENvbm5lY3Rpb24+IF9jb25uZWN0aW9uOwogICAgIE5TVVJMQ2FjaGVTdG9yYWdl
UG9saWN5IF9zdG9yYWdlUG9saWN5OwogICAgIE5TVVJMQ29ubmVjdGlvbiAqX3VybENvbm5lY3Rp
b247CiB9Ci0tIChpZClpbml0V2l0aEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OihDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSopY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgY3VzdG9tUHJv
dG9jb2xJRDoodWludDY0X3QpY3VzdG9tUHJvdG9jb2xJRCByZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyZXF1ZXN0IGNvbm5lY3Rpb246KENvbm5lY3Rpb24gKiljb25uZWN0aW9uOworLSAoaWQpaW5p
dFdpdGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkqKWN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90
KWN1c3RvbVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIKIAotLSAoaWQpaW5pdFdp
dGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkq
KWN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90KWN1
c3RvbVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb25uZWN0aW9u
OihDb25uZWN0aW9uICopY29ubmVjdGlvbgorLSAoaWQpaW5pdFdpdGhDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqKWN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90KWN1c3RvbVByb3RvY29sSUQgcmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
CiAgICAgaWYgKCFzZWxmKQpAQCAtNjEsMTAgKzU1LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogICAgIEFTU0VSVChjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSk7CiAgICAgQVNTRVJU
KHJlcXVlc3QpOwotICAgIEFTU0VSVChjb25uZWN0aW9uKTsKICAgICBfY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkgPSBjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTsKICAgICBfY3VzdG9tUHJv
dG9jb2xJRCA9IGN1c3RvbVByb3RvY29sSUQ7Ci0gICAgX2Nvbm5lY3Rpb24gPSBjb25uZWN0aW9u
OwogICAgIF9zdG9yYWdlUG9saWN5ID0gTlNVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2VkOwogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgpAQCAtNzgsNyArNzAsNiBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBfY29ubmVjdGlvbiA9
IG51bGxwdHI7CiAgICAgW191cmxDb25uZWN0aW9uIGNhbmNlbF07CiAgICAgW191cmxDb25uZWN0
aW9uIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKQEAgLTg3LDcgKzc4LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9u
ICopY29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKIHsKICAgICBS
ZXNvdXJjZUVycm9yIGNvcmVFcnJvcihlcnJvcik7Ci0gICAgX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkRmFpbFdpdGhFcnJvcihfY3VzdG9tUHJv
dG9jb2xJRCwgY29yZUVycm9yKSwgMCk7CisgICAgX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
LT5kaWRGYWlsV2l0aEVycm9yKF9jdXN0b21Qcm90b2NvbElELCBjb3JlRXJyb3IpOwogICAgIF9j
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS0+c3RvcExvYWRpbmcoX2N1c3RvbVByb3RvY29sSUQp
OwogfQogCkBAIC0xMDEsMTkgKzkyLDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAtICh2
b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZVJl
c3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKIHsKICAgICBSZXNvdXJjZVJlc3BvbnNl
IGNvcmVSZXNwb25zZShyZXNwb25zZSk7Ci0gICAgX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKF9jdXN0b21Qcm90b2Nv
bElELCBjb3JlUmVzcG9uc2UsIF9zdG9yYWdlUG9saWN5KSwgMCk7CisgICAgX2N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5LT5kaWRSZWNlaXZlUmVzcG9uc2UoX2N1c3RvbVByb3RvY29sSUQsIGNv
cmVSZXNwb25zZSwgX3N0b3JhZ2VQb2xpY3kpOwogfQogCiAtICh2b2lkKWNvbm5lY3Rpb246KE5T
VVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEK
IHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY29yZURhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwotICAgIF9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZExvYWREYXRhKF9jdXN0b21Q
cm90b2NvbElELCBjb3JlRGF0YSksIDApOworICAgIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS0+ZGlkTG9hZERhdGEoX2N1c3RvbVByb3RvY29sSUQsIGNvcmVEYXRhKTsKIH0KIAogLSAoTlNV
UkxSZXF1ZXN0ICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiB3aWxs
U2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNV
UkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UKIHsKICAgICBpZiAocmVkaXJlY3RSZXNwb25z
ZSkgewotICAgICAgICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjpXYXNSZWRpcmVjdGVkVG9SZXF1ZXN0KF9jdXN0b21Qcm90b2NvbElELCByZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlKSwgMCk7CisgICAgICAgIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eS0+d2FzUmVkaXJlY3RlZFRvUmVxdWVzdChfY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSk7CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogICAgIHJldHVy
biByZXF1ZXN0OwpAQCAtMTIxLDcgKzExMiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
IC0gKHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29ubmVjdGlvbiAqKWNv
bm5lY3Rpb24KIHsKLSAgICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpEaWRGaW5pc2hMb2FkaW5nKF9jdXN0b21Qcm90b2NvbElEKSwgMCk7CisgICAg
X2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LT5kaWRGaW5pc2hMb2FkaW5nKF9jdXN0b21Qcm90
b2NvbElEKTsKICAgICBfY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHktPnN0b3BMb2FkaW5nKF9j
dXN0b21Qcm90b2NvbElEKTsKIH0KIApAQCAtMTI5LDM5ICsxMjAsMjcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGlsZFByb2Nlc3NQcm94eSogY2hp
bGRQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKLSAgICA6IG1fY2hp
bGRQcm9jZXNzUHJveHkoY2hpbGRQcm9jZXNzUHJveHkpCi0gICAgLCBtX3Byb2Nlc3NQb29sKHBy
b2Nlc3NQb29sKQotewotICAgIEFTU0VSVChtX2NoaWxkUHJvY2Vzc1Byb3h5KTsKLSAgICBtX2No
aWxkUHJvY2Vzc1Byb3h5LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKLX0KLQotQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgpCi17
Ci0gICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLX0K
LQotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY29yZVJlcXVlc3QpCit2
b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3RhcnRMb2FkaW5nKEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIGNvcmVSZXF1ZXN0KQogewogICAgIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCA9IGNvcmVSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKICAg
ICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLQ3VzdG9tUHJvdG9jb2xM
b2FkZXIgKmxvYWRlciA9IFtbV0tDdXN0b21Qcm90b2NvbExvYWRlciBhbGxvY10gaW5pdFdpdGhD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTp0aGlzIGN1c3RvbVByb3RvY29sSUQ6Y3VzdG9tUHJv
dG9jb2xJRCByZXF1ZXN0OnJlcXVlc3QgY29ubmVjdGlvbjptX2NoaWxkUHJvY2Vzc1Byb3h5LT5j
b25uZWN0aW9uKCldOworICAgIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgKmxvYWRlciA9IFtbV0tD
dXN0b21Qcm90b2NvbExvYWRlciBhbGxvY10gaW5pdFdpdGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eTombWFuYWdlciBjdXN0b21Qcm90b2NvbElEOmN1c3RvbVByb3RvY29sSUQgcmVxdWVzdDpy
ZXF1ZXN0XTsKICAgICBBU1NFUlQobG9hZGVyKTsKICAgICBBU1NFUlQoIW1fbG9hZGVyTWFwLmNv
bnRhaW5zKGN1c3RvbVByb3RvY29sSUQpKTsKICAgICBtX2xvYWRlck1hcC5hZGQoY3VzdG9tUHJv
dG9jb2xJRCwgbG9hZGVyKTsKICAgICBbbG9hZGVyIHJlbGVhc2VdOwogfQogCi12b2lkIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElEKQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0b3BMb2FkaW5nKEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKIHsKICAg
ICBtX2xvYWRlck1hcC5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CiB9CiAKLXZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCit2b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudDo6aW52YWxpZGF0ZShDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYp
CiB7CisgICAgLy8gRklYTUU6IGl0ZXJhdGUgdGhlIGxvYWRlciBtYXAgYW5kIHJlbW92ZSBsb2Fk
ZXJzIGZvciB0aGUgZ2l2ZW4gbWFuYWdlci4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCmluZGV4IGJlYmNjYTYuLjRlZGFjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAKKyNp
bXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2ltcG9ydCAiTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKQEAgLTE0NSw2ICsxNDYsOCBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIElQQzo6c2V0
QWxsb3dzRGVjb2RpbmdTZWNLZXlSZWYodHJ1ZSk7CiAgICAgV2ViS2l0OjpXZWJNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpOwogI2VuZGlmCisKKyAgICBzZXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQ+KCkpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMjUzLDkgKzI1Niw2IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgcGFyYW1ldGVycy5wYXJlbnRQcm9jZXNzTmFtZSA9IFtb
TlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gcHJvY2Vzc05hbWVdOwogICAgIHBhcmFtZXRlcnMu
dWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllciA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxl
SWRlbnRpZmllcl07CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGdsb2JhbFVSTFNj
aGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpKQotICAgICAgICBwYXJhbWV0ZXJzLnVy
bFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwotCiAg
ICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXTsKIAogICAgIHBhcmFtZXRlcnMuaHR0cFByb3h5ID0gW2RlZmF1bHRzIHN0cmlu
Z0ZvcktleTpXZWJLaXQySFRUUFByb3h5RGVmYXVsdHNLZXldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAKc2ltaWxh
cml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNw
cApyZW5hbWUgdG8gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcAppbmRleCAzZmIzNDVkLi40NTJmM2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eS5jcHAKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MyBJZ2FsaWEgUy5MLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI3LDEyICsyOCw2IEBACiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgog
Ci0jaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+Ci0jZWxp
ZiBQTEFURk9STShFRkwpCi0jaW5jbHVkZSA8V2ViQ29yZS9FcnJvcnNFZmwuaD4KLSNlbmRpZgot
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OkN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5KENoaWxkUHJvY2Vzc1Byb3h5KiBjaGlsZFByb2Nlc3NQcm94
eSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQpAQCAtNDgsMTUgKzQzLDkgQEAgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgpCiAgICAg
bV9jaGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAotdm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKLXsKLSAgICBt
X3Byb2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpLmludmFsaWRhdGUoKnRo
aXMpOwotfQotCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmco
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoKS5zdGFydExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3Qp
KQotICAgICAgICBkaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIFdlYkNvcmU6OmNh
bm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0KSk7CisgICAgbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQoKS5zdGFydExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQs
IHJlcXVlc3QpOwogfQogCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9h
ZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQpAQCAtNjQsOSArNTMsMTkgQEAgdm9pZCBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJv
dG9jb2xJRCkKICAgICBtX3Byb2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgp
LnN0b3BMb2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2NvbElEKTsKIH0KIAotdm9pZCBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKK3sKKyAgICBt
X3Byb2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpLmludmFsaWRhdGUoKnRo
aXMpOworfQorCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojp3YXNSZWRpcmVjdGVk
VG9SZXF1ZXN0KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSkKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5kKE1lc3NhZ2Vz
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Oldhc1JlZGlyZWN0ZWRUb1JlcXVlc3QoY3VzdG9tUHJv
dG9jb2xJRCwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSksIDApOworfQorCit2b2lkIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVp
bnQzMl90IGNhY2hlU3RvcmFnZVBvbGljeSkKIHsKLSAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5z
ZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZFJlY2VpdmVSZXNwb25zZShj
dXN0b21Qcm90b2NvbElELCByZXNwb25zZSwgMCksIDApOworICAgIG1fY2hpbGRQcm9jZXNzUHJv
eHktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3Bv
bnNlKGN1c3RvbVByb3RvY29sSUQsIHJlc3BvbnNlLCBjYWNoZVN0b3JhZ2VQb2xpY3kpLCAwKTsK
IH0KIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkTG9hZERhdGEodWludDY0
X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAppbmRl
eCA0Yzc0M2NkLi5mZmU5OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkuaApAQCAtNTksMTIgKzU5LDExIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcHJvY2Vzc0RpZENsb3NlKCk7CiAKLSNpZiBVU0UoU09VUCkKLSAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCB3YXNSZWRpcmVjdGVkVG9SZXF1ZXN0KHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgdWludDMyX3QgY2FjaGVTdG9yYWdlUG9saWN5KTsKICAgICB2b2lkIGRpZExvYWRE
YXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
OwogICAgIHZvaWQgZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCmluZGV4IDA2NDFjNzcuLjI5YWNjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTQ3LDYgKzE0NywxMiBAQCBzdGF0aWMgV2Vi
c2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbihBUEk6OgogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQogCitzdGF0aWMgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdsb2JhbFVSTFNjaGVtZXNX
aXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzZXQ7CisgICAgcmV0
dXJuIHNldDsKK30KKwogV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIDogbV9jb25maWd1cmF0aW9u
KGNvbmZpZ3VyYXRpb24uY29weSgpKQogICAgICwgbV9oYXZlSW5pdGlhbEVtcHR5UHJvY2Vzcyhm
YWxzZSkKQEAgLTE1NSw5ICsxNjEsNyBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wo
QVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2F1
dG9tYXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCkp
CiAgICAgLCBtX2Rvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpEb3dubG9hZENs
aWVudD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCkpCi0jaWYgVVNFKFNPVVApCiAgICAgLCBtX2N1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50PigpKQotI2VuZGlmCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoVmlz
aXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rc1BvcHVsYXRlZChm
YWxzZSkKICAgICAsIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIodGhpcykKQEAgLTM1Miw2ICsz
NTYsMTIgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdv
cmtQcm9jZXNzKCkKICAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZVNpemVPdmVycmlkZSA9IG1fY29u
ZmlndXJhdGlvbi0+ZGlza0NhY2hlU2l6ZU92ZXJyaWRlKCk7CiAgICAgcGFyYW1ldGVycy5jYW5I
YW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbiA9IG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJU
cnVzdEV2YWx1YXRpb247CiAKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGdsb2JhbFVS
TFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpKQorICAgICAgICBwYXJhbWV0ZXJz
LnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwor
CisgICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9y
Q3VzdG9tUHJvdG9jb2xzKQorICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVk
Rm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOworCiAgICAgcGFyYW1ldGVycy5kaXNr
Q2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNoZURpcmVjdG9yeSgpOwog
ICAgIGlmICghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFy
YW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKQEAgLTk2OCwxMiArOTc4LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYgdXJsU2NoZW1l
KQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVnaXN0ZXJV
UkxTY2hlbWVBc0NPUlNFbmFibGVkKHVybFNjaGVtZSkpOwogfQogCi1IYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgV2ViUHJvY2Vzc1Bvb2w6Omdsb2JhbFVSTFNjaGVt
ZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzZXQ7Ci0gICAg
cmV0dXJuIHNldDsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJHbG9iYWxVUkxT
Y2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoY29uc3QgU3RyaW5nJiB1cmxTY2hl
bWUpCiB7CiAgICAgaWYgKCF1cmxTY2hlbWUpCkBAIC0xMzY4LDE3ICsxMzcyLDE0IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnNGaWx0ZXJpbmdPdXRFbnRy
aWVzQWRkZWRBZnRlclRpbWUoCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyU2NoZW1l
Rm9yQ3VzdG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0jaWYgVVNFKFNPVVAp
Ci0gICAgbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hZGQoc2NoZW1l
KTsKLSNlbmRpZgorICAgIGlmICghZ2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90b2NvbEhh
bmRsZXJzKCkuY29udGFpbnMoc2NoZW1lKSkKKyAgICAgICAgbV91cmxTY2hlbWVzUmVnaXN0ZXJl
ZEZvckN1c3RvbVByb3RvY29scy5hZGQoc2NoZW1lKTsKICAgICBzZW5kVG9OZXR3b3JraW5nUHJv
Y2VzcyhNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpSZWdpc3RlclNjaGVtZShzY2hl
bWUpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3Rv
bVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewotI2lmIFVTRShTT1VQKQogICAgIG1f
dXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMucmVtb3ZlKHNjaGVtZSk7Ci0j
ZW5kaWYKICAgICBzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpVbnJlZ2lzdGVyU2NoZW1lKHNjaGVtZSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDRlZDBjNTkuLjM3NDdjMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xMzcsOSArMTM3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4pOwogICAgIHZvaWQgc2V0RG93bmxvYWRDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+KTsKICAgICB2b2lkIHNldEF1
dG9tYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4pOwot
I2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4mJik7Ci0jZW5k
aWYKIAogICAgIHZvaWQgc2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKHVuc2lnbmVkKTsgLy8g
Q2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBydW5uaW5nLgog
ICAgIHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcygpIGNvbnN0IHsgcmV0dXJuICFt
X2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKSA/IFVJTlRfTUFYIDogbV9jb25m
aWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCk7IH0KQEAgLTMzMCw3ICszMjgsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0
IFN0cmluZyYpOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+JiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMoKTsK
ICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJv
dG9jb2xIYW5kbGVycyhjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVy
R2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhhbmRsZXJzKGNvbnN0IFN0cmlu
ZyYpOwogCkBAIC00NjgsOSArNDY1LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiBtX2F1dG9tYXRpb25DbGllbnQ7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+IG1fZG93bmxvYWRDbGllbnQ7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+IG1faGlzdG9yeUNsaWVu
dDsKLSNpZiBVU0UoU09VUCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQ+IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OwotI2VuZGlmCiAK
ICAgICBSZWZQdHI8V2ViQXV0b21hdGlvblNlc3Npb24+IG1fYXV0b21hdGlvblNlc3Npb247CiAK
QEAgLTQ5NCw2ICs0ODksNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05J
TkcpCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0NhY2hlUGFydGl0
aW9uZWQ7CiAjZW5kaWYKKyAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzOwogCiAgICAgYm9v
bCBtX2Fsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoOwogICAgIGJvb2wgbV9zaG91bGRVc2VG
b250U21vb3RoaW5nOwpAQCAtNTQ4LDcgKzU0NCw2IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoU09V
UCkKICAgICBib29sIG1faWdub3JlVExTRXJyb3JzIHsgdHJ1ZSB9OwotICAgIEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JD
dXN0b21Qcm90b2NvbHM7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9tZW1vcnlDYWNoZURpc2FibGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5h
Z2VyQ2xpZW50RWZsLmNwcAppbmRleCBjZDFkMzc3Li5mYTY0M2Q1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNw
cApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJvb2wg
c3RhcnRMb2FkaW5nKEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCkgb3ZlcnJpZGUKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBhdXRvIHVybFJlcXVlc3QgPSBBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNv
dXJjZVJlcXVlc3QpOwogICAgICAgICBSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4gcmVxdWVz
dCA9IEV3a1VybFNjaGVtZVJlcXVlc3Q6OmNyZWF0ZShtYW5hZ2VyLCB1cmxSZXF1ZXN0LnB0cigp
LCBjdXN0b21Qcm90b2NvbElEKTsKQEAgLTQ5LDExICs0OSwxMCBAQCBwcml2YXRlOgogICAgICAg
ICBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IChtX2NsaWVudC0+bV91
cmlTY2hlbWVIYW5kbGVycykuZ2V0KHNjaGVtZSk7CiAgICAgICAgIEFTU0VSVChoYW5kbGVyLmdl
dCgpKTsKICAgICAgICAgaWYgKCFoYW5kbGVyLT5oYXNDYWxsYmFjaygpKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgKG1fY2xpZW50LT5t
X3VyaVNjaGVtZVJlcXVlc3RzKS5zZXQoY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCk7CiAgICAg
ICAgIGhhbmRsZXItPnBlcmZvcm1DYWxsYmFjayhyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCiAgICAgdm9pZCBzdG9wTG9hZGluZyhDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eSYsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpIG92ZXJyaWRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcApp
bmRleCA0ZTQyYzVhLi4zZDgxZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAKQEAgLTQwLDggKzQwLDYgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmEKICAgICBwYXJhbWV0ZXJzLmNvb2tpZUFjY2VwdFBvbGljeSA9IG1f
aW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3k7CiAgICAgcGFyYW1ldGVycy5pZ25vcmVUTFNF
cnJvcnMgPSBtX2lnbm9yZVRMU0Vycm9yczsKICAgICBwYXJhbWV0ZXJzLmxhbmd1YWdlcyA9IFdl
YkNvcmU6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNj
aGVtZSA6IG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMpCi0gICAgICAg
IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYXBwZW5k
KHNjaGVtZSk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2Fj
eUxvZ2dpbmcgPSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJiY2Q3OTYuLjQyYzgxMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMjYs
NiArMTEyNiw5IEBACiAJCTdBNzkxRUZBMUM3Q0ZDRjEwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3OTFFRjkxQzdDRkIzNzAwQzRDNTJCIC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJ
CTdBNzkxRUZCMUM3Q0ZEMDEwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmVNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0E3OTFFRjgxQzdDRkIxMDAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZU1lc3NhZ2VzLmggKi87IH07CiAJCTdBNzkxRUZDMUM3RDA4QzUwMEM0QzUyQiAvKiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi87IH07CisJCTdBODIxRjRBMUUyRjY1RTkwMDYw
NDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTgyMUY0OTFFMkY2NUREMDA2MDQ1NzcgLyog
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3BwICovOyB9OworCQk3QTgyMUY0QzFFMkY2NzM5
MDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTgyMUY0QjFFMkY2NjQ4MDA2MDQ1Nzcg
LyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggKi87IH07CisJCTdBODIxRjRFMUUyRjY3
QTgwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTgyMUY0RDFFMkY2NzlFMDA2MDQ1
NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tICovOyB9OwogCQk3QzA2NUYyQjFD
OENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDY1RjI5MUM4
Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwICov
OyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
RGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE4MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdp
bkluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNw
cCAqLzsgfTsKQEAgLTMyNjUsNiArMzI2OCw5IEBACiAJCTdBNUUzOTQ5MUQ1QkQ4QTcwMEI0QjdD
RSAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSAiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2Ii
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc5MUVGODFDN0NGQjEwMDBDNEM1MkIg
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2Fn
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3OTFFRjkxQzdDRkIzNzAwQzRD
NTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QTgyMUY0OTFFMkY2NUREMDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkuY3BwOyBwYXRoID0gQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E4MjFGNEIx
RTJGNjY0ODAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E4MjFGNEQxRTJGNjc5RTAwNjA0NTc3IC8q
IEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QTlDRDhDMTFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQ4OTAsNiArNDg5Niw4IEBACiAJCQkJOTlDODFENTYxQzIwREZCRTAwNUM0QzgyIC8qIEF1
dG9tYXRpb25DbGllbnQubW0gKi8sCiAJCQkJOTkwRDI4QjcxQzY1MzlBMDAwOTg2OTc3IC8qIEF1
dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggKi8sCiAJCQkJOTkwRDI4QjgxQzY1MzlBMDAwOTg2OTc3
IC8qIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lm1tICovLAorCQkJCTdBODIxRjRCMUUyRjY2NDgw
MDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCAqLywKKwkJCQk3QTgyMUY0
RDFFMkY2NzlFMDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tICovLAog
CQkJCTgzODkxQjZBMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5o
ICovLAogCQkJCTgzODkxQjZCMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudC5tbSAqLywKIAkJCQlBMURGNjMxMTE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGll
bnQuaCAqLywKQEAgLTUwNTEsNiArNTA1OSw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyOUFE
MzA5NDE2NEI0QzgzMDA3MkRFQTkgLyogbWFjICovLAogCQkJCTI5QUQzMDkyMTY0QjRDNUQwMDcy
REVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oICovLAorCQkJCTdBODIxRjQ5MUUy
RjY1REQwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAgKi8sCiAJCQkJ
MjlBRDMwOTcxNjRCNEUyMTAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluICovLAogCQkJKTsKIAkJCW5hbWUgPSBDdXN0b21Qcm90b2NvbHM7CkBAIC03OTc4
LDYgKzc5ODcsNyBAQAogCQkJCTFBQzVGRkMyMTc0QkZEMUIwMDAxNDgzRCAvKiBQbHVnaW5Qcm9j
ZXNzQXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwRUM5MDYxMjRDMEFCODAwN0VG
NEE1IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTBF
QzkwRjEyNEMwQUY1MDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3QTgyMUY0QzFFMkY2NzM5MDA2MDQ1NzcgLyogQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTc4NjVCQTE2Q0FDNzE1
MDBBQ0U4M0EgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBMkJCNkQxMTQxMTdCNEQwMDBGMzVENCAvKiBQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJEOTBEMjEyODFDOTY2
MDAxRUI5NjIgLyogUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC05OTIxLDYgKzk5MzEsNyBAQAogCQkJCTFBQjQwRUU1MUJGNjc3RTMwMEJBODFCRSAv
KiBXS01lbnVJdGVtSWRlbnRpZmllcnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzVGRDEy
NEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM0MDc1RkYxMjRGRjAyNzAwNjhGMjBBIC8qIFdLTXV0YWJsZURpY3Rpb25hcnkuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJN0E4MjFGNEExRTJGNjVFOTAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNUIxQzUwMTg5ODYwNkYwMDRG
Q0Y5QiAvKiBXS05hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTI1NkUzNzE4QTFB
Nzg4MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkQzQTY1REExQTdDM0ExRjAwQ0FDNjM3IC8qIFdLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTEwMDIzLDYgKzEwMDM0LDcgQEAKIAkJCQkxQUQ2MEY1RDE4RTIwRjRD
MDAyMEMwMzQgLyogV0tXaW5kb3dGZWF0dXJlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBN0Mw
REY2MUI3RDFGMTAwMEE5Qjg0OCAvKiBXS1dpbmRvd0ZlYXR1cmVzUmVmLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDQkVDREU3MTZCNjQxNjgwMDA0N0ExQSAvKiBYUENTZXJ2aWNlRW50cnlQb2lu
dC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdBODIxRjRFMUUyRjY3QTgwMDYwNDU3NyAvKiBDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299125</attachid>
            <date>2017-01-18 01:37:39 -0800</date>
            <delta_ts>2017-01-18 02:14:16 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>wk2-custom-protocols.diff</filename>
            <type>text/plain</type>
            <size>38285</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggZjA3NDAyYS4uZGRjMmE5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTQxNyw2ICs0MTcsOCBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAogCisgICAgVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcAorCiAgICAg
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKIAogICAgIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlNzQ4NTQ1Li4wODhkOGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQpAQCAtMTI4LDggKzEyOCw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNF
UwogCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCiAK
LSAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eVNvdXAuY3BwCi0KICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdp
bkluZm9TdG9yZVVuaXguY3BwCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9j
ZXNzUHJveHlVbml4LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDg3YTU1OWEu
LjY2ZTU1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yODMsOCArMjgzLDYgQEAg
bGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvbGludXgvTWVtb3J5
UHJlc3N1cmVNb25pdG9yLmNwcAogCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcAotCiAgICAgVUlQcm9j
ZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKIAogICAgIFVJUHJvY2Vzcy9QbHVn
aW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UK
aW5kZXggYzc1ZGFlZS4uMGJmY2M2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTI1
MSw4ICsyNTEsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vz
cy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCiAKLSAgICBVSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1t
Ci0KICAgICBVSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbQog
CiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpbkluZm9TdG9yZU1hYy5tbQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50LmgKaW5kZXggNTFlMThiZC4uOTQ1ZGUzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRMb2FkaW5nKFdlYktpdDo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCAvKiBjdXN0b21Qcm90b2NvbElEICovLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzdGFydExvYWRpbmcoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYsIHVpbnQ2NF90IC8qIGN1c3RvbVByb3RvY29sSUQgKi8sIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzdG9wTG9hZGluZyhXZWJLaXQ6OkN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLyogY3VzdG9tUHJvdG9jb2xJRCAq
LykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZShXZWJLaXQ6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCmluZGV4IGY1NTQ4NGIu
LjhjOTY5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQg
RXdrVXJsU2NoZW1lUmVxdWVzdDo6ZmluaXNoKGNvbnN0IHZvaWQqIGNvbnRlbnREYXRhLCB1aW50
NjRfdCBjb250ZW50TGVuZ3RoCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgobV91cmwpKSwK
ICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChtaW1lVHlwZSksIGNvbnRlbnRMZW5ndGgsIGVtcHR5
U3RyaW5nKCkpOwogCi0gICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRSZWNlaXZlUmVzcG9uc2Uo
bV9yZXF1ZXN0SUQsIHJlc3BvbnNlKTsKKyAgICBtX3drUmVxdWVzdE1hbmFnZXItPmRpZFJlY2Vp
dmVSZXNwb25zZShtX3JlcXVlc3RJRCwgcmVzcG9uc2UsIDApOwogICAgIG1fd2tSZXF1ZXN0TWFu
YWdlci0+ZGlkTG9hZERhdGEobV9yZXF1ZXN0SUQsIHRvSW1wbCh3a0RhdGEuZ2V0KCkpLT5kYXRh
UmVmZXJlbmNlKCkpOwogICAgIG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkRmluaXNoTG9hZGluZyht
X3JlcXVlc3RJRCk7CiAgICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5zdG9wTG9hZGluZyhtX3JlcXVl
c3RJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAppbmRleCBj
YjJmMzE0Li42YWJkOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5jcHAKQEAgLTM2LDEwICszNiw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
Ym9vbCBzdGFydExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkg
b3ZlcnJpZGUKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dFN0
YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKG1fd2ViQ29udGV4dCwgY3VzdG9tUHJvdG9jb2xJRCwg
cmVxdWVzdCwgbWFuYWdlcik7Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHZv
aWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElEKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCBhYmExYjk2
Li41OWJkYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2soR0lucHV0U3RyZWFt
KiBpbnB1dFN0cmVhbSwgR0FzeW5jCiAgICAgICAgIC8vIEZpcnN0IGNodW5rIHJlYWQuIEluIGNh
c2Ugb2YgZW1wdHkgcmVwbHkgYW4gZW1wdHkgQVBJOjpEYXRhIGlzIHNlbnQgdG8gdGhlIG5ldHdv
cmtpbmcgcHJvY2Vzcy4KICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwoVVJM
KCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+
bWltZVR5cGUuZGF0YSgpKSwKICAgICAgICAgICAgIHByaXYtPnN0cmVhbUxlbmd0aCwgZW1wdHlT
dHJpbmcoKSk7Ci0gICAgICAgIHByaXYtPm1hbmFnZXItPmRpZFJlY2VpdmVSZXNwb25zZShwcml2
LT5yZXF1ZXN0SUQsIHJlc3BvbnNlKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKHByaXYtPnJlcXVlc3RJRCwgcmVzcG9uc2UsIDApOwogICAgICAgICBwcml2LT5t
YW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEpOwogICAgIH0gZWxz
ZSBpZiAoYnl0ZXNSZWFkIHx8ICghYnl0ZXNSZWFkICYmICFwcml2LT5zdHJlYW1MZW5ndGgpKSB7
CiAgICAgICAgIC8vIFN1YnNlcXVlbnQgY2h1bmsgcmVhZC4gV2Ugb25seSBzZW5kIGFuIGVtcHR5
IEFQSTo6RGF0YSB0byB0aGUgbmV0d29ya2luZyBwcm9jZXNzIHdoZW4gc3RyZWFtIGxlbmd0aCBp
cyB1bmtub3duLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjY3YTQ1YWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2ltcG9ydCAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmgi
CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitP
QkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OworCitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQg
eworcHJpdmF0ZToKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSYsIHVpbnQ2NF90IC8qY3VzdG9tUHJvdG9jb2xJRCovLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BMb2FkaW5nKEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLypjdXN0b21Qcm90b2NvbElEKi8pIG92ZXJyaWRl
OworICAgIHZvaWQgaW52YWxpZGF0ZShDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYpIG92ZXJy
aWRlOworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2xM
b2FkZXI+PiBtX2xvYWRlck1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
bWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbQpzaW1pbGFyaXR5IGlu
ZGV4IDY5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCnJlbmFtZSB0
byBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50Lm1tCmluZGV4IDk3OWIwZDIuLjY1Mjg2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5tbQpAQCAtMjQsMzYgKzI0LDMwIEBACiAgKi8KIAogI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgor
I2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAKLSNpbXBvcnQgIkNoaWxk
UHJvY2Vzc1Byb3h5LmgiCi0jaW1wb3J0ICJDb25uZWN0aW9uLmgiCi0jaW1wb3J0ICJDdXN0b21Q
cm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgotI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIK
ICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+
CiAKLXVzaW5nIG5hbWVzcGFjZSBJUEM7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFj
ZSBXS0N1c3RvbVByb3RvY29sTG9hZGVyIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVn
YXRlPiB7CiBAcHJpdmF0ZQogICAgIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KiBfY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk7CiAgICAgdWludDY0X3QgX2N1c3RvbVByb3RvY29sSUQ7Ci0g
ICAgUmVmUHRyPENvbm5lY3Rpb24+IF9jb25uZWN0aW9uOwogICAgIE5TVVJMQ2FjaGVTdG9yYWdl
UG9saWN5IF9zdG9yYWdlUG9saWN5OwogICAgIE5TVVJMQ29ubmVjdGlvbiAqX3VybENvbm5lY3Rp
b247CiB9Ci0tIChpZClpbml0V2l0aEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OihDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSopY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgY3VzdG9tUHJv
dG9jb2xJRDoodWludDY0X3QpY3VzdG9tUHJvdG9jb2xJRCByZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyZXF1ZXN0IGNvbm5lY3Rpb246KENvbm5lY3Rpb24gKiljb25uZWN0aW9uOworLSAoaWQpaW5p
dFdpdGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkqKWN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90
KWN1c3RvbVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIKIAotLSAoaWQpaW5pdFdp
dGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkq
KWN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90KWN1
c3RvbVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb25uZWN0aW9u
OihDb25uZWN0aW9uICopY29ubmVjdGlvbgorLSAoaWQpaW5pdFdpdGhDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqKWN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90KWN1c3RvbVByb3RvY29sSUQgcmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
CiAgICAgaWYgKCFzZWxmKQpAQCAtNjEsMTAgKzU1LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogICAgIEFTU0VSVChjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSk7CiAgICAgQVNTRVJU
KHJlcXVlc3QpOwotICAgIEFTU0VSVChjb25uZWN0aW9uKTsKICAgICBfY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkgPSBjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTsKICAgICBfY3VzdG9tUHJv
dG9jb2xJRCA9IGN1c3RvbVByb3RvY29sSUQ7Ci0gICAgX2Nvbm5lY3Rpb24gPSBjb25uZWN0aW9u
OwogICAgIF9zdG9yYWdlUG9saWN5ID0gTlNVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2VkOwogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgpAQCAtNzgsNyArNzAsNiBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBfY29ubmVjdGlvbiA9
IG51bGxwdHI7CiAgICAgW191cmxDb25uZWN0aW9uIGNhbmNlbF07CiAgICAgW191cmxDb25uZWN0
aW9uIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKQEAgLTg3LDcgKzc4LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9u
ICopY29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKIHsKICAgICBS
ZXNvdXJjZUVycm9yIGNvcmVFcnJvcihlcnJvcik7Ci0gICAgX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkRmFpbFdpdGhFcnJvcihfY3VzdG9tUHJv
dG9jb2xJRCwgY29yZUVycm9yKSwgMCk7CisgICAgX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
LT5kaWRGYWlsV2l0aEVycm9yKF9jdXN0b21Qcm90b2NvbElELCBjb3JlRXJyb3IpOwogICAgIF9j
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS0+c3RvcExvYWRpbmcoX2N1c3RvbVByb3RvY29sSUQp
OwogfQogCkBAIC0xMDEsMTkgKzkyLDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAtICh2
b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZVJl
c3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKIHsKICAgICBSZXNvdXJjZVJlc3BvbnNl
IGNvcmVSZXNwb25zZShyZXNwb25zZSk7Ci0gICAgX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKF9jdXN0b21Qcm90b2Nv
bElELCBjb3JlUmVzcG9uc2UsIF9zdG9yYWdlUG9saWN5KSwgMCk7CisgICAgX2N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5LT5kaWRSZWNlaXZlUmVzcG9uc2UoX2N1c3RvbVByb3RvY29sSUQsIGNv
cmVSZXNwb25zZSwgX3N0b3JhZ2VQb2xpY3kpOwogfQogCiAtICh2b2lkKWNvbm5lY3Rpb246KE5T
VVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEK
IHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY29yZURhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwotICAgIF9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZExvYWREYXRhKF9jdXN0b21Q
cm90b2NvbElELCBjb3JlRGF0YSksIDApOworICAgIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS0+ZGlkTG9hZERhdGEoX2N1c3RvbVByb3RvY29sSUQsIGNvcmVEYXRhKTsKIH0KIAogLSAoTlNV
UkxSZXF1ZXN0ICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiB3aWxs
U2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNV
UkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UKIHsKICAgICBpZiAocmVkaXJlY3RSZXNwb25z
ZSkgewotICAgICAgICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjpXYXNSZWRpcmVjdGVkVG9SZXF1ZXN0KF9jdXN0b21Qcm90b2NvbElELCByZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlKSwgMCk7CisgICAgICAgIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eS0+d2FzUmVkaXJlY3RlZFRvUmVxdWVzdChfY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSk7CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogICAgIHJldHVy
biByZXF1ZXN0OwpAQCAtMTIxLDcgKzExMiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
IC0gKHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29ubmVjdGlvbiAqKWNv
bm5lY3Rpb24KIHsKLSAgICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpEaWRGaW5pc2hMb2FkaW5nKF9jdXN0b21Qcm90b2NvbElEKSwgMCk7CisgICAg
X2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LT5kaWRGaW5pc2hMb2FkaW5nKF9jdXN0b21Qcm90
b2NvbElEKTsKICAgICBfY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHktPnN0b3BMb2FkaW5nKF9j
dXN0b21Qcm90b2NvbElEKTsKIH0KIApAQCAtMTI5LDM5ICsxMjAsMjcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGlsZFByb2Nlc3NQcm94eSogY2hp
bGRQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKLSAgICA6IG1fY2hp
bGRQcm9jZXNzUHJveHkoY2hpbGRQcm9jZXNzUHJveHkpCi0gICAgLCBtX3Byb2Nlc3NQb29sKHBy
b2Nlc3NQb29sKQotewotICAgIEFTU0VSVChtX2NoaWxkUHJvY2Vzc1Byb3h5KTsKLSAgICBtX2No
aWxkUHJvY2Vzc1Byb3h5LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKLX0KLQotQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgpCi17
Ci0gICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLX0K
LQotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY29yZVJlcXVlc3QpCit2
b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3RhcnRMb2FkaW5nKEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIGNvcmVSZXF1ZXN0KQogewogICAgIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCA9IGNvcmVSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKICAg
ICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLQ3VzdG9tUHJvdG9jb2xM
b2FkZXIgKmxvYWRlciA9IFtbV0tDdXN0b21Qcm90b2NvbExvYWRlciBhbGxvY10gaW5pdFdpdGhD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTp0aGlzIGN1c3RvbVByb3RvY29sSUQ6Y3VzdG9tUHJv
dG9jb2xJRCByZXF1ZXN0OnJlcXVlc3QgY29ubmVjdGlvbjptX2NoaWxkUHJvY2Vzc1Byb3h5LT5j
b25uZWN0aW9uKCldOworICAgIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgKmxvYWRlciA9IFtbV0tD
dXN0b21Qcm90b2NvbExvYWRlciBhbGxvY10gaW5pdFdpdGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eTombWFuYWdlciBjdXN0b21Qcm90b2NvbElEOmN1c3RvbVByb3RvY29sSUQgcmVxdWVzdDpy
ZXF1ZXN0XTsKICAgICBBU1NFUlQobG9hZGVyKTsKICAgICBBU1NFUlQoIW1fbG9hZGVyTWFwLmNv
bnRhaW5zKGN1c3RvbVByb3RvY29sSUQpKTsKICAgICBtX2xvYWRlck1hcC5hZGQoY3VzdG9tUHJv
dG9jb2xJRCwgbG9hZGVyKTsKICAgICBbbG9hZGVyIHJlbGVhc2VdOwogfQogCi12b2lkIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElEKQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0b3BMb2FkaW5nKEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKIHsKICAg
ICBtX2xvYWRlck1hcC5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CiB9CiAKLXZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCit2b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudDo6aW52YWxpZGF0ZShDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYp
CiB7CisgICAgLy8gRklYTUU6IGl0ZXJhdGUgdGhlIGxvYWRlciBtYXAgYW5kIHJlbW92ZSBsb2Fk
ZXJzIGZvciB0aGUgZ2l2ZW4gbWFuYWdlci4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCmluZGV4IGJlYmNjYTYuLjRlZGFjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAKKyNp
bXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2ltcG9ydCAiTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKQEAgLTE0NSw2ICsxNDYsOCBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIElQQzo6c2V0
QWxsb3dzRGVjb2RpbmdTZWNLZXlSZWYodHJ1ZSk7CiAgICAgV2ViS2l0OjpXZWJNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpOwogI2VuZGlmCisKKyAgICBzZXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQ+KCkpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMjUzLDkgKzI1Niw2IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgcGFyYW1ldGVycy5wYXJlbnRQcm9jZXNzTmFtZSA9IFtb
TlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gcHJvY2Vzc05hbWVdOwogICAgIHBhcmFtZXRlcnMu
dWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllciA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxl
SWRlbnRpZmllcl07CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGdsb2JhbFVSTFNj
aGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpKQotICAgICAgICBwYXJhbWV0ZXJzLnVy
bFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwotCiAg
ICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXTsKIAogICAgIHBhcmFtZXRlcnMuaHR0cFByb3h5ID0gW2RlZmF1bHRzIHN0cmlu
Z0ZvcktleTpXZWJLaXQySFRUUFByb3h5RGVmYXVsdHNLZXldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAKc2ltaWxh
cml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNw
cApyZW5hbWUgdG8gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcAppbmRleCAzZmIzNDVkLi40NTJmM2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eS5jcHAKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MyBJZ2FsaWEgUy5MLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI3LDEyICsyOCw2IEBACiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgog
Ci0jaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+Ci0jZWxp
ZiBQTEFURk9STShFRkwpCi0jaW5jbHVkZSA8V2ViQ29yZS9FcnJvcnNFZmwuaD4KLSNlbmRpZgot
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OkN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5KENoaWxkUHJvY2Vzc1Byb3h5KiBjaGlsZFByb2Nlc3NQcm94
eSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQpAQCAtNDgsMTUgKzQzLDkgQEAgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgpCiAgICAg
bV9jaGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAotdm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKLXsKLSAgICBt
X3Byb2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpLmludmFsaWRhdGUoKnRo
aXMpOwotfQotCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmco
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoKS5zdGFydExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3Qp
KQotICAgICAgICBkaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIFdlYkNvcmU6OmNh
bm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0KSk7CisgICAgbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQoKS5zdGFydExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQs
IHJlcXVlc3QpOwogfQogCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9h
ZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQpAQCAtNjQsOSArNTMsMTkgQEAgdm9pZCBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJv
dG9jb2xJRCkKICAgICBtX3Byb2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgp
LnN0b3BMb2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2NvbElEKTsKIH0KIAotdm9pZCBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKK3sKKyAgICBt
X3Byb2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpLmludmFsaWRhdGUoKnRo
aXMpOworfQorCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojp3YXNSZWRpcmVjdGVk
VG9SZXF1ZXN0KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSkKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5kKE1lc3NhZ2Vz
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Oldhc1JlZGlyZWN0ZWRUb1JlcXVlc3QoY3VzdG9tUHJv
dG9jb2xJRCwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSksIDApOworfQorCit2b2lkIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVp
bnQzMl90IGNhY2hlU3RvcmFnZVBvbGljeSkKIHsKLSAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5z
ZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZFJlY2VpdmVSZXNwb25zZShj
dXN0b21Qcm90b2NvbElELCByZXNwb25zZSwgMCksIDApOworICAgIG1fY2hpbGRQcm9jZXNzUHJv
eHktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3Bv
bnNlKGN1c3RvbVByb3RvY29sSUQsIHJlc3BvbnNlLCBjYWNoZVN0b3JhZ2VQb2xpY3kpLCAwKTsK
IH0KIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkTG9hZERhdGEodWludDY0
X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAppbmRl
eCA0Yzc0M2NkLi5mZmU5OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkuaApAQCAtNTksMTIgKzU5LDExIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcHJvY2Vzc0RpZENsb3NlKCk7CiAKLSNpZiBVU0UoU09VUCkKLSAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCB3YXNSZWRpcmVjdGVkVG9SZXF1ZXN0KHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgdWludDMyX3QgY2FjaGVTdG9yYWdlUG9saWN5KTsKICAgICB2b2lkIGRpZExvYWRE
YXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
OwogICAgIHZvaWQgZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCmluZGV4IDA2NDFjNzcuLjI5YWNjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTQ3LDYgKzE0NywxMiBAQCBzdGF0aWMgV2Vi
c2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbihBUEk6OgogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQogCitzdGF0aWMgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdsb2JhbFVSTFNjaGVtZXNX
aXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzZXQ7CisgICAgcmV0
dXJuIHNldDsKK30KKwogV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIDogbV9jb25maWd1cmF0aW9u
KGNvbmZpZ3VyYXRpb24uY29weSgpKQogICAgICwgbV9oYXZlSW5pdGlhbEVtcHR5UHJvY2Vzcyhm
YWxzZSkKQEAgLTE1NSw5ICsxNjEsNyBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wo
QVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2F1
dG9tYXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCkp
CiAgICAgLCBtX2Rvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpEb3dubG9hZENs
aWVudD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCkpCi0jaWYgVVNFKFNPVVApCiAgICAgLCBtX2N1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50PigpKQotI2VuZGlmCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoVmlz
aXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rc1BvcHVsYXRlZChm
YWxzZSkKICAgICAsIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIodGhpcykKQEAgLTM1Miw2ICsz
NTYsMTIgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdv
cmtQcm9jZXNzKCkKICAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZVNpemVPdmVycmlkZSA9IG1fY29u
ZmlndXJhdGlvbi0+ZGlza0NhY2hlU2l6ZU92ZXJyaWRlKCk7CiAgICAgcGFyYW1ldGVycy5jYW5I
YW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbiA9IG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJU
cnVzdEV2YWx1YXRpb247CiAKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGdsb2JhbFVS
TFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpKQorICAgICAgICBwYXJhbWV0ZXJz
LnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwor
CisgICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9y
Q3VzdG9tUHJvdG9jb2xzKQorICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVk
Rm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOworCiAgICAgcGFyYW1ldGVycy5kaXNr
Q2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNoZURpcmVjdG9yeSgpOwog
ICAgIGlmICghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFy
YW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKQEAgLTk2OCwxMiArOTc4LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYgdXJsU2NoZW1l
KQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVnaXN0ZXJV
UkxTY2hlbWVBc0NPUlNFbmFibGVkKHVybFNjaGVtZSkpOwogfQogCi1IYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgV2ViUHJvY2Vzc1Bvb2w6Omdsb2JhbFVSTFNjaGVt
ZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzZXQ7Ci0gICAg
cmV0dXJuIHNldDsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJHbG9iYWxVUkxT
Y2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoY29uc3QgU3RyaW5nJiB1cmxTY2hl
bWUpCiB7CiAgICAgaWYgKCF1cmxTY2hlbWUpCkBAIC0xMzY4LDE3ICsxMzcyLDE0IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnNGaWx0ZXJpbmdPdXRFbnRy
aWVzQWRkZWRBZnRlclRpbWUoCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyU2NoZW1l
Rm9yQ3VzdG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0jaWYgVVNFKFNPVVAp
Ci0gICAgbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hZGQoc2NoZW1l
KTsKLSNlbmRpZgorICAgIGlmICghZ2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90b2NvbEhh
bmRsZXJzKCkuY29udGFpbnMoc2NoZW1lKSkKKyAgICAgICAgbV91cmxTY2hlbWVzUmVnaXN0ZXJl
ZEZvckN1c3RvbVByb3RvY29scy5hZGQoc2NoZW1lKTsKICAgICBzZW5kVG9OZXR3b3JraW5nUHJv
Y2VzcyhNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpSZWdpc3RlclNjaGVtZShzY2hl
bWUpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3Rv
bVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewotI2lmIFVTRShTT1VQKQogICAgIG1f
dXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMucmVtb3ZlKHNjaGVtZSk7Ci0j
ZW5kaWYKICAgICBzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpVbnJlZ2lzdGVyU2NoZW1lKHNjaGVtZSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDRlZDBjNTkuLjM3NDdjMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xMzcsOSArMTM3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4pOwogICAgIHZvaWQgc2V0RG93bmxvYWRDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+KTsKICAgICB2b2lkIHNldEF1
dG9tYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4pOwot
I2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4mJik7Ci0jZW5k
aWYKIAogICAgIHZvaWQgc2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKHVuc2lnbmVkKTsgLy8g
Q2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBydW5uaW5nLgog
ICAgIHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcygpIGNvbnN0IHsgcmV0dXJuICFt
X2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKSA/IFVJTlRfTUFYIDogbV9jb25m
aWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCk7IH0KQEAgLTMzMCw3ICszMjgsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0
IFN0cmluZyYpOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+JiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMoKTsK
ICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJv
dG9jb2xIYW5kbGVycyhjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVy
R2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhhbmRsZXJzKGNvbnN0IFN0cmlu
ZyYpOwogCkBAIC00NjgsOSArNDY1LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiBtX2F1dG9tYXRpb25DbGllbnQ7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+IG1fZG93bmxvYWRDbGllbnQ7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+IG1faGlzdG9yeUNsaWVu
dDsKLSNpZiBVU0UoU09VUCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQ+IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OwotI2VuZGlmCiAK
ICAgICBSZWZQdHI8V2ViQXV0b21hdGlvblNlc3Npb24+IG1fYXV0b21hdGlvblNlc3Npb247CiAK
QEAgLTQ5NCw2ICs0ODksNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05J
TkcpCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0NhY2hlUGFydGl0
aW9uZWQ7CiAjZW5kaWYKKyAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzOwogCiAgICAgYm9v
bCBtX2Fsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoOwogICAgIGJvb2wgbV9zaG91bGRVc2VG
b250U21vb3RoaW5nOwpAQCAtNTQ4LDcgKzU0NCw2IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoU09V
UCkKICAgICBib29sIG1faWdub3JlVExTRXJyb3JzIHsgdHJ1ZSB9OwotICAgIEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JD
dXN0b21Qcm90b2NvbHM7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9tZW1vcnlDYWNoZURpc2FibGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5h
Z2VyQ2xpZW50RWZsLmNwcAppbmRleCBjZDFkMzc3Li5mYTY0M2Q1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNw
cApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJvb2wg
c3RhcnRMb2FkaW5nKEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCkgb3ZlcnJpZGUKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBhdXRvIHVybFJlcXVlc3QgPSBBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNv
dXJjZVJlcXVlc3QpOwogICAgICAgICBSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4gcmVxdWVz
dCA9IEV3a1VybFNjaGVtZVJlcXVlc3Q6OmNyZWF0ZShtYW5hZ2VyLCB1cmxSZXF1ZXN0LnB0cigp
LCBjdXN0b21Qcm90b2NvbElEKTsKQEAgLTQ5LDExICs0OSwxMCBAQCBwcml2YXRlOgogICAgICAg
ICBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IChtX2NsaWVudC0+bV91
cmlTY2hlbWVIYW5kbGVycykuZ2V0KHNjaGVtZSk7CiAgICAgICAgIEFTU0VSVChoYW5kbGVyLmdl
dCgpKTsKICAgICAgICAgaWYgKCFoYW5kbGVyLT5oYXNDYWxsYmFjaygpKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgKG1fY2xpZW50LT5t
X3VyaVNjaGVtZVJlcXVlc3RzKS5zZXQoY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCk7CiAgICAg
ICAgIGhhbmRsZXItPnBlcmZvcm1DYWxsYmFjayhyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCiAgICAgdm9pZCBzdG9wTG9hZGluZyhDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eSYsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpIG92ZXJyaWRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcApp
bmRleCA0ZTQyYzVhLi4zZDgxZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAKQEAgLTQwLDggKzQwLDYgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmEKICAgICBwYXJhbWV0ZXJzLmNvb2tpZUFjY2VwdFBvbGljeSA9IG1f
aW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3k7CiAgICAgcGFyYW1ldGVycy5pZ25vcmVUTFNF
cnJvcnMgPSBtX2lnbm9yZVRMU0Vycm9yczsKICAgICBwYXJhbWV0ZXJzLmxhbmd1YWdlcyA9IFdl
YkNvcmU6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNj
aGVtZSA6IG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMpCi0gICAgICAg
IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYXBwZW5k
KHNjaGVtZSk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2Fj
eUxvZ2dpbmcgPSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJiY2Q3OTYuLmI2YzU1MTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU5OSw3
ICs1OTksNiBAQAogCQkyOTg0RjU4ODE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI5ODRGNTg2MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkyOTg0RjU4OTE2NEJBMDk1MDA0
QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODRGNTg3MTY0QkEwOTUwMDRCQzBDNiAv
KiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oICovOyB9OwogCQkyOUFEMzA5MzE2NEI0
QzVEMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QUQzMDkyMTY0QjRDNUQwMDcyREVB
OSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oICovOyB9OwotCQkyOUFEMzA5NjE2NEI0
QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUFEMzA5NTE2NEI0QzkzMDA3
MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gKi87IH07CiAJCTI5Q0Q1
NUFBMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRDU1QTgx
MjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggKi87
IH07CiAJCTI5Q0Q1NUFCMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0QmFzZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0QmFzZS5tbSAqLzsgfTsKIAkJMkQxMDg3NjAxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJh
bWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJEMTA4NzVFMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgKi87IH07CkBA
IC0xMTI2LDYgKzExMjUsOSBAQAogCQk3QTc5MUVGQTFDN0NGQ0YxMDBDNEM1MkIgLyogV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzkxRUY5MUM3Q0ZCMzcwMEM0QzUy
QiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OwogCQk3QTc5MUVGQjFDN0NGRDAxMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBNzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmVNZXNzYWdlcy5oICovOyB9OwogCQk3QTc5MUVGQzFDN0QwOEM1MDBDNEM1MkIg
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAvKiBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovOyB9OworCQk3QTgyMUY0QTFFMkY2
NUU5MDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E4MjFGNDkxRTJGNjVERDAwNjA0
NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcCAqLzsgfTsKKwkJN0E4MjFGNEMx
RTJGNjczOTAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E4MjFGNEIxRTJGNjY0ODAw
NjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oICovOyB9OworCQk3QTgyMUY0
RTFFMkY2N0E4MDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E4MjFGNEQxRTJGNjc5
RTAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbSAqLzsgfTsKIAkJN0Mw
NjVGMkIxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2
NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVz
LmNwcCAqLzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlckRhdGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFBODE3M0IwQkNBMDA1ODZBRTIgLyog
V0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1h
dGlvbi5jcHAgKi87IH07CkBAIC0yNjg2LDcgKzI2ODgsNiBAQAogCQkyOTg0RjU4NjE2NEJBMDk1
MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbVByb3RvY29sTWFuYWdlck1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODRGNTg3
MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUFEMzA5MjE2NEI0QzVEMDA3MkRF
QTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDsgcGF0aCA9IEN1c3RvbVBy
b3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkyOUFEMzA5NTE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbTsgcGF0aCA9IEN1c3RvbVByb3RvY29scy9t
YWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTI5QUQzMDk3MTY0QjRFMjEwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjsgcGF0aCA9IEN1c3RvbVByb3RvY29scy9DdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3RCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5
Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFz
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MzI2NSw2ICszMjY2LDkgQEAKIAkJN0E1RTM5NDkxRDVCRDhBNzAwQjRCN0NFIC8qIGNvbS5tYWNy
b21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
ICJjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdBNzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAvKiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBODIxRjQ5
MUUyRjY1REQwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS5jcHA7IHBhdGggPSBDdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTgyMUY0QjFFMkY2NjQ4MDA2MDQ1
NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QTgyMUY0RDFFMkY2NzlFMDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdBOUNEOEMxMUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOUNEOEMy
MUM3NzlBRDYwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDg5MCw2ICs0
ODk0LDggQEAKIAkJCQk5OUM4MUQ1NjFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVu
dC5tbSAqLywKIAkJCQk5OTBEMjhCNzFDNjUzOUEwMDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Np
b25DbGllbnQuaCAqLywKIAkJCQk5OTBEMjhCODFDNjUzOUEwMDA5ODY5NzcgLyogQXV0b21hdGlv
blNlc3Npb25DbGllbnQubW0gKi8sCisJCQkJN0E4MjFGNEIxRTJGNjY0ODAwNjA0NTc3IC8qIEN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oICovLAorCQkJCTdBODIxRjREMUUyRjY3OUUwMDYw
NDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0gKi8sCiAJCQkJODM4OTFCNkEx
QTY4QzMwQjAwMzBGMzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggKi8sCiAJCQkJODM4
OTFCNkIxQTY4QzMwQjAwMzBGMzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lm1tICovLAog
CQkJCUExREY2MzExMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5oICovLApAQCAt
NTA1MSw2ICs1MDU3LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTI5QUQzMDk0MTY0QjRDODMw
MDcyREVBOSAvKiBtYWMgKi8sCiAJCQkJMjlBRDMwOTIxNjRCNEM1RDAwNzJERUE5IC8qIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5LmggKi8sCisJCQkJN0E4MjFGNDkxRTJGNjVERDAwNjA0NTc3
IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcCAqLywKIAkJCQkyOUFEMzA5NzE2NEI0
RTIxMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8s
CiAJCQkpOwogCQkJbmFtZSA9IEN1c3RvbVByb3RvY29sczsKQEAgLTUwNTksNyArNTA2Niw2IEBA
CiAJCTI5QUQzMDk0MTY0QjRDODMwMDcyREVBOSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTI5QUQzMDk1MTY0QjRDOTMwMDcyREVBOSAvKiBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0gbWFj
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc5NzgsNiArNzk4NCw3IEBACiAJCQkJ
MUFDNUZGQzIxNzRCRkQxQjAwMDE0ODNEIC8qIFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTBFQzkwNjEyNEMwQUI4MDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVDOTBGMTI0QzBBRjUwMDdFRjRB
NSAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTdBODIxRjRDMUUyRjY3MzkwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNzg2NUJBMTZDQUM3MTUwMEFDRTgzQSAvKiBQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEy
QkI2RDExNDExN0I0RDAwMEYzNUQ0IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkQ5MEQyMTI4MUM5NjYwMDFFQjk2MiAvKiBQbHVnaW5Q
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKQEAgLTkyODAsNyArOTI4
Nyw2IEBACiAJCQkJQjg3OEI2MTYxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTVDMTQyNzFEMUMyM0Y4Q0YwMEQ0MTE4MyAvKiBDdXN0b21Q
cm90b2NvbE1hbmFnZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5ODRGNTg4MTY0QkEw
OTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJMjlBRDMwOTYxNjRCNEM5MzAwNzJERUE5IC8qIEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk4NEY1N0MxNjRCOTE1
RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTM1MUZGMTgwRjVEMEYwMEU1M0JFOSAvKiBEYXRhYmFz
ZVByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1RTc3MkIxODQwMDhCOTAwMDcyMDNG
IC8qIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTk5MjEsNiArOTkyNyw3IEBACiAJCQkJMUFCNDBFRTUxQkY2NzdFMzAwQkE4MUJFIC8qIFdL
TWVudUl0ZW1JZGVudGlmaWVycy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUZEMTI0RkYw
MjcwMDY4RjIwQSAvKiBXS011dGFibGVBcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQw
NzVGRjEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxlRGljdGlvbmFyeS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3QTgyMUY0QTFFMkY2NUU5MDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1QjFDNTAxODk4NjA2RjAwNEZDRjlC
IC8qIFdLTmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBMjU2RTM3MThBMUE3ODgw
MDZGQjkyMiAvKiBXS05hdmlnYXRpb25BY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDNB
NjVEQTFBN0MzQTFGMDBDQUM2MzcgLyogV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMTAwMjMsNiArMTAwMzAsNyBAQAogCQkJCTFBRDYwRjVEMThFMjBGNEMwMDIw
QzAzNCAvKiBXS1dpbmRvd0ZlYXR1cmVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3QzBERjYx
QjdEMUYxMDAwQTlCODQ4IC8qIFdLV2luZG93RmVhdHVyZXNSZWYuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNCRUNERTcxNkI2NDE2ODAwMDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50Lm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJN0E4MjFGNEUxRTJGNjdBODAwNjA0NTc3IC8qIEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299126</attachid>
            <date>2017-01-18 02:14:16 -0800</date>
            <delta_ts>2017-01-18 02:30:10 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>wk2-custom-protocols.diff</filename>
            <type>text/plain</type>
            <size>38672</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggZjA3NDAyYS4uZGRjMmE5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTQxNyw2ICs0MTcsOCBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAogCisgICAgVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcAorCiAgICAg
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKIAogICAgIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlNzQ4NTQ1Li4wODhkOGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQpAQCAtMTI4LDggKzEyOCw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNF
UwogCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCiAK
LSAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eVNvdXAuY3BwCi0KICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdp
bkluZm9TdG9yZVVuaXguY3BwCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9j
ZXNzUHJveHlVbml4LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDg3YTU1OWEu
LjY2ZTU1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yODMsOCArMjgzLDYgQEAg
bGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvbGludXgvTWVtb3J5
UHJlc3N1cmVNb25pdG9yLmNwcAogCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcAotCiAgICAgVUlQcm9j
ZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKIAogICAgIFVJUHJvY2Vzcy9QbHVn
aW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UK
aW5kZXggYzc1ZGFlZS4uMGJmY2M2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTI1
MSw4ICsyNTEsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vz
cy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCiAKLSAgICBVSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1t
Ci0KICAgICBVSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbQog
CiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpbkluZm9TdG9yZU1hYy5tbQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50LmgKaW5kZXggNTFlMThiZC4uOTQ1ZGUzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRMb2FkaW5nKFdlYktpdDo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCAvKiBjdXN0b21Qcm90b2NvbElEICovLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzdGFydExvYWRpbmcoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYsIHVpbnQ2NF90IC8qIGN1c3RvbVByb3RvY29sSUQgKi8sIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzdG9wTG9hZGluZyhXZWJLaXQ6OkN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLyogY3VzdG9tUHJvdG9jb2xJRCAq
LykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZShXZWJLaXQ6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCmluZGV4IGY1NTQ4NGIu
LjhjOTY5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQg
RXdrVXJsU2NoZW1lUmVxdWVzdDo6ZmluaXNoKGNvbnN0IHZvaWQqIGNvbnRlbnREYXRhLCB1aW50
NjRfdCBjb250ZW50TGVuZ3RoCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgobV91cmwpKSwK
ICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChtaW1lVHlwZSksIGNvbnRlbnRMZW5ndGgsIGVtcHR5
U3RyaW5nKCkpOwogCi0gICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRSZWNlaXZlUmVzcG9uc2Uo
bV9yZXF1ZXN0SUQsIHJlc3BvbnNlKTsKKyAgICBtX3drUmVxdWVzdE1hbmFnZXItPmRpZFJlY2Vp
dmVSZXNwb25zZShtX3JlcXVlc3RJRCwgcmVzcG9uc2UsIDApOwogICAgIG1fd2tSZXF1ZXN0TWFu
YWdlci0+ZGlkTG9hZERhdGEobV9yZXF1ZXN0SUQsIHRvSW1wbCh3a0RhdGEuZ2V0KCkpLT5kYXRh
UmVmZXJlbmNlKCkpOwogICAgIG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkRmluaXNoTG9hZGluZyht
X3JlcXVlc3RJRCk7CiAgICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5zdG9wTG9hZGluZyhtX3JlcXVl
c3RJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAppbmRleCBj
YjJmMzE0Li42YWJkOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5jcHAKQEAgLTM2LDEwICszNiw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
Ym9vbCBzdGFydExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkg
b3ZlcnJpZGUKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dFN0
YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKG1fd2ViQ29udGV4dCwgY3VzdG9tUHJvdG9jb2xJRCwg
cmVxdWVzdCwgbWFuYWdlcik7Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHZv
aWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElEKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCBhYmExYjk2
Li41OWJkYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2soR0lucHV0U3RyZWFt
KiBpbnB1dFN0cmVhbSwgR0FzeW5jCiAgICAgICAgIC8vIEZpcnN0IGNodW5rIHJlYWQuIEluIGNh
c2Ugb2YgZW1wdHkgcmVwbHkgYW4gZW1wdHkgQVBJOjpEYXRhIGlzIHNlbnQgdG8gdGhlIG5ldHdv
cmtpbmcgcHJvY2Vzcy4KICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwoVVJM
KCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+
bWltZVR5cGUuZGF0YSgpKSwKICAgICAgICAgICAgIHByaXYtPnN0cmVhbUxlbmd0aCwgZW1wdHlT
dHJpbmcoKSk7Ci0gICAgICAgIHByaXYtPm1hbmFnZXItPmRpZFJlY2VpdmVSZXNwb25zZShwcml2
LT5yZXF1ZXN0SUQsIHJlc3BvbnNlKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKHByaXYtPnJlcXVlc3RJRCwgcmVzcG9uc2UsIDApOwogICAgICAgICBwcml2LT5t
YW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEpOwogICAgIH0gZWxz
ZSBpZiAoYnl0ZXNSZWFkIHx8ICghYnl0ZXNSZWFkICYmICFwcml2LT5zdHJlYW1MZW5ndGgpKSB7
CiAgICAgICAgIC8vIFN1YnNlcXVlbnQgY2h1bmsgcmVhZC4gV2Ugb25seSBzZW5kIGFuIGVtcHR5
IEFQSTo6RGF0YSB0byB0aGUgbmV0d29ya2luZyBwcm9jZXNzIHdoZW4gc3RyZWFtIGxlbmd0aCBp
cyB1bmtub3duLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjY3YTQ1YWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2ltcG9ydCAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmgi
CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitP
QkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OworCitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQg
eworcHJpdmF0ZToKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSYsIHVpbnQ2NF90IC8qY3VzdG9tUHJvdG9jb2xJRCovLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BMb2FkaW5nKEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLypjdXN0b21Qcm90b2NvbElEKi8pIG92ZXJyaWRl
OworICAgIHZvaWQgaW52YWxpZGF0ZShDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYpIG92ZXJy
aWRlOworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2xM
b2FkZXI+PiBtX2xvYWRlck1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
bWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbQpzaW1pbGFyaXR5IGlu
ZGV4IDY5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCnJlbmFtZSB0
byBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50Lm1tCmluZGV4IDk3OWIwZDIuLjY1Mjg2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5tbQpAQCAtMjQsMzYgKzI0LDMwIEBACiAgKi8KIAogI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgor
I2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAKLSNpbXBvcnQgIkNoaWxk
UHJvY2Vzc1Byb3h5LmgiCi0jaW1wb3J0ICJDb25uZWN0aW9uLmgiCi0jaW1wb3J0ICJDdXN0b21Q
cm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgotI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIK
ICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+
CiAKLXVzaW5nIG5hbWVzcGFjZSBJUEM7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFj
ZSBXS0N1c3RvbVByb3RvY29sTG9hZGVyIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVn
YXRlPiB7CiBAcHJpdmF0ZQogICAgIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KiBfY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk7CiAgICAgdWludDY0X3QgX2N1c3RvbVByb3RvY29sSUQ7Ci0g
ICAgUmVmUHRyPENvbm5lY3Rpb24+IF9jb25uZWN0aW9uOwogICAgIE5TVVJMQ2FjaGVTdG9yYWdl
UG9saWN5IF9zdG9yYWdlUG9saWN5OwogICAgIE5TVVJMQ29ubmVjdGlvbiAqX3VybENvbm5lY3Rp
b247CiB9Ci0tIChpZClpbml0V2l0aEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OihDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSopY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgY3VzdG9tUHJv
dG9jb2xJRDoodWludDY0X3QpY3VzdG9tUHJvdG9jb2xJRCByZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyZXF1ZXN0IGNvbm5lY3Rpb246KENvbm5lY3Rpb24gKiljb25uZWN0aW9uOworLSAoaWQpaW5p
dFdpdGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkqKWN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90
KWN1c3RvbVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIKIAotLSAoaWQpaW5pdFdp
dGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkq
KWN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90KWN1
c3RvbVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb25uZWN0aW9u
OihDb25uZWN0aW9uICopY29ubmVjdGlvbgorLSAoaWQpaW5pdFdpdGhDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqKWN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90KWN1c3RvbVByb3RvY29sSUQgcmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
CiAgICAgaWYgKCFzZWxmKQpAQCAtNjEsMTAgKzU1LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogICAgIEFTU0VSVChjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSk7CiAgICAgQVNTRVJU
KHJlcXVlc3QpOwotICAgIEFTU0VSVChjb25uZWN0aW9uKTsKICAgICBfY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkgPSBjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTsKICAgICBfY3VzdG9tUHJv
dG9jb2xJRCA9IGN1c3RvbVByb3RvY29sSUQ7Ci0gICAgX2Nvbm5lY3Rpb24gPSBjb25uZWN0aW9u
OwogICAgIF9zdG9yYWdlUG9saWN5ID0gTlNVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2VkOwogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgpAQCAtNzgsNyArNzAsNiBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBfY29ubmVjdGlvbiA9
IG51bGxwdHI7CiAgICAgW191cmxDb25uZWN0aW9uIGNhbmNlbF07CiAgICAgW191cmxDb25uZWN0
aW9uIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKQEAgLTg3LDcgKzc4LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9u
ICopY29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKIHsKICAgICBS
ZXNvdXJjZUVycm9yIGNvcmVFcnJvcihlcnJvcik7Ci0gICAgX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkRmFpbFdpdGhFcnJvcihfY3VzdG9tUHJv
dG9jb2xJRCwgY29yZUVycm9yKSwgMCk7CisgICAgX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
LT5kaWRGYWlsV2l0aEVycm9yKF9jdXN0b21Qcm90b2NvbElELCBjb3JlRXJyb3IpOwogICAgIF9j
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS0+c3RvcExvYWRpbmcoX2N1c3RvbVByb3RvY29sSUQp
OwogfQogCkBAIC0xMDEsMTkgKzkyLDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAtICh2
b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZVJl
c3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKIHsKICAgICBSZXNvdXJjZVJlc3BvbnNl
IGNvcmVSZXNwb25zZShyZXNwb25zZSk7Ci0gICAgX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKF9jdXN0b21Qcm90b2Nv
bElELCBjb3JlUmVzcG9uc2UsIF9zdG9yYWdlUG9saWN5KSwgMCk7CisgICAgX2N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5LT5kaWRSZWNlaXZlUmVzcG9uc2UoX2N1c3RvbVByb3RvY29sSUQsIGNv
cmVSZXNwb25zZSwgX3N0b3JhZ2VQb2xpY3kpOwogfQogCiAtICh2b2lkKWNvbm5lY3Rpb246KE5T
VVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEK
IHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY29yZURhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwotICAgIF9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZExvYWREYXRhKF9jdXN0b21Q
cm90b2NvbElELCBjb3JlRGF0YSksIDApOworICAgIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS0+ZGlkTG9hZERhdGEoX2N1c3RvbVByb3RvY29sSUQsIGNvcmVEYXRhKTsKIH0KIAogLSAoTlNV
UkxSZXF1ZXN0ICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiB3aWxs
U2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNV
UkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UKIHsKICAgICBpZiAocmVkaXJlY3RSZXNwb25z
ZSkgewotICAgICAgICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjpXYXNSZWRpcmVjdGVkVG9SZXF1ZXN0KF9jdXN0b21Qcm90b2NvbElELCByZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlKSwgMCk7CisgICAgICAgIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eS0+d2FzUmVkaXJlY3RlZFRvUmVxdWVzdChfY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSk7CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogICAgIHJldHVy
biByZXF1ZXN0OwpAQCAtMTIxLDcgKzExMiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
IC0gKHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29ubmVjdGlvbiAqKWNv
bm5lY3Rpb24KIHsKLSAgICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpEaWRGaW5pc2hMb2FkaW5nKF9jdXN0b21Qcm90b2NvbElEKSwgMCk7CisgICAg
X2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LT5kaWRGaW5pc2hMb2FkaW5nKF9jdXN0b21Qcm90
b2NvbElEKTsKICAgICBfY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHktPnN0b3BMb2FkaW5nKF9j
dXN0b21Qcm90b2NvbElEKTsKIH0KIApAQCAtMTI5LDM5ICsxMjAsMjcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGlsZFByb2Nlc3NQcm94eSogY2hp
bGRQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKLSAgICA6IG1fY2hp
bGRQcm9jZXNzUHJveHkoY2hpbGRQcm9jZXNzUHJveHkpCi0gICAgLCBtX3Byb2Nlc3NQb29sKHBy
b2Nlc3NQb29sKQotewotICAgIEFTU0VSVChtX2NoaWxkUHJvY2Vzc1Byb3h5KTsKLSAgICBtX2No
aWxkUHJvY2Vzc1Byb3h5LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKLX0KLQotQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgpCi17
Ci0gICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLX0K
LQotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY29yZVJlcXVlc3QpCit2
b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3RhcnRMb2FkaW5nKEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIGNvcmVSZXF1ZXN0KQogewogICAgIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCA9IGNvcmVSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKICAg
ICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLQ3VzdG9tUHJvdG9jb2xM
b2FkZXIgKmxvYWRlciA9IFtbV0tDdXN0b21Qcm90b2NvbExvYWRlciBhbGxvY10gaW5pdFdpdGhD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTp0aGlzIGN1c3RvbVByb3RvY29sSUQ6Y3VzdG9tUHJv
dG9jb2xJRCByZXF1ZXN0OnJlcXVlc3QgY29ubmVjdGlvbjptX2NoaWxkUHJvY2Vzc1Byb3h5LT5j
b25uZWN0aW9uKCldOworICAgIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgKmxvYWRlciA9IFtbV0tD
dXN0b21Qcm90b2NvbExvYWRlciBhbGxvY10gaW5pdFdpdGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eTombWFuYWdlciBjdXN0b21Qcm90b2NvbElEOmN1c3RvbVByb3RvY29sSUQgcmVxdWVzdDpy
ZXF1ZXN0XTsKICAgICBBU1NFUlQobG9hZGVyKTsKICAgICBBU1NFUlQoIW1fbG9hZGVyTWFwLmNv
bnRhaW5zKGN1c3RvbVByb3RvY29sSUQpKTsKICAgICBtX2xvYWRlck1hcC5hZGQoY3VzdG9tUHJv
dG9jb2xJRCwgbG9hZGVyKTsKICAgICBbbG9hZGVyIHJlbGVhc2VdOwogfQogCi12b2lkIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElEKQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0b3BMb2FkaW5nKEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKIHsKICAg
ICBtX2xvYWRlck1hcC5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CiB9CiAKLXZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCit2b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudDo6aW52YWxpZGF0ZShDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYp
CiB7CisgICAgLy8gRklYTUU6IGl0ZXJhdGUgdGhlIGxvYWRlciBtYXAgYW5kIHJlbW92ZSBsb2Fk
ZXJzIGZvciB0aGUgZ2l2ZW4gbWFuYWdlci4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCmluZGV4IGJlYmNjYTYuLjRlZGFjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAKKyNp
bXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2ltcG9ydCAiTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKQEAgLTE0NSw2ICsxNDYsOCBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIElQQzo6c2V0
QWxsb3dzRGVjb2RpbmdTZWNLZXlSZWYodHJ1ZSk7CiAgICAgV2ViS2l0OjpXZWJNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpOwogI2VuZGlmCisKKyAgICBzZXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQ+KCkpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMjUzLDkgKzI1Niw2IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgcGFyYW1ldGVycy5wYXJlbnRQcm9jZXNzTmFtZSA9IFtb
TlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gcHJvY2Vzc05hbWVdOwogICAgIHBhcmFtZXRlcnMu
dWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllciA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxl
SWRlbnRpZmllcl07CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGdsb2JhbFVSTFNj
aGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpKQotICAgICAgICBwYXJhbWV0ZXJzLnVy
bFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwotCiAg
ICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXTsKIAogICAgIHBhcmFtZXRlcnMuaHR0cFByb3h5ID0gW2RlZmF1bHRzIHN0cmlu
Z0ZvcktleTpXZWJLaXQySFRUUFByb3h5RGVmYXVsdHNLZXldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAKc2ltaWxh
cml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNw
cApyZW5hbWUgdG8gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcAppbmRleCAzZmIzNDVkLi40NTJmM2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eS5jcHAKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MyBJZ2FsaWEgUy5MLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI3LDEyICsyOCw2IEBACiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgog
Ci0jaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+Ci0jZWxp
ZiBQTEFURk9STShFRkwpCi0jaW5jbHVkZSA8V2ViQ29yZS9FcnJvcnNFZmwuaD4KLSNlbmRpZgot
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OkN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5KENoaWxkUHJvY2Vzc1Byb3h5KiBjaGlsZFByb2Nlc3NQcm94
eSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQpAQCAtNDgsMTUgKzQzLDkgQEAgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgpCiAgICAg
bV9jaGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAotdm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKLXsKLSAgICBt
X3Byb2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpLmludmFsaWRhdGUoKnRo
aXMpOwotfQotCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmco
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoKS5zdGFydExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3Qp
KQotICAgICAgICBkaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIFdlYkNvcmU6OmNh
bm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0KSk7CisgICAgbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQoKS5zdGFydExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQs
IHJlcXVlc3QpOwogfQogCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9h
ZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQpAQCAtNjQsOSArNTMsMTkgQEAgdm9pZCBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJv
dG9jb2xJRCkKICAgICBtX3Byb2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgp
LnN0b3BMb2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2NvbElEKTsKIH0KIAotdm9pZCBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKK3sKKyAgICBt
X3Byb2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpLmludmFsaWRhdGUoKnRo
aXMpOworfQorCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojp3YXNSZWRpcmVjdGVk
VG9SZXF1ZXN0KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSkKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5kKE1lc3NhZ2Vz
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Oldhc1JlZGlyZWN0ZWRUb1JlcXVlc3QoY3VzdG9tUHJv
dG9jb2xJRCwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSksIDApOworfQorCit2b2lkIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVp
bnQzMl90IGNhY2hlU3RvcmFnZVBvbGljeSkKIHsKLSAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5z
ZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZFJlY2VpdmVSZXNwb25zZShj
dXN0b21Qcm90b2NvbElELCByZXNwb25zZSwgMCksIDApOworICAgIG1fY2hpbGRQcm9jZXNzUHJv
eHktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3Bv
bnNlKGN1c3RvbVByb3RvY29sSUQsIHJlc3BvbnNlLCBjYWNoZVN0b3JhZ2VQb2xpY3kpLCAwKTsK
IH0KIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkTG9hZERhdGEodWludDY0
X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAppbmRl
eCA0Yzc0M2NkLi5mZmU5OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkuaApAQCAtNTksMTIgKzU5LDExIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcHJvY2Vzc0RpZENsb3NlKCk7CiAKLSNpZiBVU0UoU09VUCkKLSAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCB3YXNSZWRpcmVjdGVkVG9SZXF1ZXN0KHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgdWludDMyX3QgY2FjaGVTdG9yYWdlUG9saWN5KTsKICAgICB2b2lkIGRpZExvYWRE
YXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
OwogICAgIHZvaWQgZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCmluZGV4IDA2NDFjNzcuLjI5YWNjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTQ3LDYgKzE0NywxMiBAQCBzdGF0aWMgV2Vi
c2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbihBUEk6OgogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQogCitzdGF0aWMgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdsb2JhbFVSTFNjaGVtZXNX
aXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzZXQ7CisgICAgcmV0
dXJuIHNldDsKK30KKwogV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIDogbV9jb25maWd1cmF0aW9u
KGNvbmZpZ3VyYXRpb24uY29weSgpKQogICAgICwgbV9oYXZlSW5pdGlhbEVtcHR5UHJvY2Vzcyhm
YWxzZSkKQEAgLTE1NSw5ICsxNjEsNyBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wo
QVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2F1
dG9tYXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCkp
CiAgICAgLCBtX2Rvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpEb3dubG9hZENs
aWVudD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCkpCi0jaWYgVVNFKFNPVVApCiAgICAgLCBtX2N1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50PigpKQotI2VuZGlmCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoVmlz
aXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rc1BvcHVsYXRlZChm
YWxzZSkKICAgICAsIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIodGhpcykKQEAgLTM1Miw2ICsz
NTYsMTIgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdv
cmtQcm9jZXNzKCkKICAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZVNpemVPdmVycmlkZSA9IG1fY29u
ZmlndXJhdGlvbi0+ZGlza0NhY2hlU2l6ZU92ZXJyaWRlKCk7CiAgICAgcGFyYW1ldGVycy5jYW5I
YW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbiA9IG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJU
cnVzdEV2YWx1YXRpb247CiAKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGdsb2JhbFVS
TFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpKQorICAgICAgICBwYXJhbWV0ZXJz
LnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwor
CisgICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9y
Q3VzdG9tUHJvdG9jb2xzKQorICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVk
Rm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOworCiAgICAgcGFyYW1ldGVycy5kaXNr
Q2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNoZURpcmVjdG9yeSgpOwog
ICAgIGlmICghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFy
YW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKQEAgLTk2OCwxMiArOTc4LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYgdXJsU2NoZW1l
KQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVnaXN0ZXJV
UkxTY2hlbWVBc0NPUlNFbmFibGVkKHVybFNjaGVtZSkpOwogfQogCi1IYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgV2ViUHJvY2Vzc1Bvb2w6Omdsb2JhbFVSTFNjaGVt
ZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzZXQ7Ci0gICAg
cmV0dXJuIHNldDsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJHbG9iYWxVUkxT
Y2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoY29uc3QgU3RyaW5nJiB1cmxTY2hl
bWUpCiB7CiAgICAgaWYgKCF1cmxTY2hlbWUpCkBAIC0xMzY4LDE3ICsxMzcyLDE0IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnNGaWx0ZXJpbmdPdXRFbnRy
aWVzQWRkZWRBZnRlclRpbWUoCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyU2NoZW1l
Rm9yQ3VzdG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0jaWYgVVNFKFNPVVAp
Ci0gICAgbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hZGQoc2NoZW1l
KTsKLSNlbmRpZgorICAgIGlmICghZ2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90b2NvbEhh
bmRsZXJzKCkuY29udGFpbnMoc2NoZW1lKSkKKyAgICAgICAgbV91cmxTY2hlbWVzUmVnaXN0ZXJl
ZEZvckN1c3RvbVByb3RvY29scy5hZGQoc2NoZW1lKTsKICAgICBzZW5kVG9OZXR3b3JraW5nUHJv
Y2VzcyhNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpSZWdpc3RlclNjaGVtZShzY2hl
bWUpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3Rv
bVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewotI2lmIFVTRShTT1VQKQogICAgIG1f
dXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMucmVtb3ZlKHNjaGVtZSk7Ci0j
ZW5kaWYKICAgICBzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpVbnJlZ2lzdGVyU2NoZW1lKHNjaGVtZSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDRlZDBjNTkuLjJiODNkNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xMzcsOSArMTM3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4pOwogICAgIHZvaWQgc2V0RG93bmxvYWRDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+KTsKICAgICB2b2lkIHNldEF1
dG9tYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4pOwot
I2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4mJik7Ci0jZW5k
aWYKIAogICAgIHZvaWQgc2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKHVuc2lnbmVkKTsgLy8g
Q2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBydW5uaW5nLgog
ICAgIHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcygpIGNvbnN0IHsgcmV0dXJuICFt
X2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKSA/IFVJTlRfTUFYIDogbV9jb25m
aWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCk7IH0KQEAgLTIzMSw5ICsyMjksNyBAQCBw
dWJsaWM6CiAgICAgQVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudCYgaGlzdG9yeUNsaWVu
dCgpIHsgcmV0dXJuICptX2hpc3RvcnlDbGllbnQ7IH0KICAgICBXZWJDb250ZXh0Q2xpZW50JiBj
bGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCi0jaWYgVVNFKFNPVVApCiAgICAgQVBJOjpD
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQmIGN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgp
IGNvbnN0IHsgcmV0dXJuICptX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDsgfQotI2VuZGlm
CiAKICAgICBXZWJJY29uRGF0YWJhc2UqIGljb25EYXRhYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aWNvbkRhdGFiYXNlLmdldCgpOyB9CiAKQEAgLTMzMCw3ICszMjYsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYpOwog
Ci0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBn
bG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMoKTsKICAgICBzdGF0aWMg
dm9pZCByZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVy
cyhjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyR2xvYmFsVVJMU2No
ZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhhbmRsZXJzKGNvbnN0IFN0cmluZyYpOwogCkBAIC00
NjgsOSArNDYzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0
aW9uQ2xpZW50PiBtX2F1dG9tYXRpb25DbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6
RG93bmxvYWRDbGllbnQ+IG1fZG93bmxvYWRDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQ
STo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+IG1faGlzdG9yeUNsaWVudDsKLSNpZiBVU0Uo
U09VUCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQ+IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OwotI2VuZGlmCiAKICAgICBSZWZQdHI8
V2ViQXV0b21hdGlvblNlc3Npb24+IG1fYXV0b21hdGlvblNlc3Npb247CiAKQEAgLTQ5NCw2ICs0
ODcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAgICAgSGFz
aFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0NhY2hlUGFydGl0aW9uZWQ7CiAjZW5k
aWYKKyAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtX3VybFNj
aGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzOwogCiAgICAgYm9vbCBtX2Fsd2F5c1Vz
ZXNDb21wbGV4VGV4dENvZGVQYXRoOwogICAgIGJvb2wgbV9zaG91bGRVc2VGb250U21vb3RoaW5n
OwpAQCAtNTQ4LDcgKzU0Miw2IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoU09VUCkKICAgICBib29s
IG1faWdub3JlVExTRXJyb3JzIHsgdHJ1ZSB9OwotICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+IG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2Nv
bHM7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9tZW1vcnlDYWNoZURpc2FibGVkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
LmNwcAppbmRleCBjZDFkMzc3Li5mYTY0M2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcApAQCAtNDEsNyAr
NDEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJvb2wgc3RhcnRMb2FkaW5n
KEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkg
b3ZlcnJpZGUKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBh
dXRvIHVybFJlcXVlc3QgPSBBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNvdXJjZVJlcXVlc3Qp
OwogICAgICAgICBSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IEV3a1VybFNj
aGVtZVJlcXVlc3Q6OmNyZWF0ZShtYW5hZ2VyLCB1cmxSZXF1ZXN0LnB0cigpLCBjdXN0b21Qcm90
b2NvbElEKTsKQEAgLTQ5LDExICs0OSwxMCBAQCBwcml2YXRlOgogICAgICAgICBSZWZQdHI8V2Vi
S2l0VVJJU2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IChtX2NsaWVudC0+bV91cmlTY2hlbWVIYW5k
bGVycykuZ2V0KHNjaGVtZSk7CiAgICAgICAgIEFTU0VSVChoYW5kbGVyLmdldCgpKTsKICAgICAg
ICAgaWYgKCFoYW5kbGVyLT5oYXNDYWxsYmFjaygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgKG1fY2xpZW50LT5tX3VyaVNjaGVtZVJl
cXVlc3RzKS5zZXQoY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCk7CiAgICAgICAgIGhhbmRsZXIt
PnBlcmZvcm1DYWxsYmFjayhyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgdm9pZCBzdG9wTG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYs
IHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcAppbmRleCA0ZTQyYzVh
Li4zZDgxZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQ
cm9jZXNzUG9vbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dl
YlByb2Nlc3NQb29sU291cC5jcHAKQEAgLTQwLDggKzQwLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmEKICAgICBwYXJhbWV0ZXJzLmNvb2tpZUFjY2VwdFBvbGljeSA9IG1faW5pdGlhbEhUVFBD
b29raWVBY2NlcHRQb2xpY3k7CiAgICAgcGFyYW1ldGVycy5pZ25vcmVUTFNFcnJvcnMgPSBtX2ln
bm9yZVRMU0Vycm9yczsKICAgICBwYXJhbWV0ZXJzLmxhbmd1YWdlcyA9IFdlYkNvcmU6OnVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMoKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IG1fdXJs
U2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMpCi0gICAgICAgIHBhcmFtZXRlcnMu
dXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYXBwZW5kKHNjaGVtZSk7CiAg
ICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcgPSBm
YWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGJiY2Q3OTYuLmI2YzU1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU5OSw3ICs1OTksNiBAQAog
CQkyOTg0RjU4ODE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDI5ODRGNTg2MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkyOTg0RjU4OTE2NEJBMDk1MDA0QkMwQzYgLyogQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODRGNTg3MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90
b2NvbE1hbmFnZXJNZXNzYWdlcy5oICovOyB9OwogCQkyOUFEMzA5MzE2NEI0QzVEMDA3MkRFQTkg
LyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QUQzMDkyMTY0QjRDNUQwMDcyREVBOSAvKiBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eS5oICovOyB9OwotCQkyOUFEMzA5NjE2NEI0QzkzMDA3MkRFQTkg
LyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUFEMzA5NTE2NEI0QzkzMDA3MkRFQTkgLyogQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gKi87IH07CiAJCTI5Q0Q1NUFBMTI4RTI5NEYw
MDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRDU1QTgxMjhFMjk0RjAwMTMz
Qzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggKi87IH07CiAJCTI5Q0Q1
NUFCMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0Q1NUE5
MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAq
LzsgfTsKIAkJMkQxMDg3NjAxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTA4NzVFMUQy
QzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgKi87IH07CkBAIC0xMTI2LDYgKzEx
MjUsOSBAQAogCQk3QTc5MUVGQTFDN0NGQ0YxMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzkxRUY5MUM3Q0ZCMzcwMEM0QzUyQiAvKiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk3QTc5
MUVGQjFDN0NGRDAxMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
NzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVN
ZXNzYWdlcy5oICovOyB9OwogCQk3QTc5MUVGQzFDN0QwOEM1MDBDNEM1MkIgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwICovOyB9OworCQk3QTgyMUY0QTFFMkY2NUU5MDA2MDQ1Nzcg
LyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E4MjFGNDkxRTJGNjVERDAwNjA0NTc3IC8qIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5LmNwcCAqLzsgfTsKKwkJN0E4MjFGNEMxRTJGNjczOTAwNjA0
NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E4MjFGNEIxRTJGNjY0ODAwNjA0NTc3IC8qIEN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oICovOyB9OworCQk3QTgyMUY0RTFFMkY2N0E4MDA2
MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E4MjFGNEQxRTJGNjc5RTAwNjA0NTc3IC8q
IEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbSAqLzsgfTsKIAkJN0MwNjVGMkIxQzhDRDk1
RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyOTFDOENEOTVG
MDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLzsgfTsK
IAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRh
dGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5oICovOyB9OwogCQk3QzEzNUFBODE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZv
cm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi87
IH07CkBAIC0yNjg2LDcgKzI2ODgsNiBAQAogCQkyOTg0RjU4NjE2NEJBMDk1MDA0QkMwQzYgLyog
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODRGNTg3MTY0QkEwOTUwMDRC
QzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyOUFEMzA5MjE2NEI0QzVEMDA3MkRFQTkgLyogQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDsgcGF0aCA9IEN1c3RvbVByb3RvY29scy9DdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQky
OUFEMzA5NTE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eU1hYy5tbTsgcGF0aCA9IEN1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5
QUQzMDk3MTY0QjRFMjEwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbjsgcGF0aCA9IEN1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlDRDU1
QTgxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3RCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5Q0Q1NUE5MTI4RTI5
NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3RCYXNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzI2NSw2ICszMjY2
LDkgQEAKIAkJN0E1RTM5NDkxRDVCRDhBNzAwQjRCN0NFIC8qIGNvbS5tYWNyb21lZGlhLkZsYXNo
IFBsYXllciBFU1IucGx1Z2luLnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJjb20ubWFjcm9t
ZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdBNzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmVNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBODIxRjQ5MUUyRjY1REQwMDYw
NDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHA7IHBhdGgg
PSBDdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QTgyMUY0QjFFMkY2NjQ4MDA2MDQ1NzcgLyogQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QTgyMUY0RDFFMkY2NzlFMDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTlD
RDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOUNEOEMx
MUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOUNEOEMyMUM3NzlBRDYwMEQ5
RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDg5MCw2ICs0ODk0LDggQEAKIAkJ
CQk5OUM4MUQ1NjFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5tbSAqLywKIAkJ
CQk5OTBEMjhCNzFDNjUzOUEwMDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCAq
LywKIAkJCQk5OTBEMjhCODFDNjUzOUEwMDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Npb25DbGll
bnQubW0gKi8sCisJCQkJN0E4MjFGNEIxRTJGNjY0ODAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudC5oICovLAorCQkJCTdBODIxRjREMUUyRjY3OUUwMDYwNDU3NyAvKiBDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0gKi8sCiAJCQkJODM4OTFCNkExQTY4QzMwQjAwMzBG
Mzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggKi8sCiAJCQkJODM4OTFCNkIxQTY4QzMw
QjAwMzBGMzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lm1tICovLAogCQkJCUExREY2MzEx
MThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5oICovLApAQCAtNTA1MSw2ICs1MDU3
LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTI5QUQzMDk0MTY0QjRDODMwMDcyREVBOSAvKiBt
YWMgKi8sCiAJCQkJMjlBRDMwOTIxNjRCNEM1RDAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5LmggKi8sCisJCQkJN0E4MjFGNDkxRTJGNjVERDAwNjA0NTc3IC8qIEN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5LmNwcCAqLywKIAkJCQkyOUFEMzA5NzE2NEI0RTIxMDA3MkRFQTkg
LyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IEN1c3RvbVByb3RvY29sczsKQEAgLTUwNTksNyArNTA2Niw2IEBACiAJCTI5QUQzMDk0
MTY0QjRDODMwMDcyREVBOSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAotCQkJCTI5QUQzMDk1MTY0QjRDOTMwMDcyREVBOSAvKiBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eU1hYy5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0gbWFjOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc5NzgsNiArNzk4NCw3IEBACiAJCQkJMUFDNUZGQzIxNzRC
RkQxQjAwMDE0ODNEIC8qIFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTBFQzkwNjEyNEMwQUI4MDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVDOTBGMTI0QzBBRjUwMDdFRjRBNSAvKiBQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdBODIxRjRDMUUy
RjY3MzkwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBNzg2NUJBMTZDQUM3MTUwMEFDRTgzQSAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyQkI2RDExNDExN0I0
RDAwMEYzNUQ0IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMkQ5MEQyMTI4MUM5NjYwMDFFQjk2MiAvKiBQbHVnaW5Qcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKQEAgLTkyODAsNyArOTI4Nyw2IEBACiAJCQkJ
Qjg3OEI2MTYxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDMTQyNzFEMUMyM0Y4Q0YwMEQ0MTE4MyAvKiBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5ODRGNTg4MTY0QkEwOTUwMDRCQzBDNiAv
KiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJMjlBRDMwOTYxNjRCNEM5MzAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclBy
b3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk4NEY1N0MxNjRCOTE1RjAwNEJDMEM2IC8q
IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxRTM1MUZGMTgwRjVEMEYwMEU1M0JFOSAvKiBEYXRhYmFzZVByb2Nlc3MuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1RTc3MkIxODQwMDhCOTAwMDcyMDNGIC8qIERhdGFiYXNl
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk5MjEsNiAr
OTkyNyw3IEBACiAJCQkJMUFCNDBFRTUxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVu
dGlmaWVycy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUZEMTI0RkYwMjcwMDY4RjIwQSAv
KiBXS011dGFibGVBcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzVGRjEyNEZGMDI3
MDA2OEYyMEEgLyogV0tNdXRhYmxlRGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3
QTgyMUY0QTFFMkY2NUU5MDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1QjFDNTAxODk4NjA2RjAwNEZDRjlCIC8qIFdLTmF2aWdh
dGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBMjU2RTM3MThBMUE3ODgwMDZGQjkyMiAvKiBX
S05hdmlnYXRpb25BY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDNBNjVEQTFBN0MzQTFG
MDBDQUM2MzcgLyogV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MTAwMjMsNiArMTAwMzAsNyBAQAogCQkJCTFBRDYwRjVEMThFMjBGNEMwMDIwQzAzNCAvKiBXS1dp
bmRvd0ZlYXR1cmVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3QzBERjYxQjdEMUYxMDAwQTlC
ODQ4IC8qIFdLV2luZG93RmVhdHVyZXNSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCRUNE
RTcxNkI2NDE2ODAwMDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJN0E4MjFGNEUxRTJGNjdBODAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299129</attachid>
            <date>2017-01-18 02:30:10 -0800</date>
            <delta_ts>2017-01-18 02:59:59 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>wk2-custom-protocols.diff</filename>
            <type>text/plain</type>
            <size>40093</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggZjA3NDAyYS4uZGRjMmE5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTQxNyw2ICs0MTcsOCBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAogCisgICAgVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcAorCiAgICAg
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKIAogICAgIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlNzQ4NTQ1Li4wODhkOGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQpAQCAtMTI4LDggKzEyOCw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNF
UwogCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCiAK
LSAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eVNvdXAuY3BwCi0KICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdp
bkluZm9TdG9yZVVuaXguY3BwCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9j
ZXNzUHJveHlVbml4LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDg3YTU1OWEu
LjY2ZTU1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yODMsOCArMjgzLDYgQEAg
bGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvbGludXgvTWVtb3J5
UHJlc3N1cmVNb25pdG9yLmNwcAogCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcAotCiAgICAgVUlQcm9j
ZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKIAogICAgIFVJUHJvY2Vzcy9QbHVn
aW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UK
aW5kZXggYzc1ZGFlZS4uMGJmY2M2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTI1
MSw4ICsyNTEsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vz
cy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCiAKLSAgICBVSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1t
Ci0KICAgICBVSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbQog
CiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpbkluZm9TdG9yZU1hYy5tbQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50LmgKaW5kZXggNTFlMThiZC4uOTQ1ZGUzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRMb2FkaW5nKFdlYktpdDo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCAvKiBjdXN0b21Qcm90b2NvbElEICovLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzdGFydExvYWRpbmcoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYsIHVpbnQ2NF90IC8qIGN1c3RvbVByb3RvY29sSUQgKi8sIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzdG9wTG9hZGluZyhXZWJLaXQ6OkN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLyogY3VzdG9tUHJvdG9jb2xJRCAq
LykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZShXZWJLaXQ6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCmluZGV4IGY1NTQ4NGIu
LjhjOTY5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQg
RXdrVXJsU2NoZW1lUmVxdWVzdDo6ZmluaXNoKGNvbnN0IHZvaWQqIGNvbnRlbnREYXRhLCB1aW50
NjRfdCBjb250ZW50TGVuZ3RoCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgobV91cmwpKSwK
ICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChtaW1lVHlwZSksIGNvbnRlbnRMZW5ndGgsIGVtcHR5
U3RyaW5nKCkpOwogCi0gICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRSZWNlaXZlUmVzcG9uc2Uo
bV9yZXF1ZXN0SUQsIHJlc3BvbnNlKTsKKyAgICBtX3drUmVxdWVzdE1hbmFnZXItPmRpZFJlY2Vp
dmVSZXNwb25zZShtX3JlcXVlc3RJRCwgcmVzcG9uc2UsIDApOwogICAgIG1fd2tSZXF1ZXN0TWFu
YWdlci0+ZGlkTG9hZERhdGEobV9yZXF1ZXN0SUQsIHRvSW1wbCh3a0RhdGEuZ2V0KCkpLT5kYXRh
UmVmZXJlbmNlKCkpOwogICAgIG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkRmluaXNoTG9hZGluZyht
X3JlcXVlc3RJRCk7CiAgICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5zdG9wTG9hZGluZyhtX3JlcXVl
c3RJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAppbmRleCBj
YjJmMzE0Li42YWJkOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5jcHAKQEAgLTM2LDEwICszNiw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
Ym9vbCBzdGFydExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkg
b3ZlcnJpZGUKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dFN0
YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKG1fd2ViQ29udGV4dCwgY3VzdG9tUHJvdG9jb2xJRCwg
cmVxdWVzdCwgbWFuYWdlcik7Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHZv
aWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElEKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCBhYmExYjk2
Li41OWJkYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2soR0lucHV0U3RyZWFt
KiBpbnB1dFN0cmVhbSwgR0FzeW5jCiAgICAgICAgIC8vIEZpcnN0IGNodW5rIHJlYWQuIEluIGNh
c2Ugb2YgZW1wdHkgcmVwbHkgYW4gZW1wdHkgQVBJOjpEYXRhIGlzIHNlbnQgdG8gdGhlIG5ldHdv
cmtpbmcgcHJvY2Vzcy4KICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwoVVJM
KCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+
bWltZVR5cGUuZGF0YSgpKSwKICAgICAgICAgICAgIHByaXYtPnN0cmVhbUxlbmd0aCwgZW1wdHlT
dHJpbmcoKSk7Ci0gICAgICAgIHByaXYtPm1hbmFnZXItPmRpZFJlY2VpdmVSZXNwb25zZShwcml2
LT5yZXF1ZXN0SUQsIHJlc3BvbnNlKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKHByaXYtPnJlcXVlc3RJRCwgcmVzcG9uc2UsIDApOwogICAgICAgICBwcml2LT5t
YW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEpOwogICAgIH0gZWxz
ZSBpZiAoYnl0ZXNSZWFkIHx8ICghYnl0ZXNSZWFkICYmICFwcml2LT5zdHJlYW1MZW5ndGgpKSB7
CiAgICAgICAgIC8vIFN1YnNlcXVlbnQgY2h1bmsgcmVhZC4gV2Ugb25seSBzZW5kIGFuIGVtcHR5
IEFQSTo6RGF0YSB0byB0aGUgbmV0d29ya2luZyBwcm9jZXNzIHdoZW4gc3RyZWFtIGxlbmd0aCBp
cyB1bmtub3duLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjY3YTQ1YWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2ltcG9ydCAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmgi
CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitP
QkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OworCitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQg
eworcHJpdmF0ZToKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSYsIHVpbnQ2NF90IC8qY3VzdG9tUHJvdG9jb2xJRCovLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BMb2FkaW5nKEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLypjdXN0b21Qcm90b2NvbElEKi8pIG92ZXJyaWRl
OworICAgIHZvaWQgaW52YWxpZGF0ZShDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYpIG92ZXJy
aWRlOworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2xM
b2FkZXI+PiBtX2xvYWRlck1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
bWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbQpzaW1pbGFyaXR5IGlu
ZGV4IDY5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCnJlbmFtZSB0
byBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50Lm1tCmluZGV4IDk3OWIwZDIuLjY1Mjg2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5tbQpAQCAtMjQsMzYgKzI0LDMwIEBACiAgKi8KIAogI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgor
I2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAKLSNpbXBvcnQgIkNoaWxk
UHJvY2Vzc1Byb3h5LmgiCi0jaW1wb3J0ICJDb25uZWN0aW9uLmgiCi0jaW1wb3J0ICJDdXN0b21Q
cm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgotI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIK
ICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+
CiAKLXVzaW5nIG5hbWVzcGFjZSBJUEM7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFj
ZSBXS0N1c3RvbVByb3RvY29sTG9hZGVyIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVn
YXRlPiB7CiBAcHJpdmF0ZQogICAgIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KiBfY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk7CiAgICAgdWludDY0X3QgX2N1c3RvbVByb3RvY29sSUQ7Ci0g
ICAgUmVmUHRyPENvbm5lY3Rpb24+IF9jb25uZWN0aW9uOwogICAgIE5TVVJMQ2FjaGVTdG9yYWdl
UG9saWN5IF9zdG9yYWdlUG9saWN5OwogICAgIE5TVVJMQ29ubmVjdGlvbiAqX3VybENvbm5lY3Rp
b247CiB9Ci0tIChpZClpbml0V2l0aEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OihDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSopY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgY3VzdG9tUHJv
dG9jb2xJRDoodWludDY0X3QpY3VzdG9tUHJvdG9jb2xJRCByZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyZXF1ZXN0IGNvbm5lY3Rpb246KENvbm5lY3Rpb24gKiljb25uZWN0aW9uOworLSAoaWQpaW5p
dFdpdGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkqKWN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90
KWN1c3RvbVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIKIAotLSAoaWQpaW5pdFdp
dGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkq
KWN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90KWN1
c3RvbVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb25uZWN0aW9u
OihDb25uZWN0aW9uICopY29ubmVjdGlvbgorLSAoaWQpaW5pdFdpdGhDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqKWN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90KWN1c3RvbVByb3RvY29sSUQgcmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
CiAgICAgaWYgKCFzZWxmKQpAQCAtNjEsMTAgKzU1LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogICAgIEFTU0VSVChjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSk7CiAgICAgQVNTRVJU
KHJlcXVlc3QpOwotICAgIEFTU0VSVChjb25uZWN0aW9uKTsKICAgICBfY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkgPSBjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTsKICAgICBfY3VzdG9tUHJv
dG9jb2xJRCA9IGN1c3RvbVByb3RvY29sSUQ7Ci0gICAgX2Nvbm5lY3Rpb24gPSBjb25uZWN0aW9u
OwogICAgIF9zdG9yYWdlUG9saWN5ID0gTlNVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2VkOwogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgpAQCAtNzgsNyArNzAsNiBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBfY29ubmVjdGlvbiA9
IG51bGxwdHI7CiAgICAgW191cmxDb25uZWN0aW9uIGNhbmNlbF07CiAgICAgW191cmxDb25uZWN0
aW9uIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKQEAgLTg3LDcgKzc4LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9u
ICopY29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKIHsKICAgICBS
ZXNvdXJjZUVycm9yIGNvcmVFcnJvcihlcnJvcik7Ci0gICAgX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkRmFpbFdpdGhFcnJvcihfY3VzdG9tUHJv
dG9jb2xJRCwgY29yZUVycm9yKSwgMCk7CisgICAgX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
LT5kaWRGYWlsV2l0aEVycm9yKF9jdXN0b21Qcm90b2NvbElELCBjb3JlRXJyb3IpOwogICAgIF9j
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS0+c3RvcExvYWRpbmcoX2N1c3RvbVByb3RvY29sSUQp
OwogfQogCkBAIC0xMDEsMTkgKzkyLDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAtICh2
b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZVJl
c3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKIHsKICAgICBSZXNvdXJjZVJlc3BvbnNl
IGNvcmVSZXNwb25zZShyZXNwb25zZSk7Ci0gICAgX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKF9jdXN0b21Qcm90b2Nv
bElELCBjb3JlUmVzcG9uc2UsIF9zdG9yYWdlUG9saWN5KSwgMCk7CisgICAgX2N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5LT5kaWRSZWNlaXZlUmVzcG9uc2UoX2N1c3RvbVByb3RvY29sSUQsIGNv
cmVSZXNwb25zZSwgX3N0b3JhZ2VQb2xpY3kpOwogfQogCiAtICh2b2lkKWNvbm5lY3Rpb246KE5T
VVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEK
IHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY29yZURhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwotICAgIF9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZExvYWREYXRhKF9jdXN0b21Q
cm90b2NvbElELCBjb3JlRGF0YSksIDApOworICAgIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS0+ZGlkTG9hZERhdGEoX2N1c3RvbVByb3RvY29sSUQsIGNvcmVEYXRhKTsKIH0KIAogLSAoTlNV
UkxSZXF1ZXN0ICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiB3aWxs
U2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNV
UkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UKIHsKICAgICBpZiAocmVkaXJlY3RSZXNwb25z
ZSkgewotICAgICAgICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjpXYXNSZWRpcmVjdGVkVG9SZXF1ZXN0KF9jdXN0b21Qcm90b2NvbElELCByZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlKSwgMCk7CisgICAgICAgIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eS0+d2FzUmVkaXJlY3RlZFRvUmVxdWVzdChfY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSk7CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogICAgIHJldHVy
biByZXF1ZXN0OwpAQCAtMTIxLDcgKzExMiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
IC0gKHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29ubmVjdGlvbiAqKWNv
bm5lY3Rpb24KIHsKLSAgICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpEaWRGaW5pc2hMb2FkaW5nKF9jdXN0b21Qcm90b2NvbElEKSwgMCk7CisgICAg
X2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LT5kaWRGaW5pc2hMb2FkaW5nKF9jdXN0b21Qcm90
b2NvbElEKTsKICAgICBfY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHktPnN0b3BMb2FkaW5nKF9j
dXN0b21Qcm90b2NvbElEKTsKIH0KIApAQCAtMTI5LDM5ICsxMjAsMjcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGlsZFByb2Nlc3NQcm94eSogY2hp
bGRQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKLSAgICA6IG1fY2hp
bGRQcm9jZXNzUHJveHkoY2hpbGRQcm9jZXNzUHJveHkpCi0gICAgLCBtX3Byb2Nlc3NQb29sKHBy
b2Nlc3NQb29sKQotewotICAgIEFTU0VSVChtX2NoaWxkUHJvY2Vzc1Byb3h5KTsKLSAgICBtX2No
aWxkUHJvY2Vzc1Byb3h5LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKLX0KLQotQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgpCi17
Ci0gICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLX0K
LQotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY29yZVJlcXVlc3QpCit2
b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3RhcnRMb2FkaW5nKEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIGNvcmVSZXF1ZXN0KQogewogICAgIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCA9IGNvcmVSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKICAg
ICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLQ3VzdG9tUHJvdG9jb2xM
b2FkZXIgKmxvYWRlciA9IFtbV0tDdXN0b21Qcm90b2NvbExvYWRlciBhbGxvY10gaW5pdFdpdGhD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTp0aGlzIGN1c3RvbVByb3RvY29sSUQ6Y3VzdG9tUHJv
dG9jb2xJRCByZXF1ZXN0OnJlcXVlc3QgY29ubmVjdGlvbjptX2NoaWxkUHJvY2Vzc1Byb3h5LT5j
b25uZWN0aW9uKCldOworICAgIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgKmxvYWRlciA9IFtbV0tD
dXN0b21Qcm90b2NvbExvYWRlciBhbGxvY10gaW5pdFdpdGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eTombWFuYWdlciBjdXN0b21Qcm90b2NvbElEOmN1c3RvbVByb3RvY29sSUQgcmVxdWVzdDpy
ZXF1ZXN0XTsKICAgICBBU1NFUlQobG9hZGVyKTsKICAgICBBU1NFUlQoIW1fbG9hZGVyTWFwLmNv
bnRhaW5zKGN1c3RvbVByb3RvY29sSUQpKTsKICAgICBtX2xvYWRlck1hcC5hZGQoY3VzdG9tUHJv
dG9jb2xJRCwgbG9hZGVyKTsKICAgICBbbG9hZGVyIHJlbGVhc2VdOwogfQogCi12b2lkIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElEKQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0b3BMb2FkaW5nKEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKIHsKICAg
ICBtX2xvYWRlck1hcC5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CiB9CiAKLXZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCit2b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudDo6aW52YWxpZGF0ZShDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYp
CiB7CisgICAgLy8gRklYTUU6IGl0ZXJhdGUgdGhlIGxvYWRlciBtYXAgYW5kIHJlbW92ZSBsb2Fk
ZXJzIGZvciB0aGUgZ2l2ZW4gbWFuYWdlci4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCmluZGV4IGJlYmNjYTYuLjRlZGFjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAKKyNp
bXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2ltcG9ydCAiTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKQEAgLTE0NSw2ICsxNDYsOCBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIElQQzo6c2V0
QWxsb3dzRGVjb2RpbmdTZWNLZXlSZWYodHJ1ZSk7CiAgICAgV2ViS2l0OjpXZWJNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpOwogI2VuZGlmCisKKyAgICBzZXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQ+KCkpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMjUzLDkgKzI1Niw2IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgcGFyYW1ldGVycy5wYXJlbnRQcm9jZXNzTmFtZSA9IFtb
TlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gcHJvY2Vzc05hbWVdOwogICAgIHBhcmFtZXRlcnMu
dWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllciA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxl
SWRlbnRpZmllcl07CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGdsb2JhbFVSTFNj
aGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpKQotICAgICAgICBwYXJhbWV0ZXJzLnVy
bFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwotCiAg
ICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXTsKIAogICAgIHBhcmFtZXRlcnMuaHR0cFByb3h5ID0gW2RlZmF1bHRzIHN0cmlu
Z0ZvcktleTpXZWJLaXQySFRUUFByb3h5RGVmYXVsdHNLZXldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAKc2ltaWxh
cml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNw
cApyZW5hbWUgdG8gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcAppbmRleCAzZmIzNDVkLi40NTJmM2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eS5jcHAKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MyBJZ2FsaWEgUy5MLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI3LDEyICsyOCw2IEBACiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgog
Ci0jaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+Ci0jZWxp
ZiBQTEFURk9STShFRkwpCi0jaW5jbHVkZSA8V2ViQ29yZS9FcnJvcnNFZmwuaD4KLSNlbmRpZgot
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OkN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5KENoaWxkUHJvY2Vzc1Byb3h5KiBjaGlsZFByb2Nlc3NQcm94
eSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQpAQCAtNDgsMTUgKzQzLDkgQEAgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgpCiAgICAg
bV9jaGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAotdm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKLXsKLSAgICBt
X3Byb2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpLmludmFsaWRhdGUoKnRo
aXMpOwotfQotCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmco
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoKS5zdGFydExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3Qp
KQotICAgICAgICBkaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIFdlYkNvcmU6OmNh
bm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0KSk7CisgICAgbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQoKS5zdGFydExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQs
IHJlcXVlc3QpOwogfQogCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9h
ZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQpAQCAtNjQsOSArNTMsMTkgQEAgdm9pZCBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJv
dG9jb2xJRCkKICAgICBtX3Byb2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgp
LnN0b3BMb2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2NvbElEKTsKIH0KIAotdm9pZCBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKK3sKKyAgICBt
X3Byb2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpLmludmFsaWRhdGUoKnRo
aXMpOworfQorCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojp3YXNSZWRpcmVjdGVk
VG9SZXF1ZXN0KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSkKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5kKE1lc3NhZ2Vz
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Oldhc1JlZGlyZWN0ZWRUb1JlcXVlc3QoY3VzdG9tUHJv
dG9jb2xJRCwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSksIDApOworfQorCit2b2lkIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVp
bnQzMl90IGNhY2hlU3RvcmFnZVBvbGljeSkKIHsKLSAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5z
ZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZFJlY2VpdmVSZXNwb25zZShj
dXN0b21Qcm90b2NvbElELCByZXNwb25zZSwgMCksIDApOworICAgIG1fY2hpbGRQcm9jZXNzUHJv
eHktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3Bv
bnNlKGN1c3RvbVByb3RvY29sSUQsIHJlc3BvbnNlLCBjYWNoZVN0b3JhZ2VQb2xpY3kpLCAwKTsK
IH0KIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkTG9hZERhdGEodWludDY0
X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAppbmRl
eCA0Yzc0M2NkLi5mZmU5OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkuaApAQCAtNTksMTIgKzU5LDExIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcHJvY2Vzc0RpZENsb3NlKCk7CiAKLSNpZiBVU0UoU09VUCkKLSAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCB3YXNSZWRpcmVjdGVkVG9SZXF1ZXN0KHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgdWludDMyX3QgY2FjaGVTdG9yYWdlUG9saWN5KTsKICAgICB2b2lkIGRpZExvYWRE
YXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
OwogICAgIHZvaWQgZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCmluZGV4IDA2NDFjNzcuLjI5YWNjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTQ3LDYgKzE0NywxMiBAQCBzdGF0aWMgV2Vi
c2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbihBUEk6OgogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQogCitzdGF0aWMgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdsb2JhbFVSTFNjaGVtZXNX
aXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzZXQ7CisgICAgcmV0
dXJuIHNldDsKK30KKwogV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIDogbV9jb25maWd1cmF0aW9u
KGNvbmZpZ3VyYXRpb24uY29weSgpKQogICAgICwgbV9oYXZlSW5pdGlhbEVtcHR5UHJvY2Vzcyhm
YWxzZSkKQEAgLTE1NSw5ICsxNjEsNyBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wo
QVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2F1
dG9tYXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCkp
CiAgICAgLCBtX2Rvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpEb3dubG9hZENs
aWVudD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCkpCi0jaWYgVVNFKFNPVVApCiAgICAgLCBtX2N1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50PigpKQotI2VuZGlmCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoVmlz
aXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rc1BvcHVsYXRlZChm
YWxzZSkKICAgICAsIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIodGhpcykKQEAgLTM1Miw2ICsz
NTYsMTIgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdv
cmtQcm9jZXNzKCkKICAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZVNpemVPdmVycmlkZSA9IG1fY29u
ZmlndXJhdGlvbi0+ZGlza0NhY2hlU2l6ZU92ZXJyaWRlKCk7CiAgICAgcGFyYW1ldGVycy5jYW5I
YW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbiA9IG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJU
cnVzdEV2YWx1YXRpb247CiAKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGdsb2JhbFVS
TFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpKQorICAgICAgICBwYXJhbWV0ZXJz
LnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwor
CisgICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9y
Q3VzdG9tUHJvdG9jb2xzKQorICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVk
Rm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOworCiAgICAgcGFyYW1ldGVycy5kaXNr
Q2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNoZURpcmVjdG9yeSgpOwog
ICAgIGlmICghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFy
YW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKQEAgLTk2OCwxMiArOTc4LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYgdXJsU2NoZW1l
KQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVnaXN0ZXJV
UkxTY2hlbWVBc0NPUlNFbmFibGVkKHVybFNjaGVtZSkpOwogfQogCi1IYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgV2ViUHJvY2Vzc1Bvb2w6Omdsb2JhbFVSTFNjaGVt
ZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzZXQ7Ci0gICAg
cmV0dXJuIHNldDsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJHbG9iYWxVUkxT
Y2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoY29uc3QgU3RyaW5nJiB1cmxTY2hl
bWUpCiB7CiAgICAgaWYgKCF1cmxTY2hlbWUpCkBAIC0xMzY4LDE3ICsxMzcyLDE0IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnNGaWx0ZXJpbmdPdXRFbnRy
aWVzQWRkZWRBZnRlclRpbWUoCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyU2NoZW1l
Rm9yQ3VzdG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0jaWYgVVNFKFNPVVAp
Ci0gICAgbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hZGQoc2NoZW1l
KTsKLSNlbmRpZgorICAgIGlmICghZ2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90b2NvbEhh
bmRsZXJzKCkuY29udGFpbnMoc2NoZW1lKSkKKyAgICAgICAgbV91cmxTY2hlbWVzUmVnaXN0ZXJl
ZEZvckN1c3RvbVByb3RvY29scy5hZGQoc2NoZW1lKTsKICAgICBzZW5kVG9OZXR3b3JraW5nUHJv
Y2VzcyhNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpSZWdpc3RlclNjaGVtZShzY2hl
bWUpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3Rv
bVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewotI2lmIFVTRShTT1VQKQogICAgIG1f
dXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMucmVtb3ZlKHNjaGVtZSk7Ci0j
ZW5kaWYKICAgICBzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpVbnJlZ2lzdGVyU2NoZW1lKHNjaGVtZSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDRlZDBjNTkuLjJiODNkNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xMzcsOSArMTM3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4pOwogICAgIHZvaWQgc2V0RG93bmxvYWRDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+KTsKICAgICB2b2lkIHNldEF1
dG9tYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4pOwot
I2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4mJik7Ci0jZW5k
aWYKIAogICAgIHZvaWQgc2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKHVuc2lnbmVkKTsgLy8g
Q2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBydW5uaW5nLgog
ICAgIHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcygpIGNvbnN0IHsgcmV0dXJuICFt
X2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKSA/IFVJTlRfTUFYIDogbV9jb25m
aWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCk7IH0KQEAgLTIzMSw5ICsyMjksNyBAQCBw
dWJsaWM6CiAgICAgQVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudCYgaGlzdG9yeUNsaWVu
dCgpIHsgcmV0dXJuICptX2hpc3RvcnlDbGllbnQ7IH0KICAgICBXZWJDb250ZXh0Q2xpZW50JiBj
bGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCi0jaWYgVVNFKFNPVVApCiAgICAgQVBJOjpD
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQmIGN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgp
IGNvbnN0IHsgcmV0dXJuICptX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDsgfQotI2VuZGlm
CiAKICAgICBXZWJJY29uRGF0YWJhc2UqIGljb25EYXRhYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aWNvbkRhdGFiYXNlLmdldCgpOyB9CiAKQEAgLTMzMCw3ICszMjYsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYpOwog
Ci0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBn
bG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMoKTsKICAgICBzdGF0aWMg
dm9pZCByZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVy
cyhjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyR2xvYmFsVVJMU2No
ZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhhbmRsZXJzKGNvbnN0IFN0cmluZyYpOwogCkBAIC00
NjgsOSArNDYzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0
aW9uQ2xpZW50PiBtX2F1dG9tYXRpb25DbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6
RG93bmxvYWRDbGllbnQ+IG1fZG93bmxvYWRDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQ
STo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+IG1faGlzdG9yeUNsaWVudDsKLSNpZiBVU0Uo
U09VUCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQ+IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OwotI2VuZGlmCiAKICAgICBSZWZQdHI8
V2ViQXV0b21hdGlvblNlc3Npb24+IG1fYXV0b21hdGlvblNlc3Npb247CiAKQEAgLTQ5NCw2ICs0
ODcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAgICAgSGFz
aFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0NhY2hlUGFydGl0aW9uZWQ7CiAjZW5k
aWYKKyAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtX3VybFNj
aGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzOwogCiAgICAgYm9vbCBtX2Fsd2F5c1Vz
ZXNDb21wbGV4VGV4dENvZGVQYXRoOwogICAgIGJvb2wgbV9zaG91bGRVc2VGb250U21vb3RoaW5n
OwpAQCAtNTQ4LDcgKzU0Miw2IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoU09VUCkKICAgICBib29s
IG1faWdub3JlVExTRXJyb3JzIHsgdHJ1ZSB9OwotICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+IG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2Nv
bHM7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9tZW1vcnlDYWNoZURpc2FibGVkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
LmNwcAppbmRleCBjZDFkMzc3Li5mYTY0M2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcApAQCAtNDEsNyAr
NDEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJvb2wgc3RhcnRMb2FkaW5n
KEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkg
b3ZlcnJpZGUKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBh
dXRvIHVybFJlcXVlc3QgPSBBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNvdXJjZVJlcXVlc3Qp
OwogICAgICAgICBSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IEV3a1VybFNj
aGVtZVJlcXVlc3Q6OmNyZWF0ZShtYW5hZ2VyLCB1cmxSZXF1ZXN0LnB0cigpLCBjdXN0b21Qcm90
b2NvbElEKTsKQEAgLTQ5LDExICs0OSwxMCBAQCBwcml2YXRlOgogICAgICAgICBSZWZQdHI8V2Vi
S2l0VVJJU2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IChtX2NsaWVudC0+bV91cmlTY2hlbWVIYW5k
bGVycykuZ2V0KHNjaGVtZSk7CiAgICAgICAgIEFTU0VSVChoYW5kbGVyLmdldCgpKTsKICAgICAg
ICAgaWYgKCFoYW5kbGVyLT5oYXNDYWxsYmFjaygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgKG1fY2xpZW50LT5tX3VyaVNjaGVtZVJl
cXVlc3RzKS5zZXQoY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCk7CiAgICAgICAgIGhhbmRsZXIt
PnBlcmZvcm1DYWxsYmFjayhyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgdm9pZCBzdG9wTG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYs
IHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcAppbmRleCA0ZTQyYzVh
Li4zZDgxZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQ
cm9jZXNzUG9vbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dl
YlByb2Nlc3NQb29sU291cC5jcHAKQEAgLTQwLDggKzQwLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmEKICAgICBwYXJhbWV0ZXJzLmNvb2tpZUFjY2VwdFBvbGljeSA9IG1faW5pdGlhbEhUVFBD
b29raWVBY2NlcHRQb2xpY3k7CiAgICAgcGFyYW1ldGVycy5pZ25vcmVUTFNFcnJvcnMgPSBtX2ln
bm9yZVRMU0Vycm9yczsKICAgICBwYXJhbWV0ZXJzLmxhbmd1YWdlcyA9IFdlYkNvcmU6OnVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMoKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IG1fdXJs
U2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMpCi0gICAgICAgIHBhcmFtZXRlcnMu
dXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYXBwZW5kKHNjaGVtZSk7CiAg
ICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcgPSBm
YWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGJiY2Q3OTYuLjcyZDQ1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU5OSw3ICs1OTksNiBAQAog
CQkyOTg0RjU4ODE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDI5ODRGNTg2MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkyOTg0RjU4OTE2NEJBMDk1MDA0QkMwQzYgLyogQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODRGNTg3MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90
b2NvbE1hbmFnZXJNZXNzYWdlcy5oICovOyB9OwogCQkyOUFEMzA5MzE2NEI0QzVEMDA3MkRFQTkg
LyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QUQzMDkyMTY0QjRDNUQwMDcyREVBOSAvKiBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eS5oICovOyB9OwotCQkyOUFEMzA5NjE2NEI0QzkzMDA3MkRFQTkg
LyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUFEMzA5NTE2NEI0QzkzMDA3MkRFQTkgLyogQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gKi87IH07CiAJCTI5Q0Q1NUFBMTI4RTI5NEYw
MDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRDU1QTgxMjhFMjk0RjAwMTMz
Qzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggKi87IH07CiAJCTI5Q0Q1
NUFCMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0Q1NUE5
MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAq
LzsgfTsKIAkJMkQxMDg3NjAxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTA4NzVFMUQy
QzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgKi87IH07CkBAIC0xMTI2LDYgKzEx
MjUsMTAgQEAKIAkJN0E3OTFFRkExQzdDRkNGMTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJN0E3
OTFFRkIxQzdDRkQwMTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QTc5MUVGODFDN0NGQjEwMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
TWVzc2FnZXMuaCAqLzsgfTsKIAkJN0E3OTFFRkMxQzdEMDhDNTAwQzRDNTJCIC8qIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLzsgfTsKKwkJN0E4MjFGNEExRTJGNjVFOTAwNjA0NTc3
IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBODIxRjQ5MUUyRjY1REQwMDYwNDU3NyAvKiBDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAgKi87IH07CisJCTdBODIxRjRDMUUyRjY3MzkwMDYw
NDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBODIxRjRCMUUyRjY2NDgwMDYwNDU3NyAvKiBD
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCAqLzsgfTsKKwkJN0E4MjFGNEUxRTJGNjdBODAw
NjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBODIxRjREMUUyRjY3OUUwMDYwNDU3NyAv
KiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0gKi87IH07CisJCTdBODIxRjUwMUUyRjdB
NzUwMDYwNDU3NyAvKiBBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBODIxRjRGMUUyRjdBNUMwMDYw
NDU3NyAvKiBBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCAqLzsgfTsKIAkJN0MwNjVG
MkIxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYy
OTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNw
cCAqLzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFBODE3M0IwQkNBMDA1ODZBRTIgLyogV0tQ
bHVnaW5JbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlv
bi5jcHAgKi87IH07CkBAIC0yNjg2LDcgKzI2ODksNiBAQAogCQkyOTg0RjU4NjE2NEJBMDk1MDA0
QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbVByb3RvY29sTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODRGNTg3MTY0
QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUFEMzA5MjE2NEI0QzVEMDA3MkRFQTkg
LyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDsgcGF0aCA9IEN1c3RvbVByb3Rv
Y29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkyOUFEMzA5NTE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbTsgcGF0aCA9IEN1c3RvbVByb3RvY29scy9tYWMv
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI5QUQzMDk3MTY0QjRFMjEwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbjsgcGF0aCA9IEN1c3RvbVByb3RvY29scy9DdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5Q0Q1
NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RCYXNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzI2
NSw2ICszMjY3LDEwIEBACiAJCTdBNUUzOTQ5MUQ1QkQ4QTcwMEI0QjdDRSAvKiBjb20ubWFjcm9t
ZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAi
Y29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2IiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QTc5MUVGODFDN0NGQjEwMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3OTFFRjkxQzdDRkIzNzAwQzRDNTJCIC8qIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNz
YWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTgyMUY0OTFF
MkY2NUREMDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHku
Y3BwOyBwYXRoID0gQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E4MjFGNEIxRTJGNjY0ODAwNjA0NTc3
IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0E4MjFGNEQxRTJGNjc5RTAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0E4MjFGNEYxRTJGN0E1QzAwNjA0NTc3IC8qIEFQSUN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E5Q0Q4
QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTlDRDhDMTFD
Nzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2
QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ4OTAsNiArNDg5Niw4IEBACiAJCQkJ
OTlDODFENTYxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQubW0gKi8sCiAJCQkJ
OTkwRDI4QjcxQzY1MzlBMDAwOTg2OTc3IC8qIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggKi8s
CiAJCQkJOTkwRDI4QjgxQzY1MzlBMDAwOTg2OTc3IC8qIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50
Lm1tICovLAorCQkJCTdBODIxRjRCMUUyRjY2NDgwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuaCAqLywKKwkJCQk3QTgyMUY0RDFFMkY2NzlFMDA2MDQ1NzcgLyogQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tICovLAogCQkJCTgzODkxQjZBMUE2OEMzMEIwMDMwRjM4
NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oICovLAogCQkJCTgzODkxQjZCMUE2OEMzMEIw
MDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5tbSAqLywKIAkJCQlBMURGNjMxMTE4
RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQuaCAqLywKQEAgLTUwNTEsNiArNTA1OSw3
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyOUFEMzA5NDE2NEI0QzgzMDA3MkRFQTkgLyogbWFj
ICovLAogCQkJCTI5QUQzMDkyMTY0QjRDNUQwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eS5oICovLAorCQkJCTdBODIxRjQ5MUUyRjY1REQwMDYwNDU3NyAvKiBDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eS5jcHAgKi8sCiAJCQkJMjlBRDMwOTcxNjRCNEUyMTAwNzJERUE5IC8q
IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJKTsKIAkJCW5h
bWUgPSBDdXN0b21Qcm90b2NvbHM7CkBAIC01MDU5LDcgKzUwNjgsNiBAQAogCQkyOUFEMzA5NDE2
NEI0QzgzMDA3MkRFQTkgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKLQkJCQkyOUFEMzA5NTE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHlNYWMubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC02Mzk3LDYgKzY0MDUsNyBAQAogCQkJCTk5QzgxRDVCMUMyMEU4
MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi8sCiAJCQkJOTkwRDI4QjMxQzY1
MjZENDAwOTg2OTc3IC8qIEFQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggKi8sCiAJCQkJMDc2
RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi8sCisJCQkJ
N0E4MjFGNEYxRTJGN0E1QzAwNjA0NTc3IC8qIEFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5oICovLAogCQkJCTgzODkxQjYyMUE2OEIzNDIwMDMwRjM4NiAvKiBBUElEaWFnbm9zdGljTG9n
Z2luZ0NsaWVudC5oICovLAogCQkJCTFGN0QzNkMwMThEQTUxM0YwMEQ5RDY1OSAvKiBBUElEb3du
bG9hZENsaWVudC5oICovLAogCQkJCTMxN0ZFN0MxMUM0ODdBNjYwMEEwQ0E4OSAvKiBBUElFeHBl
cmltZW50YWxGZWF0dXJlLmNwcCAqLywKQEAgLTc2NzUsNiArNzY4NCw3IEBACiAJCQkJN0NBMzc5
M0UxQUMzNzhCMzAwNzlEQzM3IC8qIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Qzg5RDJCQTFBNkIwRjJDMDAzQTVGREUgLyogX1dLVXNl
ckNvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDODlEMkJDMUE2QjBGNUIwMDNB
NUZERSAvKiBfV0tVc2VyQ29udGVudEZpbHRlckludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3QTgyMUY1MDFFMkY3QTc1MDA2MDQ1NzcgLyogQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Qzg4MkRGNzFDN0U5OTY1MDA2QkY3MzEgLyogX1dL
VXNlckNvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4ODJERjkxQzdFOTk2RjAw
NkJGNzMxIC8qIF9XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0NCMzY1QUExRDMxREI3MDAwNzE1OENBIC8qIF9XS1VzZXJJbml0aWF0ZWRBY3Rpb24uaCBp
biBIZWFkZXJzICovLApAQCAtNzk3OCw2ICs3OTg4LDcgQEAKIAkJCQkxQUM1RkZDMjE3NEJGRDFC
MDAwMTQ4M0QgLyogUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBMEVDOTA2MTI0QzBBQjgwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUEwRUM5MEYxMjRDMEFGNTAwN0VGNEE1IC8qIFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0E4MjFGNEMxRTJGNjcz
OTAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUE3ODY1QkExNkNBQzcxNTAwQUNFODNBIC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJCQjZEMTE0MTE3QjREMDAw
RjM1RDQgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEyRDkwRDIxMjgxQzk2NjAwMUVCOTYyIC8qIFBsdWdpblByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLApAQCAtOTI4MCw3ICs5MjkxLDYgQEAKIAkJCQlCODc4
QjYxNjEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUMxNDI3MUQxQzIzRjhDRjAwRDQxMTgzIC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNv
Y29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk4NEY1ODgxNjRCQTA5NTAwNEJDMEM2IC8qIEN1
c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQkyOUFEMzA5NjE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTg0RjU3QzE2NEI5MTVGMDA0QkMwQzYgLyogQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTFFMzUxRkYxODBGNUQwRjAwRTUzQkU5IC8qIERhdGFiYXNlUHJvY2Vzcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MTVFNzcyQjE4NDAwOEI5MDAwNzIwM0YgLyogRGF0YWJhc2VQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTkyMSw2ICs5OTMx
LDcgQEAKIAkJCQkxQUI0MEVFNTFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZp
ZXJzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc1RkQxMjRGRjAyNzAwNjhGMjBBIC8qIFdL
TXV0YWJsZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUZGMTI0RkYwMjcwMDY4
RjIwQSAvKiBXS011dGFibGVEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdBODIx
RjRBMUUyRjY1RTkwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQTVCMUM1MDE4OTg2MDZGMDA0RkNGOUIgLyogV0tOYXZpZ2F0aW9u
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyNTZFMzcxOEExQTc4ODAwNkZCOTIyIC8qIFdLTmF2
aWdhdGlvbkFjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEM0E2NURBMUE3QzNBMUYwMENB
QzYzNyAvKiBXS05hdmlnYXRpb25BY3Rpb25SZWYuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDAy
Myw2ICsxMDAzNCw3IEBACiAJCQkJMUFENjBGNUQxOEUyMEY0QzAwMjBDMDM0IC8qIFdLV2luZG93
RmVhdHVyZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTdDMERGNjFCN0QxRjEwMDBBOUI4NDgg
LyogV0tXaW5kb3dGZWF0dXJlc1JlZi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0JFQ0RFNzE2
QjY0MTY4MDAwNDdBMUEgLyogWFBDU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywK
KwkJCQk3QTgyMUY0RTFFMkY2N0E4MDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299130</attachid>
            <date>2017-01-18 02:59:59 -0800</date>
            <delta_ts>2017-01-18 05:03:30 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>wk2-custom-protocols.diff</filename>
            <type>text/plain</type>
            <size>41298</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggZjA3NDAyYS4uZGRjMmE5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTQxNyw2ICs0MTcsOCBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAogCisgICAgVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcAorCiAgICAg
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKIAogICAgIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlNzQ4NTQ1Li4wODhkOGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQpAQCAtMTI4LDggKzEyOCw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNF
UwogCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCiAK
LSAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eVNvdXAuY3BwCi0KICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdp
bkluZm9TdG9yZVVuaXguY3BwCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9j
ZXNzUHJveHlVbml4LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDg3YTU1OWEu
LjY2ZTU1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yODMsOCArMjgzLDYgQEAg
bGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvbGludXgvTWVtb3J5
UHJlc3N1cmVNb25pdG9yLmNwcAogCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcAotCiAgICAgVUlQcm9j
ZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKIAogICAgIFVJUHJvY2Vzcy9QbHVn
aW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UK
aW5kZXggYzc1ZGFlZS4uMGJmY2M2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTI1
MSw4ICsyNTEsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vz
cy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCiAKLSAgICBVSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1t
Ci0KICAgICBVSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbQog
CiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpbkluZm9TdG9yZU1hYy5tbQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50LmgKaW5kZXggNTFlMThiZC4uOTQ1ZGUzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRMb2FkaW5nKFdlYktpdDo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCAvKiBjdXN0b21Qcm90b2NvbElEICovLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzdGFydExvYWRpbmcoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYsIHVpbnQ2NF90IC8qIGN1c3RvbVByb3RvY29sSUQgKi8sIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzdG9wTG9hZGluZyhXZWJLaXQ6OkN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLyogY3VzdG9tUHJvdG9jb2xJRCAq
LykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZShXZWJLaXQ6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCmluZGV4IGY1NTQ4NGIu
LjhjOTY5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQg
RXdrVXJsU2NoZW1lUmVxdWVzdDo6ZmluaXNoKGNvbnN0IHZvaWQqIGNvbnRlbnREYXRhLCB1aW50
NjRfdCBjb250ZW50TGVuZ3RoCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgobV91cmwpKSwK
ICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChtaW1lVHlwZSksIGNvbnRlbnRMZW5ndGgsIGVtcHR5
U3RyaW5nKCkpOwogCi0gICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRSZWNlaXZlUmVzcG9uc2Uo
bV9yZXF1ZXN0SUQsIHJlc3BvbnNlKTsKKyAgICBtX3drUmVxdWVzdE1hbmFnZXItPmRpZFJlY2Vp
dmVSZXNwb25zZShtX3JlcXVlc3RJRCwgcmVzcG9uc2UsIDApOwogICAgIG1fd2tSZXF1ZXN0TWFu
YWdlci0+ZGlkTG9hZERhdGEobV9yZXF1ZXN0SUQsIHRvSW1wbCh3a0RhdGEuZ2V0KCkpLT5kYXRh
UmVmZXJlbmNlKCkpOwogICAgIG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkRmluaXNoTG9hZGluZyht
X3JlcXVlc3RJRCk7CiAgICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5zdG9wTG9hZGluZyhtX3JlcXVl
c3RJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAppbmRleCBj
YjJmMzE0Li42YWJkOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5jcHAKQEAgLTM2LDEwICszNiw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
Ym9vbCBzdGFydExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkg
b3ZlcnJpZGUKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dFN0
YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKG1fd2ViQ29udGV4dCwgY3VzdG9tUHJvdG9jb2xJRCwg
cmVxdWVzdCwgbWFuYWdlcik7Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHZv
aWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElEKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCBhYmExYjk2
Li41OWJkYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2soR0lucHV0U3RyZWFt
KiBpbnB1dFN0cmVhbSwgR0FzeW5jCiAgICAgICAgIC8vIEZpcnN0IGNodW5rIHJlYWQuIEluIGNh
c2Ugb2YgZW1wdHkgcmVwbHkgYW4gZW1wdHkgQVBJOjpEYXRhIGlzIHNlbnQgdG8gdGhlIG5ldHdv
cmtpbmcgcHJvY2Vzcy4KICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwoVVJM
KCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+
bWltZVR5cGUuZGF0YSgpKSwKICAgICAgICAgICAgIHByaXYtPnN0cmVhbUxlbmd0aCwgZW1wdHlT
dHJpbmcoKSk7Ci0gICAgICAgIHByaXYtPm1hbmFnZXItPmRpZFJlY2VpdmVSZXNwb25zZShwcml2
LT5yZXF1ZXN0SUQsIHJlc3BvbnNlKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKHByaXYtPnJlcXVlc3RJRCwgcmVzcG9uc2UsIDApOwogICAgICAgICBwcml2LT5t
YW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEpOwogICAgIH0gZWxz
ZSBpZiAoYnl0ZXNSZWFkIHx8ICghYnl0ZXNSZWFkICYmICFwcml2LT5zdHJlYW1MZW5ndGgpKSB7
CiAgICAgICAgIC8vIFN1YnNlcXVlbnQgY2h1bmsgcmVhZC4gV2Ugb25seSBzZW5kIGFuIGVtcHR5
IEFQSTo6RGF0YSB0byB0aGUgbmV0d29ya2luZyBwcm9jZXNzIHdoZW4gc3RyZWFtIGxlbmd0aCBp
cyB1bmtub3duLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjY3YTQ1YWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2ltcG9ydCAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmgi
CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitP
QkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OworCitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQg
eworcHJpdmF0ZToKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSYsIHVpbnQ2NF90IC8qY3VzdG9tUHJvdG9jb2xJRCovLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BMb2FkaW5nKEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLypjdXN0b21Qcm90b2NvbElEKi8pIG92ZXJyaWRl
OworICAgIHZvaWQgaW52YWxpZGF0ZShDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYpIG92ZXJy
aWRlOworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2xM
b2FkZXI+PiBtX2xvYWRlck1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
bWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbQpzaW1pbGFyaXR5IGlu
ZGV4IDY5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCnJlbmFtZSB0
byBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50Lm1tCmluZGV4IDk3OWIwZDIuLjY1Mjg2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5tbQpAQCAtMjQsMzYgKzI0LDMwIEBACiAgKi8KIAogI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgor
I2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAKLSNpbXBvcnQgIkNoaWxk
UHJvY2Vzc1Byb3h5LmgiCi0jaW1wb3J0ICJDb25uZWN0aW9uLmgiCi0jaW1wb3J0ICJDdXN0b21Q
cm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgotI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIK
ICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+
CiAKLXVzaW5nIG5hbWVzcGFjZSBJUEM7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFj
ZSBXS0N1c3RvbVByb3RvY29sTG9hZGVyIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVn
YXRlPiB7CiBAcHJpdmF0ZQogICAgIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KiBfY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk7CiAgICAgdWludDY0X3QgX2N1c3RvbVByb3RvY29sSUQ7Ci0g
ICAgUmVmUHRyPENvbm5lY3Rpb24+IF9jb25uZWN0aW9uOwogICAgIE5TVVJMQ2FjaGVTdG9yYWdl
UG9saWN5IF9zdG9yYWdlUG9saWN5OwogICAgIE5TVVJMQ29ubmVjdGlvbiAqX3VybENvbm5lY3Rp
b247CiB9Ci0tIChpZClpbml0V2l0aEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OihDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSopY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgY3VzdG9tUHJv
dG9jb2xJRDoodWludDY0X3QpY3VzdG9tUHJvdG9jb2xJRCByZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyZXF1ZXN0IGNvbm5lY3Rpb246KENvbm5lY3Rpb24gKiljb25uZWN0aW9uOworLSAoaWQpaW5p
dFdpdGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkqKWN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90
KWN1c3RvbVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIKIAotLSAoaWQpaW5pdFdp
dGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkq
KWN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90KWN1
c3RvbVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb25uZWN0aW9u
OihDb25uZWN0aW9uICopY29ubmVjdGlvbgorLSAoaWQpaW5pdFdpdGhDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqKWN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90KWN1c3RvbVByb3RvY29sSUQgcmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
CiAgICAgaWYgKCFzZWxmKQpAQCAtNjEsMTAgKzU1LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogICAgIEFTU0VSVChjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSk7CiAgICAgQVNTRVJU
KHJlcXVlc3QpOwotICAgIEFTU0VSVChjb25uZWN0aW9uKTsKICAgICBfY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkgPSBjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTsKICAgICBfY3VzdG9tUHJv
dG9jb2xJRCA9IGN1c3RvbVByb3RvY29sSUQ7Ci0gICAgX2Nvbm5lY3Rpb24gPSBjb25uZWN0aW9u
OwogICAgIF9zdG9yYWdlUG9saWN5ID0gTlNVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2VkOwogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgpAQCAtNzgsNyArNzAsNiBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBfY29ubmVjdGlvbiA9
IG51bGxwdHI7CiAgICAgW191cmxDb25uZWN0aW9uIGNhbmNlbF07CiAgICAgW191cmxDb25uZWN0
aW9uIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKQEAgLTg3LDcgKzc4LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9u
ICopY29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKIHsKICAgICBS
ZXNvdXJjZUVycm9yIGNvcmVFcnJvcihlcnJvcik7Ci0gICAgX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkRmFpbFdpdGhFcnJvcihfY3VzdG9tUHJv
dG9jb2xJRCwgY29yZUVycm9yKSwgMCk7CisgICAgX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
LT5kaWRGYWlsV2l0aEVycm9yKF9jdXN0b21Qcm90b2NvbElELCBjb3JlRXJyb3IpOwogICAgIF9j
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS0+c3RvcExvYWRpbmcoX2N1c3RvbVByb3RvY29sSUQp
OwogfQogCkBAIC0xMDEsMTkgKzkyLDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAtICh2
b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZVJl
c3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKIHsKICAgICBSZXNvdXJjZVJlc3BvbnNl
IGNvcmVSZXNwb25zZShyZXNwb25zZSk7Ci0gICAgX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKF9jdXN0b21Qcm90b2Nv
bElELCBjb3JlUmVzcG9uc2UsIF9zdG9yYWdlUG9saWN5KSwgMCk7CisgICAgX2N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5LT5kaWRSZWNlaXZlUmVzcG9uc2UoX2N1c3RvbVByb3RvY29sSUQsIGNv
cmVSZXNwb25zZSwgX3N0b3JhZ2VQb2xpY3kpOwogfQogCiAtICh2b2lkKWNvbm5lY3Rpb246KE5T
VVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEK
IHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY29yZURhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwotICAgIF9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZExvYWREYXRhKF9jdXN0b21Q
cm90b2NvbElELCBjb3JlRGF0YSksIDApOworICAgIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS0+ZGlkTG9hZERhdGEoX2N1c3RvbVByb3RvY29sSUQsIGNvcmVEYXRhKTsKIH0KIAogLSAoTlNV
UkxSZXF1ZXN0ICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiB3aWxs
U2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNV
UkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UKIHsKICAgICBpZiAocmVkaXJlY3RSZXNwb25z
ZSkgewotICAgICAgICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjpXYXNSZWRpcmVjdGVkVG9SZXF1ZXN0KF9jdXN0b21Qcm90b2NvbElELCByZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlKSwgMCk7CisgICAgICAgIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eS0+d2FzUmVkaXJlY3RlZFRvUmVxdWVzdChfY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSk7CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogICAgIHJldHVy
biByZXF1ZXN0OwpAQCAtMTIxLDcgKzExMiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
IC0gKHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29ubmVjdGlvbiAqKWNv
bm5lY3Rpb24KIHsKLSAgICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpEaWRGaW5pc2hMb2FkaW5nKF9jdXN0b21Qcm90b2NvbElEKSwgMCk7CisgICAg
X2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LT5kaWRGaW5pc2hMb2FkaW5nKF9jdXN0b21Qcm90
b2NvbElEKTsKICAgICBfY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHktPnN0b3BMb2FkaW5nKF9j
dXN0b21Qcm90b2NvbElEKTsKIH0KIApAQCAtMTI5LDM5ICsxMjAsMjcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGlsZFByb2Nlc3NQcm94eSogY2hp
bGRQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKLSAgICA6IG1fY2hp
bGRQcm9jZXNzUHJveHkoY2hpbGRQcm9jZXNzUHJveHkpCi0gICAgLCBtX3Byb2Nlc3NQb29sKHBy
b2Nlc3NQb29sKQotewotICAgIEFTU0VSVChtX2NoaWxkUHJvY2Vzc1Byb3h5KTsKLSAgICBtX2No
aWxkUHJvY2Vzc1Byb3h5LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKLX0KLQotQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgpCi17
Ci0gICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLX0K
LQotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY29yZVJlcXVlc3QpCit2
b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3RhcnRMb2FkaW5nKEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIGNvcmVSZXF1ZXN0KQogewogICAgIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCA9IGNvcmVSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKICAg
ICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLQ3VzdG9tUHJvdG9jb2xM
b2FkZXIgKmxvYWRlciA9IFtbV0tDdXN0b21Qcm90b2NvbExvYWRlciBhbGxvY10gaW5pdFdpdGhD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTp0aGlzIGN1c3RvbVByb3RvY29sSUQ6Y3VzdG9tUHJv
dG9jb2xJRCByZXF1ZXN0OnJlcXVlc3QgY29ubmVjdGlvbjptX2NoaWxkUHJvY2Vzc1Byb3h5LT5j
b25uZWN0aW9uKCldOworICAgIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgKmxvYWRlciA9IFtbV0tD
dXN0b21Qcm90b2NvbExvYWRlciBhbGxvY10gaW5pdFdpdGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eTombWFuYWdlciBjdXN0b21Qcm90b2NvbElEOmN1c3RvbVByb3RvY29sSUQgcmVxdWVzdDpy
ZXF1ZXN0XTsKICAgICBBU1NFUlQobG9hZGVyKTsKICAgICBBU1NFUlQoIW1fbG9hZGVyTWFwLmNv
bnRhaW5zKGN1c3RvbVByb3RvY29sSUQpKTsKICAgICBtX2xvYWRlck1hcC5hZGQoY3VzdG9tUHJv
dG9jb2xJRCwgbG9hZGVyKTsKICAgICBbbG9hZGVyIHJlbGVhc2VdOwogfQogCi12b2lkIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElEKQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0b3BMb2FkaW5nKEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKIHsKICAg
ICBtX2xvYWRlck1hcC5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CiB9CiAKLXZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCit2b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudDo6aW52YWxpZGF0ZShDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYp
CiB7CisgICAgLy8gRklYTUU6IGl0ZXJhdGUgdGhlIGxvYWRlciBtYXAgYW5kIHJlbW92ZSBsb2Fk
ZXJzIGZvciB0aGUgZ2l2ZW4gbWFuYWdlci4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCmluZGV4IGJlYmNjYTYuLjRlZGFjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAKKyNp
bXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2ltcG9ydCAiTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKQEAgLTE0NSw2ICsxNDYsOCBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIElQQzo6c2V0
QWxsb3dzRGVjb2RpbmdTZWNLZXlSZWYodHJ1ZSk7CiAgICAgV2ViS2l0OjpXZWJNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpOwogI2VuZGlmCisKKyAgICBzZXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQ+KCkpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMjUzLDkgKzI1Niw2IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgcGFyYW1ldGVycy5wYXJlbnRQcm9jZXNzTmFtZSA9IFtb
TlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gcHJvY2Vzc05hbWVdOwogICAgIHBhcmFtZXRlcnMu
dWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllciA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxl
SWRlbnRpZmllcl07CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGdsb2JhbFVSTFNj
aGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpKQotICAgICAgICBwYXJhbWV0ZXJzLnVy
bFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwotCiAg
ICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXTsKIAogICAgIHBhcmFtZXRlcnMuaHR0cFByb3h5ID0gW2RlZmF1bHRzIHN0cmlu
Z0ZvcktleTpXZWJLaXQySFRUUFByb3h5RGVmYXVsdHNLZXldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAKc2ltaWxh
cml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNw
cApyZW5hbWUgdG8gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcAppbmRleCAzZmIzNDVkLi40NTJmM2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eS5jcHAKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MyBJZ2FsaWEgUy5MLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI3LDEyICsyOCw2IEBACiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgog
Ci0jaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+Ci0jZWxp
ZiBQTEFURk9STShFRkwpCi0jaW5jbHVkZSA8V2ViQ29yZS9FcnJvcnNFZmwuaD4KLSNlbmRpZgot
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OkN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5KENoaWxkUHJvY2Vzc1Byb3h5KiBjaGlsZFByb2Nlc3NQcm94
eSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQpAQCAtNDgsMTUgKzQzLDkgQEAgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgpCiAgICAg
bV9jaGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAotdm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKLXsKLSAgICBt
X3Byb2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpLmludmFsaWRhdGUoKnRo
aXMpOwotfQotCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmco
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoKS5zdGFydExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3Qp
KQotICAgICAgICBkaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIFdlYkNvcmU6OmNh
bm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0KSk7CisgICAgbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQoKS5zdGFydExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQs
IHJlcXVlc3QpOwogfQogCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9h
ZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQpAQCAtNjQsOSArNTMsMTkgQEAgdm9pZCBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJv
dG9jb2xJRCkKICAgICBtX3Byb2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgp
LnN0b3BMb2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2NvbElEKTsKIH0KIAotdm9pZCBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKK3sKKyAgICBt
X3Byb2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpLmludmFsaWRhdGUoKnRo
aXMpOworfQorCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojp3YXNSZWRpcmVjdGVk
VG9SZXF1ZXN0KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSkKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5kKE1lc3NhZ2Vz
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Oldhc1JlZGlyZWN0ZWRUb1JlcXVlc3QoY3VzdG9tUHJv
dG9jb2xJRCwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSksIDApOworfQorCit2b2lkIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVp
bnQzMl90IGNhY2hlU3RvcmFnZVBvbGljeSkKIHsKLSAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5z
ZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZFJlY2VpdmVSZXNwb25zZShj
dXN0b21Qcm90b2NvbElELCByZXNwb25zZSwgMCksIDApOworICAgIG1fY2hpbGRQcm9jZXNzUHJv
eHktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3Bv
bnNlKGN1c3RvbVByb3RvY29sSUQsIHJlc3BvbnNlLCBjYWNoZVN0b3JhZ2VQb2xpY3kpLCAwKTsK
IH0KIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkTG9hZERhdGEodWludDY0
X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAppbmRl
eCA0Yzc0M2NkLi5mZmU5OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkuaApAQCAtNTksMTIgKzU5LDExIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcHJvY2Vzc0RpZENsb3NlKCk7CiAKLSNpZiBVU0UoU09VUCkKLSAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCB3YXNSZWRpcmVjdGVkVG9SZXF1ZXN0KHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgdWludDMyX3QgY2FjaGVTdG9yYWdlUG9saWN5KTsKICAgICB2b2lkIGRpZExvYWRE
YXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
OwogICAgIHZvaWQgZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCmluZGV4IDA2NDFjNzcuLjBiNjUyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTQ3LDYgKzE0NywxMiBAQCBzdGF0aWMgV2Vi
c2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbihBUEk6OgogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQogCitzdGF0aWMgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdsb2JhbFVSTFNjaGVtZXNX
aXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzZXQ7CisgICAgcmV0
dXJuIHNldDsKK30KKwogV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIDogbV9jb25maWd1cmF0aW9u
KGNvbmZpZ3VyYXRpb24uY29weSgpKQogICAgICwgbV9oYXZlSW5pdGlhbEVtcHR5UHJvY2Vzcyhm
YWxzZSkKQEAgLTE1NSw5ICsxNjEsNyBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wo
QVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2F1
dG9tYXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCkp
CiAgICAgLCBtX2Rvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpEb3dubG9hZENs
aWVudD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCkpCi0jaWYgVVNFKFNPVVApCiAgICAgLCBtX2N1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50PigpKQotI2VuZGlmCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoVmlz
aXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rc1BvcHVsYXRlZChm
YWxzZSkKICAgICAsIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIodGhpcykKQEAgLTI5OSw2ICsz
MDMsMTQgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PgogICAgICAgICBtX2F1dG9tYXRpb25DbGll
bnQgPSBXVEZNb3ZlKGF1dG9tYXRpb25DbGllbnQpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQb29s
OjpzZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PiYmIGN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCkK
K3sKKyAgICBpZiAoIWN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCkKKyAgICAgICAgbV9jdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50PigpOworICAgIGVsc2UKKyAgICAgICAgbV9jdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQgPSBXVEZNb3ZlKGN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCk7Cit9
CisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyh1bnNp
Z25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMpCiB7CiAgICAgLy8gR3VhcmQgYWdhaW5zdCBB
UEkgbWlzdXNlLgpAQCAtMzUyLDYgKzM2NCwxMiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQ
cm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKQogICAgIHBhcmFtZXRlcnMuZGlza0Nh
Y2hlU2l6ZU92ZXJyaWRlID0gbV9jb25maWd1cmF0aW9uLT5kaXNrQ2FjaGVTaXplT3ZlcnJpZGUo
KTsKICAgICBwYXJhbWV0ZXJzLmNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uID0g
bV9jYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbjsKIAorICAgIGZvciAoY29uc3Qg
YXV0byYgc2NoZW1lIDogZ2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90b2NvbEhhbmRsZXJz
KCkpCisgICAgICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90
b2NvbHMuYXBwZW5kKHNjaGVtZSk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IG1f
dXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMpCisgICAgICAgIHBhcmFtZXRl
cnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYXBwZW5kKHNjaGVtZSk7
CisKICAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+
ZGlza0NhY2hlRGlyZWN0b3J5KCk7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVj
dG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
clJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSwgcGFyYW1l
dGVycy5kaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwpAQCAtOTY4LDEyICs5ODYs
NiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQo
Y29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpSZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQodXJsU2NoZW1lKSk7
CiB9CiAKLUhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBXZWJQcm9j
ZXNzUG9vbDo6Z2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90b2NvbEhhbmRsZXJzKCkKLXsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4+IHNldDsKLSAgICByZXR1cm4gc2V0OwotfQotCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpyZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVy
cyhjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKIHsKICAgICBpZiAoIXVybFNjaGVtZSkKQEAgLTEz
NjgsMTcgKzEzODAsMTQgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z0luQXV0b1N0YXJ0
T3JpZ2luc0ZpbHRlcmluZ091dEVudHJpZXNBZGRlZEFmdGVyVGltZSgKIAogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNj
aGVtZSkKIHsKLSNpZiBVU0UoU09VUCkKLSAgICBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3Vz
dG9tUHJvdG9jb2xzLmFkZChzY2hlbWUpOwotI2VuZGlmCisgICAgaWYgKCFnbG9iYWxVUkxTY2hl
bWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMoKS5jb250YWlucyhzY2hlbWUpKQorICAgICAg
ICBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFkZChzY2hlbWUpOwog
ICAgIHNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFn
ZXI6OlJlZ2lzdGVyU2NoZW1lKHNjaGVtZSkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1
bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7
Ci0jaWYgVVNFKFNPVVApCiAgICAgbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3Rv
Y29scy5yZW1vdmUoc2NoZW1lKTsKLSNlbmRpZgogICAgIHNlbmRUb05ldHdvcmtpbmdQcm9jZXNz
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OlVucmVnaXN0ZXJTY2hlbWUoc2NoZW1l
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXgg
NGVkMGM1OS4uMmI4M2Q2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKQEAgLTEzNyw5ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIaXN0b3J5Q2xp
ZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Pik7CiAg
ICAgdm9pZCBzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENs
aWVudD4pOwogICAgIHZvaWQgc2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpBdXRvbWF0aW9uQ2xpZW50Pik7Ci0jaWYgVVNFKFNPVVApCiAgICAgdm9pZCBzZXRDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50PiYmKTsKLSNlbmRpZgogCiAgICAgdm9pZCBzZXRNYXhpbXVtTnVtYmVyT2ZQ
cm9jZXNzZXModW5zaWduZWQpOyAvLyBDYW4gb25seSBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUg
bm8gcHJvY2Vzc2VzIHJ1bm5pbmcuCiAgICAgdW5zaWduZWQgbWF4aW11bU51bWJlck9mUHJvY2Vz
c2VzKCkgY29uc3QgeyByZXR1cm4gIW1fY29uZmlndXJhdGlvbi0+bWF4aW11bVByb2Nlc3NDb3Vu
dCgpID8gVUlOVF9NQVggOiBtX2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKTsg
fQpAQCAtMjMxLDkgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBBUEk6OkxlZ2FjeUNvbnRleHRIaXN0
b3J5Q2xpZW50JiBoaXN0b3J5Q2xpZW50KCkgeyByZXR1cm4gKm1faGlzdG9yeUNsaWVudDsgfQog
ICAgIFdlYkNvbnRleHRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKLSNp
ZiBVU0UoU09VUCkKICAgICBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCYgY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gKm1fY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50OyB9Ci0jZW5kaWYKIAogICAgIFdlYkljb25EYXRhYmFzZSogaWNvbkRhdGFi
YXNlKCkgY29uc3QgeyByZXR1cm4gbV9pY29uRGF0YWJhc2UuZ2V0KCk7IH0KIApAQCAtMzMwLDcg
KzMyNiw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9j
b2woY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJv
dG9jb2woY29uc3QgU3RyaW5nJik7CiAKLSAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xI
YW5kbGVycygpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZp
bmdDdXN0b21Qcm90b2NvbEhhbmRsZXJzKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyB2b2lk
IHVucmVnaXN0ZXJHbG9iYWxVUkxTY2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMo
Y29uc3QgU3RyaW5nJik7CiAKQEAgLTQ2OCw5ICs0NjMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+IG1fYXV0b21hdGlvbkNsaWVudDsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4gbV9o
aXN0b3J5Q2xpZW50OwotI2lmIFVTRShTT1VQKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4gbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7
Ci0jZW5kaWYKIAogICAgIFJlZlB0cjxXZWJBdXRvbWF0aW9uU2Vzc2lvbj4gbV9hdXRvbWF0aW9u
U2Vzc2lvbjsKIApAQCAtNDk0LDYgKzQ4Nyw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKENBQ0hF
X1BBUlRJVElPTklORykKICAgICBIYXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFz
Q2FjaGVQYXJ0aXRpb25lZDsKICNlbmRpZgorICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+IG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHM7
CiAKICAgICBib29sIG1fYWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGg7CiAgICAgYm9vbCBt
X3Nob3VsZFVzZUZvbnRTbW9vdGhpbmc7CkBAIC01NDgsNyArNTQyLDYgQEAgcHJpdmF0ZToKIAog
I2lmIFVTRShTT1VQKQogICAgIGJvb2wgbV9pZ25vcmVUTFNFcnJvcnMgeyB0cnVlIH07Ci0gICAg
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV91cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29sczsKICNlbmRpZgogCiAgICAgYm9vbCBtX21lbW9yeUNh
Y2hlRGlzYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Jl
cXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCmluZGV4IGNkMWQzNzcuLmZhNjQzZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRF
ZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6
Ci0gICAgYm9vbCBzdGFydExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFn
ZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0KSBvdmVycmlkZQorICAgIHZvaWQgc3RhcnRMb2FkaW5nKEN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIGF1dG8gdXJsUmVxdWVzdCA9IEFQSTo6VVJMUmVxdWVzdDo6
Y3JlYXRlKHJlc291cmNlUmVxdWVzdCk7CiAgICAgICAgIFJlZlB0cjxFd2tVcmxTY2hlbWVSZXF1
ZXN0PiByZXF1ZXN0ID0gRXdrVXJsU2NoZW1lUmVxdWVzdDo6Y3JlYXRlKG1hbmFnZXIsIHVybFJl
cXVlc3QucHRyKCksIGN1c3RvbVByb3RvY29sSUQpOwpAQCAtNDksMTEgKzQ5LDEwIEBAIHByaXZh
dGU6CiAgICAgICAgIFJlZlB0cjxXZWJLaXRVUklTY2hlbWVIYW5kbGVyPiBoYW5kbGVyID0gKG1f
Y2xpZW50LT5tX3VyaVNjaGVtZUhhbmRsZXJzKS5nZXQoc2NoZW1lKTsKICAgICAgICAgQVNTRVJU
KGhhbmRsZXIuZ2V0KCkpOwogICAgICAgICBpZiAoIWhhbmRsZXItPmhhc0NhbGxiYWNrKCkpCi0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAo
bV9jbGllbnQtPm1fdXJpU2NoZW1lUmVxdWVzdHMpLnNldChjdXN0b21Qcm90b2NvbElELCByZXF1
ZXN0KTsKICAgICAgICAgaGFuZGxlci0+cGVyZm9ybUNhbGxiYWNrKHJlcXVlc3QuZ2V0KCkpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICB2b2lkIHN0b3BMb2FkaW5nKEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkgb3ZlcnJp
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQ
b29sU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9v
bFNvdXAuY3BwCmluZGV4IDRlNDJjNWEuLjU5ZTI1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcApAQCAtNDAsOCArNDAs
NiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYQogICAgIHBhcmFtZXRlcnMuY29va2llQWNjZXB0
UG9saWN5ID0gbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeTsKICAgICBwYXJhbWV0ZXJz
Lmlnbm9yZVRMU0Vycm9ycyA9IG1faWdub3JlVExTRXJyb3JzOwogICAgIHBhcmFtZXRlcnMubGFu
Z3VhZ2VzID0gV2ViQ29yZTo6dXNlclByZWZlcnJlZExhbmd1YWdlcygpOwotICAgIGZvciAoY29u
c3QgYXV0byYgc2NoZW1lIDogbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29s
cykKLSAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3Rv
Y29scy5hcHBlbmQoc2NoZW1lKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtD
YWNoZUVmZmljYWN5TG9nZ2luZyA9IGZhbHNlOwogfQogCkBAIC01MiwxMiArNTAsNCBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMp
CiAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpTZXRJZ25vcmVUTFNFcnJvcnMobV9pZ25vcmVUTFNFcnJvcnMpLCAwKTsKIH0KIAotdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4mJiBjdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQpCi17Ci0gICAgaWYgKCFjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpCi0g
ICAgICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKLSAgICBlbHNlCi0gICAgICAgIG1f
Y3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gV1RGTW92ZShjdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQpOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmJjZDc5Ni4uNzJkNDU4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTk5LDcgKzU5
OSw2IEBACiAJCTI5ODRGNTg4MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjk4NEY1ODYxNjRCQTA5NTAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTI5ODRGNTg5MTY0QkEwOTUwMDRCQzBD
NiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4NEY1ODcxNjRCQTA5NTAwNEJDMEM2IC8qIEN1
c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmggKi87IH07CiAJCTI5QUQzMDkzMTY0QjRDNUQw
MDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBRDMwOTIxNjRCNEM1RDAwNzJERUE5IC8q
IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggKi87IH07Ci0JCTI5QUQzMDk2MTY0QjRDOTMw
MDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QUQzMDk1MTY0QjRDOTMwMDcyREVB
OSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbSAqLzsgfTsKIAkJMjlDRDU1QUEx
MjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUNENTVBODEyOEUy
OTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCAqLzsgfTsK
IAkJMjlDRDU1QUIxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjlDRDU1QTkxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RC
YXNlLm1tICovOyB9OwogCQkyRDEwODc2MDFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRl
cnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQx
MDg3NUUxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmNwcCAqLzsgfTsKQEAgLTEx
MjYsNiArMTEyNSwxMCBAQAogCQk3QTc5MUVGQTFDN0NGQ0YxMDBDNEM1MkIgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzkxRUY5MUM3Q0ZCMzcwMEM0QzUyQiAv
KiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OwogCQk3QTc5MUVGQjFDN0NGRDAxMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBNzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmVNZXNzYWdlcy5oICovOyB9OwogCQk3QTc5MUVGQzFDN0QwOEM1MDBDNEM1MkIgLyog
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovOyB9OworCQk3QTgyMUY0QTFFMkY2NUU5
MDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E4MjFGNDkxRTJGNjVERDAwNjA0NTc3
IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcCAqLzsgfTsKKwkJN0E4MjFGNEMxRTJG
NjczOTAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E4MjFGNEIxRTJGNjY0ODAwNjA0
NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oICovOyB9OworCQk3QTgyMUY0RTFF
MkY2N0E4MDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E4MjFGNEQxRTJGNjc5RTAw
NjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbSAqLzsgfTsKKwkJN0E4MjFG
NTAxRTJGN0E3NTAwNjA0NTc3IC8qIEFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E4MjFGNEYxRTJG
N0E1QzAwNjA0NTc3IC8qIEFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oICovOyB9Owog
CQk3QzA2NUYyQjFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0
YVR5cGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRh
VHlwZXMuY3BwICovOyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE4MTczQjBCQ0EwMDU4NkFF
MiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbklu
Zm9ybWF0aW9uLmNwcCAqLzsgfTsKQEAgLTI2ODYsNyArMjY4OSw2IEBACiAJCTI5ODRGNTg2MTY0
QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4
NEY1ODcxNjRCQTA5NTAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1c3RvbVByb3RvY29sTWFuYWdlck1l
c3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5QUQzMDkyMTY0QjRDNUQw
MDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oOyBwYXRoID0gQ3Vz
dG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTI5QUQzMDk1MTY0QjRDOTMwMDcyREVBOSAvKiBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tOyBwYXRoID0gQ3VzdG9tUHJvdG9j
b2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjlBRDMwOTcxNjRCNEUyMTAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOyBwYXRoID0gQ3VzdG9tUHJvdG9jb2xzL0N1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyOUNENTVBODEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMjlDRDU1QTkxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zMjY1LDYgKzMyNjcsMTAgQEAKIAkJN0E1RTM5NDkxRDVCRDhBNzAwQjRCN0NFIC8qIGNv
bS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNiICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9ICJjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAvKiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyog
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdB
ODIxRjQ5MUUyRjY1REQwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eS5jcHA7IHBhdGggPSBDdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTgyMUY0QjFFMkY2NjQ4
MDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QTgyMUY0RDFFMkY2NzlFMDA2MDQ1NzcgLyogQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QTgyMUY0RjFFMkY3QTVDMDA2MDQ1NzcgLyogQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdB
OUNEOEMxMUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOUNEOEMyMUM3NzlB
RDYwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDg5MCw2ICs0ODk2LDgg
QEAKIAkJCQk5OUM4MUQ1NjFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5tbSAq
LywKIAkJCQk5OTBEMjhCNzFDNjUzOUEwMDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Npb25DbGll
bnQuaCAqLywKIAkJCQk5OTBEMjhCODFDNjUzOUEwMDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Np
b25DbGllbnQubW0gKi8sCisJCQkJN0E4MjFGNEIxRTJGNjY0ODAwNjA0NTc3IC8qIEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudC5oICovLAorCQkJCTdBODIxRjREMUUyRjY3OUUwMDYwNDU3NyAv
KiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0gKi8sCiAJCQkJODM4OTFCNkExQTY4QzMw
QjAwMzBGMzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggKi8sCiAJCQkJODM4OTFCNkIx
QTY4QzMwQjAwMzBGMzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lm1tICovLAogCQkJCUEx
REY2MzExMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5oICovLApAQCAtNTA1MSw2
ICs1MDU5LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTI5QUQzMDk0MTY0QjRDODMwMDcyREVB
OSAvKiBtYWMgKi8sCiAJCQkJMjlBRDMwOTIxNjRCNEM1RDAwNzJERUE5IC8qIEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5LmggKi8sCisJCQkJN0E4MjFGNDkxRTJGNjVERDAwNjA0NTc3IC8qIEN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcCAqLywKIAkJCQkyOUFEMzA5NzE2NEI0RTIxMDA3
MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkp
OwogCQkJbmFtZSA9IEN1c3RvbVByb3RvY29sczsKQEAgLTUwNTksNyArNTA2OCw2IEBACiAJCTI5
QUQzMDk0MTY0QjRDODMwMDcyREVBOSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAotCQkJCTI5QUQzMDk1MTY0QjRDOTMwMDcyREVBOSAvKiBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0gbWFjOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTYzOTcsNiArNjQwNSw3IEBACiAJCQkJOTlDODFE
NUIxQzIwRTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLywKIAkJCQk5OTBE
MjhCMzFDNjUyNkQ0MDA5ODY5NzcgLyogQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCAqLywK
IAkJCQkwNzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAq
LywKKwkJCQk3QTgyMUY0RjFFMkY3QTVDMDA2MDQ1NzcgLyogQVBJQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50LmggKi8sCiAJCQkJODM4OTFCNjIxQTY4QjM0MjAwMzBGMzg2IC8qIEFQSURpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50LmggKi8sCiAJCQkJMUY3RDM2QzAxOERBNTEzRjAwRDlENjU5IC8q
IEFQSURvd25sb2FkQ2xpZW50LmggKi8sCiAJCQkJMzE3RkU3QzExQzQ4N0E2NjAwQTBDQTg5IC8q
IEFQSUV4cGVyaW1lbnRhbEZlYXR1cmUuY3BwICovLApAQCAtNzY3NSw2ICs3Njg0LDcgQEAKIAkJ
CQk3Q0EzNzkzRTFBQzM3OEIzMDA3OURDMzcgLyogX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9y
ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDODlEMkJBMUE2QjBGMkMwMDNBNUZERSAv
KiBfV0tVc2VyQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4OUQyQkMxQTZC
MEY1QjAwM0E1RkRFIC8qIF9XS1VzZXJDb250ZW50RmlsdGVySW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTdBODIxRjUwMUUyRjdBNzUwMDYwNDU3NyAvKiBBUElDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDODgyREY3MUM3RTk5NjUwMDZCRjcz
MSAvKiBfV0tVc2VyQ29udGVudFdvcmxkLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Qzg4MkRGOTFD
N0U5OTZGMDA2QkY3MzEgLyogX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3Q0IzNjVBQTFEMzFEQjcwMDA3MTU4Q0EgLyogX1dLVXNlckluaXRpYXRlZEFj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC03OTc4LDYgKzc5ODgsNyBAQAogCQkJCTFBQzVGRkMy
MTc0QkZEMUIwMDAxNDgzRCAvKiBQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUEwRUM5MDYxMjRDMEFCODAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTBFQzkwRjEyNEMwQUY1MDA3RUY0QTUgLyogUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QTgyMUY0
QzFFMkY2NzM5MDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTc4NjVCQTE2Q0FDNzE1MDBBQ0U4M0EgLyogUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkJCNkQxMTQx
MTdCNEQwMDBGMzVENCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTJEOTBEMjEyODFDOTY2MDAxRUI5NjIgLyogUGx1Z2luUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCkBAIC05MjgwLDcgKzkyOTEsNiBAQAog
CQkJCUI4NzhCNjE2MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1QzE0MjcxRDFDMjNGOENGMDBENDExODMgLyogQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTg0RjU4ODE2NEJBMDk1MDA0QkMw
QzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTI5QUQzMDk2MTY0QjRDOTMwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5ODRGNTdDMTY0QjkxNUYwMDRCQzBD
NiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MUUzNTFGRjE4MEY1RDBGMDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNUU3NzJCMTg0MDA4QjkwMDA3MjAzRiAvKiBEYXRh
YmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05OTIx
LDYgKzk5MzEsNyBAQAogCQkJCTFBQjQwRUU1MUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVt
SWRlbnRpZmllcnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzVGRDEyNEZGMDI3MDA2OEYy
MEEgLyogV0tNdXRhYmxlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc1RkYxMjRG
RjAyNzAwNjhGMjBBIC8qIFdLTXV0YWJsZURpY3Rpb25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJN0E4MjFGNEExRTJGNjVFOTAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNUIxQzUwMTg5ODYwNkYwMDRGQ0Y5QiAvKiBXS05h
dmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTI1NkUzNzE4QTFBNzg4MDA2RkI5MjIg
LyogV0tOYXZpZ2F0aW9uQWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQzQTY1REExQTdD
M0ExRjAwQ0FDNjM3IC8qIFdLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTEwMDIzLDYgKzEwMDM0LDcgQEAKIAkJCQkxQUQ2MEY1RDE4RTIwRjRDMDAyMEMwMzQgLyog
V0tXaW5kb3dGZWF0dXJlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBN0MwREY2MUI3RDFGMTAw
MEE5Qjg0OCAvKiBXS1dpbmRvd0ZlYXR1cmVzUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
QkVDREU3MTZCNjQxNjgwMDA0N0ExQSAvKiBYUENTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTdBODIxRjRFMUUyRjY3QTgwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299133</attachid>
            <date>2017-01-18 05:03:30 -0800</date>
            <delta_ts>2017-02-20 02:48:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-custom-protocols.diff</filename>
            <type>text/plain</type>
            <size>45310</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggZjA3NDAyYTVjMjIuLmRkYzJhOTlhMTA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dApAQCAtNDE3LDYgKzQxNyw4IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKIAog
ICAgIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCiAKKyAgICBVSVByb2Nl
c3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3Bw
CisKICAgICBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAogCiAgICAg
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggZjZkNzBlMTc0YjIuLjRhYzhlODA4ZjRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTggQEAKKzIwMTctMDEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgorCisgICAgICAgIFJlZHVjZSBwbGF0Zm9ybSBpZmRlZnMgaW4gV2ViS2l0MiBj
dXN0b20gcHJvdG9jb2xzIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUwMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIG1hYyBpbXBsZW1lbnRhdGlvbiB1c2UgdGhlIEFQ
SUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB0byBzaGFyZSBtb3JlIGNvZGUgd2l0aCB0aGUg
c291cCBiYXNlZCBwb3J0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkuY3BwLgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBS
ZW1vdmUgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcC4KKyAgICAgICAgKiBQbGF0
Zm9ybUdUSy5jbWFrZTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6IFJlbW92
ZSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oOgorICAgICAgICAoQVBJOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyk6IE1ha2UgaXQgdm9pZCwgc2lu
Y2Ugd2Ugd2VyZSBhbHdheXMgcmV0dXJuaW5nIHRydWUgYW5kIHRoZQorICAgICAgICByZXR1cm5l
ZCB2YWx1ZSB3YXMgaWdub3JlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJs
X3NjaGVtZV9yZXF1ZXN0LmNwcDoKKyAgICAgICAgKEV3a1VybFNjaGVtZVJlcXVlc3Q6OmZpbmlz
aCk6IFVwZGF0ZSB0byBuZXcgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgQVBJLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5j
cHA6CisgICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNrKTogRGl0dG8u
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbExvYWRlciBpbml0
V2l0aEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OmN1c3RvbVByb3RvY29sSUQ6cmVxdWVzdDpd
KToKKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbExvYWRlciBkZWFsbG9jXSk6CisgICAgICAg
ICgtW1dLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgY29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0p
OgorICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29sTG9hZGVyIGNvbm5lY3Rpb246ZGlkUmVjZWl2
ZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29sTG9hZGVyIGNvbm5lY3Rp
b246ZGlkUmVjZWl2ZURhdGE6XSk6CisgICAgICAgICgtW1dLQ3VzdG9tUHJvdG9jb2xMb2FkZXIg
Y29ubmVjdGlvbjp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpdKToKKyAgICAgICAg
KC1bV0tDdXN0b21Qcm90b2NvbExvYWRlciBjb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzpdKToK
KyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OjpzdGFydExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0b3BM
b2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Ojpp
bnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6
ZSk6IFNldCB0aGUgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOiBSZW1v
dmUgY29kZSB0aGF0IGlzIG5vdyBzaGFyZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0Rp
ZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6Ondh
c1JlZGlyZWN0ZWRUb1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpnbG9i
YWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMpOiBKdXN0IG1vdmVkIGhlcmUg
dG8gdXNlIGl0IGZyb20gZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKTogUmVtb3ZlIHNvdXAgaWZkZWZzLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50KTogTW92ZWQgZnJvbSB0aGUgc291cCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKTogSW5pdGlhbGl6ZSBjdXN0
b20gcHJvdG9jb2xzIHBhcmFtZXRlcnMuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpyZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKTogUmVnaXN0ZXIgdGhlIHByb3RvY29s
IGlmIG5vdCBhbHJlYWR5IHJlZ2lzdGVyZWQgZ2xvYmFsbHkuCisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2wpOiBSZW1vdmUg
c291cCBpZmRlZnMuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6IFJlbW92
ZSBzb3VwIGlmZGVmcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3MpOiBSZW1vdmUgY29kZSB0aGF0IGlzIG5vdyBzaGFyZWQuCisgICAgICAg
ICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE3LTAxLTE4ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW01vZGVybiBNZWRpYSBD
b250cm9sc10gVHVybiBtb2Rlcm4gbWVkaWEgY29udHJvbHMgb24gYnkgZGVmYXVsdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlNzQ4NTQ1NTA2Zi4uMDg4ZDhlYmQ0MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMjgsOCArMTI4LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0
Ml9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVm
bC5jcHAKIAotICAgIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAKLQogICAgIFVJUHJvY2Vzcy9QbHVnaW5zL3Vu
aXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1Bs
dWdpblByb2Nlc3NQcm94eVVuaXguY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXgg
ODdhNTU5YTgxZDUuLjY2ZTU1ODA3NjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
MjgzLDggKzI4Myw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgVUlQcm9j
ZXNzL2xpbnV4L01lbW9yeVByZXNzdXJlTW9uaXRvci5jcHAKIAotICAgIFVJUHJvY2Vzcy9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5j
cHAKLQogICAgIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwCiAKICAg
ICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtTWFjLmNtYWtlCmluZGV4IGM3NWRhZWU2NDgxLi4wYmZjYzY3ZTFmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTI1MSw4ICsyNTEsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQy
X1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFj
Lm1tCiAKLSAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5TWFjLm1tCi0KICAgICBVSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0
d29ya1Byb2Nlc3NQcm94eU1hYy5tbQogCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdp
bkluZm9TdG9yZU1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKaW5kZXggNTFlMThiZGQ0
NjkuLjk0NWRlM2ZjYTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKQEAgLTQxLDcgKzQx
LDcgQEAgY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5DdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwg
Ym9vbCBzdGFydExvYWRpbmcoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYsIHVp
bnQ2NF90IC8qIGN1c3RvbVByb3RvY29sSUQgKi8sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0TG9hZGluZyhX
ZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLyogY3VzdG9tUHJv
dG9jb2xJRCAqLywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHN0b3BMb2FkaW5nKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkm
LCB1aW50NjRfdCAvKiBjdXN0b21Qcm90b2NvbElEICovKSB7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBpbnZhbGlkYXRlKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1l
X3JlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9z
Y2hlbWVfcmVxdWVzdC5jcHAKaW5kZXggZjU1NDg0YmY4MWMuLjhjOTY5N2M5MWJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Nj
aGVtZV9yZXF1ZXN0LmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEV3a1VybFNjaGVtZVJlcXVl
c3Q6OmZpbmlzaChjb25zdCB2b2lkKiBjb250ZW50RGF0YSwgdWludDY0X3QgY29udGVudExlbmd0
aAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoV2ViQ29yZTo6VVJMKFdl
YkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KG1fdXJsKSksCiAgICAgICAgIFN0cmluZzo6
ZnJvbVVURjgobWltZVR5cGUpLCBjb250ZW50TGVuZ3RoLCBlbXB0eVN0cmluZygpKTsKIAotICAg
IG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1fcmVxdWVzdElELCByZXNw
b25zZSk7CisgICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRSZWNlaXZlUmVzcG9uc2UobV9yZXF1
ZXN0SUQsIHJlc3BvbnNlLCAwKTsKICAgICBtX3drUmVxdWVzdE1hbmFnZXItPmRpZExvYWREYXRh
KG1fcmVxdWVzdElELCB0b0ltcGwod2tEYXRhLmdldCgpKS0+ZGF0YVJlZmVyZW5jZSgpKTsKICAg
ICBtX3drUmVxdWVzdE1hbmFnZXItPmRpZEZpbmlzaExvYWRpbmcobV9yZXF1ZXN0SUQpOwogICAg
IG1fd2tSZXF1ZXN0TWFuYWdlci0+c3RvcExvYWRpbmcobV9yZXF1ZXN0SUQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKaW5kZXggY2IyZjMxNDE4YTkuLjZhYmQ5
MGYwZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKQEAg
LTM2LDEwICszNiw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBzdGFy
dExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IGN1
c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgb3ZlcnJpZGUK
KyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdl
ciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dFN0YXJ0TG9hZGlu
Z0N1c3RvbVByb3RvY29sKG1fd2ViQ29udGV4dCwgY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCwg
bWFuYWdlcik7Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHZvaWQgc3RvcExv
YWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElEKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCBhYmExYjk2NGY3My4uNTli
ZGI5MzBkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCkBAIC0xOTMsNyArMTkzLDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRDYWxsYmFjayhHSW5wdXRTdHJlYW0q
IGlucHV0U3RyZWFtLCBHQXN5bmMKICAgICAgICAgLy8gRmlyc3QgY2h1bmsgcmVhZC4gSW4gY2Fz
ZSBvZiBlbXB0eSByZXBseSBhbiBlbXB0eSBBUEk6OkRhdGEgaXMgc2VudCB0byB0aGUgbmV0d29y
a2luZyBwcm9jZXNzLgogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKFVSTChVUkwo
KSwgU3RyaW5nOjpmcm9tVVRGOChwcml2LT51cmkpKSwgU3RyaW5nOjpmcm9tVVRGOChwcml2LT5t
aW1lVHlwZS5kYXRhKCkpLAogICAgICAgICAgICAgcHJpdi0+c3RyZWFtTGVuZ3RoLCBlbXB0eVN0
cmluZygpKTsKLSAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHByaXYt
PnJlcXVlc3RJRCwgcmVzcG9uc2UpOworICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRSZWNlaXZl
UmVzcG9uc2UocHJpdi0+cmVxdWVzdElELCByZXNwb25zZSwgMCk7CiAgICAgICAgIHByaXYtPm1h
bmFnZXItPmRpZExvYWREYXRhKHByaXYtPnJlcXVlc3RJRCwgd2ViRGF0YSk7CiAgICAgfSBlbHNl
IGlmIChieXRlc1JlYWQgfHwgKCFieXRlc1JlYWQgJiYgIXByaXYtPnN0cmVhbUxlbmd0aCkpIHsK
ICAgICAgICAgLy8gU3Vic2VxdWVudCBjaHVuayByZWFkLiBXZSBvbmx5IHNlbmQgYW4gZW1wdHkg
QVBJOjpEYXRhIHRvIHRoZSBuZXR3b3JraW5nIHByb2Nlc3Mgd2hlbiBzdHJlYW0gbGVuZ3RoIGlz
IHVua25vd24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjY3YTQ1YWNkNThiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCkBAIC0w
LDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudC5oIgorI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KKworT0JKQ19DTEFTUyBXS0N1c3RvbVByb3RvY29sTG9hZGVyOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTsKKworY2xhc3MgQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50IHsKK3ByaXZhdGU6CisgICAgdm9pZCBzdGFydExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkmLCB1aW50NjRfdCAvKmN1c3RvbVByb3RvY29sSUQqLywgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wTG9hZGluZyhDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eSYsIHVpbnQ2NF90IC8qY3VzdG9tUHJvdG9jb2xJRCovKSBv
dmVycmlkZTsKKyAgICB2b2lkIGludmFsaWRhdGUoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkm
KSBvdmVycmlkZTsKKworICAgIEhhc2hNYXA8dWludDY0X3QsIFJldGFpblB0cjxXS0N1c3RvbVBy
b3RvY29sTG9hZGVyPj4gbV9sb2FkZXJNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0Kc2ltaWxh
cml0eSBpbmRleCA2OSUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbQpy
ZW5hbWUgdG8gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudC5tbQppbmRleCA5NzliMGQyZjM3MS4uNjUyODZjMjQ1YTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbQpAQCAtMjQsMzYgKzI0LDMw
IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eS5oIgorI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAK
LSNpbXBvcnQgIkNoaWxkUHJvY2Vzc1Byb3h5LmgiCi0jaW1wb3J0ICJDb25uZWN0aW9uLmgiCi0j
aW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgotI2ltcG9ydCAiQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNv
dXJjZVJlc3BvbnNlLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBJUEM7Ci11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogQGludGVyZmFjZSBXS0N1c3RvbVByb3RvY29sTG9hZGVyIDogTlNPYmplY3QgPE5TVVJM
Q29ubmVjdGlvbkRlbGVnYXRlPiB7CiBAcHJpdmF0ZQogICAgIEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5KiBfY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk7CiAgICAgdWludDY0X3QgX2N1c3Rv
bVByb3RvY29sSUQ7Ci0gICAgUmVmUHRyPENvbm5lY3Rpb24+IF9jb25uZWN0aW9uOwogICAgIE5T
VVJMQ2FjaGVTdG9yYWdlUG9saWN5IF9zdG9yYWdlUG9saWN5OwogICAgIE5TVVJMQ29ubmVjdGlv
biAqX3VybENvbm5lY3Rpb247CiB9Ci0tIChpZClpbml0V2l0aEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5OihDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSopY3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHkgY3VzdG9tUHJvdG9jb2xJRDoodWludDY0X3QpY3VzdG9tUHJvdG9jb2xJRCByZXF1ZXN0
OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbm5lY3Rpb246KENvbm5lY3Rpb24gKiljb25uZWN0
aW9uOworLSAoaWQpaW5pdFdpdGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkqKWN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3Rv
Y29sSUQ6KHVpbnQ2NF90KWN1c3RvbVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdDsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIK
IAotLSAoaWQpaW5pdFdpdGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkqKWN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3RvY29s
SUQ6KHVpbnQ2NF90KWN1c3RvbVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVx
dWVzdCBjb25uZWN0aW9uOihDb25uZWN0aW9uICopY29ubmVjdGlvbgorLSAoaWQpaW5pdFdpdGhD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqKWN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90KWN1c3Rv
bVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewogICAgIHNlbGYg
PSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQpAQCAtNjEsMTAgKzU1LDggQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIAogICAgIEFTU0VSVChjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSk7CiAgICAgQVNTRVJUKHJlcXVlc3QpOwotICAgIEFTU0VSVChjb25uZWN0aW9uKTsKICAgICBf
Y3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgPSBjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTsK
ICAgICBfY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3RvY29sSUQ7Ci0gICAgX2Nvbm5lY3Rp
b24gPSBjb25uZWN0aW9uOwogICAgIF9zdG9yYWdlUG9saWN5ID0gTlNVUkxDYWNoZVN0b3JhZ2VO
b3RBbGxvd2VkOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgpAQCAtNzgsNyAr
NzAsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAg
ICBfY29ubmVjdGlvbiA9IG51bGxwdHI7CiAgICAgW191cmxDb25uZWN0aW9uIGNhbmNlbF07CiAg
ICAgW191cmxDb25uZWN0aW9uIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKQEAgLTg3
LDcgKzc4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIC0gKHZvaWQpY29ubmVjdGlvbjoo
TlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICop
ZXJyb3IKIHsKICAgICBSZXNvdXJjZUVycm9yIGNvcmVFcnJvcihlcnJvcik7Ci0gICAgX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkRmFpbFdpdGhF
cnJvcihfY3VzdG9tUHJvdG9jb2xJRCwgY29yZUVycm9yKSwgMCk7CisgICAgX2N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5LT5kaWRGYWlsV2l0aEVycm9yKF9jdXN0b21Qcm90b2NvbElELCBjb3Jl
RXJyb3IpOwogICAgIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS0+c3RvcExvYWRpbmcoX2N1
c3RvbVByb3RvY29sSUQpOwogfQogCkBAIC0xMDEsMTkgKzkyLDE5IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rp
b24gZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKIHsKICAgICBS
ZXNvdXJjZVJlc3BvbnNlIGNvcmVSZXNwb25zZShyZXNwb25zZSk7Ci0gICAgX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3BvbnNl
KF9jdXN0b21Qcm90b2NvbElELCBjb3JlUmVzcG9uc2UsIF9zdG9yYWdlUG9saWN5KSwgMCk7Cisg
ICAgX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LT5kaWRSZWNlaXZlUmVzcG9uc2UoX2N1c3Rv
bVByb3RvY29sSUQsIGNvcmVSZXNwb25zZSwgX3N0b3JhZ2VQb2xpY3kpOwogfQogCiAtICh2b2lk
KWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6
KE5TRGF0YSAqKWRhdGEKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY29yZURhdGEoc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwotICAg
IF9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZExv
YWREYXRhKF9jdXN0b21Qcm90b2NvbElELCBjb3JlRGF0YSksIDApOworICAgIF9jdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eS0+ZGlkTG9hZERhdGEoX2N1c3RvbVByb3RvY29sSUQsIGNvcmVEYXRh
KTsKIH0KIAogLSAoTlNVUkxSZXF1ZXN0ICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICop
Y29ubmVjdGlvbiB3aWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVkaXJl
Y3RSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UKIHsKICAgICBpZiAo
cmVkaXJlY3RSZXNwb25zZSkgewotICAgICAgICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpXYXNSZWRpcmVjdGVkVG9SZXF1ZXN0KF9jdXN0b21Qcm90
b2NvbElELCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSwgMCk7CisgICAgICAgIF9jdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eS0+d2FzUmVkaXJlY3RlZFRvUmVxdWVzdChfY3VzdG9tUHJvdG9j
b2xJRCwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgfQogICAgIHJldHVybiByZXF1ZXN0OwpAQCAtMTIxLDcgKzExMiw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiAKIC0gKHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6KE5TVVJM
Q29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KIHsKLSAgICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRGaW5pc2hMb2FkaW5nKF9jdXN0b21Qcm90b2Nv
bElEKSwgMCk7CisgICAgX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LT5kaWRGaW5pc2hMb2Fk
aW5nKF9jdXN0b21Qcm90b2NvbElEKTsKICAgICBfY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkt
PnN0b3BMb2FkaW5nKF9jdXN0b21Qcm90b2NvbElEKTsKIH0KIApAQCAtMTI5LDM5ICsxMjAsMjcg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGlsZFBy
b2Nlc3NQcm94eSogY2hpbGRQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9v
bCkKLSAgICA6IG1fY2hpbGRQcm9jZXNzUHJveHkoY2hpbGRQcm9jZXNzUHJveHkpCi0gICAgLCBt
X3Byb2Nlc3NQb29sKHByb2Nlc3NQb29sKQotewotICAgIEFTU0VSVChtX2NoaWxkUHJvY2Vzc1By
b3h5KTsKLSAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0
aGlzKTsKLX0KLQotQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eSgpCi17Ci0gICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKTsKLX0KLQotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRM
b2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
Y29yZVJlcXVlc3QpCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3RhcnRMb2Fk
aW5nKEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Q
cm90b2NvbElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNvcmVSZXF1ZXN0KQogewogICAgIE5T
VVJMUmVxdWVzdCAqcmVxdWVzdCA9IGNvcmVSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0
ZUhUVFBCb2R5KTsKICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdL
Q3VzdG9tUHJvdG9jb2xMb2FkZXIgKmxvYWRlciA9IFtbV0tDdXN0b21Qcm90b2NvbExvYWRlciBh
bGxvY10gaW5pdFdpdGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTp0aGlzIGN1c3RvbVByb3Rv
Y29sSUQ6Y3VzdG9tUHJvdG9jb2xJRCByZXF1ZXN0OnJlcXVlc3QgY29ubmVjdGlvbjptX2NoaWxk
UHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKCldOworICAgIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIg
KmxvYWRlciA9IFtbV0tDdXN0b21Qcm90b2NvbExvYWRlciBhbGxvY10gaW5pdFdpdGhDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTombWFuYWdlciBjdXN0b21Qcm90b2NvbElEOmN1c3RvbVByb3Rv
Y29sSUQgcmVxdWVzdDpyZXF1ZXN0XTsKICAgICBBU1NFUlQobG9hZGVyKTsKICAgICBBU1NFUlQo
IW1fbG9hZGVyTWFwLmNvbnRhaW5zKGN1c3RvbVByb3RvY29sSUQpKTsKICAgICBtX2xvYWRlck1h
cC5hZGQoY3VzdG9tUHJvdG9jb2xJRCwgbG9hZGVyKTsKICAgICBbbG9hZGVyIHJlbGVhc2VdOwog
fQogCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElEKQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0
b3BMb2FkaW5nKEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgY3VzdG9tUHJv
dG9jb2xJRCkKIHsKICAgICBtX2xvYWRlck1hcC5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CiB9
CiAKLXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCit2
b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6aW52YWxpZGF0ZShDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eSYpCiB7CisgICAgLy8gRklYTUU6IGl0ZXJhdGUgdGhlIGxvYWRlciBtYXAg
YW5kIHJlbW92ZSBsb2FkZXJzIGZvciB0aGUgZ2l2ZW4gbWFuYWdlci4KIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IGJlYmNjYTYzMmE3Li40ZWRhYzIwZDdlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29s
Q29jb2EubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
V2ViUHJvY2Vzc1Bvb2wuaCIKIAorI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9y
dCAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94
eS5oIgpAQCAtMTQ1LDYgKzE0Niw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZSgpCiAgICAgSVBDOjpzZXRBbGxvd3NEZWNvZGluZ1NlY0tleVJlZih0cnVlKTsKICAg
ICBXZWJLaXQ6OldlYk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCk7CiAjZW5kaWYK
KworICAgIHNldEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSk7CiB9CiAKICNpZiBQTEFURk9STShJT1MpCkBA
IC0yNTMsOSArMjU2LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmEKICAgICBwYXJhbWV0ZXJz
LnBhcmVudFByb2Nlc3NOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNz
TmFtZV07CiAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyID0gW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXTsKIAotICAgIGZvciAoY29uc3QgYXV0
byYgc2NoZW1lIDogZ2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90b2NvbEhhbmRsZXJzKCkp
Ci0gICAgICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2Nv
bHMuYXBwZW5kKHNjaGVtZSk7Ci0KICAgICBOU1VzZXJEZWZhdWx0cyAqZGVmYXVsdHMgPSBbTlNV
c2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdOwogCiAgICAgcGFyYW1ldGVycy5odHRw
UHJveHkgPSBbZGVmYXVsdHMgc3RyaW5nRm9yS2V5OldlYktpdDJIVFRQUHJveHlEZWZhdWx0c0tl
eV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5LmNwcApzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3Bw
CmluZGV4IDNmYjM0NWQ2MmQyLi40NTJmM2E4NTgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHlTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29y
ay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3BwCkBAIC0xLDQg
KzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CkBAIC0yNywxMiArMjgsNiBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KIAotI2lmIFBMQVRGT1JNKEdUSykKLSNpbmNs
dWRlIDxXZWJDb3JlL0Vycm9yc0d0ay5oPgotI2VsaWYgUExBVEZPUk0oRUZMKQotI2luY2x1ZGUg
PFdlYkNvcmUvRXJyb3JzRWZsLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIEN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGls
ZFByb2Nlc3NQcm94eSogY2hpbGRQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNz
UG9vbCkKQEAgLTQ4LDE1ICs0Myw5IEBAIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojp+Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoKQogICAgIG1fY2hpbGRQcm9jZXNzUHJveHktPnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSk7CiB9CiAKLXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHk6OnByb2Nlc3NEaWRDbG9zZSgpCi17Ci0gICAgbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQoKS5pbnZhbGlkYXRlKCp0aGlzKTsKLX0KLQogdm9pZCBDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBpZiAoIW1f
cHJvY2Vzc1Bvb2wuY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KCkuc3RhcnRMb2FkaW5nKCp0
aGlzLCBjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KSkKLSAgICAgICAgZGlkRmFpbFdpdGhFcnJv
cihjdXN0b21Qcm90b2NvbElELCBXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IocmVxdWVzdCkp
OworICAgIG1fcHJvY2Vzc1Bvb2wuY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KCkuc3RhcnRM
b2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KTsKIH0KIAogdm9pZCBDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9j
b2xJRCkKQEAgLTY0LDkgKzUzLDE5IEBAIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6
OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiAgICAgbV9wcm9jZXNzUG9v
bC5jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKS5zdG9wTG9hZGluZygqdGhpcywgY3VzdG9t
UHJvdG9jb2xJRCk7CiB9CiAKLXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZFJl
Y2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHk6OnByb2Nlc3NEaWRDbG9zZSgpCit7CisgICAgbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQoKS5pbnZhbGlkYXRlKCp0aGlzKTsKK30KKwordm9pZCBDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eTo6d2FzUmVkaXJlY3RlZFRvUmVxdWVzdCh1aW50NjRfdCBjdXN0b21Q
cm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit7CisgICAgbV9j
aGlsZFByb2Nlc3NQcm94eS0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpX
YXNSZWRpcmVjdGVkVG9SZXF1ZXN0KGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3QsIHJlZGlyZWN0
UmVzcG9uc2UpLCAwKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1aW50MzJfdCBjYWNoZVN0b3JhZ2VQb2xpY3kp
CiB7Ci0gICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpEaWRSZWNlaXZlUmVzcG9uc2UoY3VzdG9tUHJvdG9jb2xJRCwgcmVzcG9uc2Us
IDApLCAwKTsKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OkRpZFJlY2VpdmVSZXNwb25zZShjdXN0b21Qcm90b2NvbElELCByZXNw
b25zZSwgY2FjaGVTdG9yYWdlUG9saWN5KSwgMCk7CiB9CiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHk6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKaW5kZXggNGM3NDNjZDdlZWUuLmZmZTk5Y2JlMTUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaApAQCAtNTksMTIgKzU5LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJvY2Vzc0RpZENs
b3NlKCk7CiAKLSNpZiBVU0UoU09VUCkKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CisgICAgdm9pZCB3YXNSZWRpcmVjdGVkVG9SZXF1ZXN0KHVpbnQ2NF90IGN1c3RvbVByb3RvY29s
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgdWludDMyX3Qg
Y2FjaGVTdG9yYWdlUG9saWN5KTsKICAgICB2b2lkIGRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3Rv
bVByb3RvY29sSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmFp
bFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQpOwotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDA2
NDFjNzdjMTUyLi4wYjY1MjQwYmJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCkBAIC0xNDcsNiArMTQ3LDEyIEBAIHN0YXRpYyBXZWJzaXRlRGF0YVN0
b3JlOjpDb25maWd1cmF0aW9uIGxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKEFQ
STo6CiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CiAKK3N0YXRpYyBIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Q
cm90b2NvbEhhbmRsZXJzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHNldDsKKyAgICByZXR1cm4gc2V0Owor
fQorCiBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJh
dGlvbi5jb3B5KCkpCiAgICAgLCBtX2hhdmVJbml0aWFsRW1wdHlQcm9jZXNzKGZhbHNlKQpAQCAt
MTU1LDkgKzE2MSw3IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1fYXV0b21hdGlvbkNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKSkKICAgICAsIG1f
ZG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQog
ICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0
SGlzdG9yeUNsaWVudD4oKSkKLSNpZiBVU0UoU09VUCkKICAgICAsIG1fY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQ+KCkpCi0jZW5kaWYKICAgICAsIG1fdmlzaXRlZExpbmtTdG9yZShWaXNpdGVkTGlua1N0
b3JlOjpjcmVhdGUoKSkKICAgICAsIG1fdmlzaXRlZExpbmtzUG9wdWxhdGVkKGZhbHNlKQogICAg
ICwgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlcih0aGlzKQpAQCAtMjk5LDYgKzMwMywxNCBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkF1dG9tYXRpb25DbGllbnQ+CiAgICAgICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IFdURk1v
dmUoYXV0b21hdGlvbkNsaWVudCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQ+JiYgY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KQoreworICAgIGlm
ICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KQorICAgICAgICBtX2N1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQ+KCk7CisgICAgZWxzZQorICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudCA9IFdURk1vdmUoY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KTsKK30KKwogdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKHVuc2lnbmVkIG1heGlt
dW1OdW1iZXJPZlByb2Nlc3NlcykKIHsKICAgICAvLyBHdWFyZCBhZ2FpbnN0IEFQSSBtaXN1c2Uu
CkBAIC0zNTIsNiArMzY0LDEyIEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29s
OjplbnN1cmVOZXR3b3JrUHJvY2VzcygpCiAgICAgcGFyYW1ldGVycy5kaXNrQ2FjaGVTaXplT3Zl
cnJpZGUgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNoZVNpemVPdmVycmlkZSgpOwogICAgIHBh
cmFtZXRlcnMuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24gPSBtX2NhbkhhbmRs
ZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uOwogCisgICAgZm9yIChjb25zdCBhdXRvJiBzY2hl
bWUgOiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMoKSkKKyAgICAg
ICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBl
bmQoc2NoZW1lKTsKKworICAgIGZvciAoY29uc3QgYXV0byYgc2NoZW1lIDogbV91cmxTY2hlbWVz
UmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scykKKyAgICAgICAgcGFyYW1ldGVycy51cmxTY2hl
bWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKKwogICAgIHBh
cmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5kaXNrQ2FjaGVE
aXJlY3RvcnkoKTsKICAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1w
dHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRl
RGlyZWN0b3J5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRpc2tD
YWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CkBAIC05NjgsMTIgKzk4Niw2IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJp
bmcmIHVybFNjaGVtZSkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OlJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZCh1cmxTY2hlbWUpKTsKIH0KIAotSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIFdlYlByb2Nlc3NQb29sOjpn
bG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMoKQotewotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
Pj4gc2V0OwotICAgIHJldHVybiBzZXQ7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lz
dGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhhbmRsZXJzKGNvbnN0IFN0
cmluZyYgdXJsU2NoZW1lKQogewogICAgIGlmICghdXJsU2NoZW1lKQpAQCAtMTM2OCwxNyArMTM4
MCwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zRmls
dGVyaW5nT3V0RW50cmllc0FkZGVkQWZ0ZXJUaW1lKAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpy
ZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewot
I2lmIFVTRShTT1VQKQotICAgIG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2Nv
bHMuYWRkKHNjaGVtZSk7Ci0jZW5kaWYKKyAgICBpZiAoIWdsb2JhbFVSTFNjaGVtZXNXaXRoQ3Vz
dG9tUHJvdG9jb2xIYW5kbGVycygpLmNvbnRhaW5zKHNjaGVtZSkpCisgICAgICAgIG1fdXJsU2No
ZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYWRkKHNjaGVtZSk7CiAgICAgc2VuZFRv
TmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6UmVnaXN0
ZXJTY2hlbWUoc2NoZW1lKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJT
Y2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKLSNpZiBVU0Uo
U09VUCkKICAgICBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLnJlbW92
ZShzY2hlbWUpOwotI2VuZGlmCiAgICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6
OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6VW5yZWdpc3RlclNjaGVtZShzY2hlbWUpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA0ZWQwYzU5YjQ1
Yy4uMmI4M2Q2MTY3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCkBAIC0xMzcsOSArMTM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGlzdG9yeUNsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4pOwogICAg
IHZvaWQgc2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGll
bnQ+KTsKICAgICB2b2lkIHNldEF1dG9tYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
QXV0b21hdGlvbkNsaWVudD4pOwotI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudD4mJik7Ci0jZW5kaWYKIAogICAgIHZvaWQgc2V0TWF4aW11bU51bWJlck9mUHJv
Y2Vzc2VzKHVuc2lnbmVkKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5v
IHByb2Nlc3NlcyBydW5uaW5nLgogICAgIHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3Nl
cygpIGNvbnN0IHsgcmV0dXJuICFtX2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQo
KSA/IFVJTlRfTUFYIDogbV9jb25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCk7IH0K
QEAgLTIzMSw5ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgQVBJOjpMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudCYgaGlzdG9yeUNsaWVudCgpIHsgcmV0dXJuICptX2hpc3RvcnlDbGllbnQ7IH0KICAg
ICBXZWJDb250ZXh0Q2xpZW50JiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCi0jaWYg
VVNFKFNPVVApCiAgICAgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQmIGN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2N1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudDsgfQotI2VuZGlmCiAKICAgICBXZWJJY29uRGF0YWJhc2UqIGljb25EYXRhYmFz
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faWNvbkRhdGFiYXNlLmdldCgpOyB9CiAKQEAgLTMzMCw3ICsz
MjYsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29s
KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3Rv
Y29sKGNvbnN0IFN0cmluZyYpOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFu
ZGxlcnMoKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5n
Q3VzdG9tUHJvdG9jb2xIYW5kbGVycyhjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgdm9pZCB1
bnJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhhbmRsZXJzKGNv
bnN0IFN0cmluZyYpOwogCkBAIC00NjgsOSArNDYzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiBtX2F1dG9tYXRpb25DbGllbnQ7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+IG1fZG93bmxvYWRDbGllbnQ7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+IG1faGlz
dG9yeUNsaWVudDsKLSNpZiBVU0UoU09VUCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Owot
I2VuZGlmCiAKICAgICBSZWZQdHI8V2ViQXV0b21hdGlvblNlc3Npb24+IG1fYXV0b21hdGlvblNl
c3Npb247CiAKQEAgLTQ5NCw2ICs0ODcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDQUNIRV9Q
QVJUSVRJT05JTkcpCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0Nh
Y2hlUGFydGl0aW9uZWQ7CiAjZW5kaWYKKyAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzOwog
CiAgICAgYm9vbCBtX2Fsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoOwogICAgIGJvb2wgbV9z
aG91bGRVc2VGb250U21vb3RoaW5nOwpAQCAtNTQ4LDcgKzU0Miw2IEBAIHByaXZhdGU6CiAKICNp
ZiBVU0UoU09VUCkKICAgICBib29sIG1faWdub3JlVExTRXJyb3JzIHsgdHJ1ZSB9OwotICAgIEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fdXJsU2NoZW1lc1JlZ2lz
dGVyZWRGb3JDdXN0b21Qcm90b2NvbHM7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9tZW1vcnlDYWNo
ZURpc2FibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1
ZXN0TWFuYWdlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Jl
cXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcAppbmRleCBjZDFkMzc3NjdjMi4uZmE2NDNkNWIwMmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1h
bmFnZXJDbGllbnRFZmwuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgYm9vbCBzdGFydExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkm
IG1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KSBvdmVycmlkZQorICAgIHZvaWQgc3RhcnRMb2Fk
aW5nKEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Q
cm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVz
dCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGF1dG8gdXJsUmVxdWVzdCA9IEFQSTo6VVJMUmVx
dWVzdDo6Y3JlYXRlKHJlc291cmNlUmVxdWVzdCk7CiAgICAgICAgIFJlZlB0cjxFd2tVcmxTY2hl
bWVSZXF1ZXN0PiByZXF1ZXN0ID0gRXdrVXJsU2NoZW1lUmVxdWVzdDo6Y3JlYXRlKG1hbmFnZXIs
IHVybFJlcXVlc3QucHRyKCksIGN1c3RvbVByb3RvY29sSUQpOwpAQCAtNDksMTEgKzQ5LDEwIEBA
IHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxXZWJLaXRVUklTY2hlbWVIYW5kbGVyPiBoYW5kbGVy
ID0gKG1fY2xpZW50LT5tX3VyaVNjaGVtZUhhbmRsZXJzKS5nZXQoc2NoZW1lKTsKICAgICAgICAg
QVNTRVJUKGhhbmRsZXIuZ2V0KCkpOwogICAgICAgICBpZiAoIWhhbmRsZXItPmhhc0NhbGxiYWNr
KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICAobV9jbGllbnQtPm1fdXJpU2NoZW1lUmVxdWVzdHMpLnNldChjdXN0b21Qcm90b2NvbElE
LCByZXF1ZXN0KTsKICAgICAgICAgaGFuZGxlci0+cGVyZm9ybUNhbGxiYWNrKHJlcXVlc3QuZ2V0
KCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICB2b2lkIHN0b3BMb2FkaW5n
KEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkg
b3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlBy
b2Nlc3NQb29sU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9j
ZXNzUG9vbFNvdXAuY3BwCmluZGV4IDRlNDJjNWFlM2RmLi41OWUyNWM4MTY2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3Bw
CkBAIC00MCw4ICs0MCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgcGFyYW1ldGVy
cy5jb29raWVBY2NlcHRQb2xpY3kgPSBtX2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5Owog
ICAgIHBhcmFtZXRlcnMuaWdub3JlVExTRXJyb3JzID0gbV9pZ25vcmVUTFNFcnJvcnM7CiAgICAg
cGFyYW1ldGVycy5sYW5ndWFnZXMgPSBXZWJDb3JlOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7
Ci0gICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9y
Q3VzdG9tUHJvdG9jb2xzKQotICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVk
Rm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxk
RW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nID0gZmFsc2U7CiB9CiAKQEAgLTUyLDEy
ICs1MCw0IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldElnbm9yZVRMU0Vycm9ycyhib29sIGln
bm9yZVRMU0Vycm9ycykKICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlNldElnbm9yZVRMU0Vycm9ycyhtX2lnbm9yZVRMU0Vycm9ycyksIDAp
OwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PiYmIGN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCkKLXsKLSAgICBpZiAoIWN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudCkKLSAgICAgICAgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpOwotICAgIGVs
c2UKLSAgICAgICAgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgPSBXVEZNb3ZlKGN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudCk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYmNkNzk2MWFmNC4uNzJkNDU4
M2U2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTU5OSw3ICs1OTksNiBAQAogCQkyOTg0RjU4ODE2NEJBMDk1MDA0QkMwQzYg
LyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODRGNTg2MTY0QkEwOTUwMDRCQzBD
NiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQky
OTg0RjU4OTE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODRGNTg3
MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oICovOyB9
OwogCQkyOUFEMzA5MzE2NEI0QzVEMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QUQz
MDkyMTY0QjRDNUQwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oICovOyB9
OwotCQkyOUFEMzA5NjE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
OUFEMzA5NTE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMu
bW0gKi87IH07CiAJCTI5Q0Q1NUFBMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBh
Z2VPYmplY3RCYXNlLmggKi87IH07CiAJCTI5Q0Q1NUFCMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAqLzsgfTsKIAkJMkQxMDg3NjAxRDJDNTczRTAw
Qjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTA4NzVFMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1l
dGVycy5jcHAgKi87IH07CkBAIC0xMTI2LDYgKzExMjUsMTAgQEAKIAkJN0E3OTFFRkExQzdDRkNG
MTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc5
MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJN0E3OTFFRkIxQzdDRkQwMTAwQzRDNTJCIC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc5MUVGODFDN0NGQjEwMDBDNEM1MkIgLyog
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCAqLzsgfTsKIAkJN0E3OTFF
RkMxQzdEMDhDNTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTlDRDhDMDFD
Nzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLzsg
fTsKKwkJN0E4MjFGNEExRTJGNjVFOTAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclBy
b3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
ODIxRjQ5MUUyRjY1REQwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAg
Ki87IH07CisJCTdBODIxRjRDMUUyRjY3MzkwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBODIxRjRCMUUyRjY2NDgwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQu
aCAqLzsgfTsKKwkJN0E4MjFGNEUxRTJGNjdBODAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBODIxRjREMUUyRjY3OUUwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQubW0gKi87IH07CisJCTdBODIxRjUwMUUyRjdBNzUwMDYwNDU3NyAvKiBBUElDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBODIxRjRGMUUyRjdBNUMwMDYwNDU3NyAvKiBBUElDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuaCAqLzsgfTsKIAkJN0MwNjVGMkIxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1
RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwNjVGMkExQzhDRDk1RjAw
QzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovOyB9OwogCQk3
QzEzNUFBODE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNjE3M0IwQkNB
MDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi87IH07CkBAIC0yNjg2LDcgKzI2
ODksNiBAQAogCQkyOTg0RjU4NjE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTI5ODRGNTg3MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90
b2NvbE1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
dXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyOUFEMzA5MjE2NEI0QzVEMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHkuaDsgcGF0aCA9IEN1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyOUFEMzA5NTE2NEI0QzkzMDA3
MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5t
bTsgcGF0aCA9IEN1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5QUQzMDk3MTY0QjRFMjEwMDcy
REVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjsgcGF0
aCA9IEN1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1
IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzI2NSw2ICszMjY3LDEwIEBACiAJCTdBNUUzOTQ5
MUQ1QkQ4QTcwMEI0QjdDRSAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdp
bi5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVy
IEVTUi5wbHVnaW4uc2IiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc5MUVGODFD
N0NGQjEwMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3OTFF
RjkxQzdDRkIzNzAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QTgyMUY0OTFFMkY2NUREMDA2MDQ1NzcgLyogQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3BwOyBwYXRoID0gQ3VzdG9tUHJvdG9jb2xz
L0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0E4MjFGNEIxRTJGNjY0ODAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E4MjFGNEQxRTJG
Njc5RTAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E4MjFGNEYxRTJGN0E1QzAwNjA0
NTc3IC8qIEFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QTlDRDhDMTFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQ4OTAsNiArNDg5Niw4IEBACiAJCQkJOTlDODFENTYxQzIwREZCRTAwNUM0QzgyIC8q
IEF1dG9tYXRpb25DbGllbnQubW0gKi8sCiAJCQkJOTkwRDI4QjcxQzY1MzlBMDAwOTg2OTc3IC8q
IEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggKi8sCiAJCQkJOTkwRDI4QjgxQzY1MzlBMDAwOTg2
OTc3IC8qIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lm1tICovLAorCQkJCTdBODIxRjRCMUUyRjY2
NDgwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCAqLywKKwkJCQk3QTgy
MUY0RDFFMkY2NzlFMDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tICov
LAogCQkJCTgzODkxQjZBMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dC5oICovLAogCQkJCTgzODkxQjZCMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudC5tbSAqLywKIAkJCQlBMURGNjMxMTE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRD
bGllbnQuaCAqLywKQEAgLTUwNTEsNiArNTA1OSw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQky
OUFEMzA5NDE2NEI0QzgzMDA3MkRFQTkgLyogbWFjICovLAogCQkJCTI5QUQzMDkyMTY0QjRDNUQw
MDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oICovLAorCQkJCTdBODIxRjQ5
MUUyRjY1REQwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAgKi8sCiAJ
CQkJMjlBRDMwOTcxNjRCNEUyMTAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
Lm1lc3NhZ2VzLmluICovLAogCQkJKTsKIAkJCW5hbWUgPSBDdXN0b21Qcm90b2NvbHM7CkBAIC01
MDU5LDcgKzUwNjgsNiBAQAogCQkyOUFEMzA5NDE2NEI0QzgzMDA3MkRFQTkgLyogbWFjICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkyOUFEMzA5NTE2NEI0
QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gKi8sCiAJCQkp
OwogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02Mzk3LDYg
KzY0MDUsNyBAQAogCQkJCTk5QzgxRDVCMUMyMEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9u
Q2xpZW50LmggKi8sCiAJCQkJOTkwRDI4QjMxQzY1MjZENDAwOTg2OTc3IC8qIEFQSUF1dG9tYXRp
b25TZXNzaW9uQ2xpZW50LmggKi8sCiAJCQkJMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQ
SUNvbnRleHRNZW51Q2xpZW50LmggKi8sCisJCQkJN0E4MjFGNEYxRTJGN0E1QzAwNjA0NTc3IC8q
IEFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oICovLAogCQkJCTgzODkxQjYyMUE2OEIz
NDIwMDMwRjM4NiAvKiBBUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oICovLAogCQkJCTFGN0Qz
NkMwMThEQTUxM0YwMEQ5RDY1OSAvKiBBUElEb3dubG9hZENsaWVudC5oICovLAogCQkJCTMxN0ZF
N0MxMUM0ODdBNjYwMEEwQ0E4OSAvKiBBUElFeHBlcmltZW50YWxGZWF0dXJlLmNwcCAqLywKQEAg
LTc2NzUsNiArNzY4NCw3IEBACiAJCQkJN0NBMzc5M0UxQUMzNzhCMzAwNzlEQzM3IC8qIF9XS1Vz
ZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Qzg5
RDJCQTFBNkIwRjJDMDAzQTVGREUgLyogX1dLVXNlckNvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDODlEMkJDMUE2QjBGNUIwMDNBNUZERSAvKiBfV0tVc2VyQ29udGVudEZpbHRl
ckludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QTgyMUY1MDFFMkY3QTc1MDA2MDQ1Nzcg
LyogQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
Qzg4MkRGNzFDN0U5OTY1MDA2QkY3MzEgLyogX1dLVXNlckNvbnRlbnRXb3JsZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0M4ODJERjkxQzdFOTk2RjAwNkJGNzMxIC8qIF9XS1VzZXJDb250ZW50V29y
bGRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NCMzY1QUExRDMxREI3MDAwNzE1OENB
IC8qIF9XS1VzZXJJbml0aWF0ZWRBY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtNzk3OCw2ICs3
OTg4LDcgQEAKIAkJCQkxQUM1RkZDMjE3NEJGRDFCMDAwMTQ4M0QgLyogUGx1Z2luUHJvY2Vzc0F0
dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVDOTA2MTI0QzBBQjgwMDdFRjRBNSAv
KiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwRUM5MEYx
MjRDMEFGNTAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJN0E4MjFGNEMxRTJGNjczOTAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE3ODY1QkExNkNBQzcxNTAwQUNF
ODNBIC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTJCQjZEMTE0MTE3QjREMDAwRjM1RDQgLyogUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyRDkwRDIxMjgxQzk2NjAwMUVC
OTYyIC8qIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLApA
QCAtOTI4MCw3ICs5MjkxLDYgQEAKIAkJCQlCODc4QjYxNjEzMzQyOERDMDA2ODg4RTkgLyogQ29y
cmVjdGlvblBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3MUQxQzIzRjhDRjAwRDQx
MTgzIC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Mjk4NEY1ODgxNjRCQTA5NTAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkyOUFEMzA5NjE2NEI0QzkzMDA3MkRFQTkg
LyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQky
OTg0RjU3QzE2NEI5MTVGMDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFMzUxRkYxODBGNUQwRjAwRTUz
QkU5IC8qIERhdGFiYXNlUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTVFNzcyQjE4
NDAwOEI5MDAwNzIwM0YgLyogRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBp
biBTb3VyY2VzICovLApAQCAtOTkyMSw2ICs5OTMxLDcgQEAKIAkJCQkxQUI0MEVFNTFCRjY3N0Uz
MDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM0MDc1RkQxMjRGRjAyNzAwNjhGMjBBIC8qIFdLTXV0YWJsZUFycmF5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDNDA3NUZGMTI0RkYwMjcwMDY4RjIwQSAvKiBXS011dGFibGVEaWN0aW9uYXJ5
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdBODIxRjRBMUUyRjY1RTkwMDYwNDU3NyAvKiBDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTVCMUM1MDE4
OTg2MDZGMDA0RkNGOUIgLyogV0tOYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEy
NTZFMzcxOEExQTc4ODAwNkZCOTIyIC8qIFdLTmF2aWdhdGlvbkFjdGlvbi5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEM0E2NURBMUE3QzNBMUYwMENBQzYzNyAvKiBXS05hdmlnYXRpb25BY3Rpb25S
ZWYuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDAyMyw2ICsxMDAzNCw3IEBACiAJCQkJMUFENjBG
NUQxOEUyMEY0QzAwMjBDMDM0IC8qIFdLV2luZG93RmVhdHVyZXMubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxQTdDMERGNjFCN0QxRjEwMDBBOUI4NDggLyogV0tXaW5kb3dGZWF0dXJlc1JlZi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQ0JFQ0RFNzE2QjY0MTY4MDAwNDdBMUEgLyogWFBDU2Vydmlj
ZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk3QTgyMUY0RTFFMkY2N0E4MDA2MDQ1
NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cg==
</data>
<flag name="review"
          id="321131"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302130</attachid>
            <date>2017-02-20 02:48:53 -0800</date>
            <delta_ts>2017-02-21 08:28:03 -0800</delta_ts>
            <desc>Rebased patch for landing</desc>
            <filename>wk2-custom-protocols.diff</filename>
            <type>text/plain</type>
            <size>43066</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNGFlZWVlNjc1YzIuLjJkODIxNWY2YTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dApAQCAtNDIwLDYgKzQyMCw4IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKIAog
ICAgIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCiAKKyAgICBVSVByb2Nl
c3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3Bw
CisKICAgICBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAogCiAgICAg
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggNDEwMjUwYWUwZjQuLmJlYjVlNDU2ZWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTggQEAKKzIwMTctMDItMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgorCisgICAgICAgIFJlZHVjZSBwbGF0Zm9ybSBpZmRlZnMgaW4gV2ViS2l0MiBj
dXN0b20gcHJvdG9jb2xzIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUwMjgKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICBNYWtlIG1hYyBpbXBsZW1lbnRhdGlvbiB1c2UgdGhlIEFQSUN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB0byBzaGFyZSBtb3JlIGNvZGUgd2l0aCB0aGUgc291
cCBiYXNlZCBwb3J0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuY3BwLgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBSZW1v
dmUgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcC4KKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6IFJlbW92ZSBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oOgorICAgICAgICAoQVBJOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyk6IE1ha2UgaXQgdm9pZCwgc2luY2Ug
d2Ugd2VyZSBhbHdheXMgcmV0dXJuaW5nIHRydWUgYW5kIHRoZQorICAgICAgICByZXR1cm5lZCB2
YWx1ZSB3YXMgaWdub3JlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Nj
aGVtZV9yZXF1ZXN0LmNwcDoKKyAgICAgICAgKEV3a1VybFNjaGVtZVJlcXVlc3Q6OmZpbmlzaCk6
IFVwZGF0ZSB0byBuZXcgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgQVBJLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHA6
CisgICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNrKTogRGl0dG8uCisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbExvYWRlciBpbml0V2l0
aEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OmN1c3RvbVByb3RvY29sSUQ6cmVxdWVzdDpdKToK
KyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbExvYWRlciBkZWFsbG9jXSk6CisgICAgICAgICgt
W1dLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgY29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOgor
ICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29sTG9hZGVyIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJl
c3BvbnNlOl0pOgorICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29sTG9hZGVyIGNvbm5lY3Rpb246
ZGlkUmVjZWl2ZURhdGE6XSk6CisgICAgICAgICgtW1dLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgY29u
bmVjdGlvbjp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpdKToKKyAgICAgICAgKC1b
V0tDdXN0b21Qcm90b2NvbExvYWRlciBjb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzpdKToKKyAg
ICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OjpzdGFydExvYWRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0b3BMb2Fk
aW5nKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6
IFNldCB0aGUgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOiBSZW1vdmUg
Y29kZSB0aGF0IGlzIG5vdyBzaGFyZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENs
b3NlKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6Ondhc1Jl
ZGlyZWN0ZWRUb1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxV
UkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMpOiBKdXN0IG1vdmVkIGhlcmUgdG8g
dXNlIGl0IGZyb20gZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKTogUmVtb3ZlIHNvdXAgaWZkZWZzLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
KTogTW92ZWQgZnJvbSB0aGUgc291cCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKTogSW5pdGlhbGl6ZSBjdXN0b20g
cHJvdG9jb2xzIHBhcmFtZXRlcnMuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpy
ZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKTogUmVnaXN0ZXIgdGhlIHByb3RvY29sIGlm
IG5vdCBhbHJlYWR5IHJlZ2lzdGVyZWQgZ2xvYmFsbHkuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2wpOiBSZW1vdmUgc291
cCBpZmRlZnMuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6IFJlbW92ZSBz
b3VwIGlmZGVmcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50
RWZsLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0
d29ya1Byb2Nlc3MpOiBSZW1vdmUgY29kZSB0aGF0IGlzIG5vdyBzaGFyZWQuCisgICAgICAgICog
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE3LTAyLTIwICBNYW51ZWwg
UmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZ3JpZF0g
UmVtb3ZlIGNvbXBpbGF0aW9uIGZsYWcgRU5BQkxFX0NTU19HUklEX0xBWU9VVApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUdUSy5jbWFrZQppbmRleCAyMWUyMzFiNWVmNi4uZWJlZGU3NTAyNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC0yOTQsOCArMjk0LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1cmVNb25pdG9yLmNwcAog
Ci0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHlTb3VwLmNwcAotCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdp
bkluZm9DYWNoZS5jcHAKIAogICAgIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0
b3JlVW5peC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtl
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggNmNkZjA5NGI2YjUuLmE2
N2U0ZTdiMWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMjU5LDggKzI1OSw2IEBA
IGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL21h
Yy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KIAotICAgIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0KLQogICAgIFVJUHJv
Y2Vzcy9OZXR3b3JrL21hYy9OZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tCiAKICAgICBVSVByb2Nl
c3MvUGx1Z2lucy9tYWMvUGx1Z2luSW5mb1N0b3JlTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQuaAppbmRleCA1MWUxOGJkZDQ2OS4uOTQ1ZGUzZmNhOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgp
IHsgfQogCi0gICAgdmlydHVhbCBib29sIHN0YXJ0TG9hZGluZyhXZWJLaXQ6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLyogY3VzdG9tUHJvdG9jb2xJRCAqLywgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRMb2FkaW5nKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1
aW50NjRfdCAvKiBjdXN0b21Qcm90b2NvbElEICovLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RvcExvYWRpbmcoV2ViS2l0OjpDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSYsIHVpbnQ2NF90IC8qIGN1c3RvbVByb3RvY29sSUQgKi8pIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eSYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5j
cHAKaW5kZXggMjVlNzczMzQyYTkuLmYwNGI3MjZmMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudC5jcHAKQEAgLTM2LDEwICszNiw5IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBzdGFydExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkgb3ZlcnJpZGUKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
d2Via2l0V2ViQ29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKG1fd2ViQ29udGV4dCwg
Y3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCwgbWFuYWdlcik7Ci0gICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAogICAgIHZvaWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
LmNwcAppbmRleCBhYmExYjk2NGY3My4uNTliZGI5MzBkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3Qu
Y3BwCkBAIC0xOTMsNyArMTkzLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVz
dFJlYWRDYWxsYmFjayhHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5bmMKICAgICAgICAg
Ly8gRmlyc3QgY2h1bmsgcmVhZC4gSW4gY2FzZSBvZiBlbXB0eSByZXBseSBhbiBlbXB0eSBBUEk6
OkRhdGEgaXMgc2VudCB0byB0aGUgbmV0d29ya2luZyBwcm9jZXNzLgogICAgICAgICBSZXNvdXJj
ZVJlc3BvbnNlIHJlc3BvbnNlKFVSTChVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOChwcml2LT51cmkp
KSwgU3RyaW5nOjpmcm9tVVRGOChwcml2LT5taW1lVHlwZS5kYXRhKCkpLAogICAgICAgICAgICAg
cHJpdi0+c3RyZWFtTGVuZ3RoLCBlbXB0eVN0cmluZygpKTsKLSAgICAgICAgcHJpdi0+bWFuYWdl
ci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHByaXYtPnJlcXVlc3RJRCwgcmVzcG9uc2UpOworICAgICAg
ICBwcml2LT5tYW5hZ2VyLT5kaWRSZWNlaXZlUmVzcG9uc2UocHJpdi0+cmVxdWVzdElELCByZXNw
b25zZSwgMCk7CiAgICAgICAgIHByaXYtPm1hbmFnZXItPmRpZExvYWREYXRhKHByaXYtPnJlcXVl
c3RJRCwgd2ViRGF0YSk7CiAgICAgfSBlbHNlIGlmIChieXRlc1JlYWQgfHwgKCFieXRlc1JlYWQg
JiYgIXByaXYtPnN0cmVhbUxlbmd0aCkpIHsKICAgICAgICAgLy8gU3Vic2VxdWVudCBjaHVuayBy
ZWFkLiBXZSBvbmx5IHNlbmQgYW4gZW1wdHkgQVBJOjpEYXRhIHRvIHRoZSBuZXR3b3JraW5nIHBy
b2Nlc3Mgd2hlbiBzdHJlYW0gbGVuZ3RoIGlzIHVua25vd24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY4ZDExYjZlYWNlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudC5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQg
IkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgorI2ltcG9ydCA8d3RmL0hhc2hNYXAu
aD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBXS0N1c3RvbVByb3Rv
Y29sTG9hZGVyOworCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eTsKKworY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IGZpbmFsIDogcHVibGlj
IEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IHsKK3ByaXZhdGU6CisgICAgdm9pZCBz
dGFydExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCAvKmN1c3Rv
bVByb3RvY29sSUQqLywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgZmluYWw7Cisg
ICAgdm9pZCBzdG9wTG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYsIHVpbnQ2NF90
IC8qY3VzdG9tUHJvdG9jb2xJRCovKSBmaW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGUoQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkmKSBmaW5hbDsKKworICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
dGFpblB0cjxXS0N1c3RvbVByb3RvY29sTG9hZGVyPj4gbV9sb2FkZXJNYXA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQubW0Kc2ltaWxhcml0eSBpbmRleCA3MSUKcmVuYW1lIGZyb20gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eU1hYy5tbQpyZW5hbWUgdG8gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbQppbmRleCAyNDE4NmQzYjdmYi4uNjZjYTNh
MmY2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5t
bQpAQCAtMjQsMTkgKzI0LDE0IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgorI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50LmgiCiAKLSNpbXBvcnQgIkNoaWxkUHJvY2Vzc1Byb3h5LmgiCi0jaW1wb3J0
ICJDb25uZWN0aW9uLmgiCi0jaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5o
IgotI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2ltcG9y
dCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2Uu
aCIKLSNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9S
ZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBJUEM7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAg
LTQ0LDE3ICszOSwxNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogQHByaXZhdGUKICAgICBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Owog
ICAgIHVpbnQ2NF90IF9jdXN0b21Qcm90b2NvbElEOwotICAgIFJlZlB0cjxDb25uZWN0aW9uPiBf
Y29ubmVjdGlvbjsKICAgICBOU1VSTENhY2hlU3RvcmFnZVBvbGljeSBfc3RvcmFnZVBvbGljeTsK
ICAgICBOU1VSTENvbm5lY3Rpb24gKl91cmxDb25uZWN0aW9uOwogfQotLSAoaWQpaW5pdFdpdGhD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqKWN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90KWN1c3Rv
bVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb25uZWN0aW9uOihD
b25uZWN0aW9uICopY29ubmVjdGlvbjsKKy0gKGlkKWluaXRXaXRoQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6KEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KiljdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eSBjdXN0b21Qcm90b2NvbElEOih1aW50NjRfdCljdXN0b21Qcm90b2NvbElEIHJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Q7CiAtICh2b2lkKWN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5RGVzdHJveWVkOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tDdXN0b21Qcm90b2Nv
bExvYWRlcgogCi0tIChpZClpbml0V2l0aEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OihDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eSopY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgY3VzdG9t
UHJvdG9jb2xJRDoodWludDY0X3QpY3VzdG9tUHJvdG9jb2xJRCByZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0IGNvbm5lY3Rpb246KENvbm5lY3Rpb24gKiljb25uZWN0aW9uCistIChpZClp
bml0V2l0aEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OihDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSopY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgY3VzdG9tUHJvdG9jb2xJRDoodWludDY0
X3QpY3VzdG9tUHJvdG9jb2xJRCByZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7CiAg
ICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCkBAIC02MiwxMCArNTYsOCBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiAgICAgQVNTRVJUKGN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5KTsKICAgICBBU1NFUlQocmVxdWVzdCk7Ci0gICAgQVNTRVJUKGNvbm5lY3Rpb24p
OwogICAgIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSA9IGN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5OwogICAgIF9jdXN0b21Qcm90b2NvbElEID0gY3VzdG9tUHJvdG9jb2xJRDsKLSAgICBf
Y29ubmVjdGlvbiA9IGNvbm5lY3Rpb247CiAgICAgX3N0b3JhZ2VQb2xpY3kgPSBOU1VSTENhY2hl
U3RvcmFnZU5vdEFsbG93ZWQ7CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCkBA
IC03OSw3ICs3MSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIC0gKHZvaWQpZGVhbGxv
YwogewotICAgIF9jb25uZWN0aW9uID0gbnVsbHB0cjsKICAgICBbX3VybENvbm5lY3Rpb24gY2Fu
Y2VsXTsKICAgICBbX3VybENvbm5lY3Rpb24gcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2Nd
OwpAQCAtOTUsNyArODYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogLSAodm9pZCljb25u
ZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZEZhaWxXaXRoRXJyb3I6KE5T
RXJyb3IgKillcnJvcgogewogICAgIFJlc291cmNlRXJyb3IgY29yZUVycm9yKGVycm9yKTsKLSAg
ICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRG
YWlsV2l0aEVycm9yKF9jdXN0b21Qcm90b2NvbElELCBjb3JlRXJyb3IpLCAwKTsKKyAgICBfY3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHktPmRpZEZhaWxXaXRoRXJyb3IoX2N1c3RvbVByb3RvY29s
SUQsIGNvcmVFcnJvcik7CiAgICAgX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LT5zdG9wTG9h
ZGluZyhfY3VzdG9tUHJvdG9jb2xJRCk7CiB9CiAKQEAgLTEwOSwxOSArMTAwLDE5IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CiAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAq
KWNvbm5lY3Rpb24gZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UK
IHsKICAgICBSZXNvdXJjZVJlc3BvbnNlIGNvcmVSZXNwb25zZShyZXNwb25zZSk7Ci0gICAgX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2
ZVJlc3BvbnNlKF9jdXN0b21Qcm90b2NvbElELCBjb3JlUmVzcG9uc2UsIF9zdG9yYWdlUG9saWN5
KSwgMCk7CisgICAgX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LT5kaWRSZWNlaXZlUmVzcG9u
c2UoX2N1c3RvbVByb3RvY29sSUQsIGNvcmVSZXNwb25zZSwgX3N0b3JhZ2VQb2xpY3kpOwogfQog
CiAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVj
ZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY29yZURh
dGEoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0
aF0pOwotICAgIF9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFn
ZXI6OkRpZExvYWREYXRhKF9jdXN0b21Qcm90b2NvbElELCBjb3JlRGF0YSksIDApOworICAgIF9j
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS0+ZGlkTG9hZERhdGEoX2N1c3RvbVByb3RvY29sSUQs
IGNvcmVEYXRhKTsKIH0KIAogLSAoTlNVUkxSZXF1ZXN0ICopY29ubmVjdGlvbjooTlNVUkxDb25u
ZWN0aW9uICopY29ubmVjdGlvbiB3aWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3QgcmVkaXJlY3RSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UKIHsK
ICAgICBpZiAocmVkaXJlY3RSZXNwb25zZSkgewotICAgICAgICBfY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpXYXNSZWRpcmVjdGVkVG9SZXF1ZXN0KF9j
dXN0b21Qcm90b2NvbElELCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSwgMCk7CisgICAgICAg
IF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS0+d2FzUmVkaXJlY3RlZFRvUmVxdWVzdChfY3Vz
dG9tUHJvdG9jb2xJRCwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgfQogICAgIHJldHVybiByZXF1ZXN0OwpAQCAtMTI5LDcgKzEyMCw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIC0gKHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRp
bmc6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KIHsKLSAgICBfY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRGaW5pc2hMb2FkaW5nKF9jdXN0
b21Qcm90b2NvbElEKSwgMCk7CisgICAgX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LT5kaWRG
aW5pc2hMb2FkaW5nKF9jdXN0b21Qcm90b2NvbElEKTsKICAgICBfY3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHktPnN0b3BMb2FkaW5nKF9jdXN0b21Qcm90b2NvbElEKTsKIH0KIApAQCAtMTM3LDQx
ICsxMjgsMjggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eShDaGlsZFByb2Nlc3NQcm94eSogY2hpbGRQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NQb29sJiBw
cm9jZXNzUG9vbCkKLSAgICA6IG1fY2hpbGRQcm9jZXNzUHJveHkoY2hpbGRQcm9jZXNzUHJveHkp
Ci0gICAgLCBtX3Byb2Nlc3NQb29sKHByb2Nlc3NQb29sKQotewotICAgIEFTU0VSVChtX2NoaWxk
UHJvY2Vzc1Byb3h5KTsKLSAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksICp0aGlzKTsKLX0KLQotQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSgpCi17Ci0gICAgZm9yIChhdXRvJiBsb2FkZXIgOiBtX2xvYWRl
ck1hcCkKLSAgICAgICAgW2xvYWRlci52YWx1ZSBjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eURl
c3Ryb3llZF07Ci0gICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKTsKLX0KLQotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5n
KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY29yZVJl
cXVlc3QpCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3RhcnRMb2FkaW5nKEN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNvcmVSZXF1ZXN0KQogewogICAgIE5TVVJMUmVx
dWVzdCAqcmVxdWVzdCA9IGNvcmVSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBC
b2R5KTsKICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLQ3VzdG9t
UHJvdG9jb2xMb2FkZXIgKmxvYWRlciA9IFtbV0tDdXN0b21Qcm90b2NvbExvYWRlciBhbGxvY10g
aW5pdFdpdGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTp0aGlzIGN1c3RvbVByb3RvY29sSUQ6
Y3VzdG9tUHJvdG9jb2xJRCByZXF1ZXN0OnJlcXVlc3QgY29ubmVjdGlvbjptX2NoaWxkUHJvY2Vz
c1Byb3h5LT5jb25uZWN0aW9uKCldOworICAgIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgKmxvYWRl
ciA9IFtbV0tDdXN0b21Qcm90b2NvbExvYWRlciBhbGxvY10gaW5pdFdpdGhDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eTombWFuYWdlciBjdXN0b21Qcm90b2NvbElEOmN1c3RvbVByb3RvY29sSUQg
cmVxdWVzdDpyZXF1ZXN0XTsKICAgICBBU1NFUlQobG9hZGVyKTsKICAgICBBU1NFUlQoIW1fbG9h
ZGVyTWFwLmNvbnRhaW5zKGN1c3RvbVByb3RvY29sSUQpKTsKICAgICBtX2xvYWRlck1hcC5hZGQo
Y3VzdG9tUHJvdG9jb2xJRCwgbG9hZGVyKTsKICAgICBbbG9hZGVyIHJlbGVhc2VdOwogfQogCi12
b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElEKQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0b3BMb2Fk
aW5nKEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCkKIHsKICAgICBtX2xvYWRlck1hcC5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CiB9CiAKLXZv
aWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCit2b2lkIEN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6aW52YWxpZGF0ZShDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eSYpCiB7CisgICAgZm9yIChhdXRvJiBsb2FkZXIgOiBtX2xvYWRlck1hcCkKKyAgICAg
ICAgW2xvYWRlci52YWx1ZSBjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eURlc3Ryb3llZF07CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAwZTgwNzE3Y2RlOS4uYjNi
ZTA5OTQzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAKKyNpbXBvcnQgIkN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudC5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIk5ldHdv
cmtQcm9jZXNzUHJveHkuaCIKQEAgLTEyNiw2ICsxMjcsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
Ojp1cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25TdGF0ZSgpCiAgICAgZWxzZSBpZiAoIW1fcGx1Z2lu
UHJvY2Vzc01hbmFnZXJQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZFRva2VuKQogICAgICAgICBt
X3BsdWdpblByb2Nlc3NNYW5hZ2VyUHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRUb2tlbiA9IFBs
dWdpblByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS5wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxl
ZFRva2VuKCk7CiAjZW5kaWYKKworICAgIHNldEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSk7CiB9CiAKIE5T
TXV0YWJsZURpY3Rpb25hcnkgKldlYlByb2Nlc3NQb29sOjplbnN1cmVCdW5kbGVQYXJhbWV0ZXJz
KCkKQEAgLTI2NSw5ICsyNjgsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRp
YWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYQogICAgIHBhcmFt
ZXRlcnMucGFyZW50UHJvY2Vzc05hbWUgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHBy
b2Nlc3NOYW1lXTsKICAgICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIgPSBb
W05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdOwogCi0gICAgZm9yIChjb25z
dCBhdXRvJiBzY2hlbWUgOiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxl
cnMoKSkKLSAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVBy
b3RvY29scy5hcHBlbmQoc2NoZW1lKTsKLQogICAgIE5TVXNlckRlZmF1bHRzICpkZWZhdWx0cyA9
IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c107CiAKICAgICBwYXJhbWV0ZXJz
Lmh0dHBQcm94eSA9IFtkZWZhdWx0cyBzdHJpbmdGb3JLZXk6V2ViS2l0MkhUVFBQcm94eURlZmF1
bHRzS2V5XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuY3BwCnNpbWlsYXJpdHkgaW5kZXggODIlCnJlbmFtZSBmcm9tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS5jcHAKaW5kZXggNzcxOWQyODhlNGQuLjQ1MmYzYTg1ODA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAKQEAg
LTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKQEAgLTI3LDEwICsyOCw2IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCi0jaWYgUExBVEZPUk0oR1RLKQot
I2luY2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eShDaGlsZFByb2Nlc3NQcm94eSogY2hpbGRQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NQb29s
JiBwcm9jZXNzUG9vbCkKQEAgLTQ2LDE1ICs0Myw5IEBAIEN1c3RvbVByb3RvY29sTWFuYWdlclBy
b3h5Ojp+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoKQogICAgIG1fY2hpbGRQcm9jZXNzUHJv
eHktPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiB9CiAKLXZvaWQgQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCi17Ci0gICAgbV9wcm9jZXNzUG9vbC5jdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKS5pbnZhbGlkYXRlKCp0aGlzKTsKLX0KLQogdm9pZCBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAg
ICBpZiAoIW1fcHJvY2Vzc1Bvb2wuY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KCkuc3RhcnRM
b2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KSkKLSAgICAgICAgZGlkRmFp
bFdpdGhFcnJvcihjdXN0b21Qcm90b2NvbElELCBXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3Io
cmVxdWVzdCkpOworICAgIG1fcHJvY2Vzc1Bvb2wuY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
KCkuc3RhcnRMb2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KTsKIH0KIAog
dm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RvcExvYWRpbmcodWludDY0X3QgY3Vz
dG9tUHJvdG9jb2xJRCkKQEAgLTYyLDkgKzUzLDE5IEBAIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiAgICAgbV9w
cm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKS5zdG9wTG9hZGluZygqdGhp
cywgY3VzdG9tUHJvdG9jb2xJRCk7CiB9CiAKLXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHk6OmRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCit7CisgICAgbV9wcm9jZXNzUG9vbC5jdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKS5pbnZhbGlkYXRlKCp0aGlzKTsKK30KKwordm9pZCBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6d2FzUmVkaXJlY3RlZFRvUmVxdWVzdCh1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit7
CisgICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjpXYXNSZWRpcmVjdGVkVG9SZXF1ZXN0KGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3Qs
IHJlZGlyZWN0UmVzcG9uc2UpLCAwKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1aW50MzJfdCBjYWNoZVN0b3Jh
Z2VQb2xpY3kpCiB7Ci0gICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+c2VuZChNZXNzYWdlczo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRSZWNlaXZlUmVzcG9uc2UoY3VzdG9tUHJvdG9jb2xJRCwg
cmVzcG9uc2UsIDApLCAwKTsKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5kKE1lc3NhZ2Vz
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZFJlY2VpdmVSZXNwb25zZShjdXN0b21Qcm90b2Nv
bElELCByZXNwb25zZSwgY2FjaGVTdG9yYWdlUG9saWN5KSwgMCk7CiB9CiAKIHZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29s
SUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKaW5kZXggNGM3NDNjZDdlZWUuLmZm
ZTk5Y2JlMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkuaApAQCAtNTksMTIgKzU5LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJv
Y2Vzc0RpZENsb3NlKCk7CiAKLSNpZiBVU0UoU09VUCkKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CisgICAgdm9pZCB3YXNSZWRpcmVjdGVkVG9SZXF1ZXN0KHVpbnQ2NF90IGN1c3Rv
bVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
dWludDMyX3QgY2FjaGVTdG9yYWdlUG9saWN5KTsKICAgICB2b2lkIGRpZExvYWREYXRhKHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogICAgIHZv
aWQgZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQpOwotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CmluZGV4IDJhZmZjZmRiZTk2Li44ZGE0ZDI5YzQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xNDksNiArMTQ5LDEyIEBAIHN0YXRpYyBXZWJz
aXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uKEFQSTo6CiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CiAKK3N0YXRpYyBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2xvYmFsVVJMU2NoZW1lc1dp
dGhDdXN0b21Qcm90b2NvbEhhbmRsZXJzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHNldDsKKyAgICByZXR1
cm4gc2V0OworfQorCiBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2NvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbi5jb3B5KCkpCiAgICAgLCBtX2hhdmVJbml0aWFsRW1wdHlQcm9jZXNzKGZh
bHNlKQpAQCAtMTU3LDkgKzE2Myw3IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChB
UEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1fYXV0
b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKSkK
ICAgICAsIG1fZG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRvd25sb2FkQ2xp
ZW50PigpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpMZWdh
Y3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKSkKLSNpZiBVU0UoU09VUCkKICAgICAsIG1fY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQ+KCkpCi0jZW5kaWYKICAgICAsIG1fdmlzaXRlZExpbmtTdG9yZShWaXNp
dGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKICAgICAsIG1fdmlzaXRlZExpbmtzUG9wdWxhdGVkKGZh
bHNlKQogICAgICwgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlcih0aGlzKQpAQCAtMzAwLDYgKzMw
NCwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+CiAgICAgICAgIG1fYXV0b21hdGlvbkNsaWVu
dCA9IFdURk1vdmUoYXV0b21hdGlvbkNsaWVudCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnNldEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+JiYgY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KQor
eworICAgIGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KQorICAgICAgICBtX2N1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQ+KCk7CisgICAgZWxzZQorICAgICAgICBtX2N1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudCA9IFdURk1vdmUoY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KTsKK30K
Kwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKHVuc2ln
bmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcykKIHsKICAgICAvLyBHdWFyZCBhZ2FpbnN0IEFQ
SSBtaXN1c2UuCkBAIC0zNTMsNiArMzY1LDEyIEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlBy
b2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcygpCiAgICAgcGFyYW1ldGVycy5kaXNrQ2Fj
aGVTaXplT3ZlcnJpZGUgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNoZVNpemVPdmVycmlkZSgp
OwogICAgIHBhcmFtZXRlcnMuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24gPSBt
X2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uOwogCisgICAgZm9yIChhdXRvJiBz
Y2hlbWUgOiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMoKSkKKyAg
ICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5h
cHBlbmQoc2NoZW1lKTsKKworICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV91cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scykKKyAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVz
UmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKKwogICAgIHBhcmFt
ZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5kaXNrQ2FjaGVEaXJl
Y3RvcnkoKTsKICAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHko
KSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRpc2tDYWNo
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CkBAIC05NTksMTIgKzk3Nyw2IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcm
IHVybFNjaGVtZSkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OlJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZCh1cmxTY2hlbWUpKTsKIH0KIAotSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIFdlYlByb2Nlc3NQb29sOjpnbG9i
YWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMoKQotewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4g
c2V0OwotICAgIHJldHVybiBzZXQ7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVy
R2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhhbmRsZXJzKGNvbnN0IFN0cmlu
ZyYgdXJsU2NoZW1lKQogewogICAgIGlmICghdXJsU2NoZW1lKQpAQCAtMTM1NywxNyArMTM2OSwx
NCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zRmlsdGVy
aW5nT3V0RW50cmllc0FkZGVkQWZ0ZXJUaW1lKAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdp
c3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewotI2lm
IFVTRShTT1VQKQotICAgIG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMu
YWRkKHNjaGVtZSk7Ci0jZW5kaWYKKyAgICBpZiAoIWdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9t
UHJvdG9jb2xIYW5kbGVycygpLmNvbnRhaW5zKHNjaGVtZSkpCisgICAgICAgIG1fdXJsU2NoZW1l
c1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYWRkKHNjaGVtZSk7CiAgICAgc2VuZFRvTmV0
d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6UmVnaXN0ZXJT
Y2hlbWUoc2NoZW1lKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJTY2hl
bWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKLSNpZiBVU0UoU09V
UCkKICAgICBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLnJlbW92ZShz
Y2hlbWUpOwotI2VuZGlmCiAgICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OkN1
c3RvbVByb3RvY29sTWFuYWdlcjo6VW5yZWdpc3RlclNjaGVtZShzY2hlbWUpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBiNzkzNDk4ZDRlOC4u
YTlmNjU2YWI4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CkBAIC0xNDIsOSArMTQyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGlzdG9yeUNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4pOwogICAgIHZv
aWQgc2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+
KTsKICAgICB2b2lkIHNldEF1dG9tYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0
b21hdGlvbkNsaWVudD4pOwotI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudD4mJik7Ci0jZW5kaWYKIAogICAgIHZvaWQgc2V0TWF4aW11bU51bWJlck9mUHJvY2Vz
c2VzKHVuc2lnbmVkKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHBy
b2Nlc3NlcyBydW5uaW5nLgogICAgIHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcygp
IGNvbnN0IHsgcmV0dXJuICFtX2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKSA/
IFVJTlRfTUFYIDogbV9jb25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCk7IH0KQEAg
LTIzNSw5ICsyMzMsNyBAQCBwdWJsaWM6CiAgICAgQVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNs
aWVudCYgaGlzdG9yeUNsaWVudCgpIHsgcmV0dXJuICptX2hpc3RvcnlDbGllbnQ7IH0KICAgICBX
ZWJDb250ZXh0Q2xpZW50JiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCi0jaWYgVVNF
KFNPVVApCiAgICAgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQmIGN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2N1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudDsgfQotI2VuZGlmCiAKICAgICBXZWJJY29uRGF0YWJhc2UqIGljb25EYXRhYmFzZSgp
IGNvbnN0IHsgcmV0dXJuIG1faWNvbkRhdGFiYXNlLmdldCgpOyB9CiAKQEAgLTMzNiw3ICszMzIs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNv
bnN0IFN0cmluZyYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29s
KGNvbnN0IFN0cmluZyYpOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+JiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxl
cnMoKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3Vz
dG9tUHJvdG9jb2xIYW5kbGVycyhjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgdm9pZCB1bnJl
Z2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhhbmRsZXJzKGNvbnN0
IFN0cmluZyYpOwogCkBAIC00NzQsOSArNDY5LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiBtX2F1dG9tYXRpb25DbGllbnQ7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+IG1fZG93bmxvYWRDbGllbnQ7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+IG1faGlzdG9y
eUNsaWVudDsKLSNpZiBVU0UoU09VUCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQ+IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OwotI2Vu
ZGlmCiAKICAgICBSZWZQdHI8V2ViQXV0b21hdGlvblNlc3Npb24+IG1fYXV0b21hdGlvblNlc3Np
b247CiAKQEAgLTUyMiw2ICs1MTUsNyBAQCBwcml2YXRlOgogICAgIEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kgbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeSB7IEhUVFBDb29raWVBY2NlcHRQ
b2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB9OwogICAgIFdlYkNvcmU6OlNvdXBOZXR3
b3JrUHJveHlTZXR0aW5ncyBtX25ldHdvcmtQcm94eVNldHRpbmdzOwogI2VuZGlmCisgICAgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV91cmxTY2hlbWVzUmVnaXN0
ZXJlZEZvckN1c3RvbVByb3RvY29sczsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5Q
dHI8TlNPYmplY3Q+IG1fZW5oYW5jZWRBY2Nlc3NpYmlsaXR5T2JzZXJ2ZXI7CkBAIC01NTQsNyAr
NTQ4LDYgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShTT1VQKQogICAgIGJvb2wgbV9pZ25vcmVUTFNF
cnJvcnMgeyB0cnVlIH07Ci0gICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD4gbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29sczsKICNlbmRpZgog
CiAgICAgYm9vbCBtX21lbW9yeUNhY2hlRGlzYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcAppbmRleCA2NWIwOWM0YjM4
Zi4uMWMxYmIzNjk3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3Vw
L1dlYlByb2Nlc3NQb29sU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3Nv
dXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcApAQCAtNDIsOCArNDIsNiBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYQogICAgIHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9saWN5ID0gbV9pbml0aWFs
SFRUUENvb2tpZUFjY2VwdFBvbGljeTsKICAgICBwYXJhbWV0ZXJzLmlnbm9yZVRMU0Vycm9ycyA9
IG1faWdub3JlVExTRXJyb3JzOwogICAgIHBhcmFtZXRlcnMubGFuZ3VhZ2VzID0gV2ViQ29yZTo6
dXNlclByZWZlcnJlZExhbmd1YWdlcygpOwotICAgIGZvciAoY29uc3QgYXV0byYgc2NoZW1lIDog
bV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scykKLSAgICAgICAgcGFyYW1l
dGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1l
KTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2lu
ZyA9IGZhbHNlOwogICAgIHBhcmFtZXRlcnMucHJveHlTZXR0aW5ncyA9IG1fbmV0d29ya1Byb3h5
U2V0dGluZ3M7CiB9CkBAIC01NSwxNCArNTMsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRJ
Z25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCiAgICAgICAgIG5ldHdvcmtQcm9j
ZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRJZ25vcmVUTFNFcnJvcnMo
bV9pZ25vcmVUTFNFcnJvcnMpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudD4mJiBjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpCi17Ci0gICAg
aWYgKCFjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpCi0gICAgICAgIG1fY3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudD4oKTsKLSAgICBlbHNlCi0gICAgICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50ID0gV1RGTW92ZShjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOwotfQotCiB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXROZXR3b3JrUHJveHlTZXR0aW5ncyhjb25zdCBXZWJDb3JlOjpT
b3VwTmV0d29ya1Byb3h5U2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIG1fbmV0d29ya1Byb3h5
U2V0dGluZ3MgPSBzZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZDVlMjc4MDQwNy4uYmZjZjYyOGRhNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTYwMCw3ICs2MDAsNiBAQAogCQkyOTg0RjU4ODE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODRGNTg2MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Q
cm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkyOTg0RjU4OTE2NEJB
MDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODRGNTg3MTY0QkEwOTUwMDRC
QzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oICovOyB9OwogCQkyOUFEMzA5
MzE2NEI0QzVEMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QUQzMDkyMTY0QjRDNUQw
MDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oICovOyB9OwotCQkyOUFEMzA5
NjE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUFEMzA5NTE2NEI0
QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gKi87IH07CiAJ
CTI5Q0Q1NUFBMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlD
RDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
LmggKi87IH07CiAJCTI5Q0Q1NUFCMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0QmFzZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0QmFzZS5tbSAqLzsgfTsKIAkJMkQxMDg3NjAxRDJDNTczRTAwQjg1RjgyIC8qIExv
YWRQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJEMTA4NzVFMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgKi87
IH07CkBAIC0xMTY2LDYgKzExNjUsMTAgQEAKIAkJN0E3OTFFRkExQzdDRkNGMTAwQzRDNTJCIC8q
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc5MUVGOTFDN0NGQjM3
MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKIAkJN0E3OTFFRkIxQzdDRkQwMTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTc5MUVGODFDN0NGQjEwMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCAqLzsgfTsKIAkJN0E3OTFFRkMxQzdEMDhDNTAw
QzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2
QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLzsgfTsKKwkJN0E4MjFG
NEExRTJGNjVFOTAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBODIxRjQ5MUUyRjY1
REQwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAgKi87IH07CisJCTdB
ODIxRjRDMUUyRjY3MzkwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBODIxRjRCMUUy
RjY2NDgwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCAqLzsgfTsKKwkJ
N0E4MjFGNEUxRTJGNjdBODAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBODIxRjRE
MUUyRjY3OUUwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0gKi87IH07
CisJCTdBODIxRjUwMUUyRjdBNzUwMDYwNDU3NyAvKiBBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
ODIxRjRGMUUyRjdBNUMwMDYwNDU3NyAvKiBBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQu
aCAqLzsgfTsKIAkJN0MwNjVGMkIxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlckRhdGFUeXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyRGF0YVR5cGVzLmNwcCAqLzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8q
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFBODE3M0Iw
QkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyog
V0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi87IH07CkBAIC0yNzMzLDcgKzI3MzYsNiBAQAogCQky
OTg0RjU4NjE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbVBy
b3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI5ODRGNTg3MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJN
ZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUFEMzA5
MjE2NEI0QzVEMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDsg
cGF0aCA9IEN1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyOUFEMzA5NTE2NEI0QzkzMDA3MkRFQTkgLyogQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbTsgcGF0aCA9IEN1
c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5QUQzMDk3MTY0QjRFMjEwMDcyREVBOSAvKiBDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjsgcGF0aCA9IEN1c3RvbVBy
b3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNz
aWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0QmFzZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMzM1Nyw2ICszMzU5LDEwIEBACiAJCTdBNUUzOTQ5MUQ1QkQ4QTcwMEI0
QjdDRSAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSAiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4u
c2IiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc5MUVGODFDN0NGQjEwMDBDNEM1
MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVz
c2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3OTFFRjkxQzdDRkIzNzAw
QzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QTgyMUY0OTFFMkY2NUREMDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuY3BwOyBwYXRoID0gQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E4MjFG
NEIxRTJGNjY0ODAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E4MjFGNEQxRTJGNjc5RTAwNjA0NTc3
IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E4MjFGNEYxRTJGN0E1QzAwNjA0NTc3IC8qIEFQSUN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QTlDRDhDMTFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTlD
RDhDMjFDNzc5QUQ2MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5OTAs
NiArNDk5Niw4IEBACiAJCQkJOTlDODFENTYxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25D
bGllbnQubW0gKi8sCiAJCQkJOTkwRDI4QjcxQzY1MzlBMDAwOTg2OTc3IC8qIEF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50LmggKi8sCiAJCQkJOTkwRDI4QjgxQzY1MzlBMDAwOTg2OTc3IC8qIEF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50Lm1tICovLAorCQkJCTdBODIxRjRCMUUyRjY2NDgwMDYwNDU3NyAv
KiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCAqLywKKwkJCQk3QTgyMUY0RDFFMkY2NzlF
MDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tICovLAogCQkJCTgzODkx
QjZBMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oICovLAogCQkJ
CTgzODkxQjZCMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5tbSAq
LywKIAkJCQlBMURGNjMxMTE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQuaCAqLywK
QEAgLTUxNTAsNiArNTE1OCw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyOUFEMzA5NDE2NEI0
QzgzMDA3MkRFQTkgLyogbWFjICovLAogCQkJCTI5QUQzMDkyMTY0QjRDNUQwMDcyREVBOSAvKiBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oICovLAorCQkJCTdBODIxRjQ5MUUyRjY1REQwMDYw
NDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAgKi8sCiAJCQkJMjlBRDMwOTcx
NjRCNEUyMTAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
ICovLAogCQkJKTsKIAkJCW5hbWUgPSBDdXN0b21Qcm90b2NvbHM7CkBAIC01MTU4LDcgKzUxNjcs
NiBAQAogCQkyOUFEMzA5NDE2NEI0QzgzMDA3MkRFQTkgLyogbWFjICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkyOUFEMzA5NTE2NEI0QzkzMDA3MkRFQTkg
LyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9
IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02NTgwLDYgKzY1ODgsNyBAQAog
CQkJCTk5QzgxRDVCMUMyMEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi8s
CiAJCQkJOTkwRDI4QjMxQzY1MjZENDAwOTg2OTc3IC8qIEFQSUF1dG9tYXRpb25TZXNzaW9uQ2xp
ZW50LmggKi8sCiAJCQkJMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51
Q2xpZW50LmggKi8sCisJCQkJN0E4MjFGNEYxRTJGN0E1QzAwNjA0NTc3IC8qIEFQSUN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudC5oICovLAogCQkJCTgzODkxQjYyMUE2OEIzNDIwMDMwRjM4NiAv
KiBBUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oICovLAogCQkJCTFGN0QzNkMwMThEQTUxM0Yw
MEQ5RDY1OSAvKiBBUElEb3dubG9hZENsaWVudC5oICovLAogCQkJCTMxN0ZFN0MxMUM0ODdBNjYw
MEEwQ0E4OSAvKiBBUElFeHBlcmltZW50YWxGZWF0dXJlLmNwcCAqLywKQEAgLTc4NjgsNiArNzg3
Nyw3IEBACiAJCQkJN0NBMzc5M0UxQUMzNzhCMzAwNzlEQzM3IC8qIF9XS1VzZXJDb250ZW50RXh0
ZW5zaW9uU3RvcmVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Qzg5RDJCQTFBNkIwRjJD
MDAzQTVGREUgLyogX1dLVXNlckNvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdD
ODlEMkJDMUE2QjBGNUIwMDNBNUZERSAvKiBfV0tVc2VyQ29udGVudEZpbHRlckludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3QTgyMUY1MDFFMkY3QTc1MDA2MDQ1NzcgLyogQVBJQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Qzg4MkRGNzFDN0U5
OTY1MDA2QkY3MzEgLyogX1dLVXNlckNvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0M4ODJERjkxQzdFOTk2RjAwNkJGNzMxIC8qIF9XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0NCMzY1QUExRDMxREI3MDAwNzE1OENBIC8qIF9XS1VzZXJJ
bml0aWF0ZWRBY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtODE3Niw2ICs4MTg2LDcgQEAKIAkJ
CQk0MURDNDU5RjFFM0RCREE1MDBCMTFGNTEgLyogV2ViUlRDU29ja2V0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTBFQzkwNjEyNEMwQUI4MDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVDOTBGMTI0QzBBRjUwMDdFRjRBNSAvKiBQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdBODIxRjRD
MUUyRjY3MzkwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBNzg2NUJBMTZDQUM3MTUwMEFDRTgzQSAvKiBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyQkI2RDExNDEx
N0I0RDAwMEYzNUQ0IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMkQ5MEQyMTI4MUM5NjYwMDFFQjk2MiAvKiBQbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKQEAgLTk0OTMsNyArOTUwNCw2IEBACiAJ
CQkJQjg3OEI2MTYxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDMTQyNzFEMUMyM0Y4Q0YwMEQ0MTE4MyAvKiBDdXN0b21Qcm90b2NvbE1h
bmFnZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5ODRGNTg4MTY0QkEwOTUwMDRCQzBD
NiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJMjlBRDMwOTYxNjRCNEM5MzAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk4NEY1N0MxNjRCOTE1RjAwNEJDMEM2
IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxRTM1MUZGMTgwRjVEMEYwMEU1M0JFOSAvKiBEYXRhYmFzZVByb2Nlc3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1RTc3MkIxODQwMDhCOTAwMDcyMDNGIC8qIERhdGFi
YXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMTU0
LDYgKzEwMTY0LDcgQEAKIAkJCQkxQUI0MEVFNTFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRl
bUlkZW50aWZpZXJzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc1RkQxMjRGRjAyNzAwNjhG
MjBBIC8qIFdLTXV0YWJsZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUZGMTI0
RkYwMjcwMDY4RjIwQSAvKiBXS011dGFibGVEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTdBODIxRjRBMUUyRjY1RTkwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTVCMUM1MDE4OTg2MDZGMDA0RkNGOUIgLyogV0tO
YXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyNTZFMzcxOEExQTc4ODAwNkZCOTIy
IC8qIFdLTmF2aWdhdGlvbkFjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEM0E2NURBMUE3
QzNBMUYwMENBQzYzNyAvKiBXS05hdmlnYXRpb25BY3Rpb25SZWYuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0xMDI1Nyw2ICsxMDI2OCw3IEBACiAJCQkJMUFENjBGNUQxOEUyMEY0QzAwMjBDMDM0IC8q
IFdLV2luZG93RmVhdHVyZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTdDMERGNjFCN0QxRjEw
MDBBOUI4NDggLyogV0tXaW5kb3dGZWF0dXJlc1JlZi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
Q0JFQ0RFNzE2QjY0MTY4MDAwNDdBMUEgLyogWFBDU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291
cmNlcyAqLywKKwkJCQk3QTgyMUY0RTFFMkY2N0E4MDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302262</attachid>
            <date>2017-02-21 08:28:03 -0800</date>
            <delta_ts>2017-02-21 10:26:37 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk2-custom-protocols.diff</filename>
            <type>text/plain</type>
            <size>42913</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNGFlZWVlNjc1YzIuLjJkODIxNWY2YTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dApAQCAtNDIwLDYgKzQyMCw4IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKIAog
ICAgIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCiAKKyAgICBVSVByb2Nl
c3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3Bw
CisKICAgICBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAogCiAgICAg
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggMmUyZWI3MDRmN2UuLmM0ZWI3ODFhYmI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTggQEAKKzIwMTctMDItMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgorCisgICAgICAgIFJlZHVjZSBwbGF0Zm9ybSBpZmRlZnMgaW4gV2ViS2l0MiBj
dXN0b20gcHJvdG9jb2xzIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUwMjgKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICBNYWtlIG1hYyBpbXBsZW1lbnRhdGlvbiB1c2UgdGhlIEFQSUN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB0byBzaGFyZSBtb3JlIGNvZGUgd2l0aCB0aGUgc291
cCBiYXNlZCBwb3J0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuY3BwLgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBSZW1v
dmUgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcC4KKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6IFJlbW92ZSBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oOgorICAgICAgICAoQVBJOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyk6IE1ha2UgaXQgdm9pZCwgc2luY2Ug
d2Ugd2VyZSBhbHdheXMgcmV0dXJuaW5nIHRydWUgYW5kIHRoZQorICAgICAgICByZXR1cm5lZCB2
YWx1ZSB3YXMgaWdub3JlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Nj
aGVtZV9yZXF1ZXN0LmNwcDoKKyAgICAgICAgKEV3a1VybFNjaGVtZVJlcXVlc3Q6OmZpbmlzaCk6
IFVwZGF0ZSB0byBuZXcgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgQVBJLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHA6
CisgICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNrKTogRGl0dG8uCisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbExvYWRlciBpbml0V2l0
aEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OmN1c3RvbVByb3RvY29sSUQ6cmVxdWVzdDpdKToK
KyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbExvYWRlciBkZWFsbG9jXSk6CisgICAgICAgICgt
W1dLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgY29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOgor
ICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29sTG9hZGVyIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJl
c3BvbnNlOl0pOgorICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29sTG9hZGVyIGNvbm5lY3Rpb246
ZGlkUmVjZWl2ZURhdGE6XSk6CisgICAgICAgICgtW1dLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgY29u
bmVjdGlvbjp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpdKToKKyAgICAgICAgKC1b
V0tDdXN0b21Qcm90b2NvbExvYWRlciBjb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzpdKToKKyAg
ICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OjpzdGFydExvYWRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0b3BMb2Fk
aW5nKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6
IFNldCB0aGUgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOiBSZW1vdmUg
Y29kZSB0aGF0IGlzIG5vdyBzaGFyZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENs
b3NlKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6Ondhc1Jl
ZGlyZWN0ZWRUb1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxV
UkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMpOiBKdXN0IG1vdmVkIGhlcmUgdG8g
dXNlIGl0IGZyb20gZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKTogUmVtb3ZlIHNvdXAgaWZkZWZzLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
KTogTW92ZWQgZnJvbSB0aGUgc291cCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKTogSW5pdGlhbGl6ZSBjdXN0b20g
cHJvdG9jb2xzIHBhcmFtZXRlcnMuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpy
ZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKTogUmVnaXN0ZXIgdGhlIHByb3RvY29sIGlm
IG5vdCBhbHJlYWR5IHJlZ2lzdGVyZWQgZ2xvYmFsbHkuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2wpOiBSZW1vdmUgc291
cCBpZmRlZnMuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6IFJlbW92ZSBz
b3VwIGlmZGVmcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50
RWZsLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0
d29ya1Byb2Nlc3MpOiBSZW1vdmUgY29kZSB0aGF0IGlzIG5vdyBzaGFyZWQuCisgICAgICAgICog
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE3LTAyLTIxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjIxMjY5OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNmZk
M2ZkZTUyOGQuLjg4ZDVlYWU0NjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzAy
LDggKzMwMiw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgVUlQcm9jZXNz
L2xpbnV4L01lbW9yeVByZXNzdXJlTW9uaXRvci5jcHAKIAotICAgIFVJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAK
LQogICAgIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwCiAKICAgICBV
SVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtTWFjLmNtYWtlCmluZGV4IDZjZGYwOTRiNmI1Li5hNjdlNGU3YjFmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1NYWMuY21ha2UKQEAgLTI1OSw4ICsyNTksNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NP
VVJDRVMKIAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1t
CiAKLSAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5TWFjLm1tCi0KICAgICBVSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29y
a1Byb2Nlc3NQcm94eU1hYy5tbQogCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpbklu
Zm9TdG9yZU1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKaW5kZXggNTFlMThiZGQ0Njku
Ljk0NWRlM2ZjYTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcg
QEAgY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5DdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgYm9v
bCBzdGFydExvYWRpbmcoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYsIHVpbnQ2
NF90IC8qIGN1c3RvbVByb3RvY29sSUQgKi8sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0TG9hZGluZyhXZWJL
aXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLyogY3VzdG9tUHJvdG9j
b2xJRCAqLywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHN0b3BMb2FkaW5nKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1
aW50NjRfdCAvKiBjdXN0b21Qcm90b2NvbElEICovKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBp
bnZhbGlkYXRlKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCmluZGV4IDI1ZTc3MzM0MmE5Li5m
MDRiNzI2ZjExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3Bw
CkBAIC0zNiwxMCArMzYsOSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJvb2wg
c3RhcnRMb2FkaW5nKEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIG92ZXJy
aWRlCisgICAgdm9pZCBzdGFydExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1h
bmFnZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHdlYmtpdFdlYkNvbnRleHRTdGFydExv
YWRpbmdDdXN0b21Qcm90b2NvbChtX3dlYkNvbnRleHQsIGN1c3RvbVByb3RvY29sSUQsIHJlcXVl
c3QsIG1hbmFnZXIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICB2b2lkIHN0
b3BMb2FkaW5nKEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgY3VzdG9tUHJv
dG9jb2xJRCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKaW5kZXggYWJhMWI5NjRmNzMu
LjU5YmRiOTMwZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcApAQCAtMTkzLDcgKzE5Myw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2soR0lucHV0U3Ry
ZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jCiAgICAgICAgIC8vIEZpcnN0IGNodW5rIHJlYWQuIElu
IGNhc2Ugb2YgZW1wdHkgcmVwbHkgYW4gZW1wdHkgQVBJOjpEYXRhIGlzIHNlbnQgdG8gdGhlIG5l
dHdvcmtpbmcgcHJvY2Vzcy4KICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwo
VVJMKCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVURjgocHJp
di0+bWltZVR5cGUuZGF0YSgpKSwKICAgICAgICAgICAgIHByaXYtPnN0cmVhbUxlbmd0aCwgZW1w
dHlTdHJpbmcoKSk7Ci0gICAgICAgIHByaXYtPm1hbmFnZXItPmRpZFJlY2VpdmVSZXNwb25zZShw
cml2LT5yZXF1ZXN0SUQsIHJlc3BvbnNlKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKHByaXYtPnJlcXVlc3RJRCwgcmVzcG9uc2UsIDApOwogICAgICAgICBwcml2
LT5tYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEpOwogICAgIH0g
ZWxzZSBpZiAoYnl0ZXNSZWFkIHx8ICghYnl0ZXNSZWFkICYmICFwcml2LT5zdHJlYW1MZW5ndGgp
KSB7CiAgICAgICAgIC8vIFN1YnNlcXVlbnQgY2h1bmsgcmVhZC4gV2Ugb25seSBzZW5kIGFuIGVt
cHR5IEFQSTo6RGF0YSB0byB0aGUgbmV0d29ya2luZyBwcm9jZXNzIHdoZW4gc3RyZWFtIGxlbmd0
aCBpcyB1bmtub3duLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi5mOGQxMWI2ZWFjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaApA
QCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJBUElDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQuaCIKKyNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisKK09CSkNfQ0xBU1MgV0tDdXN0b21Qcm90b2NvbExvYWRlcjsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk7CisKK2NsYXNzIEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudCB7Citwcml2YXRlOgorICAgIHZvaWQgc3RhcnRMb2FkaW5nKEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLypjdXN0b21Qcm90b2NvbElEKi8sIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGZpbmFsOworICAgIHZvaWQgc3RvcExvYWRpbmcoQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCAvKmN1c3RvbVByb3RvY29sSUQqLykg
ZmluYWw7CisgICAgdm9pZCBpbnZhbGlkYXRlKEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Jikg
ZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8V0tDdXN0b21Qcm90b2Nv
bExvYWRlcj4+IG1fbG9hZGVyTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tCnNpbWlsYXJpdHkg
aW5kZXggNzElCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0KcmVuYW1l
IHRvIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQubW0KaW5kZXggMjQxODZkM2I3ZmIuLjY2Y2EzYTJmNjBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0KQEAgLTI0LDE5ICsyNCwxNCBAQAog
ICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHkuaCIKKyNpbXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogCi0jaW1w
b3J0ICJDaGlsZFByb2Nlc3NQcm94eS5oIgotI2ltcG9ydCAiQ29ubmVjdGlvbi5oIgotI2ltcG9y
dCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKLSNpbXBvcnQgIkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5LmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCi0jaW1wb3J0ICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgogCi11c2luZyBuYW1lc3BhY2UgSVBDOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC00NCwxNyArMzksMTYgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIEBwcml2YXRlCiAgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkqIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTsKICAgICB1aW50NjRfdCBfY3VzdG9tUHJv
dG9jb2xJRDsKLSAgICBSZWZQdHI8Q29ubmVjdGlvbj4gX2Nvbm5lY3Rpb247CiAgICAgTlNVUkxD
YWNoZVN0b3JhZ2VQb2xpY3kgX3N0b3JhZ2VQb2xpY3k7CiAgICAgTlNVUkxDb25uZWN0aW9uICpf
dXJsQ29ubmVjdGlvbjsKIH0KLS0gKGlkKWluaXRXaXRoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHk6KEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KiljdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSBjdXN0b21Qcm90b2NvbElEOih1aW50NjRfdCljdXN0b21Qcm90b2NvbElEIHJlcXVlc3Q6KE5T
VVJMUmVxdWVzdCAqKXJlcXVlc3QgY29ubmVjdGlvbjooQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb247
CistIChpZClpbml0V2l0aEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OihDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eSopY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgY3VzdG9tUHJvdG9jb2xJ
RDoodWludDY0X3QpY3VzdG9tUHJvdG9jb2xJRCByZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0OwogLSAodm9pZCljdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eURlc3Ryb3llZDsKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIKIAotLSAoaWQpaW5pdFdp
dGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkq
KWN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90KWN1
c3RvbVByb3RvY29sSUQgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb25uZWN0aW9u
OihDb25uZWN0aW9uICopY29ubmVjdGlvbgorLSAoaWQpaW5pdFdpdGhDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eTooQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqKWN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5IGN1c3RvbVByb3RvY29sSUQ6KHVpbnQ2NF90KWN1c3RvbVByb3RvY29sSUQgcmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
CiAgICAgaWYgKCFzZWxmKQpAQCAtNjIsMTAgKzU2LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogICAgIEFTU0VSVChjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSk7CiAgICAgQVNTRVJU
KHJlcXVlc3QpOwotICAgIEFTU0VSVChjb25uZWN0aW9uKTsKICAgICBfY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkgPSBjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTsKICAgICBfY3VzdG9tUHJv
dG9jb2xJRCA9IGN1c3RvbVByb3RvY29sSUQ7Ci0gICAgX2Nvbm5lY3Rpb24gPSBjb25uZWN0aW9u
OwogICAgIF9zdG9yYWdlUG9saWN5ID0gTlNVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2VkOwogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgpAQCAtNzksNyArNzEsNiBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBfY29ubmVjdGlvbiA9
IG51bGxwdHI7CiAgICAgW191cmxDb25uZWN0aW9uIGNhbmNlbF07CiAgICAgW191cmxDb25uZWN0
aW9uIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKQEAgLTk1LDcgKzg2LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9u
ICopY29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKIHsKICAgICBS
ZXNvdXJjZUVycm9yIGNvcmVFcnJvcihlcnJvcik7Ci0gICAgX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkRmFpbFdpdGhFcnJvcihfY3VzdG9tUHJv
dG9jb2xJRCwgY29yZUVycm9yKSwgMCk7CisgICAgX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
LT5kaWRGYWlsV2l0aEVycm9yKF9jdXN0b21Qcm90b2NvbElELCBjb3JlRXJyb3IpOwogICAgIF9j
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS0+c3RvcExvYWRpbmcoX2N1c3RvbVByb3RvY29sSUQp
OwogfQogCkBAIC0xMDksMTkgKzEwMCwxOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogLSAo
dm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVS
ZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCiB7CiAgICAgUmVzb3VyY2VSZXNwb25z
ZSBjb3JlUmVzcG9uc2UocmVzcG9uc2UpOwotICAgIF9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZFJlY2VpdmVSZXNwb25zZShfY3VzdG9tUHJvdG9j
b2xJRCwgY29yZVJlc3BvbnNlLCBfc3RvcmFnZVBvbGljeSksIDApOworICAgIF9jdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKF9jdXN0b21Qcm90b2NvbElELCBj
b3JlUmVzcG9uc2UsIF9zdG9yYWdlUG9saWN5KTsKIH0KIAogLSAodm9pZCljb25uZWN0aW9uOihO
U1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRh
CiB7CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGNvcmVEYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKLSAgICBfY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRMb2FkRGF0YShfY3VzdG9t
UHJvdG9jb2xJRCwgY29yZURhdGEpLCAwKTsKKyAgICBfY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHktPmRpZExvYWREYXRhKF9jdXN0b21Qcm90b2NvbElELCBjb3JlRGF0YSk7CiB9CiAKIC0gKE5T
VVJMUmVxdWVzdCAqKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gd2ls
bFNlbmRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHJlZGlyZWN0UmVzcG9uc2U6KE5T
VVJMUmVzcG9uc2UgKilyZWRpcmVjdFJlc3BvbnNlCiB7CiAgICAgaWYgKHJlZGlyZWN0UmVzcG9u
c2UpIHsKLSAgICAgICAgX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29s
TWFuYWdlcjo6V2FzUmVkaXJlY3RlZFRvUmVxdWVzdChfY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVz
dCwgcmVkaXJlY3RSZXNwb25zZSksIDApOworICAgICAgICBfY3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHktPndhc1JlZGlyZWN0ZWRUb1JlcXVlc3QoX2N1c3RvbVByb3RvY29sSUQsIHJlcXVlc3Qs
IHJlZGlyZWN0UmVzcG9uc2UpOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KICAgICByZXR1
cm4gcmVxdWVzdDsKQEAgLTEyOSw3ICsxMjAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
CiAtICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOihOU1VSTENvbm5lY3Rpb24gKilj
b25uZWN0aW9uCiB7Ci0gICAgX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlcjo6RGlkRmluaXNoTG9hZGluZyhfY3VzdG9tUHJvdG9jb2xJRCksIDApOworICAg
IF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS0+ZGlkRmluaXNoTG9hZGluZyhfY3VzdG9tUHJv
dG9jb2xJRCk7CiAgICAgX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LT5zdG9wTG9hZGluZyhf
Y3VzdG9tUHJvdG9jb2xJRCk7CiB9CiAKQEAgLTEzNyw0MSArMTI4LDI4IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1DdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoQ2hpbGRQcm9jZXNzUHJveHkqIGNo
aWxkUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCi0gICAgOiBtX2No
aWxkUHJvY2Vzc1Byb3h5KGNoaWxkUHJvY2Vzc1Byb3h5KQotICAgICwgbV9wcm9jZXNzUG9vbChw
cm9jZXNzUG9vbCkKLXsKLSAgICBBU1NFUlQobV9jaGlsZFByb2Nlc3NQcm94eSk7Ci0gICAgbV9j
aGlsZFByb2Nlc3NQcm94eS0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7Ci19Ci0KLUN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojp+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoKQot
ewotICAgIGZvciAoYXV0byYgbG9hZGVyIDogbV9sb2FkZXJNYXApCi0gICAgICAgIFtsb2FkZXIu
dmFsdWUgY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlEZXN0cm95ZWRdOwotICAgIG1fY2hpbGRQ
cm9jZXNzUHJveHktPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Ci19Ci0KLXZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk6OnN0YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNvcmVSZXF1ZXN0KQordm9pZCBDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiBjb3JlUmVxdWVzdCkKIHsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBjb3JlUmVx
dWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSk7CiAgICAgaWYgKCFyZXF1ZXN0
KQogICAgICAgICByZXR1cm47CiAKLSAgICBXS0N1c3RvbVByb3RvY29sTG9hZGVyICpsb2FkZXIg
PSBbW1dLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgYWxsb2NdIGluaXRXaXRoQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHk6dGhpcyBjdXN0b21Qcm90b2NvbElEOmN1c3RvbVByb3RvY29sSUQgcmVxdWVz
dDpyZXF1ZXN0IGNvbm5lY3Rpb246bV9jaGlsZFByb2Nlc3NQcm94eS0+Y29ubmVjdGlvbigpXTsK
KyAgICBXS0N1c3RvbVByb3RvY29sTG9hZGVyICpsb2FkZXIgPSBbW1dLQ3VzdG9tUHJvdG9jb2xM
b2FkZXIgYWxsb2NdIGluaXRXaXRoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6Jm1hbmFnZXIg
Y3VzdG9tUHJvdG9jb2xJRDpjdXN0b21Qcm90b2NvbElEIHJlcXVlc3Q6cmVxdWVzdF07CiAgICAg
QVNTRVJUKGxvYWRlcik7CiAgICAgQVNTRVJUKCFtX2xvYWRlck1hcC5jb250YWlucyhjdXN0b21Q
cm90b2NvbElEKSk7CiAgICAgbV9sb2FkZXJNYXAuYWRkKGN1c3RvbVByb3RvY29sSUQsIGxvYWRl
cik7CiAgICAgW2xvYWRlciByZWxlYXNlXTsKIH0KIAotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eTo6c3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKK3ZvaWQgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OjpzdG9wTG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eSYsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiB7CiAgICAgbV9sb2FkZXJNYXAu
cmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOwogfQogCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoKQordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQ6OmludmFsaWRhdGUoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmKQogeworICAgIGZvciAo
YXV0byYgbG9hZGVyIDogbV9sb2FkZXJNYXApCisgICAgICAgIFtsb2FkZXIudmFsdWUgY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHlEZXN0cm95ZWRdOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0KaW5kZXggMGU4MDcxN2NkZTkuLmFjMjMyYTY4ZWZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpA
QCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNz
UG9vbC5oIgogCisjaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKICNpbXBv
cnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJOZXR3b3Jr
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCkBAIC0x
NDYsNiArMTQ3LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplKCkK
ICAgICBXZWJLaXQ6OldlYk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCk7CiAjZW5k
aWYKIAorICAgIHNldEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSk7CisKICAgICBpZiAobV93ZWJzaXRlRGF0
YVN0b3JlKQogICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlZ2lzdGVyU2hhcmVkUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIoKTsKIH0KQEAgLTI2NSw5ICsyNjgsNiBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYQogICAgIHBhcmFtZXRlcnMucGFyZW50UHJvY2Vzc05hbWUgPSBbW05TUHJvY2Vzc0lu
Zm8gcHJvY2Vzc0luZm9dIHByb2Nlc3NOYW1lXTsKICAgICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1
bmRsZUlkZW50aWZpZXIgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJd
OwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1
c3RvbVByb3RvY29sSGFuZGxlcnMoKSkKLSAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKLQogICAgIE5TVXNlckRl
ZmF1bHRzICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c107
CiAKICAgICBwYXJhbWV0ZXJzLmh0dHBQcm94eSA9IFtkZWZhdWx0cyBzdHJpbmdGb3JLZXk6V2Vi
S2l0MkhUVFBQcm94eURlZmF1bHRzS2V5XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3BwCnNpbWlsYXJpdHkgaW5kZXgg
ODIlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAKcmVuYW1lIHRv
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eS5jcHAKaW5kZXggNzcxOWQyODhlNGQuLjQ1MmYzYTg1ODA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eS5jcHAKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBJ
Z2FsaWEgUy5MLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI3LDEwICsyOCw2IEBACiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCi0j
aWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+Ci0jZW5kaWYK
LQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eShDaGlsZFByb2Nlc3NQcm94eSogY2hpbGRQcm9jZXNzUHJv
eHksIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKQEAgLTQ2LDE1ICs0Myw5IEBAIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5Ojp+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoKQogICAg
IG1fY2hpbGRQcm9jZXNzUHJveHktPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiB9CiAKLXZv
aWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCi17Ci0gICAg
bV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKS5pbnZhbGlkYXRlKCp0
aGlzKTsKLX0KLQogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5n
KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wuY3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50KCkuc3RhcnRMb2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0
KSkKLSAgICAgICAgZGlkRmFpbFdpdGhFcnJvcihjdXN0b21Qcm90b2NvbElELCBXZWJDb3JlOjpj
YW5ub3RTaG93VVJMRXJyb3IocmVxdWVzdCkpOworICAgIG1fcHJvY2Vzc1Bvb2wuY3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50KCkuc3RhcnRMb2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2NvbElE
LCByZXF1ZXN0KTsKIH0KIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RvcExv
YWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKQEAgLTYyLDkgKzUzLDE5IEBAIHZvaWQg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQpCiAgICAgbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQo
KS5zdG9wTG9hZGluZygqdGhpcywgY3VzdG9tUHJvdG9jb2xJRCk7CiB9CiAKLXZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Q
cm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3Zv
aWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCit7CisgICAg
bV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKS5pbnZhbGlkYXRlKCp0
aGlzKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6d2FzUmVkaXJlY3Rl
ZFRvUmVxdWVzdCh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
ZGlyZWN0UmVzcG9uc2UpCit7CisgICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+c2VuZChNZXNzYWdl
czo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpXYXNSZWRpcmVjdGVkVG9SZXF1ZXN0KGN1c3RvbVBy
b3RvY29sSUQsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpLCAwKTsKK30KKwordm9pZCBDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3Rv
bVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1
aW50MzJfdCBjYWNoZVN0b3JhZ2VQb2xpY3kpCiB7Ci0gICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+
c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRSZWNlaXZlUmVzcG9uc2Uo
Y3VzdG9tUHJvdG9jb2xJRCwgcmVzcG9uc2UsIDApLCAwKTsKKyAgICBtX2NoaWxkUHJvY2Vzc1By
b3h5LT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZFJlY2VpdmVSZXNw
b25zZShjdXN0b21Qcm90b2NvbElELCByZXNwb25zZSwgY2FjaGVTdG9yYWdlUG9saWN5KSwgMCk7
CiB9CiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZExvYWREYXRhKHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKaW5k
ZXggNGM3NDNjZDdlZWUuLmZmZTk5Y2JlMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaApAQCAtNTksMTIgKzU5LDExIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcHJvY2Vzc0RpZENsb3NlKCk7CiAKLSNpZiBVU0UoU09VUCkKLSAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCB3YXNSZWRpcmVjdGVkVG9SZXF1
ZXN0KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgdWludDMyX3QgY2FjaGVTdG9yYWdlUG9saWN5KTsKICAgICB2b2lk
IGRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotI2VuZGlmCiAKIHByaXZhdGU6
CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDJhZmZjZmRiZTk2Li44ZGE0ZDI5YzQxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xNDksNiArMTQ5
LDEyIEBAIHN0YXRpYyBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGxlZ2FjeVdlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKEFQSTo6CiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247
CiB9CiAKK3N0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYg
Z2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90b2NvbEhhbmRsZXJzKCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4+IHNldDsKKyAgICByZXR1cm4gc2V0OworfQorCiBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vz
c1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAg
OiBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbi5jb3B5KCkpCiAgICAgLCBtX2hhdmVJbml0
aWFsRW1wdHlQcm9jZXNzKGZhbHNlKQpAQCAtMTU3LDkgKzE2Myw3IEBAIFdlYlByb2Nlc3NQb29s
OjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbikKICAgICAsIG1fYXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0
b21hdGlvbkNsaWVudD4oKSkKICAgICAsIG1fZG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKSkKLSNpZiBVU0UoU09V
UCkKICAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpCi0jZW5kaWYKICAgICAsIG1fdmlz
aXRlZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKICAgICAsIG1fdmlzaXRl
ZExpbmtzUG9wdWxhdGVkKGZhbHNlKQogICAgICwgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlcih0
aGlzKQpAQCAtMzAwLDYgKzMwNCwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0
aW9uQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+CiAgICAgICAg
IG1fYXV0b21hdGlvbkNsaWVudCA9IFdURk1vdmUoYXV0b21hdGlvbkNsaWVudCk7CiB9CiAKK3Zv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+JiYgY3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50KQoreworICAgIGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
KQorICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCk7CisgICAgZWxzZQorICAgICAg
ICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IFdURk1vdmUoY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50KTsKK30KKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0TWF4aW11bU51bWJl
ck9mUHJvY2Vzc2VzKHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcykKIHsKICAgICAv
LyBHdWFyZCBhZ2FpbnN0IEFQSSBtaXN1c2UuCkBAIC0zNTMsNiArMzY1LDEyIEBAIE5ldHdvcmtQ
cm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcygpCiAgICAg
cGFyYW1ldGVycy5kaXNrQ2FjaGVTaXplT3ZlcnJpZGUgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tD
YWNoZVNpemVPdmVycmlkZSgpOwogICAgIHBhcmFtZXRlcnMuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJU
cnVzdEV2YWx1YXRpb24gPSBtX2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uOwog
CisgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3Rv
Y29sSGFuZGxlcnMoKSkKKyAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZv
ckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKKworICAgIGZvciAoYXV0byYgc2NoZW1l
IDogbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scykKKyAgICAgICAgcGFy
YW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2No
ZW1lKTsKKwogICAgIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0
aW9uLT5kaXNrQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hl
RGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LCBw
YXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CkBAIC05NTksMTIg
Kzk3Nyw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5h
YmxlZChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZCh1cmxTY2hl
bWUpKTsKIH0KIAotSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIFdl
YlByb2Nlc3NQb29sOjpnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMo
KQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPj4gc2V0OwotICAgIHJldHVybiBzZXQ7Ci19Ci0KIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhh
bmRsZXJzKGNvbnN0IFN0cmluZyYgdXJsU2NoZW1lKQogewogICAgIGlmICghdXJsU2NoZW1lKQpA
QCAtMTM1NywxNyArMTM2OSwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRQbHVnSW5BdXRv
U3RhcnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50cmllc0FkZGVkQWZ0ZXJUaW1lKAogCiB2b2lkIFdl
YlByb2Nlc3NQb29sOjpyZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKQogewotI2lmIFVTRShTT1VQKQotICAgIG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRG
b3JDdXN0b21Qcm90b2NvbHMuYWRkKHNjaGVtZSk7Ci0jZW5kaWYKKyAgICBpZiAoIWdsb2JhbFVS
TFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpLmNvbnRhaW5zKHNjaGVtZSkpCisg
ICAgICAgIG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYWRkKHNjaGVt
ZSk7CiAgICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29s
TWFuYWdlcjo6UmVnaXN0ZXJTY2hlbWUoc2NoZW1lKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVt
ZSkKIHsKLSNpZiBVU0UoU09VUCkKICAgICBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9t
UHJvdG9jb2xzLnJlbW92ZShzY2hlbWUpOwotI2VuZGlmCiAgICAgc2VuZFRvTmV0d29ya2luZ1By
b2Nlc3MoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6VW5yZWdpc3RlclNjaGVtZShz
Y2hlbWUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApp
bmRleCBiNzkzNDk4ZDRlOC4uYTlmNjU2YWI4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xNDIsOSArMTQyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudD4pOwogICAgIHZvaWQgc2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6RG93bmxvYWRDbGllbnQ+KTsKICAgICB2b2lkIHNldEF1dG9tYXRpb25DbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4pOwotI2lmIFVTRShTT1VQKQogICAgIHZv
aWQgc2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4mJik7Ci0jZW5kaWYKIAogICAgIHZvaWQgc2V0TWF4
aW11bU51bWJlck9mUHJvY2Vzc2VzKHVuc2lnbmVkKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdo
ZW4gdGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBydW5uaW5nLgogICAgIHVuc2lnbmVkIG1heGltdW1O
dW1iZXJPZlByb2Nlc3NlcygpIGNvbnN0IHsgcmV0dXJuICFtX2NvbmZpZ3VyYXRpb24tPm1heGlt
dW1Qcm9jZXNzQ291bnQoKSA/IFVJTlRfTUFYIDogbV9jb25maWd1cmF0aW9uLT5tYXhpbXVtUHJv
Y2Vzc0NvdW50KCk7IH0KQEAgLTIzNSw5ICsyMzMsNyBAQCBwdWJsaWM6CiAgICAgQVBJOjpMZWdh
Y3lDb250ZXh0SGlzdG9yeUNsaWVudCYgaGlzdG9yeUNsaWVudCgpIHsgcmV0dXJuICptX2hpc3Rv
cnlDbGllbnQ7IH0KICAgICBXZWJDb250ZXh0Q2xpZW50JiBjbGllbnQoKSB7IHJldHVybiBtX2Ns
aWVudDsgfQogCi0jaWYgVVNFKFNPVVApCiAgICAgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQmIGN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2N1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDsgfQotI2VuZGlmCiAKICAgICBXZWJJY29uRGF0YWJh
c2UqIGljb25EYXRhYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1faWNvbkRhdGFiYXNlLmdldCgpOyB9
CiAKQEAgLTMzNiw3ICszMzIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclNjaGVtZUZv
ckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYpOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1
c3RvbVByb3RvY29sSGFuZGxlcnMoKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlckdsb2JhbFVS
TFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhjb25zdCBTdHJpbmcmKTsKICAg
ICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90
b2NvbEhhbmRsZXJzKGNvbnN0IFN0cmluZyYpOwogCkBAIC00NzQsOSArNDY5LDcgQEAgcHJpdmF0
ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiBtX2F1dG9tYXRp
b25DbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+IG1fZG93
bmxvYWRDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3Rv
cnlDbGllbnQ+IG1faGlzdG9yeUNsaWVudDsKLSNpZiBVU0UoU09VUCkKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+IG1fY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50OwotI2VuZGlmCiAKICAgICBSZWZQdHI8V2ViQXV0b21hdGlvblNlc3Npb24+
IG1fYXV0b21hdGlvblNlc3Npb247CiAKQEAgLTUyMiw2ICs1MTUsNyBAQCBwcml2YXRlOgogICAg
IEhUVFBDb29raWVBY2NlcHRQb2xpY3kgbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeSB7
IEhUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB9OwogICAg
IFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyBtX25ldHdvcmtQcm94eVNldHRpbmdz
OwogI2VuZGlmCisgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4g
bV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29sczsKIAogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IG1fZW5oYW5jZWRBY2Nlc3NpYmlsaXR5T2Jz
ZXJ2ZXI7CkBAIC01NTQsNyArNTQ4LDYgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShTT1VQKQogICAg
IGJvb2wgbV9pZ25vcmVUTFNFcnJvcnMgeyB0cnVlIH07Ci0gICAgSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVBy
b3RvY29sczsKICNlbmRpZgogCiAgICAgYm9vbCBtX21lbW9yeUNhY2hlRGlzYWJsZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNw
cAppbmRleCA2NWIwOWM0YjM4Zi4uMWMxYmIzNjk3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcApAQCAtNDIsOCArNDIs
NiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYQogICAgIHBhcmFtZXRlcnMuY29va2llQWNjZXB0
UG9saWN5ID0gbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeTsKICAgICBwYXJhbWV0ZXJz
Lmlnbm9yZVRMU0Vycm9ycyA9IG1faWdub3JlVExTRXJyb3JzOwogICAgIHBhcmFtZXRlcnMubGFu
Z3VhZ2VzID0gV2ViQ29yZTo6dXNlclByZWZlcnJlZExhbmd1YWdlcygpOwotICAgIGZvciAoY29u
c3QgYXV0byYgc2NoZW1lIDogbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29s
cykKLSAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3Rv
Y29scy5hcHBlbmQoc2NoZW1lKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtD
YWNoZUVmZmljYWN5TG9nZ2luZyA9IGZhbHNlOwogICAgIHBhcmFtZXRlcnMucHJveHlTZXR0aW5n
cyA9IG1fbmV0d29ya1Byb3h5U2V0dGluZ3M7CiB9CkBAIC01NSwxNCArNTMsNiBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCiAg
ICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpT
ZXRJZ25vcmVUTFNFcnJvcnMobV9pZ25vcmVUTFNFcnJvcnMpLCAwKTsKIH0KIAotdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4mJiBjdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQpCi17Ci0gICAgaWYgKCFjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpCi0gICAg
ICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKLSAgICBlbHNlCi0gICAgICAgIG1fY3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gV1RGTW92ZShjdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXROZXR3b3JrUHJveHlTZXR0aW5n
cyhjb25zdCBXZWJDb3JlOjpTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MmIHNldHRpbmdzKQogewog
ICAgIG1fbmV0d29ya1Byb3h5U2V0dGluZ3MgPSBzZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZDVlMjc4MDQwNy4u
YmZjZjYyOGRhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTYwMCw3ICs2MDAsNiBAQAogCQkyOTg0RjU4ODE2NEJBMDk1MDA0
QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODRGNTg2MTY0QkEwOTUw
MDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OwogCQkyOTg0RjU4OTE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5
ODRGNTg3MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5o
ICovOyB9OwogCQkyOUFEMzA5MzE2NEI0QzVEMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDI5QUQzMDkyMTY0QjRDNUQwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5o
ICovOyB9OwotCQkyOUFEMzA5NjE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyOUFEMzA5NTE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHlNYWMubW0gKi87IH07CiAJCTI5Q0Q1NUFBMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RCYXNlLmggKi87IH07CiAJCTI5Q0Q1NUFCMTI4RTI5NEYwMDEzM0M4NSAv
KiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBX
S0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAqLzsgfTsKIAkJMkQxMDg3NjAxRDJD
NTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTA4NzVFMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2Fk
UGFyYW1ldGVycy5jcHAgKi87IH07CkBAIC0xMTY2LDYgKzExNjUsMTAgQEAKIAkJN0E3OTFFRkEx
QzdDRkNGMTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJN0E3OTFFRkIxQzdDRkQwMTAwQzRDNTJC
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc5MUVGODFDN0NGQjEwMDBDNEM1
MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCAqLzsgfTsKIAkJ
N0E3OTFFRkMxQzdEMDhDNTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTlD
RDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cCAqLzsgfTsKKwkJN0E4MjFGNEExRTJGNjVFOTAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBODIxRjQ5MUUyRjY1REQwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS5jcHAgKi87IH07CisJCTdBODIxRjRDMUUyRjY3MzkwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBODIxRjRCMUUyRjY2NDgwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQuaCAqLzsgfTsKKwkJN0E4MjFGNEUxRTJGNjdBODAwNjA0NTc3IC8qIEN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBODIxRjREMUUyRjY3OUUwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQubW0gKi87IH07CisJCTdBODIxRjUwMUUyRjdBNzUwMDYwNDU3NyAvKiBBUElDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBODIxRjRGMUUyRjdBNUMwMDYwNDU3NyAvKiBBUElDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQuaCAqLzsgfTsKIAkJN0MwNjVGMkIxQzhDRDk1RjAwQzJEOTUwIC8q
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyog
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLzsgfTsKIAkJN0MwNjVGMkMx
QzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwNjVGMkExQzhD
RDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovOyB9
OwogCQk3QzEzNUFBODE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNjE3
M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi87IH07CkBAIC0yNzMz
LDcgKzI3MzYsNiBAQAogCQkyOTg0RjU4NjE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODRGNTg3MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0
b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyOUFEMzA5MjE2NEI0QzVEMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkuaDsgcGF0aCA9IEN1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyOUFEMzA5NTE2NEI0
QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eU1hYy5tbTsgcGF0aCA9IEN1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5QUQzMDk3MTY0QjRF
MjEwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bjsgcGF0aCA9IEN1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlDRDU1QTgxMjhFMjk0RjAw
MTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAv
KiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzM1Nyw2ICszMzU5LDEwIEBACiAJCTdB
NUUzOTQ5MUQ1QkQ4QTcwMEI0QjdDRSAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNS
LnBsdWdpbi5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiY29tLm1hY3JvbWVkaWEuRmxhc2gg
UGxheWVyIEVTUi5wbHVnaW4uc2IiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc5
MUVGODFDN0NGQjEwMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0E3OTFFRjkxQzdDRkIzNzAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTgyMUY0OTFFMkY2NUREMDA2MDQ1NzcgLyogQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuY3BwOyBwYXRoID0gQ3VzdG9tUHJv
dG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0E4MjFGNEIxRTJGNjY0ODAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E4MjFG
NEQxRTJGNjc5RTAwNjA0NTc3IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E4MjFGNEYxRTJGN0E1
QzAwNjA0NTc3IC8qIEFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8q
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTlDRDhDMTFDNzc5ODQ5MDBEOUY2QzcgLyogV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQ5OTAsNiArNDk5Niw4IEBACiAJCQkJOTlDODFENTYxQzIwREZCRTAwNUM0
QzgyIC8qIEF1dG9tYXRpb25DbGllbnQubW0gKi8sCiAJCQkJOTkwRDI4QjcxQzY1MzlBMDAwOTg2
OTc3IC8qIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggKi8sCiAJCQkJOTkwRDI4QjgxQzY1MzlB
MDAwOTg2OTc3IC8qIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lm1tICovLAorCQkJCTdBODIxRjRC
MUUyRjY2NDgwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCAqLywKKwkJ
CQk3QTgyMUY0RDFFMkY2NzlFMDA2MDQ1NzcgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
Lm1tICovLAogCQkJCTgzODkxQjZBMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudC5oICovLAogCQkJCTgzODkxQjZCMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudC5tbSAqLywKIAkJCQlBMURGNjMxMTE4RTBCN0M4MDAzQTNFMkEgLyogRG93
bmxvYWRDbGllbnQuaCAqLywKQEAgLTUxNTAsNiArNTE1OCw3IEBACiAJCQljaGlsZHJlbiA9ICgK
IAkJCQkyOUFEMzA5NDE2NEI0QzgzMDA3MkRFQTkgLyogbWFjICovLAogCQkJCTI5QUQzMDkyMTY0
QjRDNUQwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oICovLAorCQkJCTdB
ODIxRjQ5MUUyRjY1REQwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAg
Ki8sCiAJCQkJMjlBRDMwOTcxNjRCNEUyMTAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJKTsKIAkJCW5hbWUgPSBDdXN0b21Qcm90b2NvbHM7
CkBAIC01MTU4LDcgKzUxNjcsNiBAQAogCQkyOUFEMzA5NDE2NEI0QzgzMDA3MkRFQTkgLyogbWFj
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkyOUFEMzA5
NTE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gKi8s
CiAJCQkpOwogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02
NTgwLDYgKzY1ODgsNyBAQAogCQkJCTk5QzgxRDVCMUMyMEU4MTcwMDVDNEM4MiAvKiBBUElBdXRv
bWF0aW9uQ2xpZW50LmggKi8sCiAJCQkJOTkwRDI4QjMxQzY1MjZENDAwOTg2OTc3IC8qIEFQSUF1
dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggKi8sCiAJCQkJMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZD
IC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi8sCisJCQkJN0E4MjFGNEYxRTJGN0E1QzAwNjA0
NTc3IC8qIEFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oICovLAogCQkJCTgzODkxQjYy
MUE2OEIzNDIwMDMwRjM4NiAvKiBBUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oICovLAogCQkJ
CTFGN0QzNkMwMThEQTUxM0YwMEQ5RDY1OSAvKiBBUElEb3dubG9hZENsaWVudC5oICovLAogCQkJ
CTMxN0ZFN0MxMUM0ODdBNjYwMEEwQ0E4OSAvKiBBUElFeHBlcmltZW50YWxGZWF0dXJlLmNwcCAq
LywKQEAgLTc4NjgsNiArNzg3Nyw3IEBACiAJCQkJN0NBMzc5M0UxQUMzNzhCMzAwNzlEQzM3IC8q
IF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3Qzg5RDJCQTFBNkIwRjJDMDAzQTVGREUgLyogX1dLVXNlckNvbnRlbnRGaWx0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdDODlEMkJDMUE2QjBGNUIwMDNBNUZERSAvKiBfV0tVc2VyQ29udGVu
dEZpbHRlckludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QTgyMUY1MDFFMkY3QTc1MDA2
MDQ1NzcgLyogQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3Qzg4MkRGNzFDN0U5OTY1MDA2QkY3MzEgLyogX1dLVXNlckNvbnRlbnRXb3JsZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0M4ODJERjkxQzdFOTk2RjAwNkJGNzMxIC8qIF9XS1VzZXJDb250
ZW50V29ybGRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NCMzY1QUExRDMxREI3MDAw
NzE1OENBIC8qIF9XS1VzZXJJbml0aWF0ZWRBY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtODE3
Niw2ICs4MTg2LDcgQEAKIAkJCQk0MURDNDU5RjFFM0RCREE1MDBCMTFGNTEgLyogV2ViUlRDU29j
a2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTBFQzkwNjEyNEMwQUI4MDA3RUY0QTUgLyogUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVDOTBGMTI0QzBB
RjUwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTdBODIxRjRDMUUyRjY3MzkwMDYwNDU3NyAvKiBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNzg2NUJBMTZDQUM3MTUwMEFDRTgzQSAv
KiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEyQkI2RDExNDExN0I0RDAwMEYzNUQ0IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkQ5MEQyMTI4MUM5NjYwMDFFQjk2MiAv
KiBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKQEAgLTk0
OTMsNyArOTUwNCw2IEBACiAJCQkJQjg3OEI2MTYxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rp
b25QYW5lbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMTQyNzFEMUMyM0Y4Q0YwMEQ0MTE4MyAv
KiBDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5ODRG
NTg4MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMjlBRDMwOTYxNjRCNEM5MzAwNzJERUE5IC8qIEN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk4NEY1
N0MxNjRCOTE1RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTM1MUZGMTgwRjVEMEYwMEU1M0JFOSAv
KiBEYXRhYmFzZVByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1RTc3MkIxODQwMDhC
OTAwMDcyMDNGIC8qIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTEwMTU0LDYgKzEwMTY0LDcgQEAKIAkJCQkxQUI0MEVFNTFCRjY3N0UzMDBC
QTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0
MDc1RkQxMjRGRjAyNzAwNjhGMjBBIC8qIFdLTXV0YWJsZUFycmF5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDNDA3NUZGMTI0RkYwMjcwMDY4RjIwQSAvKiBXS011dGFibGVEaWN0aW9uYXJ5LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTdBODIxRjRBMUUyRjY1RTkwMDYwNDU3NyAvKiBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTVCMUM1MDE4OTg2
MDZGMDA0RkNGOUIgLyogV0tOYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyNTZF
MzcxOEExQTc4ODAwNkZCOTIyIC8qIFdLTmF2aWdhdGlvbkFjdGlvbi5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTJEM0E2NURBMUE3QzNBMUYwMENBQzYzNyAvKiBXS05hdmlnYXRpb25BY3Rpb25SZWYu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDI1Nyw2ICsxMDI2OCw3IEBACiAJCQkJMUFENjBGNUQx
OEUyMEY0QzAwMjBDMDM0IC8qIFdLV2luZG93RmVhdHVyZXMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxQTdDMERGNjFCN0QxRjEwMDBBOUI4NDggLyogV0tXaW5kb3dGZWF0dXJlc1JlZi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0JFQ0RFNzE2QjY0MTY4MDAwNDdBMUEgLyogWFBDU2VydmljZUVu
dHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk3QTgyMUY0RTFFMkY2N0E4MDA2MDQ1Nzcg
LyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>