<?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>212379</bug_id>
          
          <creation_ts>2020-05-26 09:30:05 -0700</creation_ts>
          <short_desc>[WTF] Implement new BoxPtr alias</short_desc>
          <delta_ts>2020-07-09 09:29:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xabier Rodríguez Calvar">calvaris</reporter>
          <assigned_to name="Xabier Rodríguez Calvar">calvaris</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>cturner</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1656060</commentid>
    <comment_count>0</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-05-26 09:30:05 -0700</bug_when>
    <thetext>[WTF] Implement new BoxPtr class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656061</commentid>
    <comment_count>1</comment_count>
      <attachid>400253</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-05-26 09:32:54 -0700</bug_when>
    <thetext>Created attachment 400253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656062</commentid>
    <comment_count>2</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-05-26 09:33:42 -0700</bug_when>
    <thetext>This class will be used in a further implementation of OpenCDM in the GStreamer based ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656076</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-26 10:04:09 -0700</bug_when>
    <thetext>Hey Xabier, how do you see this differing from std::unique_ptr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656293</commentid>
    <comment_count>4</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-05-26 21:57:25 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #3)
&gt; Hey Xabier, how do you see this differing from std::unique_ptr?

This is shareable (it has copy constructor) and the pointer inside is deleted when when all refs are gone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656370</commentid>
    <comment_count>5</comment_count>
      <attachid>400253</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-27 08:16:36 -0700</bug_when>
    <thetext>Comment on attachment 400253
Patch

I understand the purpose of BoxPtr is to add refcounting to classes without an internal reference count. So... I think you have reinvented std::shared_ptr, yes? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656507</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-27 12:06:23 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #3)
&gt; Hey Xabier, how do you see this differing from std::unique_ptr?

Oh, blergh, yeah. What I really should have asked is how this is different than WTF::Box&lt;std::unique_ptr&lt;T, Deleter&gt;&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657242</commentid>
    <comment_count>7</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-05-29 07:34:50 -0700</bug_when>
    <thetext>I think Michael is right. For some reason I remember somebody telling me that shared_ptr was not a good idea inside WebKit and as in the code base I usually moved I had never seen it, I didn&apos;t even bother to check if it was used.

I just moved the OpenCDM code from BoxPtr to shared_ptr and everything works as expected so I&apos;ll close this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657262</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-29 08:25:59 -0700</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #7)
&gt; I think Michael is right. For some reason I remember somebody telling me
&gt; that shared_ptr was not a good idea inside WebKit and as in the code base I
&gt; usually moved I had never seen it, I didn&apos;t even bother to check if it was
&gt; used.

Well... shared_ptr is *usually* not a good idea, because we use RefPtr instead, for RefCounted classes. But when you have an external class provided by an external library that doesn&apos;t have an internal refcount, then RefPtr is not an option, and std::shared_ptr is a good solution. Currently I see one use in JSC and three in WTF, which is not much precedent for using shared_ptr in WebKit, but that&apos;s OK since it&apos;s the right tool for what you need to do.

It&apos;s a shame you wrote all those tests that will not be committed. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657281</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-29 09:12:24 -0700</bug_when>
    <thetext>There is also the existing WTF::Box class, which should support this use case in many places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657306</commentid>
    <comment_count>10</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-05-29 10:14:23 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #9)
&gt; There is also the existing WTF::Box class, which should support this use
&gt; case in many places.

Yes, but not in this one because Box is thought for objects that can be built in place and in this case the you get a &quot;C object&quot; created with a function and returned as a struct. I had actually named BoxPtr because it was a very similar use case but not needing to have the object in place.

Could I use Box&lt;std::unique_ptr&lt;OpenCDMSession&gt;&gt;? Probably yes, but IMHO it&apos;s quite a convolution if shared_ptr does the job.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657310</commentid>
    <comment_count>11</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-05-29 10:18:02 -0700</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #10)
&gt; Could I use Box&lt;std::unique_ptr&lt;OpenCDMSession&gt;&gt;? Probably yes, but IMHO
&gt; it&apos;s quite a convolution if shared_ptr does the job.

FWIW, Box uses FastMalloc while shared_ptr doesn&apos;t, and we could add an alias for Box&lt;std::unique_ptr&lt;T&gt;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667091</commentid>
    <comment_count>12</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-06-29 07:55:42 -0700</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #11)
&gt; FWIW, Box uses FastMalloc while shared_ptr doesn&apos;t, and we could add an
&gt; alias for Box&lt;std::unique_ptr&lt;T&gt;&gt;

Let&apos;s try this then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667092</commentid>
    <comment_count>13</comment_count>
      <attachid>403057</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-06-29 07:56:10 -0700</bug_when>
    <thetext>Created attachment 403057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667575</commentid>
    <comment_count>14</comment_count>
      <attachid>403057</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-06-30 08:02:12 -0700</bug_when>
    <thetext>Comment on attachment 403057
Patch

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

&gt; Source/WTF/wtf/BoxPtr.h:54
&gt; +    return Box&lt;std::unique_ptr&lt;T, BoxPtrDeleter&lt;T&gt;&gt;&gt;::create(ptr);

This can be shortened to BoxPtr&lt;T&gt;::create(ptr)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667617</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-30 10:51:09 -0700</bug_when>
    <thetext>I, for one, would prefer that we use std::shared_ptr rather than making our own. But maybe we can’t figure out how to make shared_ptr use FastMalloc by default?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667630</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-06-30 11:09:48 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #15)
&gt; I, for one, would prefer that we use std::shared_ptr rather than making our
&gt; own. But maybe we can’t figure out how to make shared_ptr use FastMalloc by
&gt; default?

We could create a ::create static factory function as usual that would call std::allocate_shared with an appropriate allocator. We would have to think about using FastMalloc when writing the ::create function, but not in all the dozens of places we might want to create new objects.

I don&apos;t think something like WTF_MAKE_FAST_ALLOCATED would be possible, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668527</commentid>
    <comment_count>17</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-07-03 03:11:54 -0700</bug_when>
    <thetext>Well, I&apos;m going to go ahead with the patch that I had depending on this with std::shared_ptr. If we agree on somthing eventually, I&apos;ll change it later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668778</commentid>
    <comment_count>18</comment_count>
      <attachid>403057</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-04 07:40:13 -0700</bug_when>
    <thetext>Comment on attachment 403057
Patch

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

&gt; Source/WTF/wtf/BoxPtr.h:36
&gt; +    void operator()(T*) const { ASSERT_NOT_REACHED(); }

I think if we define this without a function body, we get something even better. A link time error rather than a runtime assertion. Maybe even a compile time error.

&gt; Source/WTF/wtf/BoxPtr.h:39
&gt; +#define WTF_DEFINE_BOXPTR_DELETER(typeName, deleterFunc)        \

In WebKit we don’t use abbreviations like “func“. Please call this function not func.

&gt; Source/WTF/wtf/BoxPtr.h:58
&gt; +bool operator==(const BoxPtr&lt;T&gt;&amp; lhs, const BoxPtr&lt;T&gt;&amp; rhs)

This is quite risky. Doing this for == and not !=, and also the effect this could have a generic code that really does need to do a pointer equality. I understand this is the heart of what you mean by using a pointer to box something, but I am quite concerned that this technique may not work well.

&gt; Tools/TestWebKitAPI/Tests/WTF/BoxPtr.cpp:163
&gt; +#if COMPILER(CLANG)

Compiler.h has macros for this kind of thing, and we should use those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668852</commentid>
    <comment_count>19</comment_count>
      <attachid>403057</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-07-04 17:43:49 -0700</bug_when>
    <thetext>Comment on attachment 403057
Patch

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

&gt;&gt; Source/WTF/wtf/BoxPtr.h:36
&gt;&gt; +    void operator()(T*) const { ASSERT_NOT_REACHED(); }
&gt; 
&gt; I think if we define this without a function body, we get something even better. A link time error rather than a runtime assertion. Maybe even a compile time error.

&quot;void operator()(T*) const = delete&quot; would make it compile error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669444</commentid>
    <comment_count>20</comment_count>
      <attachid>403705</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-07-07 10:04:53 -0700</bug_when>
    <thetext>Created attachment 403705
Patch

Addressed all comments.

(In reply to Darin Adler from comment #18)
&gt; &gt; Source/WTF/wtf/BoxPtr.h:58
&gt; &gt; +bool operator==(const BoxPtr&lt;T&gt;&amp; lhs, const BoxPtr&lt;T&gt;&amp; rhs)
&gt; 
&gt; This is quite risky. Doing this for == and not !=, and also the effect this
&gt; could have a generic code that really does need to do a pointer equality. I
&gt; understand this is the heart of what you mean by using a pointer to box
&gt; something, but I am quite concerned that this technique may not work well.

In my use case it helps, otherwise I would have to do the comparison by myself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669449</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-07 10:07:50 -0700</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #20)
&gt; In my use case it helps, otherwise I would have to do the comparison by
&gt; myself.

Obviously. My comment was about all the other repercussions. Leaving out != seems especially capricious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669698</commentid>
    <comment_count>22</comment_count>
      <attachid>403705</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-07-08 02:32:07 -0700</bug_when>
    <thetext>Comment on attachment 403705
Patch

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

&gt; Source/WTF/wtf/BoxPtr.h:78
&gt; +    return !(*lhs == *rhs);

I think it was meant to be implemented via operator== defined above, i.e.

    return !(lhs == rhs);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669736</commentid>
    <comment_count>23</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-07-08 06:57:39 -0700</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #22)
&gt; Comment on attachment 403705 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403705&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/BoxPtr.h:78
&gt; &gt; +    return !(*lhs == *rhs);
&gt; 
&gt; I think it was meant to be implemented via operator== defined above, i.e.
&gt; 
&gt;     return !(lhs == rhs);

Definitely. I guess I should have written tests for that as well and then I would realized...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669740</commentid>
    <comment_count>24</comment_count>
      <attachid>403778</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-07-08 07:24:10 -0700</bug_when>
    <thetext>Created attachment 403778
Patch

(In reply to Xabier Rodríguez Calvar from comment #23)
&gt; (In reply to Konstantin Tokarev from comment #22)
&gt; &gt; Comment on attachment 403705 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=403705&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/BoxPtr.h:78
&gt; &gt; &gt; +    return !(*lhs == *rhs);
&gt; &gt; 
&gt; &gt; I think it was meant to be implemented via operator== defined above, i.e.
&gt; &gt; 
&gt; &gt;     return !(lhs == rhs);
&gt; 
&gt; Definitely. I guess I should have written tests for that as well and then I
&gt; would realized...

And no, the test intent was there but the test was wrong so it was still passing. I added another test to test against empty BoxPtrs that was making former code crash. This works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669814</commentid>
    <comment_count>25</comment_count>
      <attachid>403778</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-08 11:12:37 -0700</bug_when>
    <thetext>Comment on attachment 403778
Patch

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

&gt; Source/WTF/wtf/BoxPtr.h:35
&gt; +template&lt;typename T&gt;
&gt; +struct BoxPtrDeleter {

I personally like the style where template is on the same line. Applies to all the lines in this file.

&gt; Source/WTF/wtf/BoxPtr.h:39
&gt; +#define WTF_DEFINE_BOXPTR_DELETER(typeName, deleterFunction)        \

Seems like this is a little bit hard to use correctly, but let&apos;s try this for now. Also, I suggest just one space before the \ rather than different amounts on each line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670050</commentid>
    <comment_count>26</comment_count>
      <attachid>403853</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-07-09 02:16:01 -0700</bug_when>
    <thetext>Created attachment 403853
Patch

(In reply to Darin Adler from comment #25)
&gt; Comment on attachment 403778 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403778&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/BoxPtr.h:35
&gt; &gt; +template&lt;typename T&gt;
&gt; &gt; +struct BoxPtrDeleter {
&gt; 
&gt; I personally like the style where template is on the same line. Applies to
&gt; all the lines in this file.

Done.

&gt; &gt; Source/WTF/wtf/BoxPtr.h:39
&gt; &gt; +#define WTF_DEFINE_BOXPTR_DELETER(typeName, deleterFunction)        \
&gt; 
&gt; Seems like this is a little bit hard to use correctly, but let&apos;s try this
&gt; for now. Also, I suggest just one space before the \ rather than different
&gt; amounts on each line.

Done.

I also indented the compiler checks and removed some of the checks I was doing because they were redundant (as the macros already check if the warning is available or not) and because piling up BEGINs like that was creating compiler diagnostic contexts I was not removing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670055</commentid>
    <comment_count>27</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-09 02:36:57 -0700</bug_when>
    <thetext>Committed r264163: &lt;https://trac.webkit.org/changeset/264163&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403853.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670056</commentid>
    <comment_count>28</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-09 02:37:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/65263992&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670119</commentid>
    <comment_count>29</comment_count>
      <attachid>403853</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-09 08:50:59 -0700</bug_when>
    <thetext>Comment on attachment 403853
Patch

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

&gt; Source/WTF/wtf/BoxPtr.h:51
&gt; +    return Box&lt;std::unique_ptr&lt;T, BoxPtrDeleter&lt;T&gt;&gt;&gt;::create(ptr);

I don’t understand why we didn’t write this instead:

    return BoxPtr&lt;T&gt;::create(ptr);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670137</commentid>
    <comment_count>30</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-07-09 09:29:17 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #29)
&gt; Comment on attachment 403853 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403853&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/BoxPtr.h:51
&gt; &gt; +    return Box&lt;std::unique_ptr&lt;T, BoxPtrDeleter&lt;T&gt;&gt;&gt;::create(ptr);
&gt; 
&gt; I don’t understand why we didn’t write this instead:
&gt; 
&gt;     return BoxPtr&lt;T&gt;::create(ptr);

To be fixed in bug 214144.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400253</attachid>
            <date>2020-05-26 09:32:54 -0700</date>
            <delta_ts>2020-06-29 07:56:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212379-20200526183252.patch</filename>
            <type>text/plain</type>
            <size>20965</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQzM2ZjZTliZmNkNmU0N2ExN2NkMDMw
MDQ5NDdkZTZkMjZjZjUyN2EuLjVlMzg2OGNlZDQ0OGExNWE2M2ZlZWZkMzgzZGEwNWZhZDk5N2Fi
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMDUtMjYgIFhhYmllciBSb2RyaWd1ZXogQ2Fs
dmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1RGXSBJbXBsZW1lbnQgbmV3
IEJveFB0ciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEyMzc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBjbGFzcyBpcyB0byBob2xkIEMtbGlrZSBwb2ludGVy
IG9iamVjdHMgaW4KKyAgICAgICAgc2hhcmFibGUgd2F5IHRoYXQgYXJlIG5vdCByZWYgY291bnRl
ZCBhbmQgdGhhdCByZXF1aXJlIGEgY3VzdG9tCisgICAgICAgIGRlbGV0ZXIuCisKKyAgICAgICAg
KiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQm94UHRyLmg6
IEFkZGVkLgorICAgICAgICAoV1RGOjpCb3hQdHJEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KToK
KyAgICAgICAgKFdURjo6Qm94UHRyOjpCb3hQdHIpOgorICAgICAgICAoV1RGOjpCb3hQdHI6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChXVEY6OkJveFB0cjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6Qm94UHRyOjpvcGVyYXRvciogY29uc3QpOgorICAgICAgICAoV1RGOjpCb3hQdHI6Om9wZXJh
dG9yLT4gY29uc3QpOgorICAgICAgICAoV1RGOjpCb3hQdHI6Om9wZXJhdG9yPT0gY29uc3QpOgor
ICAgICAgICAoV1RGOjpCb3hQdHI6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV1RGOjpC
b3hQdHI6Om9wZXJhdG9yISBjb25zdCk6CisgICAgICAgIChXVEY6OkJveFB0cjo6b3BlcmF0b3Ig
Ym9vbCBjb25zdCk6CisgICAgICAgIChXVEY6OkJveFB0cjo6RGF0YTo6RGF0YSk6CisgICAgICAg
IChXVEY6OkJveFB0cjo6RGF0YTo6fkRhdGEpOgorICAgICAgICAoV1RGOjpCb3hQdHI6OkRhdGE6
Om9wZXJhdG9yISBjb25zdCk6CisgICAgICAgIChXVEY6OkJveFB0cjo6RGF0YTo6b3BlcmF0b3Ig
Ym9vbCBjb25zdCk6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorCiAyMDIwLTA1LTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
RXhwb3NlIG1vcmUgbmV0d29yayBtZXRyaWNzIHRvIFdlYkNvcmVOU1VSTFNlc3Npb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk5YWUxNGU0NGEzOWI2MmNm
NTY1OTdhZTdlMzFkZGYxOGI2NTBkOTEuLjI4MjM1Y2Y4ODcyODUwMGMzZWJlZjZhOWJjNGNjNTIw
MGY0OTE0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MjU3LDYgKzI1Nyw3IEBACiAJCTBGOEYyQjkwMTcyRTAwRjAwMDdEQkRBNSAvKiBDb21waWxhdGlv
blRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21waWxhdGlvblRocmVhZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjhGMkI5QjE3MkYyNTk0MDA3REJEQTUgLyogQ29udmVyc2lv
bk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udmVyc2lvbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY5MzI3NEExQzE3RjRCNzAwQ0Y2NTY0IC8qIEJveC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY5MzI3NEExQzE3RjRCNzAwQ0Y2NTY1IC8qIEJveFB0ci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCb3hQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY5NDk1ODMxQzU3MUNDOTAwNDEzQTQ4IC8qIE9yZGVyTWFrZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gT3JkZXJNYWtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjk1QjYzMTIwQ0I0Qjc3MDA0Nzk2MzUgLyogRGVidWdIZWFwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnSGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjk1QjYzMjIwQ0I0Qjc3MDA0Nzk2MzUgLyogRGVidWdIZWFwLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlYnVnSGVhcC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NTIsNiArOTUzLDcgQEAKIAkJCQlBOEE0NzI2NTE1MUE4
MjVBMDA0MTIzRkYgLyogQmxvb21GaWx0ZXIuaCAqLywKIAkJCQkwRkIzOTlCODIwQUY1QTU4MDAx
N0UyMTMgLyogQm9vbGVhbkxhdHRpY2UuaCAqLywKIAkJCQkwRjkzMjc0QTFDMTdGNEI3MDBDRjY1
NjQgLyogQm94LmggKi8sCisJCQkJMEY5MzI3NEExQzE3RjRCNzAwQ0Y2NTY1IC8qIEJveFB0ci5o
ICovLAogCQkJCTdDM0Y3MjM5MUQ3ODgxMTkwMDY3NEUyNiAvKiBCcmlnYW5kLmggKi8sCiAJCQkJ
MEY0NTcwNDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAqLywKIAkJCQlBOEE0NzI2
NzE1MUE4MjVBMDA0MTIzRkYgLyogQnVtcFBvaW50ZXJBbGxvY2F0b3IuaCAqLywKQEAgLTE3NjYs
NyArMTc2OCw2IEBACiAJCQkJQThBNDc0NjkxNTFBODI1QjAwNDEyM0ZGIC8qIFVURjhDb252ZXJz
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBRkVDNkIxMUVCMjJCNTkwMERBREUzNiAvKiBV
VUlELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzMTQ5QTM5MjI4QkI0MzUwMEJGQTZDNyAvKiBW
ZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkUwMzJBRDIyNDYzRTQzQjAwMTJEN0M3IC8q
IFdURkNvbmZpZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI5MjFEQzk3QkFCMDA0QTFE
M0YgLyogV2FsbFRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUZBNDdDOEExNTI1MDJEQTAw
NTY4RDFCIC8qIFdlYkNvcmVUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFNDQ3OUMx
QjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTc3NCw2
ICsxNzc1LDcgQEAKIAkJCQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVl
dWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTA1RkFGRjFGRTUwMDc1MDAwOTMyMzAg
LyogV1RGQXNzZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTAzMkFEMjI0NjNFNDNC
MDAxMkQ3QzcgLyogV1RGQ29uZmlnLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDQ1MTUx
QTgyNUIwMDQxMjNGRiAvKiBXVEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9Cb3hQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL0JveFB0ci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM5NTU5ZmRiMjcwOWY2MzE2MzYwNWMwYzE5NjJkODNjOTk0MGRmMzAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9Cb3hQdHIuaApAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykg
MjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQm94UHRyRGVsZXRlciB7CisgICAgdm9pZCBvcGVyYXRvcigp
KFQqKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cit9OworCisjZGVmaW5lIFdURl9E
RUZJTkVfQk9YUFRSX0RFTEVURVIodHlwZU5hbWUsIGRlbGV0ZXJGdW5jKSBcCisgICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQm94UHRyRGVsZXRlcjx0eXBlTmFtZT4gICAgICAgICAgXAorICAgIHsgXAor
ICAgICAgICB2b2lkIG9wZXJhdG9yKCkgKHR5cGVOYW1lKiBwdHIpIGNvbnN0IFwKKyAgICAgICAg
eyBcCisgICAgICAgICAgICBkZWxldGVyRnVuYyhwdHIpOyBcCisgICAgICAgIH0gXAorICAgIH07
CisKKy8vIEJveFB0cjxUPiBpcyBhIHJlZmVyZW5jZS1jb3VudGVkIHBvaW50ZXIgdG8gYSBnZW5l
cmljIFQgcG9pbnRlciB0aGF0IHRha2VzIGl0IGNvbnN0cnVjdGVkIGFuZCBkZXN0cm95cyBpdCB3
aXRoIHRoZSBwcm92aWRlZCBkZWxldGVyIHdoZW4gbmVlZGVkLgordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK2NsYXNzIEJveFB0ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgQm94UHRyKFQqIHB0ciA9IG51bGxwdHIpCisgICAgeworICAgICAgICBtX2RhdGEgPSBh
ZG9wdFJlZigqbmV3IERhdGEocHRyKSk7CisgICAgfQorCisgICAgQm94UHRyKEJveFB0ciYmIG90
aGVyKQorICAgIHsKKyAgICAgICAgbV9kYXRhID0gV1RGTW92ZShvdGhlci5tX2RhdGEpOworICAg
ICAgICBvdGhlci5tX2RhdGEgPSBudWxscHRyOworICAgIH0KKyAgICBCb3hQdHIoY29uc3QgQm94
UHRyJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fZGF0YSA9IG90aGVyLm1fZGF0YTsKKyAgICB9
CisKKyAgICBCb3hQdHImIG9wZXJhdG9yPShCb3hQdHImJiBvdGhlcikKKyAgICB7CisgICAgICAg
IGlmICgqdGhpcyA9PSBvdGhlcikKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKworICAgICAg
ICBtX2RhdGEgPSBXVEZNb3ZlKG90aGVyLm1fZGF0YSk7CisgICAgICAgIG90aGVyLm1fZGF0YSA9
IG51bGxwdHI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgQm94UHRyJiBvcGVy
YXRvcj0oY29uc3QgQm94UHRyJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fZGF0YSA9IG90aGVy
Lm1fZGF0YTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFQqIGdldCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YSA/IG1fZGF0YS0+bV9wdHIgOiBudWxscHRyOyB9CisKKyAgICBU
JiBvcGVyYXRvciooKSBjb25zdCB7IFJFTEVBU0VfQVNTRVJUKG1fZGF0YSk7IHJldHVybiAqbV9k
YXRhLT5tX3B0cjsgfQorICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IFJFTEVBU0VfQVNTRVJU
KG1fZGF0YSk7IHJldHVybiBtX2RhdGEtPm1fcHRyOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEJveFB0cjxUPiYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fZGF0YSB8
fCAhb3RoZXIubV9kYXRhKQorICAgICAgICAgICAgcmV0dXJuICFtX2RhdGEgJiYgIW90aGVyLm1f
ZGF0YTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS0+bV9wdHIgPT0gb3RoZXIubV9kYXRhLT5tX3B0
cjsKKyAgICB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJveFB0cjxUPiYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisKKyAgICBib29sIG9wZXJhdG9yISgp
IGNvbnN0IHsgUkVMRUFTRV9BU1NFUlQobV9kYXRhKTsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29s
PigqbV9kYXRhKTsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IFJFTEVB
U0VfQVNTRVJUKG1fZGF0YSk7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPigqbV9kYXRhKTsgfQor
Citwcml2YXRlOgorCisgICAgc3RydWN0IERhdGEgOiBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRh
PiB7CisgICAgICAgIERhdGEoVCogcHRyKQorICAgICAgICAgICAgOiBtX3B0cihwdHIpCisgICAg
ICAgIHsKKyAgICAgICAgfQorICAgICAgICB+RGF0YSgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICghbV9wdHIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBCb3hQ
dHJEZWxldGVyPFQ+IGRlbGV0ZXI7CisgICAgICAgICAgICBkZWxldGVyKG1fcHRyKTsKKyAgICAg
ICAgfQorICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQor
ICAgICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3B0cjsg
fQorCisgICAgICAgIFQqIG1fcHRyOworICAgIH07CisKKyAgICBSZWZQdHI8RGF0YT4gbV9kYXRh
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6Qm94UHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAppbmRleCA1MDhlMTlkNjJiNDg4NGVmMDQ3OGE3YTNmMTQ0NjdjZGQwZDY1ODMw
Li44NzEyNDkxYzE3NWM4OTgyNTBiNDI2MGFiNmMyNmJmNTg5OGMwZDg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dApAQCAtMTcsNiArMTcsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgQmxv
b21GaWx0ZXIuaAogICAgIEJvb2xlYW5MYXR0aWNlLmgKICAgICBCb3guaAorICAgIEJveFB0ci5o
CiAgICAgQnJpZ2FuZC5oCiAgICAgQnViYmxlU29ydC5oCiAgICAgQnVtcFBvaW50ZXJBbGxvY2F0
b3IuaApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDgxMjQ2M2VlZjMyOGFiMWVhODlkZTkwYzFjYjBhYWQ5ZjE1YTY4NGEuLjYwNjZiMTQwNDdlZjFl
MmY2ZWRiZmVlMWVmYjRlOGRiYjVmMjdlZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNS0yNiAgWGFiaWVy
IFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtXVEZd
IEltcGxlbWVudCBuZXcgQm94UHRyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIzNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQm94UHRyLmNwcDogQWRkZWQu
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpCb3hQdHJMb2dnZXI6OmNyZWF0ZSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpCb3hQdHJMb2dnZXI6OkJveFB0ckxvZ2dlcik6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpib3hQdHJMb2dnZXJEZWxldGVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorCiAyMDIwLTA1LTI1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFjdGlvblNoZWV0VGVzdHMuRGF0YURldGVjdG9yc0xp
bmtJc05vdFByZXNlbnRlZEFzQUxpbmsgaXMgZmFpbGluZyBjb25zaXN0ZW50bHkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IGE4YTUyYTBhMjBlMDc4Zjc4NTUyYmYwNjU3NTYxNTU2
ZTUwZjEzMTAuLmY3OTc5N2IxZWE0YmIyN2NlYjExYmQ1YTk0Y2NiMzUwMDc0YTA5NWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMjgsNiArMjgsNyBAQCBzZXQoVGVzdFdURl9T
T1VSQ0VTCiAgICAgVGVzdHMvV1RGL0F0b21TdHJpbmcuY3BwCiAgICAgVGVzdHMvV1RGL0JpdG1h
cC5jcHAKICAgICBUZXN0cy9XVEYvQmxvb21GaWx0ZXIuY3BwCisgICAgVGVzdHMvV1RGL0JveFB0
ci5jcHAKICAgICBUZXN0cy9XVEYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuY3BwCiAgICAgVGVzdHMv
V1RGL0NTdHJpbmcuY3BwCiAgICAgVGVzdHMvV1RGL0NoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9u
cy5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTExNzA2YzYzZjgzMmZmN2FiZmRmOGFk
MDA2MjBkZDNjYThmMzFiNS4uMGQ4ODlkNmMzZWI2YTQzNTBhOWNkNjk4MTg5MDY2N2RkYzBkOWJk
NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU1Myw2ICs1NTMsNyBAQAogCQk3QzgzREYx
NDFEMEE1OTBDMDBGRUJDRjMgLyogUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQTQyN0FBMTgwREEyNjQwMENEMjRENyAvKiBSZWYuY3BwICov
OyB9OwogCQk3QzgzREYxNTFEMEE1OTBDMDBGRUJDRjMgLyogUmVmQ291bnRlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJEMTk5NzFBMkRCMDVC
MDA2RENGMEEgLyogUmVmQ291bnRlci5jcHAgKi87IH07CiAJCTdDODNERjE2MUQwQTU5MEMwMEZF
QkNGMyAvKiBSZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNBNDI3QTgxODBEOUIwNzAwQ0QyNEQ3IC8qIFJlZlB0ci5jcHAgKi87IH07CisJ
CTdDODNERjE3MUQwQTU5MEMwMEZFQkNGMyAvKiBCb3hQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBNDI3QUUxODBEQTYwRjAwQ0QyNEQ3IC8q
IEJveFB0ci5jcHAgKi87IH07CiAJCTdDODNERjFEMUQwQTU5MEMwMEZFQkNGMyAvKiBMb2NrLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM0NUE0
MUI3M0VCRTIwMDg1QkQ2MiAvKiBMb2NrLmNwcCAqLzsgfTsKIAkJN0M4M0RGMjQxRDBBNTkwQzAw
RkVCQ0YzIC8qIFJldGFpblB0ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMDI5QjFCMTQ4NkIyNTkwMDgxN0RBOSAvKiBSZXRhaW5QdHIubW0gKi87
IH07CiAJCTdDODNERjI2MUQwQTU5MEMwMEZFQkNGMyAvKiBTYXR1cmF0ZWRBcml0aG1ldGljT3Bl
cmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNEYzQjExMjE1RTQ1RUFCMDAyMTAwNjkgLyogU2F0dXJhdGVkQXJpdGhtZXRpY09wZXJhdGlv
bnMuY3BwICovOyB9OwpAQCAtMjMwOSw2ICsyMzEwLDcgQEAKIAkJOTNBNDI3QUExODBEQTI2NDAw
Q0QyNEQ3IC8qIFJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0E0MjdBQzE4MERBNjBGMDBD
RDI0RDcgLyogTW92ZU9ubHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW92ZU9ubHkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBNDI3QUQxODBEQTYwRjAwQ0QyNEQ3IC8qIFJlZkxvZ2dl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWZMb2dnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTNBNDI3QUUxODBEQTYwRjAwQ0QyNEQ3IC8qIEJveFB0ci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCb3hQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0E3MjBFNTE4RjFBMEU4MDBBODQ4RTEgLyogQ2FsY3VsYXRpb25WYWx1ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxjdWxhdGlvblZhbHVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQkE4MDgxNkREQUI5MTAwMkRC
MkZBIC8qIFN0cmluZ0hhc2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdHJpbmdIYXNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0FG
NEVDQTE1MDZGMDM1MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9y
SW1hZ2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0zOTcyLDYgKzM5NzQsNyBAQAogCQkJCTI2RjFCNDQyMTVDQTQzNEYwMEQxRTRC
RiAvKiBBdG9tU3RyaW5nLmNwcCAqLywKIAkJCQlGRTJEOTQ3MzI0NUVCMkRGMDBFNDgxMzUgLyog
Qml0bWFwLmNwcCAqLywKIAkJCQlFNDAwMTkzMDFBQ0U5QjVDMDAxQjBBMkEgLyogQmxvb21GaWx0
ZXIuY3BwICovLAorCQkJCTkzQTQyN0FFMTgwREE2MEYwMENEMjRENyAvKiBCb3hQdHIuY3BwICov
LAogCQkJCTA0NTFBNUE2MjM1RTQzOEUwMDlERjk0NSAvKiBCdW1wUG9pbnRlckFsbG9jYXRvci5j
cHAgKi8sCiAJCQkJQTdBOTY2REExNDBFQ0NDODAwNUVGOUI0IC8qIENoZWNrZWRBcml0aG1ldGlj
T3BlcmF0aW9ucy5jcHAgKi8sCiAJCQkJRTMwMkJEQTkyNDA0QjkyMzAwODY1Mjc3IC8qIENvbXBh
Y3RSZWZQdHJUdXBsZS5jcHAgKi8sCkBAIC00Njg2LDYgKzQ2ODksNyBAQAogCQkJCUZFMkQ5NDc0
MjQ1RUIyRjQwMEU0ODEzNSAvKiBCaXRtYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFEQUQx
NTAxRDc3QTlGNjAwMjEyNTg2IC8qIEJsb2NrUHRyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0RFOUMxRDBBNTkwQzAwRkVCQ0YzIC8qIEJsb29tRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTdDODNERjE3MUQwQTU5MEMwMEZFQkNGMyAvKiBCb3hQdHIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDREQjIzOTYyMzVFNDNFQzAwMzI4RjE3IC8qIEJ1bXBQb2ludGVyQWxsb2NhdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUEwMUQwQTU5MEMwMEZFQkNGMyAvKiBDaGVja2Vk
QXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMwMkJEQUEyNDA0
QjkyNDAwODY1Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0JveFB0ci5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Cb3hQdHIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3NDBjZmYz
ODI1ZjdjODdmYWVjMzJmNmYyZDNmY2NmZGVlMThjYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Cb3hQdHIuY3BwCkBAIC0wLDAgKzEsMjI1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTG9nZ2Vy
LmgiCisjaW5jbHVkZSA8d3RmL0JveFB0ci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CisKK3N0cnVjdCBCb3hQdHJMb2dnZXIgeworICAgIEJveFB0ckxvZ2dlcihjb25zdCBjaGFyKiBu
YW1lKTsKKyAgICBzdGF0aWMgQm94UHRyTG9nZ2VyKiBjcmVhdGUoY29uc3QgY2hhciogbmFtZSkg
eyByZXR1cm4gbmV3IEJveFB0ckxvZ2dlcihuYW1lKTsgfQorICAgIGNvbnN0IGNoYXImIG5hbWU7
Cit9OworCitCb3hQdHJMb2dnZXI6OkJveFB0ckxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKQorICAg
IDogbmFtZSB7ICpuYW1lIH0KK3sKKyAgICBsb2coKSA8PCAiY3JlYXRlKCIgPDwgbmFtZSA8PCAi
KSAiOworfQorCit2b2lkIGJveFB0ckxvZ2dlckRlbGV0ZXIoQm94UHRyTG9nZ2VyKiBsb2dnZXIp
Cit7CisgICAgbG9nKCkgPDwgImRlbGV0ZSgiIDw8ICZsb2dnZXItPm5hbWUgPDwgIikgIjsKKyAg
ICBkZWxldGUgbG9nZ2VyOworfQorCit9OworCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0RFRklO
RV9CT1hQVFJfREVMRVRFUihUZXN0V2ViS2l0QVBJOjpCb3hQdHJMb2dnZXIsIFRlc3RXZWJLaXRB
UEk6OmJveFB0ckxvZ2dlckRlbGV0ZXIpOworCit9CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworVEVTVChXVEZfQm94UHRyLCBCYXNpYykKK3sKKyAgICB7CisgICAgICAgIEJveFB0cjxC
b3hQdHJMb2dnZXI+IGVtcHR5OworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgZW1wdHkuZ2V0
KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoIiIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
KworICAgIHsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBhID0gQm94UHRyTG9nZ2VyOjpjcmVhdGUo
ImEiKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcHRyKGEpOworICAgICAgICBFWFBF
Q1RfRVEoYSwgcHRyLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGEsICYqcHRyKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGEtPm5hbWUsIHB0ci0+bmFtZSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJF
USgiY3JlYXRlKGEpIGRlbGV0ZShhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7
CisgICAgICAgIEJveFB0ckxvZ2dlciogYSA9IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJhIik7Cisg
ICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAxKGEpOworICAgICAgICBCb3hQdHI8Qm94UHRy
TG9nZ2VyPiBwMihwMSk7CisgICAgICAgIEVYUEVDVF9FUShhLCBwMS5nZXQoKSk7CisgICAgICAg
IEVYUEVDVF9FUShhLCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgiY3JlYXRl
KGEpIGRlbGV0ZShhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAg
IEJveFB0ckxvZ2dlciogYSA9IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJhIik7CisgICAgICAgIEJv
eFB0cjxCb3hQdHJMb2dnZXI+IHAxKGEpOworICAgICAgICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBw
MiA9IHAxOworICAgICAgICBFWFBFQ1RfRVEoYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1Rf
RVEoYSwgcDIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImNyZWF0ZShhKSBkZWxl
dGUoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBCb3hQdHJM
b2dnZXIqIGEgPSBCb3hQdHJMb2dnZXI6OmNyZWF0ZSgiYSIpOworICAgICAgICBCb3hQdHI8Qm94
UHRyTG9nZ2VyPiBwMShhKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcDIgPSBXVEZN
b3ZlKHAxKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKGEsIHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJjcmVhdGUo
YSkgZGVsZXRlKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAg
Qm94UHRyTG9nZ2VyKiBhID0gQm94UHRyTG9nZ2VyOjpjcmVhdGUoImEiKTsKKyAgICAgICAgQm94
UHRyPEJveFB0ckxvZ2dlcj4gcDEoYSk7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAy
KFdURk1vdmUocDEpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGEsIHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJj
cmVhdGUoYSkgZGVsZXRlKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAg
ICAgICAgQm94UHRyTG9nZ2VyKiBhID0gQm94UHRyTG9nZ2VyOjpjcmVhdGUoImEiKTsKKyAgICAg
ICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcHRyKGEpOworICAgICAgICBFWFBFQ1RfRVEoYSwgcHRy
LmdldCgpKTsKKyAgICAgICAgcHRyID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxw
dHIsIHB0ci5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgiY3JlYXRlKGEpIGRlbGV0
ZShhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX0JveFB0ciwgQXNz
aWdubWVudCkKK3sKKyAgICB7CisgICAgICAgIEJveFB0ckxvZ2dlciogYSA9IEJveFB0ckxvZ2dl
cjo6Y3JlYXRlKCJhIik7CisgICAgICAgIEJveFB0ckxvZ2dlciogYiA9IEJveFB0ckxvZ2dlcjo6
Y3JlYXRlKCJiIik7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAxKGEpOworICAgICAg
ICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwMihiKTsKKyAgICAgICAgRVhQRUNUX0VRKGEsIHAxLmdl
dCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwg
InwgIjsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAgRVhQRUNUX0VRKGIsIHAxLmdldCgpKTsK
KyAgICAgICAgRVhQRUNUX0VRKGIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsK
KyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJjcmVhdGUoYSkgY3JlYXRlKGIpIHwgZGVsZXRlKGEp
IHwgZGVsZXRlKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAg
Qm94UHRyTG9nZ2VyKiBhID0gQm94UHRyTG9nZ2VyOjpjcmVhdGUoImEiKTsKKyAgICAgICAgQm94
UHRyTG9nZ2VyKiBiID0gQm94UHRyTG9nZ2VyOjpjcmVhdGUoImIiKTsKKyAgICAgICAgQm94UHRy
PEJveFB0ckxvZ2dlcj4gcDEoYSk7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAyKGIp
OworICAgICAgICBFWFBFQ1RfRVEoYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoYiwg
cDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9IFdURk1vdmUo
cDIpOworICAgICAgICBFWFBFQ1RfRVEoYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEo
bnVsbHB0ciwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBF
WFBFQ1RfU1RSRVEoImNyZWF0ZShhKSBjcmVhdGUoYikgfCBkZWxldGUoYSkgfCBkZWxldGUoYikg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBCb3hQdHJMb2dnZXIq
IGEgPSBCb3hQdHJMb2dnZXI6OmNyZWF0ZSgiYSIpOworICAgICAgICBCb3hQdHI8Qm94UHRyTG9n
Z2VyPiBwdHIoYSk7CisgICAgICAgIEVYUEVDVF9FUShhLCBwdHIuZ2V0KCkpOworICAgICAgICBs
b2coKSA8PCAifCAiOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tcHJh
Z21hcyIKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24td2Fybmlu
Zy1vcHRpb24iCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLWFzc2ln
bi1vdmVybG9hZGVkIgorI2VuZGlmCisgICAgICAgIHB0ciA9IHB0cjsKKyNpZiBDT01QSUxFUihD
TEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorICAgICAgICBFWFBF
Q1RfRVEoYSwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAg
RVhQRUNUX1NUUkVRKCJjcmVhdGUoYSkgfCB8IGRlbGV0ZShhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CisKKyAgICB7CisgICAgICAgIEJveFB0ckxvZ2dlciogYSA9IEJveFB0ckxvZ2dlcjo6
Y3JlYXRlKCJhIik7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHB0cihhKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGEsIHB0ci5nZXQoKSk7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XdW5rbm93bi1wcmFnbWFzIgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X
c2VsZi1tb3ZlIgorI2VuZGlmCisgICAgICAgIHB0ciA9IFdURk1vdmUocHRyKTsKKyNpZiBDT01Q
SUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorICAgICAg
ICBFWFBFQ1RfRVEoYSwgcHRyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJjcmVh
dGUoYSkgZGVsZXRlKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChXVEZf
Qm94UHRyLCBPcGVyYXRvcnMpCit7CisgICAgeworICAgICAgICBCb3hQdHJMb2dnZXIqIGEgPSBC
b3hQdHJMb2dnZXI6OmNyZWF0ZSgiYSIpOworICAgICAgICBCb3hQdHJMb2dnZXIqIGIgPSBCb3hQ
dHJMb2dnZXI6OmNyZWF0ZSgiYiIpOworICAgICAgICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwMShh
KTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcDIoYik7CisgICAgICAgIEVYUEVDVF9F
UShwMSwgcDEpOworICAgICAgICBFWFBFQ1RfTkUocDEsIHAyKTsKKyAgICB9CisgICAgRVhQRUNU
X1NUUkVRKCJjcmVhdGUoYSkgY3JlYXRlKGIpIGRlbGV0ZShiKSBkZWxldGUoYSkgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBCb3hQdHJMb2dnZXIqIGEgPSBCb3hQ
dHJMb2dnZXI6OmNyZWF0ZSgiYSIpOworICAgICAgICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwMShh
KTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcDIocDEpOworICAgICAgICBFWFBFQ1Rf
RVEoc3RhdGljX2Nhc3Q8Ym9vbD4ocDEpLCB0cnVlKTsKKyAgICAgICAgRVhQRUNUX0VRKCFwMSwg
ZmFsc2UpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImNyZWF0ZShhKSBkZWxldGUoYSkgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBCb3hQdHI8Qm94UHRyTG9n
Z2VyPiBlbXB0eTsKKyAgICAgICAgRVhQRUNUX0VRKCFlbXB0eSwgdHJ1ZSk7CisgICAgICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxib29sPihlbXB0eSksIGZhbHNlKTsKKyAgICB9CisgICAgRVhQ
RUNUX1NUUkVRKCIiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK307Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403057</attachid>
            <date>2020-06-29 07:56:10 -0700</date>
            <delta_ts>2020-07-07 10:04:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>18166</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNzE4YWQzODJmOWQ0Li45MTIyOWMzYjdlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIw
MjAtMDYtMjkgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4K
KworICAgICAgICBbV1RGXSBJbXBsZW1lbnQgbmV3IEJveFB0ciBhbGlhcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzc5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgQm94UHRyLmggdGhhdCBp
bmNsdWRlcyBCb3hQdHI8VD4gYXMgYWxpYXMgb2YKKyAgICAgICAgQm94PHN0ZDo6dW5pcXVlX3B0
cjxUPj4uIFdlIGRpc2N1c3NlZCBhYm91dCB0aGlzIGNsYXNzIG9uIGJ1Z3ppbGxhCisgICAgICAg
IGFuZCB3ZSBhZ3JlZWQgb24gdGhpcyBhbGlhcyBiZWluZyB0aGUgYmVzdCBpZGVhLiBBcGFydCBm
cm9tIHRoZQorICAgICAgICBhbGlhcyBJJ20gYWRkaW5nIGEgY291cGxlIG9mIGhlbHBlcnMgbGlr
ZSBhIGNyZWF0ZSBmdW5jdGlvbiBhbmQKKyAgICAgICAgdGhlIG9wZXJhdG9yPT0uCisKKyAgICAg
ICAgVGVzdHM6IEJveFB0ciBBUEkgdGVzdHMgYWRkZWQuCisKKyAgICAgICAgKiBXVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQm94UHRyLmg6IEFkZGVkLgorICAg
ICAgICAoV1RGOjpCb3hQdHJEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6Y3JlYXRlQm94UHRyKToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I9PSk6CisgICAgICAgICog
d3RmL0NNYWtlTGlzdHMudHh0OgorCiAyMDIwLTA2LTI4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJl
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIGluaXRpYWxpemVUaHJlYWRpbmcgdG8gaW5p
dGlhbGl6ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzEy
NjNiNTc1YzRlLi40MDA5ZTNjMmU4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjU4LDYgKzI1OCw3IEBACiAJCTBGOEYyQjkwMTcyRTAwRjAwMDdEQkRB
NSAvKiBDb21waWxhdGlvblRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21waWxhdGlvblRocmVh
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhGMkI5QjE3MkYyNTk0MDA3REJE
QTUgLyogQ29udmVyc2lvbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udmVyc2lvbk1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzI3NEExQzE3RjRCNzAwQ0Y2NTY0IC8q
IEJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCb3guaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MzI3NEExQzE3RjRCNzAwQ0Y2NTY2IC8qIEJveFB0ci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCb3hQdHIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY5NDk1ODMxQzU3MUNDOTAwNDEzQTQ4IC8qIE9yZGVyTWFrZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3JkZXJNYWtlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk1QjYzMTIwQ0I0Qjc3MDA0Nzk2MzUgLyogRGVidWdI
ZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnSGVhcC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk1QjYzMjIwQ0I0Qjc3MDA0Nzk2MzUgLyogRGVi
dWdIZWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlYnVnSGVh
cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NTcsNiArOTU4LDcgQEAKIAkJ
CQlBOEE0NzI2NTE1MUE4MjVBMDA0MTIzRkYgLyogQmxvb21GaWx0ZXIuaCAqLywKIAkJCQkwRkIz
OTlCODIwQUY1QTU4MDAxN0UyMTMgLyogQm9vbGVhbkxhdHRpY2UuaCAqLywKIAkJCQkwRjkzMjc0
QTFDMTdGNEI3MDBDRjY1NjQgLyogQm94LmggKi8sCisJCQkJMEY5MzI3NEExQzE3RjRCNzAwQ0Y2
NTY2IC8qIEJveFB0ci5oICovLAogCQkJCTdDM0Y3MjM5MUQ3ODgxMTkwMDY3NEUyNiAvKiBCcmln
YW5kLmggKi8sCiAJCQkJMEY0NTcwNDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAq
LywKIAkJCQlBOEE0NzI2NzE1MUE4MjVBMDA0MTIzRkYgLyogQnVtcFBvaW50ZXJBbGxvY2F0b3Iu
aCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JveFB0ci5oIGIvU291cmNlL1dURi93
dGYvQm94UHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNGE1
MjM0M2U0MTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Cb3hQdHIuaApAQCAt
MCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIE1ldHJvbG9naWNhbCBHcm91
cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxt
ZW1vcnk+CisjaW5jbHVkZSA8d3RmL0JveC5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBCb3hQdHJEZWxldGVyIHsKKyAgICB2b2lkIG9wZXJhdG9y
KCkoVCopIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KK307CisKKyNkZWZpbmUgV1RG
X0RFRklORV9CT1hQVFJfREVMRVRFUih0eXBlTmFtZSwgZGVsZXRlckZ1bmMpICAgICAgICBcCisg
ICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQm94UHRyRGVsZXRlcjx0eXBlTmFtZT4gICAgICAgICAgXAor
ICAgIHsgXAorICAgICAgICB2b2lkIG9wZXJhdG9yKCkgKHR5cGVOYW1lKiBwdHIpIGNvbnN0IFwK
KyAgICAgICAgeyBcCisgICAgICAgICAgICBkZWxldGVyRnVuYyhwdHIpOyBcCisgICAgICAgIH0g
XAorICAgIH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBCb3hQdHIgPSBCb3g8c3Rk
Ojp1bmlxdWVfcHRyPFQsIEJveFB0ckRlbGV0ZXI8VD4+PjsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK0JveFB0cjxUPiBjcmVhdGVCb3hQdHIoVCogcHRyKQoreworICAgIHJldHVybiBCb3g8c3Rk
Ojp1bmlxdWVfcHRyPFQsIEJveFB0ckRlbGV0ZXI8VD4+Pjo6Y3JlYXRlKHB0cik7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+Citib29sIG9wZXJhdG9yPT0oY29uc3QgQm94UHRyPFQ+JiBsaHMs
IGNvbnN0IEJveFB0cjxUPiYgcmhzKQoreworICAgIGlmICghbGhzICYmICFyaHMpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgaWYgKCFsaHMgfHwgIXJocykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFsaHMtPmdldCgpICYmICFyaHMtPmdldCgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGlmICghbGhzLT5nZXQoKSB8fCAhcmhzLT5nZXQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuICpsaHMgPT0gKnJoczsKK30KKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKK3VzaW5nIFdURjo6Y3JlYXRlQm94UHRyOwordXNpbmcgV1RGOjpCb3hQdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGVkNzFlYjI4MjM1NC4uYWQ1ZDg3YmNjNzIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dApAQCAtMTcsNiArMTcsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJT
CiAgICAgQmxvb21GaWx0ZXIuaAogICAgIEJvb2xlYW5MYXR0aWNlLmgKICAgICBCb3guaAorICAg
IEJveFB0ci5oCiAgICAgQnJpZ2FuZC5oCiAgICAgQnViYmxlU29ydC5oCiAgICAgQnVtcFBvaW50
ZXJBbGxvY2F0b3IuaApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDIzN2M5ZDg3ZWY0OC4uZmI3MmQyODZiOTQ1IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDYt
MjkgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbV1RGXSBJbXBsZW1lbnQgbmV3IEJveFB0ciBhbGlhcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgZm9yIEJveFB0ci4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvQm94UHRyLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpCb3hQdHJMb2dnZXI6OmNyZWF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpC
b3hQdHJMb2dnZXI6OkJveFB0ckxvZ2dlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpib3hQ
dHJMb2dnZXJEZWxldGVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIw
LTA2LTI5ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW3dlYmtpdHB5XSBQSFA3LjQgc3VwcG9ydCBvbiBEZWJpYW4gcGxhdGZvcm1zCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCA3OGZhZjlkM2E5ZGYuLmViZDg3N2RiMGE4
NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC0yOCw2ICsyOCw3IEBAIHNldChU
ZXN0V1RGX1NPVVJDRVMKICAgICBUZXN0cy9XVEYvQXRvbVN0cmluZy5jcHAKICAgICBUZXN0cy9X
VEYvQml0bWFwLmNwcAogICAgIFRlc3RzL1dURi9CbG9vbUZpbHRlci5jcHAKKyAgICBUZXN0cy9X
VEYvQm94UHRyLmNwcAogICAgIFRlc3RzL1dURi9CdW1wUG9pbnRlckFsbG9jYXRvci5jcHAKICAg
ICBUZXN0cy9XVEYvQ1N0cmluZy5jcHAKICAgICBUZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNP
cGVyYXRpb25zLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNjQxMTMwNzQ2YmUuLjRi
YmU0OWVjZTJiZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU1OCw2ICs1NTgsNyBAQAog
CQk3QzgzREYxNDFEMEE1OTBDMDBGRUJDRjMgLyogUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQTQyN0FBMTgwREEyNjQwMENEMjRENyAvKiBS
ZWYuY3BwICovOyB9OwogCQk3QzgzREYxNTFEMEE1OTBDMDBGRUJDRjMgLyogUmVmQ291bnRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJEMTk5
NzFBMkRCMDVCMDA2RENGMEEgLyogUmVmQ291bnRlci5jcHAgKi87IH07CiAJCTdDODNERjE2MUQw
QTU5MEMwMEZFQkNGMyAvKiBSZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNBNDI3QTgxODBEOUIwNzAwQ0QyNEQ3IC8qIFJlZlB0ci5jcHAg
Ki87IH07CisJCTdDODNERjE4MUQwQTU5MEMwMEZFQkNGMyAvKiBCb3hQdHIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBNDI3QUUxODBEQTYwRjAw
Q0QyNEQ3IC8qIEJveFB0ci5jcHAgKi87IH07CiAJCTdDODNERjFEMUQwQTU5MEMwMEZFQkNGMyAv
KiBMb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRkM0NUE0MUI3M0VCRTIwMDg1QkQ2MiAvKiBMb2NrLmNwcCAqLzsgfTsKIAkJN0M4M0RGMjQx
RDBBNTkwQzAwRkVCQ0YzIC8qIFJldGFpblB0ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDI5QjFCMTQ4NkIyNTkwMDgxN0RBOSAvKiBSZXRhaW5Q
dHIubW0gKi87IH07CiAJCTdDODNERjI2MUQwQTU5MEMwMEZFQkNGMyAvKiBTYXR1cmF0ZWRBcml0
aG1ldGljT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNEYzQjExMjE1RTQ1RUFCMDAyMTAwNjkgLyogU2F0dXJhdGVkQXJpdGhtZXRp
Y09wZXJhdGlvbnMuY3BwICovOyB9OwpAQCAtMjM0MCw2ICsyMzQxLDcgQEAKIAkJOTNBNDI3QUEx
ODBEQTI2NDAwQ0QyNEQ3IC8qIFJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0E0MjdBQzE4
MERBNjBGMDBDRDI0RDcgLyogTW92ZU9ubHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW92ZU9ubHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBNDI3QUQxODBEQTYwRjAwQ0QyNEQ3IC8q
IFJlZkxvZ2dlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZMb2dnZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTNBNDI3QUUxODBEQTYwRjAwQ0QyNEQ3IC8qIEJveFB0ci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCb3hQdHIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0E3MjBFNTE4RjFBMEU4MDBBODQ4RTEgLyogQ2FsY3VsYXRp
b25WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxjdWxh
dGlvblZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQkE4MDgxNkRE
QUI5MTAwMkRCMkZBIC8qIFN0cmluZ0hhc2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTdHJpbmdIYXNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0FGNEVDQTE1MDZGMDM1MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0Rm9ySW1hZ2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00MDI0LDYgKzQwMjYsNyBAQAogCQkJCTI2RjFCNDQyMTVDQTQz
NEYwMEQxRTRCRiAvKiBBdG9tU3RyaW5nLmNwcCAqLywKIAkJCQlGRTJEOTQ3MzI0NUVCMkRGMDBF
NDgxMzUgLyogQml0bWFwLmNwcCAqLywKIAkJCQlFNDAwMTkzMDFBQ0U5QjVDMDAxQjBBMkEgLyog
Qmxvb21GaWx0ZXIuY3BwICovLAorCQkJCTkzQTQyN0FFMTgwREE2MEYwMENEMjRENyAvKiBCb3hQ
dHIuY3BwICovLAogCQkJCTA0NTFBNUE2MjM1RTQzOEUwMDlERjk0NSAvKiBCdW1wUG9pbnRlckFs
bG9jYXRvci5jcHAgKi8sCiAJCQkJQTdBOTY2REExNDBFQ0NDODAwNUVGOUI0IC8qIENoZWNrZWRB
cml0aG1ldGljT3BlcmF0aW9ucy5jcHAgKi8sCiAJCQkJRTMwMkJEQTkyNDA0QjkyMzAwODY1Mjc3
IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgKi8sCkBAIC00NzQyLDYgKzQ3NDUsNyBAQAogCQkJ
CUZFMkQ5NDc0MjQ1RUIyRjQwMEU0ODEzNSAvKiBCaXRtYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFEQUQxNTAxRDc3QTlGNjAwMjEyNTg2IC8qIEJsb2NrUHRyLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M4M0RFOUMxRDBBNTkwQzAwRkVCQ0YzIC8qIEJsb29tRmlsdGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTdDODNERjE4MUQwQTU5MEMwMEZFQkNGMyAvKiBCb3hQdHIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMDREQjIzOTYyMzVFNDNFQzAwMzI4RjE3IC8qIEJ1bXBQb2ludGVyQWxs
b2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUEwMUQwQTU5MEMwMEZFQkNGMyAv
KiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMw
MkJEQUEyNDA0QjkyNDAwODY1Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0JveFB0ci5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Cb3hQdHIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmY0ODIwYzk0ZjU4Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQm94UHRyLmNwcApAQCAtMCwwICsx
LDIyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBNZXRyb2xvZ2ljYWwgR3JvdXAg
Qi5WLgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgIkxvZ2dlci5oIgorI2luY2x1ZGUgPHd0Zi9Cb3hQdHIuaD4KKworbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgeworCitzdHJ1Y3QgQm94UHRyTG9nZ2VyIHsKKyAgICBCb3hQdHJMb2dnZXIoY29u
c3QgY2hhciogbmFtZSk7CisgICAgc3RhdGljIEJveFB0ckxvZ2dlciogY3JlYXRlKGNvbnN0IGNo
YXIqIG5hbWUpIHsgcmV0dXJuIG5ldyBCb3hQdHJMb2dnZXIobmFtZSk7IH0KKyAgICBjb25zdCBj
aGFyJiBuYW1lOworfTsKKworQm94UHRyTG9nZ2VyOjpCb3hQdHJMb2dnZXIoY29uc3QgY2hhciog
bmFtZSkKKyAgICA6IG5hbWUgeyAqbmFtZSB9Cit7CisgICAgbG9nKCkgPDwgImNyZWF0ZSgiIDw8
IG5hbWUgPDwgIikgIjsKK30KKwordm9pZCBib3hQdHJMb2dnZXJEZWxldGVyKEJveFB0ckxvZ2dl
ciogbG9nZ2VyKQoreworICAgIGxvZygpIDw8ICJkZWxldGUoIiA8PCAmbG9nZ2VyLT5uYW1lIDw8
ICIpICI7CisgICAgZGVsZXRlIGxvZ2dlcjsKK30KKworfTsKKworbmFtZXNwYWNlIFdURiB7CisK
K1dURl9ERUZJTkVfQk9YUFRSX0RFTEVURVIoVGVzdFdlYktpdEFQSTo6Qm94UHRyTG9nZ2VyLCBU
ZXN0V2ViS2l0QVBJOjpib3hQdHJMb2dnZXJEZWxldGVyKTsKKworfQorCituYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CisKK1RFU1QoV1RGX0JveFB0ciwgQmFzaWMpCit7CisgICAgeworICAgICAg
ICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBlbXB0eTsKKyAgICAgICAgRVhQRUNUX0VRKGZhbHNlLCBz
dGF0aWNfY2FzdDxib29sPihlbXB0eSkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoIiIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBhID0g
Qm94UHRyTG9nZ2VyOjpjcmVhdGUoImEiKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4g
cHRyID0gY3JlYXRlQm94UHRyKGEpOworICAgICAgICBFWFBFQ1RfRVEodHJ1ZSwgc3RhdGljX2Nh
c3Q8Ym9vbD4ocHRyKSk7CisgICAgICAgIEVYUEVDVF9FUShhLCBwdHItPmdldCgpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGEtPm5hbWUsICgqcHRyKS0+bmFtZSk7CisgICAgfQorICAgIEVYUEVDVF9T
VFJFUSgiY3JlYXRlKGEpIGRlbGV0ZShhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAg
ICB7CisgICAgICAgIEJveFB0ckxvZ2dlciogYSA9IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJhIik7
CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAxID0gY3JlYXRlQm94UHRyKGEpOworICAg
ICAgICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwMihwMSk7CisgICAgICAgIEVYUEVDVF9FUShhLCBw
MS0+Z2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoYSwgcDItPmdldCgpKTsKKyAgICB9CisgICAg
RVhQRUNUX1NUUkVRKCJjcmVhdGUoYSkgZGVsZXRlKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKKworICAgIHsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBhID0gQm94UHRyTG9nZ2VyOjpjcmVh
dGUoImEiKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcDEgPSBjcmVhdGVCb3hQdHIo
YSk7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAyID0gcDE7CisgICAgICAgIEVYUEVD
VF9FUShhLCBwMS0+Z2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoYSwgcDItPmdldCgpKTsKKyAg
ICB9CisgICAgRVhQRUNUX1NUUkVRKCJjcmVhdGUoYSkgZGVsZXRlKGEpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBhID0gQm94UHRyTG9n
Z2VyOjpjcmVhdGUoImEiKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcDEgPSBjcmVh
dGVCb3hQdHIoYSk7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAyID0gV1RGTW92ZShw
MSk7CisgICAgICAgIEVYUEVDVF9FUShmYWxzZSwgc3RhdGljX2Nhc3Q8Ym9vbD4ocDEpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGEsIHAyLT5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgi
Y3JlYXRlKGEpIGRlbGV0ZShhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7Cisg
ICAgICAgIEJveFB0ckxvZ2dlciogYSA9IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJhIik7CisgICAg
ICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAxID0gY3JlYXRlQm94UHRyKGEpOworICAgICAgICBC
b3hQdHI8Qm94UHRyTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgIEVYUEVDVF9FUShm
YWxzZSwgc3RhdGljX2Nhc3Q8Ym9vbD4ocDEpKTsKKyAgICAgICAgRVhQRUNUX0VRKGEsIHAyLT5n
ZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgiY3JlYXRlKGEpIGRlbGV0ZShhKSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIEJveFB0ckxvZ2dlciogYSA9
IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJhIik7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+
IHB0ciA9IGNyZWF0ZUJveFB0cihhKTsKKyAgICAgICAgRVhQRUNUX0VRKGEsIHB0ci0+Z2V0KCkp
OworICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEoZmFsc2UsIHN0YXRp
Y19jYXN0PGJvb2w+KHB0cikpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImNyZWF0ZShhKSBk
ZWxldGUoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdURl9Cb3hQdHIs
IEFzc2lnbm1lbnQpCit7CisgICAgeworICAgICAgICBCb3hQdHJMb2dnZXIqIGEgPSBCb3hQdHJM
b2dnZXI6OmNyZWF0ZSgiYSIpOworICAgICAgICBCb3hQdHJMb2dnZXIqIGIgPSBCb3hQdHJMb2dn
ZXI6OmNyZWF0ZSgiYiIpOworICAgICAgICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwMSA9IGNyZWF0
ZUJveFB0cihhKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcDIgPSBjcmVhdGVCb3hQ
dHIoYik7CisgICAgICAgIEVYUEVDVF9FUShhLCBwMS0+Z2V0KCkpOworICAgICAgICBFWFBFQ1Rf
RVEoYiwgcDItPmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBw
MjsKKyAgICAgICAgRVhQRUNUX0VRKGIsIHAxLT5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShi
LCBwMi0+Z2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1Rf
U1RSRVEoImNyZWF0ZShhKSBjcmVhdGUoYikgfCBkZWxldGUoYSkgfCBkZWxldGUoYikgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBCb3hQdHJMb2dnZXIqIGEgPSBC
b3hQdHJMb2dnZXI6OmNyZWF0ZSgiYSIpOworICAgICAgICBCb3hQdHJMb2dnZXIqIGIgPSBCb3hQ
dHJMb2dnZXI6OmNyZWF0ZSgiYiIpOworICAgICAgICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwMSA9
IGNyZWF0ZUJveFB0cihhKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcDIgPSBjcmVh
dGVCb3hQdHIoYik7CisgICAgICAgIEVYUEVDVF9FUShhLCBwMS0+Z2V0KCkpOworICAgICAgICBF
WFBFQ1RfRVEoYiwgcDItPmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAg
cDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKGIsIHAxLT5nZXQoKSk7CisgICAg
ICAgIEVYUEVDVF9FUShmYWxzZSwgc3RhdGljX2Nhc3Q8Ym9vbD4ocDIpKTsKKyAgICAgICAgbG9n
KCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJjcmVhdGUoYSkgY3JlYXRlKGIp
IHwgZGVsZXRlKGEpIHwgZGVsZXRlKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAg
IHsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBhID0gQm94UHRyTG9nZ2VyOjpjcmVhdGUoImEiKTsK
KyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcHRyID0gY3JlYXRlQm94UHRyKGEpOworICAg
ICAgICBFWFBFQ1RfRVEoYSwgcHRyLT5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7Cisj
aWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgorI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi13YXJuaW5nLW9wdGlvbiIKKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3NlbGYtYXNzaWduLW92ZXJsb2FkZWQiCisj
ZW5kaWYKKyAgICAgICAgcHRyID0gcHRyOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisgICAgICAgIEVYUEVDVF9FUShhLCBwdHItPmdl
dCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJj
cmVhdGUoYSkgfCB8IGRlbGV0ZShhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7
CisgICAgICAgIEJveFB0ckxvZ2dlciogYSA9IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJhIik7Cisg
ICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHB0ciA9IGNyZWF0ZUJveFB0cihhKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGEsIHB0ci0+Z2V0KCkpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVk
ICItV3Vua25vd24tcHJhZ21hcyIKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V3NlbGYtbW92ZSIKKyNlbmRpZgorICAgICAgICBwdHIgPSBXVEZNb3ZlKHB0cik7CisjaWYgQ09N
UElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKyAgICAg
ICAgRVhQRUNUX0VRKGEsIHB0ci0+Z2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImNy
ZWF0ZShhKSBkZWxldGUoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdU
Rl9Cb3hQdHIsIE9wZXJhdG9ycykKK3sKKyAgICB7CisgICAgICAgIEJveFB0ckxvZ2dlciogYSA9
IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJhIik7CisgICAgICAgIEJveFB0ckxvZ2dlciogYiA9IEJv
eFB0ckxvZ2dlcjo6Y3JlYXRlKCJiIik7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAx
ID0gY3JlYXRlQm94UHRyKGEpOworICAgICAgICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwMiA9IGNy
ZWF0ZUJveFB0cihiKTsKKyAgICAgICAgRVhQRUNUX0VRKCpwMSwgKnAxKTsKKyAgICAgICAgRVhQ
RUNUX05FKCpwMSwgKnAyKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJjcmVhdGUoYSkgY3Jl
YXRlKGIpIGRlbGV0ZShiKSBkZWxldGUoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisg
ICAgeworICAgICAgICBCb3hQdHJMb2dnZXIqIGEgPSBCb3hQdHJMb2dnZXI6OmNyZWF0ZSgiYSIp
OworICAgICAgICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwMSA9IGNyZWF0ZUJveFB0cihhKTsKKyAg
ICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcDIocDEpOworICAgICAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8Ym9vbD4ocDEpLCB0cnVlKTsKKyAgICAgICAgRVhQRUNUX0VRKCFwMSwgZmFsc2Up
OworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImNyZWF0ZShhKSBkZWxldGUoYSkgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBl
bXB0eTsKKyAgICAgICAgRVhQRUNUX0VRKCFlbXB0eSwgdHJ1ZSk7CisgICAgICAgIEVYUEVDVF9F
UShzdGF0aWNfY2FzdDxib29sPihlbXB0eSksIGZhbHNlKTsKKyAgICB9CisgICAgRVhQRUNUX1NU
UkVRKCIiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK307Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403705</attachid>
            <date>2020-07-07 10:04:53 -0700</date>
            <delta_ts>2020-07-08 07:24:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>18065</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNzE4YWQzODJmOWQ0Li45MTIyOWMzYjdlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIw
MjAtMDYtMjkgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4K
KworICAgICAgICBbV1RGXSBJbXBsZW1lbnQgbmV3IEJveFB0ciBhbGlhcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzc5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgQm94UHRyLmggdGhhdCBp
bmNsdWRlcyBCb3hQdHI8VD4gYXMgYWxpYXMgb2YKKyAgICAgICAgQm94PHN0ZDo6dW5pcXVlX3B0
cjxUPj4uIFdlIGRpc2N1c3NlZCBhYm91dCB0aGlzIGNsYXNzIG9uIGJ1Z3ppbGxhCisgICAgICAg
IGFuZCB3ZSBhZ3JlZWQgb24gdGhpcyBhbGlhcyBiZWluZyB0aGUgYmVzdCBpZGVhLiBBcGFydCBm
cm9tIHRoZQorICAgICAgICBhbGlhcyBJJ20gYWRkaW5nIGEgY291cGxlIG9mIGhlbHBlcnMgbGlr
ZSBhIGNyZWF0ZSBmdW5jdGlvbiBhbmQKKyAgICAgICAgdGhlIG9wZXJhdG9yPT0uCisKKyAgICAg
ICAgVGVzdHM6IEJveFB0ciBBUEkgdGVzdHMgYWRkZWQuCisKKyAgICAgICAgKiBXVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQm94UHRyLmg6IEFkZGVkLgorICAg
ICAgICAoV1RGOjpCb3hQdHJEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6Y3JlYXRlQm94UHRyKToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I9PSk6CisgICAgICAgICog
d3RmL0NNYWtlTGlzdHMudHh0OgorCiAyMDIwLTA2LTI4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJl
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIGluaXRpYWxpemVUaHJlYWRpbmcgdG8gaW5p
dGlhbGl6ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzEy
NjNiNTc1YzRlLi40MDA5ZTNjMmU4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjU4LDYgKzI1OCw3IEBACiAJCTBGOEYyQjkwMTcyRTAwRjAwMDdEQkRB
NSAvKiBDb21waWxhdGlvblRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21waWxhdGlvblRocmVh
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhGMkI5QjE3MkYyNTk0MDA3REJE
QTUgLyogQ29udmVyc2lvbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udmVyc2lvbk1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzI3NEExQzE3RjRCNzAwQ0Y2NTY0IC8q
IEJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCb3guaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MzI3NEExQzE3RjRCNzAwQ0Y2NTY2IC8qIEJveFB0ci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCb3hQdHIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY5NDk1ODMxQzU3MUNDOTAwNDEzQTQ4IC8qIE9yZGVyTWFrZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3JkZXJNYWtlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk1QjYzMTIwQ0I0Qjc3MDA0Nzk2MzUgLyogRGVidWdI
ZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnSGVhcC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk1QjYzMjIwQ0I0Qjc3MDA0Nzk2MzUgLyogRGVi
dWdIZWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlYnVnSGVh
cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NTcsNiArOTU4LDcgQEAKIAkJ
CQlBOEE0NzI2NTE1MUE4MjVBMDA0MTIzRkYgLyogQmxvb21GaWx0ZXIuaCAqLywKIAkJCQkwRkIz
OTlCODIwQUY1QTU4MDAxN0UyMTMgLyogQm9vbGVhbkxhdHRpY2UuaCAqLywKIAkJCQkwRjkzMjc0
QTFDMTdGNEI3MDBDRjY1NjQgLyogQm94LmggKi8sCisJCQkJMEY5MzI3NEExQzE3RjRCNzAwQ0Y2
NTY2IC8qIEJveFB0ci5oICovLAogCQkJCTdDM0Y3MjM5MUQ3ODgxMTkwMDY3NEUyNiAvKiBCcmln
YW5kLmggKi8sCiAJCQkJMEY0NTcwNDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAq
LywKIAkJCQlBOEE0NzI2NzE1MUE4MjVBMDA0MTIzRkYgLyogQnVtcFBvaW50ZXJBbGxvY2F0b3Iu
aCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JveFB0ci5oIGIvU291cmNlL1dURi93
dGYvQm94UHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41N2Yw
ODAyNDRkYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Cb3hQdHIuaApAQCAt
MCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIE1ldHJvbG9naWNhbCBHcm91
cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxt
ZW1vcnk+CisjaW5jbHVkZSA8d3RmL0JveC5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBCb3hQdHJEZWxldGVyIHsKKyAgICB2b2lkIG9wZXJhdG9y
KCkoVCopIGNvbnN0ID0gZGVsZXRlOworfTsKKworI2RlZmluZSBXVEZfREVGSU5FX0JPWFBUUl9E
RUxFVEVSKHR5cGVOYW1lLCBkZWxldGVyRnVuY3Rpb24pICAgICAgICBcCisgICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQm94UHRyRGVsZXRlcjx0eXBlTmFtZT4gICAgICAgICAgXAorICAgIHsgXAorICAg
ICAgICB2b2lkIG9wZXJhdG9yKCkgKHR5cGVOYW1lKiBwdHIpIGNvbnN0IFwKKyAgICAgICAgeyBc
CisgICAgICAgICAgICBkZWxldGVyRnVuY3Rpb24ocHRyKTsgXAorICAgICAgICB9IFwKKyAgICB9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordXNpbmcgQm94UHRyID0gQm94PHN0ZDo6dW5pcXVl
X3B0cjxULCBCb3hQdHJEZWxldGVyPFQ+Pj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitCb3hQ
dHI8VD4gY3JlYXRlQm94UHRyKFQqIHB0cikKK3sKKyAgICByZXR1cm4gQm94PHN0ZDo6dW5pcXVl
X3B0cjxULCBCb3hQdHJEZWxldGVyPFQ+Pj46OmNyZWF0ZShwdHIpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJveFB0cjxUPiYgbGhzLCBjb25zdCBC
b3hQdHI8VD4mIHJocykKK3sKKyAgICBpZiAoIWxocyAmJiAhcmhzKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIGlmICghbGhzIHx8ICFyaHMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghbGhzLT5nZXQoKSAmJiAhcmhzLT5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICBpZiAoIWxocy0+Z2V0KCkgfHwgIXJocy0+Z2V0KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiAqbGhzID09ICpyaHM7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+Citib29sIG9wZXJhdG9yIT0oY29uc3QgQm94UHRyPFQ+JiBsaHMsIGNvbnN0IEJveFB0cjxU
PiYgcmhzKQoreworICAgIHJldHVybiAhKCpsaHMgPT0gKnJocyk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdURgorCit1c2luZyBXVEY6OmNyZWF0ZUJveFB0cjsKK3VzaW5nIFdURjo6Qm94UHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBlZDcxZWIyODIzNTQuLmFkNWQ4N2JjYzcyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYv
Q01ha2VMaXN0cy50eHQKQEAgLTE3LDYgKzE3LDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwog
ICAgIEJsb29tRmlsdGVyLmgKICAgICBCb29sZWFuTGF0dGljZS5oCiAgICAgQm94LmgKKyAgICBC
b3hQdHIuaAogICAgIEJyaWdhbmQuaAogICAgIEJ1YmJsZVNvcnQuaAogICAgIEJ1bXBQb2ludGVy
QWxsb2NhdG9yLmgKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAyMzdjOWQ4N2VmNDguLmZiNzJkMjg2Yjk0NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTA2LTI5
ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW1dURl0gSW1wbGVtZW50IG5ldyBCb3hQdHIgYWxpYXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjM3OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciBCb3hQdHIuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0JveFB0ci5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6Qm94UHRyTG9nZ2VyOjpjcmVhdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Qm94
UHRyTG9nZ2VyOjpCb3hQdHJMb2dnZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Ym94UHRy
TG9nZ2VyRGVsZXRlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMC0w
Ni0yOSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFt3ZWJraXRweV0gUEhQNy40IHN1cHBvcnQgb24gRGViaWFuIHBsYXRmb3JtcwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggNzhmYWY5ZDNhOWRmLi5lYmQ4NzdkYjBhODUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMjgsNiArMjgsNyBAQCBzZXQoVGVz
dFdURl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL0F0b21TdHJpbmcuY3BwCiAgICAgVGVzdHMvV1RG
L0JpdG1hcC5jcHAKICAgICBUZXN0cy9XVEYvQmxvb21GaWx0ZXIuY3BwCisgICAgVGVzdHMvV1RG
L0JveFB0ci5jcHAKICAgICBUZXN0cy9XVEYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuY3BwCiAgICAg
VGVzdHMvV1RGL0NTdHJpbmcuY3BwCiAgICAgVGVzdHMvV1RGL0NoZWNrZWRBcml0aG1ldGljT3Bl
cmF0aW9ucy5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDY0MTEzMDc0NmJlLi40YmJl
NDllY2UyYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NTgsNiArNTU4LDcgQEAKIAkJ
N0M4M0RGMTQxRDBBNTkwQzAwRkVCQ0YzIC8qIFJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0E0MjdBQTE4MERBMjY0MDBDRDI0RDcgLyogUmVm
LmNwcCAqLzsgfTsKIAkJN0M4M0RGMTUxRDBBNTkwQzAwRkVCQ0YzIC8qIFJlZkNvdW50ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCRDE5OTcx
QTJEQjA1QjAwNkRDRjBBIC8qIFJlZkNvdW50ZXIuY3BwICovOyB9OwogCQk3QzgzREYxNjFEMEE1
OTBDMDBGRUJDRjMgLyogUmVmUHRyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQTQyN0E4MTgwRDlCMDcwMENEMjRENyAvKiBSZWZQdHIuY3BwICov
OyB9OworCQk3QzgzREYxODFEMEE1OTBDMDBGRUJDRjMgLyogQm94UHRyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQTQyN0FFMTgwREE2MEYwMENE
MjRENyAvKiBCb3hQdHIuY3BwICovOyB9OwogCQk3QzgzREYxRDFEMEE1OTBDMDBGRUJDRjMgLyog
TG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkZDNDVBNDFCNzNFQkUyMDA4NUJENjIgLyogTG9jay5jcHAgKi87IH07CiAJCTdDODNERjI0MUQw
QTU5MEMwMEZFQkNGMyAvKiBSZXRhaW5QdHIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAyOUIxQjE0ODZCMjU5MDA4MTdEQTkgLyogUmV0YWluUHRy
Lm1tICovOyB9OwogCQk3QzgzREYyNjFEMEE1OTBDMDBGRUJDRjMgLyogU2F0dXJhdGVkQXJpdGht
ZXRpY09wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTRGM0IxMTIxNUU0NUVBQjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWNP
cGVyYXRpb25zLmNwcCAqLzsgfTsKQEAgLTIzNDAsNiArMjM0MSw3IEBACiAJCTkzQTQyN0FBMTgw
REEyNjQwMENEMjRENyAvKiBSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBNDI3QUMxODBE
QTYwRjAwQ0QyNEQ3IC8qIE1vdmVPbmx5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vdmVPbmx5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQTQyN0FEMTgwREE2MEYwMENEMjRENyAvKiBS
ZWZMb2dnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmTG9nZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzQTQyN0FFMTgwREE2MEYwMENEMjRENyAvKiBCb3hQdHIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQm94UHRyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNBNzIwRTUxOEYxQTBFODAwQTg0OEUxIC8qIENhbGN1bGF0aW9u
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsY3VsYXRp
b25WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQUJBODA4MTZEREFC
OTEwMDJEQjJGQSAvKiBTdHJpbmdIYXNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RyaW5nSGFzaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNBRjRFQ0ExNTA2RjAzNTAwN0ZENTdFIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEZvckltYWdlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDAyNCw2ICs0MDI2LDcgQEAKIAkJCQkyNkYxQjQ0MjE1Q0E0MzRG
MDBEMUU0QkYgLyogQXRvbVN0cmluZy5jcHAgKi8sCiAJCQkJRkUyRDk0NzMyNDVFQjJERjAwRTQ4
MTM1IC8qIEJpdG1hcC5jcHAgKi8sCiAJCQkJRTQwMDE5MzAxQUNFOUI1QzAwMUIwQTJBIC8qIEJs
b29tRmlsdGVyLmNwcCAqLywKKwkJCQk5M0E0MjdBRTE4MERBNjBGMDBDRDI0RDcgLyogQm94UHRy
LmNwcCAqLywKIAkJCQkwNDUxQTVBNjIzNUU0MzhFMDA5REY5NDUgLyogQnVtcFBvaW50ZXJBbGxv
Y2F0b3IuY3BwICovLAogCQkJCUE3QTk2NkRBMTQwRUNDQzgwMDVFRjlCNCAvKiBDaGVja2VkQXJp
dGhtZXRpY09wZXJhdGlvbnMuY3BwICovLAogCQkJCUUzMDJCREE5MjQwNEI5MjMwMDg2NTI3NyAv
KiBDb21wYWN0UmVmUHRyVHVwbGUuY3BwICovLApAQCAtNDc0Miw2ICs0NzQ1LDcgQEAKIAkJCQlG
RTJEOTQ3NDI0NUVCMkY0MDBFNDgxMzUgLyogQml0bWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBREFEMTUwMUQ3N0E5RjYwMDIxMjU4NiAvKiBCbG9ja1B0ci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTdDODNERTlDMUQwQTU5MEMwMEZFQkNGMyAvKiBCbG9vbUZpbHRlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3QzgzREYxODFEMEE1OTBDMDBGRUJDRjMgLyogQm94UHRyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTA0REIyMzk2MjM1RTQzRUMwMDMyOEYxNyAvKiBCdW1wUG9pbnRlckFsbG9j
YXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBMDFEMEE1OTBDMDBGRUJDRjMgLyog
Q2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzMDJC
REFBMjQwNEI5MjQwMDg2NTI3NyAvKiBDb21wYWN0UmVmUHRyVHVwbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Cb3hQdHIuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQm94UHRyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmEwODYyYjNlZGMyNAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0JveFB0ci5jcHAKQEAgLTAsMCArMSwy
MTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgTWV0cm9sb2dpY2FsIEdyb3VwIEIu
Vi4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJMb2dnZXIuaCIKKyNpbmNsdWRlIDx3dGYvQm94UHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKKworc3RydWN0IEJveFB0ckxvZ2dlciB7CisgICAgQm94UHRyTG9nZ2VyKGNvbnN0
IGNoYXIqIG5hbWUpOworICAgIHN0YXRpYyBCb3hQdHJMb2dnZXIqIGNyZWF0ZShjb25zdCBjaGFy
KiBuYW1lKSB7IHJldHVybiBuZXcgQm94UHRyTG9nZ2VyKG5hbWUpOyB9CisgICAgY29uc3QgY2hh
ciYgbmFtZTsKK307CisKK0JveFB0ckxvZ2dlcjo6Qm94UHRyTG9nZ2VyKGNvbnN0IGNoYXIqIG5h
bWUpCisgICAgOiBuYW1lIHsgKm5hbWUgfQoreworICAgIGxvZygpIDw8ICJjcmVhdGUoIiA8PCBu
YW1lIDw8ICIpICI7Cit9CisKK3ZvaWQgYm94UHRyTG9nZ2VyRGVsZXRlcihCb3hQdHJMb2dnZXIq
IGxvZ2dlcikKK3sKKyAgICBsb2coKSA8PCAiZGVsZXRlKCIgPDwgJmxvZ2dlci0+bmFtZSA8PCAi
KSAiOworICAgIGRlbGV0ZSBsb2dnZXI7Cit9CisKK307CisKK25hbWVzcGFjZSBXVEYgeworCitX
VEZfREVGSU5FX0JPWFBUUl9ERUxFVEVSKFRlc3RXZWJLaXRBUEk6OkJveFB0ckxvZ2dlciwgVGVz
dFdlYktpdEFQSTo6Ym94UHRyTG9nZ2VyRGVsZXRlcik7CisKK30KKworbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgeworCitURVNUKFdURl9Cb3hQdHIsIEJhc2ljKQoreworICAgIHsKKyAgICAgICAg
Qm94UHRyPEJveFB0ckxvZ2dlcj4gZW1wdHk7CisgICAgICAgIEVYUEVDVF9FUShmYWxzZSwgc3Rh
dGljX2Nhc3Q8Ym9vbD4oZW1wdHkpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCIiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIEJveFB0ckxvZ2dlciogYSA9IEJv
eFB0ckxvZ2dlcjo6Y3JlYXRlKCJhIik7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHB0
ciA9IGNyZWF0ZUJveFB0cihhKTsKKyAgICAgICAgRVhQRUNUX0VRKHRydWUsIHN0YXRpY19jYXN0
PGJvb2w+KHB0cikpOworICAgICAgICBFWFBFQ1RfRVEoYSwgcHRyLT5nZXQoKSk7CisgICAgICAg
IEVYUEVDVF9FUShhLT5uYW1lLCAoKnB0ciktPm5hbWUpOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoImNyZWF0ZShhKSBkZWxldGUoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAg
eworICAgICAgICBCb3hQdHJMb2dnZXIqIGEgPSBCb3hQdHJMb2dnZXI6OmNyZWF0ZSgiYSIpOwor
ICAgICAgICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwMSA9IGNyZWF0ZUJveFB0cihhKTsKKyAgICAg
ICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcDIocDEpOworICAgICAgICBFWFBFQ1RfRVEoYSwgcDEt
PmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGEsIHAyLT5nZXQoKSk7CisgICAgfQorICAgIEVY
UEVDVF9TVFJFUSgiY3JlYXRlKGEpIGRlbGV0ZShhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CisKKyAgICB7CisgICAgICAgIEJveFB0ckxvZ2dlciogYSA9IEJveFB0ckxvZ2dlcjo6Y3JlYXRl
KCJhIik7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAxID0gY3JlYXRlQm94UHRyKGEp
OworICAgICAgICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwMiA9IHAxOworICAgICAgICBFWFBFQ1Rf
RVEoYSwgcDEtPmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGEsIHAyLT5nZXQoKSk7CisgICAg
fQorICAgIEVYUEVDVF9TVFJFUSgiY3JlYXRlKGEpIGRlbGV0ZShhKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIEJveFB0ckxvZ2dlciogYSA9IEJveFB0ckxvZ2dl
cjo6Y3JlYXRlKCJhIik7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAxID0gY3JlYXRl
Qm94UHRyKGEpOworICAgICAgICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEp
OworICAgICAgICBFWFBFQ1RfRVEoZmFsc2UsIHN0YXRpY19jYXN0PGJvb2w+KHAxKSk7CisgICAg
ICAgIEVYUEVDVF9FUShhLCBwMi0+Z2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImNy
ZWF0ZShhKSBkZWxldGUoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAg
ICAgICBCb3hQdHJMb2dnZXIqIGEgPSBCb3hQdHJMb2dnZXI6OmNyZWF0ZSgiYSIpOworICAgICAg
ICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwMSA9IGNyZWF0ZUJveFB0cihhKTsKKyAgICAgICAgQm94
UHRyPEJveFB0ckxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBFWFBFQ1RfRVEoZmFs
c2UsIHN0YXRpY19jYXN0PGJvb2w+KHAxKSk7CisgICAgICAgIEVYUEVDVF9FUShhLCBwMi0+Z2V0
KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImNyZWF0ZShhKSBkZWxldGUoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBCb3hQdHJMb2dnZXIqIGEgPSBC
b3hQdHJMb2dnZXI6OmNyZWF0ZSgiYSIpOworICAgICAgICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBw
dHIgPSBjcmVhdGVCb3hQdHIoYSk7CisgICAgICAgIEVYUEVDVF9FUShhLCBwdHItPmdldCgpKTsK
KyAgICAgICAgcHRyID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKGZhbHNlLCBzdGF0aWNf
Y2FzdDxib29sPihwdHIpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJjcmVhdGUoYSkgZGVs
ZXRlKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChXVEZfQm94UHRyLCBB
c3NpZ25tZW50KQoreworICAgIHsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBhID0gQm94UHRyTG9n
Z2VyOjpjcmVhdGUoImEiKTsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBiID0gQm94UHRyTG9nZ2Vy
OjpjcmVhdGUoImIiKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcDEgPSBjcmVhdGVC
b3hQdHIoYSk7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAyID0gY3JlYXRlQm94UHRy
KGIpOworICAgICAgICBFWFBFQ1RfRVEoYSwgcDEtPmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VR
KGIsIHAyLT5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHAxID0gcDI7
CisgICAgICAgIEVYUEVDVF9FUShiLCBwMS0+Z2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoYiwg
cDItPmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NU
UkVRKCJjcmVhdGUoYSkgY3JlYXRlKGIpIHwgZGVsZXRlKGEpIHwgZGVsZXRlKGIpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBhID0gQm94
UHRyTG9nZ2VyOjpjcmVhdGUoImEiKTsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBiID0gQm94UHRy
TG9nZ2VyOjpjcmVhdGUoImIiKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcDEgPSBj
cmVhdGVCb3hQdHIoYSk7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAyID0gY3JlYXRl
Qm94UHRyKGIpOworICAgICAgICBFWFBFQ1RfRVEoYSwgcDEtPmdldCgpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKGIsIHAyLT5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHAx
ID0gV1RGTW92ZShwMik7CisgICAgICAgIEVYUEVDVF9FUShiLCBwMS0+Z2V0KCkpOworICAgICAg
ICBFWFBFQ1RfRVEoZmFsc2UsIHN0YXRpY19jYXN0PGJvb2w+KHAyKSk7CisgICAgICAgIGxvZygp
IDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgiY3JlYXRlKGEpIGNyZWF0ZShiKSB8
IGRlbGV0ZShhKSB8IGRlbGV0ZShiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7
CisgICAgICAgIEJveFB0ckxvZ2dlciogYSA9IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJhIik7Cisg
ICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHB0ciA9IGNyZWF0ZUJveFB0cihhKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGEsIHB0ci0+Z2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworSUdO
T1JFX0NMQU5HX1dBUk5JTkdTX0JFR0lOKCJ1bmtub3duLXByYWdtYXMiKQorSUdOT1JFX0NMQU5H
X1dBUk5JTkdTX0JFR0lOKCJ1bmtub3duLXdhcm5pbmctb3B0aW9uIikKK0lHTk9SRV9DTEFOR19X
QVJOSU5HU19CRUdJTigic2VsZi1hc3NpZ24tb3ZlcmxvYWRlZCIpCisgICAgICAgIHB0ciA9IHB0
cjsKK0lHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKKyAgICAgICAgRVhQRUNUX0VRKGEsIHB0ci0+
Z2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEo
ImNyZWF0ZShhKSB8IHwgZGVsZXRlKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAg
IHsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBhID0gQm94UHRyTG9nZ2VyOjpjcmVhdGUoImEiKTsK
KyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcHRyID0gY3JlYXRlQm94UHRyKGEpOworICAg
ICAgICBFWFBFQ1RfRVEoYSwgcHRyLT5nZXQoKSk7CitJR05PUkVfQ0xBTkdfV0FSTklOR1NfQkVH
SU4oInVua25vd24tcHJhZ21hcyIpCitJR05PUkVfQ0xBTkdfV0FSTklOR1NfQkVHSU4oInNlbGYt
bW92ZSIpOworICAgICAgICBwdHIgPSBXVEZNb3ZlKHB0cik7CitJR05PUkVfQ0xBTkdfV0FSTklO
R1NfRU5ECisgICAgICAgIEVYUEVDVF9FUShhLCBwdHItPmdldCgpKTsKKyAgICB9CisgICAgRVhQ
RUNUX1NUUkVRKCJjcmVhdGUoYSkgZGVsZXRlKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
K30KKworVEVTVChXVEZfQm94UHRyLCBPcGVyYXRvcnMpCit7CisgICAgeworICAgICAgICBCb3hQ
dHJMb2dnZXIqIGEgPSBCb3hQdHJMb2dnZXI6OmNyZWF0ZSgiYSIpOworICAgICAgICBCb3hQdHJM
b2dnZXIqIGIgPSBCb3hQdHJMb2dnZXI6OmNyZWF0ZSgiYiIpOworICAgICAgICBCb3hQdHI8Qm94
UHRyTG9nZ2VyPiBwMSA9IGNyZWF0ZUJveFB0cihhKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxv
Z2dlcj4gcDIgPSBjcmVhdGVCb3hQdHIoYik7CisgICAgICAgIEVYUEVDVF9FUSgqcDEsICpwMSk7
CisgICAgICAgIEVYUEVDVF9ORSgqcDEsICpwMik7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgi
Y3JlYXRlKGEpIGNyZWF0ZShiKSBkZWxldGUoYikgZGVsZXRlKGEpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBhID0gQm94UHRyTG9nZ2Vy
OjpjcmVhdGUoImEiKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcDEgPSBjcmVhdGVC
b3hQdHIoYSk7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAyKHAxKTsKKyAgICAgICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PGJvb2w+KHAxKSwgdHJ1ZSk7CisgICAgICAgIEVYUEVDVF9F
USghcDEsIGZhbHNlKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJjcmVhdGUoYSkgZGVsZXRl
KGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQm94UHRyPEJv
eFB0ckxvZ2dlcj4gZW1wdHk7CisgICAgICAgIEVYUEVDVF9FUSghZW1wdHksIHRydWUpOworICAg
ICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Ym9vbD4oZW1wdHkpLCBmYWxzZSk7CisgICAgfQor
ICAgIEVYUEVDVF9TVFJFUSgiIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCit9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403778</attachid>
            <date>2020-07-08 07:24:10 -0700</date>
            <delta_ts>2020-07-09 02:16:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>18104</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNzE4YWQzODJmOWQ0Li4yNTkwZDJkMjkwZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIw
MjAtMDctMDggIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4K
KworICAgICAgICBbV1RGXSBJbXBsZW1lbnQgbmV3IEJveFB0ciBhbGlhcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzc5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgQm94UHRyLmggdGhhdCBp
bmNsdWRlcyBCb3hQdHI8VD4gYXMgYWxpYXMgb2YKKyAgICAgICAgQm94PHN0ZDo6dW5pcXVlX3B0
cjxUPj4uIFdlIGRpc2N1c3NlZCBhYm91dCB0aGlzIGNsYXNzIG9uIGJ1Z3ppbGxhCisgICAgICAg
IGFuZCB3ZSBhZ3JlZWQgb24gdGhpcyBhbGlhcyBiZWluZyB0aGUgYmVzdCBpZGVhLiBBcGFydCBm
cm9tIHRoZQorICAgICAgICBhbGlhcyBJJ20gYWRkaW5nIGEgY291cGxlIG9mIGhlbHBlcnMgbGlr
ZSBhIGNyZWF0ZSBmdW5jdGlvbiBhbmQKKyAgICAgICAgdGhlIG9wZXJhdG9yPT0uCisKKyAgICAg
ICAgVGVzdHM6IEJveFB0ciBBUEkgdGVzdHMgYWRkZWQuCisKKyAgICAgICAgKiBXVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQm94UHRyLmg6IEFkZGVkLgorICAg
ICAgICAoV1RGOjpjcmVhdGVCb3hQdHIpOgorICAgICAgICAoV1RGOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdURjo6b3BlcmF0b3IhPSk6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0Ogor
CiAyMDIwLTA2LTI4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVuYW1lIGluaXRpYWxpemVUaHJlYWRpbmcgdG8gaW5pdGlhbGl6ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzEyNjNiNTc1YzRlLi40MDA5ZTNjMmU4
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjU4LDYg
KzI1OCw3IEBACiAJCTBGOEYyQjkwMTcyRTAwRjAwMDdEQkRBNSAvKiBDb21waWxhdGlvblRocmVh
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb21waWxhdGlvblRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjhGMkI5QjE3MkYyNTk0MDA3REJEQTUgLyogQ29udmVyc2lvbk1vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29udmVyc2lvbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY5MzI3NEExQzE3RjRCNzAwQ0Y2NTY0IC8qIEJveC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY5MzI3NEExQzE3RjRCNzAwQ0Y2NTY2IC8qIEJveFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCb3hQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5
NDk1ODMxQzU3MUNDOTAwNDEzQTQ4IC8qIE9yZGVyTWFrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gT3JkZXJNYWtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjk1QjYzMTIwQ0I0Qjc3MDA0Nzk2MzUgLyogRGVidWdIZWFwLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnSGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjk1QjYzMjIwQ0I0Qjc3MDA0Nzk2MzUgLyogRGVidWdIZWFwLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlYnVnSGVhcC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC05NTcsNiArOTU4LDcgQEAKIAkJCQlBOEE0NzI2NTE1MUE4MjVBMDA0
MTIzRkYgLyogQmxvb21GaWx0ZXIuaCAqLywKIAkJCQkwRkIzOTlCODIwQUY1QTU4MDAxN0UyMTMg
LyogQm9vbGVhbkxhdHRpY2UuaCAqLywKIAkJCQkwRjkzMjc0QTFDMTdGNEI3MDBDRjY1NjQgLyog
Qm94LmggKi8sCisJCQkJMEY5MzI3NEExQzE3RjRCNzAwQ0Y2NTY2IC8qIEJveFB0ci5oICovLAog
CQkJCTdDM0Y3MjM5MUQ3ODgxMTkwMDY3NEUyNiAvKiBCcmlnYW5kLmggKi8sCiAJCQkJMEY0NTcw
NDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAqLywKIAkJCQlBOEE0NzI2NzE1MUE4
MjVBMDA0MTIzRkYgLyogQnVtcFBvaW50ZXJBbGxvY2F0b3IuaCAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0JveFB0ci5oIGIvU291cmNlL1dURi93dGYvQm94UHRyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41YjdmZDYzNjFlN2IKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Cb3hQdHIuaApAQCAtMCwwICsxLDg0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3Rm
L0JveC5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVj
dCBCb3hQdHJEZWxldGVyIHsKKyAgICB2b2lkIG9wZXJhdG9yKCkoVCopIGNvbnN0ID0gZGVsZXRl
OworfTsKKworI2RlZmluZSBXVEZfREVGSU5FX0JPWFBUUl9ERUxFVEVSKHR5cGVOYW1lLCBkZWxl
dGVyRnVuY3Rpb24pICAgICAgICBcCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQm94UHRyRGVsZXRl
cjx0eXBlTmFtZT4gICAgICAgICAgXAorICAgIHsgXAorICAgICAgICB2b2lkIG9wZXJhdG9yKCkg
KHR5cGVOYW1lKiBwdHIpIGNvbnN0IFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICBkZWxldGVy
RnVuY3Rpb24ocHRyKTsgXAorICAgICAgICB9IFwKKyAgICB9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgordXNpbmcgQm94UHRyID0gQm94PHN0ZDo6dW5pcXVlX3B0cjxULCBCb3hQdHJEZWxldGVy
PFQ+Pj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitCb3hQdHI8VD4gY3JlYXRlQm94UHRyKFQq
IHB0cikKK3sKKyAgICByZXR1cm4gQm94PHN0ZDo6dW5pcXVlX3B0cjxULCBCb3hQdHJEZWxldGVy
PFQ+Pj46OmNyZWF0ZShwdHIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEJveFB0cjxUPiYgbGhzLCBjb25zdCBCb3hQdHI8VD4mIHJocykKK3sKKyAg
ICBpZiAoIWxocyAmJiAhcmhzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghbGhz
IHx8ICFyaHMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbGhzLT5nZXQoKSAm
JiAhcmhzLT5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIWxocy0+Z2V0
KCkgfHwgIXJocy0+Z2V0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiAq
bGhzID09ICpyaHM7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citib29sIG9wZXJhdG9yIT0o
Y29uc3QgQm94UHRyPFQ+JiBsaHMsIGNvbnN0IEJveFB0cjxUPiYgcmhzKQoreworICAgIHJldHVy
biAhKGxocyA9PSByaHMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpj
cmVhdGVCb3hQdHI7Cit1c2luZyBXVEY6OkJveFB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZWQ3MWViMjgyMzU0Li5hZDVkODdiY2M3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0xNyw2
ICsxNyw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBCbG9vbUZpbHRlci5oCiAgICAg
Qm9vbGVhbkxhdHRpY2UuaAogICAgIEJveC5oCisgICAgQm94UHRyLmgKICAgICBCcmlnYW5kLmgK
ICAgICBCdWJibGVTb3J0LmgKICAgICBCdW1wUG9pbnRlckFsbG9jYXRvci5oCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjM3YzlkODdlZjQ4Li5j
NDhiODI5ODI5YTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wNy0wOCAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2
YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtXVEZdIEltcGxlbWVudCBuZXcg
Qm94UHRyIGFsaWFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTIzNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0cyBmb3IgQm94UHRyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Cb3hQ
dHIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkJveFB0ckxvZ2dlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkJveFB0ckxvZ2dlcjo6Qm94UHRyTG9nZ2Vy
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmJveFB0ckxvZ2dlckRlbGV0ZXIpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMDYtMjkgIFhhYmllciBSb2RyaWd1ZXog
Q2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbd2Via2l0cHldIFBIUDcu
NCBzdXBwb3J0IG9uIERlYmlhbiBwbGF0Zm9ybXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0
CmluZGV4IDc4ZmFmOWQzYTlkZi4uZWJkODc3ZGIwYTg1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VM
aXN0cy50eHQKQEAgLTI4LDYgKzI4LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3Rz
L1dURi9BdG9tU3RyaW5nLmNwcAogICAgIFRlc3RzL1dURi9CaXRtYXAuY3BwCiAgICAgVGVzdHMv
V1RGL0Jsb29tRmlsdGVyLmNwcAorICAgIFRlc3RzL1dURi9Cb3hQdHIuY3BwCiAgICAgVGVzdHMv
V1RGL0J1bXBQb2ludGVyQWxsb2NhdG9yLmNwcAogICAgIFRlc3RzL1dURi9DU3RyaW5nLmNwcAog
ICAgIFRlc3RzL1dURi9DaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGQ2NDExMzA3NDZiZS4uNGJiZTQ5ZWNlMmJmIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNTU4LDYgKzU1OCw3IEBACiAJCTdDODNERjE0MUQwQTU5MEMwMEZFQkNG
MyAvKiBSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNBNDI3QUExODBEQTI2NDAwQ0QyNEQ3IC8qIFJlZi5jcHAgKi87IH07CiAJCTdDODNERjE1
MUQwQTU5MEMwMEZFQkNGMyAvKiBSZWZDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkQxOTk3MUEyREIwNUIwMDZEQ0YwQSAvKiBSZWZD
b3VudGVyLmNwcCAqLzsgfTsKIAkJN0M4M0RGMTYxRDBBNTkwQzAwRkVCQ0YzIC8qIFJlZlB0ci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0E0MjdB
ODE4MEQ5QjA3MDBDRDI0RDcgLyogUmVmUHRyLmNwcCAqLzsgfTsKKwkJN0M4M0RGMTgxRDBBNTkw
QzAwRkVCQ0YzIC8qIEJveFB0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0E0MjdBRTE4MERBNjBGMDBDRDI0RDcgLyogQm94UHRyLmNwcCAqLzsg
fTsKIAkJN0M4M0RGMUQxRDBBNTkwQzAwRkVCQ0YzIC8qIExvY2suY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQzQ1QTQxQjczRUJFMjAwODVCRDYy
IC8qIExvY2suY3BwICovOyB9OwogCQk3QzgzREYyNDFEMEE1OTBDMDBGRUJDRjMgLyogUmV0YWlu
UHRyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMw
MjlCMUIxNDg2QjI1OTAwODE3REE5IC8qIFJldGFpblB0ci5tbSAqLzsgfTsKIAkJN0M4M0RGMjYx
RDBBNTkwQzAwRkVCQ0YzIC8qIFNhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjNCMTEyMTVFNDVF
QUIwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgKi87IH07CkBA
IC0yMzQwLDYgKzIzNDEsNyBAQAogCQk5M0E0MjdBQTE4MERBMjY0MDBDRDI0RDcgLyogUmVmLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQTQyN0FDMTgwREE2MEYwMENEMjRENyAvKiBNb3ZlT25s
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNb3ZlT25seS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0E0MjdBRDE4MERBNjBGMDBDRDI0RDcgLyogUmVmTG9nZ2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlZkxvZ2dlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0E0MjdBRTE4
MERBNjBGMDBDRDI0RDcgLyogQm94UHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEJveFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQTcy
MEU1MThGMUEwRTgwMEE4NDhFMSAvKiBDYWxjdWxhdGlvblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGN1bGF0aW9uVmFsdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0FCQTgwODE2RERBQjkxMDAyREIyRkEgLyogU3RyaW5nSGFz
aGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ0hhc2hl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQUY0RUNBMTUwNkYwMzUwMDdG
RDU3RSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0Rm9ySW1hZ2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwMjQs
NiArNDAyNiw3IEBACiAJCQkJMjZGMUI0NDIxNUNBNDM0RjAwRDFFNEJGIC8qIEF0b21TdHJpbmcu
Y3BwICovLAogCQkJCUZFMkQ5NDczMjQ1RUIyREYwMEU0ODEzNSAvKiBCaXRtYXAuY3BwICovLAog
CQkJCUU0MDAxOTMwMUFDRTlCNUMwMDFCMEEyQSAvKiBCbG9vbUZpbHRlci5jcHAgKi8sCisJCQkJ
OTNBNDI3QUUxODBEQTYwRjAwQ0QyNEQ3IC8qIEJveFB0ci5jcHAgKi8sCiAJCQkJMDQ1MUE1QTYy
MzVFNDM4RTAwOURGOTQ1IC8qIEJ1bXBQb2ludGVyQWxsb2NhdG9yLmNwcCAqLywKIAkJCQlBN0E5
NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAq
LywKIAkJCQlFMzAyQkRBOTI0MDRCOTIzMDA4NjUyNzcgLyogQ29tcGFjdFJlZlB0clR1cGxlLmNw
cCAqLywKQEAgLTQ3NDIsNiArNDc0NSw3IEBACiAJCQkJRkUyRDk0NzQyNDVFQjJGNDAwRTQ4MTM1
IC8qIEJpdG1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQURBRDE1MDFENzdBOUY2MDAyMTI1
ODYgLyogQmxvY2tQdHIubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREU5QzFEMEE1OTBDMDBG
RUJDRjMgLyogQmxvb21GaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0M4M0RGMTgxRDBB
NTkwQzAwRkVCQ0YzIC8qIEJveFB0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNERCMjM5NjIz
NUU0M0VDMDAzMjhGMTcgLyogQnVtcFBvaW50ZXJBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M4M0RFQTAxRDBBNTkwQzAwRkVCQ0YzIC8qIENoZWNrZWRBcml0aG1ldGljT3BlcmF0
aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzAyQkRBQTI0MDRCOTI0MDA4NjUyNzcgLyog
Q29tcGFjdFJlZlB0clR1cGxlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQm94UHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0JveFB0ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi5jYzJlMDAzYzhjMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9Cb3hQdHIuY3BwCkBAIC0wLDAgKzEsMjE2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIwIE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTG9nZ2VyLmgiCisjaW5jbHVkZSA8
d3RmL0JveFB0ci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0cnVjdCBCb3hQ
dHJMb2dnZXIgeworICAgIEJveFB0ckxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKTsKKyAgICBzdGF0
aWMgQm94UHRyTG9nZ2VyKiBjcmVhdGUoY29uc3QgY2hhciogbmFtZSkgeyByZXR1cm4gbmV3IEJv
eFB0ckxvZ2dlcihuYW1lKTsgfQorICAgIGNvbnN0IGNoYXImIG5hbWU7Cit9OworCitCb3hQdHJM
b2dnZXI6OkJveFB0ckxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKQorICAgIDogbmFtZSB7ICpuYW1l
IH0KK3sKKyAgICBsb2coKSA8PCAiY3JlYXRlKCIgPDwgbmFtZSA8PCAiKSAiOworfQorCit2b2lk
IGJveFB0ckxvZ2dlckRlbGV0ZXIoQm94UHRyTG9nZ2VyKiBsb2dnZXIpCit7CisgICAgbG9nKCkg
PDwgImRlbGV0ZSgiIDw8ICZsb2dnZXItPm5hbWUgPDwgIikgIjsKKyAgICBkZWxldGUgbG9nZ2Vy
OworfQorCit9OworCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0RFRklORV9CT1hQVFJfREVMRVRF
UihUZXN0V2ViS2l0QVBJOjpCb3hQdHJMb2dnZXIsIFRlc3RXZWJLaXRBUEk6OmJveFB0ckxvZ2dl
ckRlbGV0ZXIpOworCit9CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEZf
Qm94UHRyLCBCYXNpYykKK3sKKyAgICB7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IGVt
cHR5OworICAgICAgICBFWFBFQ1RfRVEoZmFsc2UsIHN0YXRpY19jYXN0PGJvb2w+KGVtcHR5KSk7
CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgiIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisg
ICAgeworICAgICAgICBCb3hQdHJMb2dnZXIqIGEgPSBCb3hQdHJMb2dnZXI6OmNyZWF0ZSgiYSIp
OworICAgICAgICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwdHIgPSBjcmVhdGVCb3hQdHIoYSk7Cisg
ICAgICAgIEVYUEVDVF9FUSh0cnVlLCBzdGF0aWNfY2FzdDxib29sPihwdHIpKTsKKyAgICAgICAg
RVhQRUNUX0VRKGEsIHB0ci0+Z2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoYS0+bmFtZSwgKCpw
dHIpLT5uYW1lKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJjcmVhdGUoYSkgZGVsZXRlKGEp
ICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQm94UHRyTG9nZ2Vy
KiBhID0gQm94UHRyTG9nZ2VyOjpjcmVhdGUoImEiKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxv
Z2dlcj4gcDEgPSBjcmVhdGVCb3hQdHIoYSk7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+
IHAyKHAxKTsKKyAgICAgICAgRVhQRUNUX0VRKGEsIHAxLT5nZXQoKSk7CisgICAgICAgIEVYUEVD
VF9FUShhLCBwMi0+Z2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImNyZWF0ZShhKSBk
ZWxldGUoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBCb3hQ
dHJMb2dnZXIqIGEgPSBCb3hQdHJMb2dnZXI6OmNyZWF0ZSgiYSIpOworICAgICAgICBCb3hQdHI8
Qm94UHRyTG9nZ2VyPiBwMSA9IGNyZWF0ZUJveFB0cihhKTsKKyAgICAgICAgQm94UHRyPEJveFB0
ckxvZ2dlcj4gcDIgPSBwMTsKKyAgICAgICAgRVhQRUNUX0VRKGEsIHAxLT5nZXQoKSk7CisgICAg
ICAgIEVYUEVDVF9FUShhLCBwMi0+Z2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImNy
ZWF0ZShhKSBkZWxldGUoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAg
ICAgICBCb3hQdHJMb2dnZXIqIGEgPSBCb3hQdHJMb2dnZXI6OmNyZWF0ZSgiYSIpOworICAgICAg
ICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwMSA9IGNyZWF0ZUJveFB0cihhKTsKKyAgICAgICAgQm94
UHRyPEJveFB0ckxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgRVhQRUNUX0VRKGZh
bHNlLCBzdGF0aWNfY2FzdDxib29sPihwMSkpOworICAgICAgICBFWFBFQ1RfRVEoYSwgcDItPmdl
dCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJjcmVhdGUoYSkgZGVsZXRlKGEpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBhID0g
Qm94UHRyTG9nZ2VyOjpjcmVhdGUoImEiKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4g
cDEgPSBjcmVhdGVCb3hQdHIoYSk7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAyKFdU
Rk1vdmUocDEpKTsKKyAgICAgICAgRVhQRUNUX0VRKGZhbHNlLCBzdGF0aWNfY2FzdDxib29sPihw
MSkpOworICAgICAgICBFWFBFQ1RfRVEoYSwgcDItPmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNU
X1NUUkVRKCJjcmVhdGUoYSkgZGVsZXRlKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKwor
ICAgIHsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBhID0gQm94UHRyTG9nZ2VyOjpjcmVhdGUoImEi
KTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcHRyID0gY3JlYXRlQm94UHRyKGEpOwor
ICAgICAgICBFWFBFQ1RfRVEoYSwgcHRyLT5nZXQoKSk7CisgICAgICAgIHB0ciA9IG51bGxwdHI7
CisgICAgICAgIEVYUEVDVF9FUShmYWxzZSwgc3RhdGljX2Nhc3Q8Ym9vbD4ocHRyKSk7CisgICAg
fQorICAgIEVYUEVDVF9TVFJFUSgiY3JlYXRlKGEpIGRlbGV0ZShhKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX0JveFB0ciwgQXNzaWdubWVudCkKK3sKKyAgICB7Cisg
ICAgICAgIEJveFB0ckxvZ2dlciogYSA9IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJhIik7CisgICAg
ICAgIEJveFB0ckxvZ2dlciogYiA9IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJiIik7CisgICAgICAg
IEJveFB0cjxCb3hQdHJMb2dnZXI+IHAxID0gY3JlYXRlQm94UHRyKGEpOworICAgICAgICBCb3hQ
dHI8Qm94UHRyTG9nZ2VyPiBwMiA9IGNyZWF0ZUJveFB0cihiKTsKKyAgICAgICAgRVhQRUNUX0VR
KGEsIHAxLT5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShiLCBwMi0+Z2V0KCkpOworICAgICAg
ICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9IHAyOworICAgICAgICBFWFBFQ1RfRVEoYiwg
cDEtPmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGIsIHAyLT5nZXQoKSk7CisgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgiY3JlYXRlKGEpIGNyZWF0ZShi
KSB8IGRlbGV0ZShhKSB8IGRlbGV0ZShiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAg
ICB7CisgICAgICAgIEJveFB0ckxvZ2dlciogYSA9IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJhIik7
CisgICAgICAgIEJveFB0ckxvZ2dlciogYiA9IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJiIik7Cisg
ICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAxID0gY3JlYXRlQm94UHRyKGEpOworICAgICAg
ICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwMiA9IGNyZWF0ZUJveFB0cihiKTsKKyAgICAgICAgRVhQ
RUNUX0VRKGEsIHAxLT5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShiLCBwMi0+Z2V0KCkpOwor
ICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAg
ICBFWFBFQ1RfRVEoYiwgcDEtPmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGZhbHNlLCBzdGF0
aWNfY2FzdDxib29sPihwMikpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBF
WFBFQ1RfU1RSRVEoImNyZWF0ZShhKSBjcmVhdGUoYikgfCBkZWxldGUoYSkgfCBkZWxldGUoYikg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBCb3hQdHJMb2dnZXIq
IGEgPSBCb3hQdHJMb2dnZXI6OmNyZWF0ZSgiYSIpOworICAgICAgICBCb3hQdHI8Qm94UHRyTG9n
Z2VyPiBwdHIgPSBjcmVhdGVCb3hQdHIoYSk7CisgICAgICAgIEVYUEVDVF9FUShhLCBwdHItPmdl
dCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKK0lHTk9SRV9DTEFOR19XQVJOSU5HU19CRUdJ
TigidW5rbm93bi1wcmFnbWFzIikKK0lHTk9SRV9DTEFOR19XQVJOSU5HU19CRUdJTigidW5rbm93
bi13YXJuaW5nLW9wdGlvbiIpCitJR05PUkVfQ0xBTkdfV0FSTklOR1NfQkVHSU4oInNlbGYtYXNz
aWduLW92ZXJsb2FkZWQiKQorICAgICAgICBwdHIgPSBwdHI7CitJR05PUkVfQ0xBTkdfV0FSTklO
R1NfRU5ECisgICAgICAgIEVYUEVDVF9FUShhLCBwdHItPmdldCgpKTsKKyAgICAgICAgbG9nKCkg
PDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJjcmVhdGUoYSkgfCB8IGRlbGV0ZShh
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIEJveFB0ckxvZ2dl
ciogYSA9IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJhIik7CisgICAgICAgIEJveFB0cjxCb3hQdHJM
b2dnZXI+IHB0ciA9IGNyZWF0ZUJveFB0cihhKTsKKyAgICAgICAgRVhQRUNUX0VRKGEsIHB0ci0+
Z2V0KCkpOworSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0JFR0lOKCJ1bmtub3duLXByYWdtYXMiKQor
SUdOT1JFX0NMQU5HX1dBUk5JTkdTX0JFR0lOKCJzZWxmLW1vdmUiKTsKKyAgICAgICAgcHRyID0g
V1RGTW92ZShwdHIpOworSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAorICAgICAgICBFWFBFQ1Rf
RVEoYSwgcHRyLT5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgiY3JlYXRlKGEpIGRl
bGV0ZShhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX0JveFB0ciwg
T3BlcmF0b3JzKQoreworICAgIHsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBhID0gQm94UHRyTG9n
Z2VyOjpjcmVhdGUoImEiKTsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBiID0gQm94UHRyTG9nZ2Vy
OjpjcmVhdGUoImIiKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcDEgPSBjcmVhdGVC
b3hQdHIoYSk7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAyID0gY3JlYXRlQm94UHRy
KGIpOworICAgICAgICBFWFBFQ1RfRVEocDEsIHAxKTsKKyAgICAgICAgRVhQRUNUX05FKHAxLCBw
Mik7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgiY3JlYXRlKGEpIGNyZWF0ZShiKSBkZWxldGUo
YikgZGVsZXRlKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAg
Qm94UHRyTG9nZ2VyKiBhID0gQm94UHRyTG9nZ2VyOjpjcmVhdGUoImEiKTsKKyAgICAgICAgQm94
UHRyPEJveFB0ckxvZ2dlcj4gcDEgPSBjcmVhdGVCb3hQdHIoYSk7CisgICAgICAgIEVYUEVDVF9F
UShzdGF0aWNfY2FzdDxib29sPihwMSksIHRydWUpOworICAgICAgICBFWFBFQ1RfRVEoIXAxLCBm
YWxzZSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgiY3JlYXRlKGEpIGRlbGV0ZShhKSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dn
ZXI+IGVtcHR5OworICAgICAgICBCb3hQdHJMb2dnZXIqIGEgPSBCb3hQdHJMb2dnZXI6OmNyZWF0
ZSgiYSIpOworICAgICAgICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwMSA9IGNyZWF0ZUJveFB0cihh
KTsKKyAgICAgICAgRVhQRUNUX05FKGVtcHR5LCBwMSk7CisgICAgICAgIEVYUEVDVF9FUShlbXB0
eSwgZW1wdHkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImNyZWF0ZShhKSBkZWxldGUoYSkg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCit9Owo=
</data>
<flag name="review"
          id="419163"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403853</attachid>
            <date>2020-07-09 02:16:01 -0700</date>
            <delta_ts>2020-07-09 02:36:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>18032</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNTM4NmNmOTBjM2M1Li43NGRlNmRjYzM5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIw
MjAtMDctMDkgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4K
KworICAgICAgICBbV1RGXSBJbXBsZW1lbnQgbmV3IEJveFB0ciBhbGlhcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzc5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkZWQgQm94UHRyLmggdGhhdCBpbmNs
dWRlcyBCb3hQdHI8VD4gYXMgYWxpYXMgb2YKKyAgICAgICAgQm94PHN0ZDo6dW5pcXVlX3B0cjxU
Pj4uIFdlIGRpc2N1c3NlZCBhYm91dCB0aGlzIGNsYXNzIG9uIGJ1Z3ppbGxhCisgICAgICAgIGFu
ZCB3ZSBhZ3JlZWQgb24gdGhpcyBhbGlhcyBiZWluZyB0aGUgYmVzdCBpZGVhLiBBcGFydCBmcm9t
IHRoZQorICAgICAgICBhbGlhcyBJJ20gYWRkaW5nIGEgY291cGxlIG9mIGhlbHBlcnMgbGlrZSBh
IGNyZWF0ZSBmdW5jdGlvbiBhbmQKKyAgICAgICAgdGhlIG9wZXJhdG9yPT0gYW5kIG9wZXJhdG9y
IT0uCisKKyAgICAgICAgVGVzdHM6IEJveFB0ciBBUEkgdGVzdHMgYWRkZWQuCisKKyAgICAgICAg
KiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQm94UHRyLmg6
IEFkZGVkLgorICAgICAgICAoV1RGOjpjcmVhdGVCb3hQdHIpOgorICAgICAgICAoV1RGOjpvcGVy
YXRvcj09KToKKyAgICAgICAgKFdURjo6b3BlcmF0b3IhPSk6CisgICAgICAgICogd3RmL0NNYWtl
TGlzdHMudHh0OgorCiAyMDIwLTA3LTAzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgIi1XbGl0ZXJhbC1jb252ZXJzaW9uIiB3YXJuaW5nIHRvIFhjb2RlIGJh
c2VkIGJ1aWxkcyBhbmQgZml4IHRoZSBpc3N1ZXMgaXQgZmluZHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZjOWNlMWNiMDIzYy4uYjlkMGQ4MDc3NTJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1OCw2ICsyNTgs
NyBAQAogCQkwRjhGMkI5MDE3MkUwMEYwMDA3REJEQTUgLyogQ29tcGlsYXRpb25UaHJlYWQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29tcGlsYXRpb25UaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY4RjJCOUIxNzJGMjU5NDAwN0RCREE1IC8qIENvbnZlcnNpb25Nb2RlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvbnZlcnNpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGOTMyNzRBMUMxN0Y0QjcwMENGNjU2NCAvKiBCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTMy
NzRBMUMxN0Y0QjcwMENGNjU2NiAvKiBCb3hQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQm94UHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTQ5NTgz
MUM1NzFDQzkwMDQxM0E0OCAvKiBPcmRlck1ha2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE9yZGVyTWFrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5
NUI2MzEyMENCNEI3NzAwNDc5NjM1IC8qIERlYnVnSGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEZWJ1Z0hlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY5NUI2MzIyMENCNEI3NzAwNDc5NjM1IC8qIERlYnVnSGVhcC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWJ1Z0hlYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtOTU3LDYgKzk1OCw3IEBACiAJCQkJQThBNDcyNjUxNTFBODI1QTAwNDEyM0ZG
IC8qIEJsb29tRmlsdGVyLmggKi8sCiAJCQkJMEZCMzk5QjgyMEFGNUE1ODAwMTdFMjEzIC8qIEJv
b2xlYW5MYXR0aWNlLmggKi8sCiAJCQkJMEY5MzI3NEExQzE3RjRCNzAwQ0Y2NTY0IC8qIEJveC5o
ICovLAorCQkJCTBGOTMyNzRBMUMxN0Y0QjcwMENGNjU2NiAvKiBCb3hQdHIuaCAqLywKIAkJCQk3
QzNGNzIzOTFENzg4MTE5MDA2NzRFMjYgLyogQnJpZ2FuZC5oICovLAogCQkJCTBGNDU3MDQ0MUJF
ODM0NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0LmggKi8sCiAJCQkJQThBNDcyNjcxNTFBODI1QTAw
NDEyM0ZGIC8qIEJ1bXBQb2ludGVyQWxsb2NhdG9yLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9Cb3hQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL0JveFB0ci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjQ3N2NiMDAwZDlhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dURi93dGYvQm94UHRyLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAy
MDIwIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9Cb3gu
aD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBCb3hQ
dHJEZWxldGVyIHsKKyAgICB2b2lkIG9wZXJhdG9yKCkoVCopIGNvbnN0ID0gZGVsZXRlOworfTsK
KworI2RlZmluZSBXVEZfREVGSU5FX0JPWFBUUl9ERUxFVEVSKHR5cGVOYW1lLCBkZWxldGVyRnVu
Y3Rpb24pIFwKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBCb3hQdHJEZWxldGVyPHR5cGVOYW1lPiBc
CisgICAgeyBcCisgICAgICAgIHZvaWQgb3BlcmF0b3IoKSAodHlwZU5hbWUqIHB0cikgY29uc3Qg
XAorICAgICAgICB7IFwKKyAgICAgICAgICAgIGRlbGV0ZXJGdW5jdGlvbihwdHIpOyBcCisgICAg
ICAgIH0gXAorICAgIH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5nIEJveFB0ciA9IEJv
eDxzdGQ6OnVuaXF1ZV9wdHI8VCwgQm94UHRyRGVsZXRlcjxUPj4+OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBCb3hQdHI8VD4gY3JlYXRlQm94UHRyKFQqIHB0cikKK3sKKyAgICByZXR1cm4gQm94
PHN0ZDo6dW5pcXVlX3B0cjxULCBCb3hQdHJEZWxldGVyPFQ+Pj46OmNyZWF0ZShwdHIpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIG9wZXJhdG9yPT0oY29uc3QgQm94UHRyPFQ+JiBs
aHMsIGNvbnN0IEJveFB0cjxUPiYgcmhzKQoreworICAgIGlmICghbGhzICYmICFyaHMpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFsaHMgfHwgIXJocykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFsaHMtPmdldCgpICYmICFyaHMtPmdldCgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGlmICghbGhzLT5nZXQoKSB8fCAhcmhzLT5nZXQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuICpsaHMgPT0gKnJoczsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJveFB0cjxUPiYgbGhzLCBjb25z
dCBCb3hQdHI8VD4mIHJocykKK3sKKyAgICByZXR1cm4gIShsaHMgPT0gcmhzKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6Y3JlYXRlQm94UHRyOwordXNpbmcgV1RGOjpC
b3hQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGU3YzRmYzEwYzZjMS4uNzE4YTFkZjkwZDU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMTcsNiArMTcsNyBAQCBzZXQoV1RGX1BVQkxJQ19I
RUFERVJTCiAgICAgQmxvb21GaWx0ZXIuaAogICAgIEJvb2xlYW5MYXR0aWNlLmgKICAgICBCb3gu
aAorICAgIEJveFB0ci5oCiAgICAgQnJpZ2FuZC5oCiAgICAgQnViYmxlU29ydC5oCiAgICAgQnVt
cFBvaW50ZXJBbGxvY2F0b3IuaApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDI2NjI0NDVjYTlmYS4uNjk2ZGZhMjgxNGUyIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MjAtMDctMDkgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4K
KworICAgICAgICBbV1RGXSBJbXBsZW1lbnQgbmV3IEJveFB0ciBhbGlhcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzc5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGVzdHMgZm9yIEJveFB0ci4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQm94UHRyLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpCb3hQdHJMb2dnZXI6OmNyZWF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpCb3hQdHJMb2dnZXI6OkJveFB0ckxvZ2dlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpi
b3hQdHJMb2dnZXJEZWxldGVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAy
MDIwLTA3LTAzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGxp
dCBjb2xvciBjb252ZXJzaW9uIGZ1bmN0aW9ucyBvdXQgb2YgQ29sb3JVdGlsaXRpZXMuaC9jcHAg
aW50byB0aGVpciBvd24gZmlsZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IDY5
OGI3YjgxNzZjMi4uZTA3OTFhZDc3NmY4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQK
QEAgLTI4LDYgKzI4LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9BdG9t
U3RyaW5nLmNwcAogICAgIFRlc3RzL1dURi9CaXRtYXAuY3BwCiAgICAgVGVzdHMvV1RGL0Jsb29t
RmlsdGVyLmNwcAorICAgIFRlc3RzL1dURi9Cb3hQdHIuY3BwCiAgICAgVGVzdHMvV1RGL0J1bXBQ
b2ludGVyQWxsb2NhdG9yLmNwcAogICAgIFRlc3RzL1dURi9DU3RyaW5nLmNwcAogICAgIFRlc3Rz
L1dURi9DaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGYyMGViMzJkMmJmZS4uMWVjYTBhMDQ2ZDQ1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNTU3LDYgKzU1Nyw3IEBACiAJCTdDODNERjE0MUQwQTU5MEMwMEZFQkNGMyAvKiBSZWYu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBNDI3
QUExODBEQTI2NDAwQ0QyNEQ3IC8qIFJlZi5jcHAgKi87IH07CiAJCTdDODNERjE1MUQwQTU5MEMw
MEZFQkNGMyAvKiBSZWZDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QkQxOTk3MUEyREIwNUIwMDZEQ0YwQSAvKiBSZWZDb3VudGVyLmNw
cCAqLzsgfTsKIAkJN0M4M0RGMTYxRDBBNTkwQzAwRkVCQ0YzIC8qIFJlZlB0ci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0E0MjdBODE4MEQ5QjA3
MDBDRDI0RDcgLyogUmVmUHRyLmNwcCAqLzsgfTsKKwkJN0M4M0RGMTgxRDBBNTkwQzAwRkVCQ0Yz
IC8qIEJveFB0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0E0MjdBRTE4MERBNjBGMDBDRDI0RDcgLyogQm94UHRyLmNwcCAqLzsgfTsKIAkJN0M4
M0RGMUQxRDBBNTkwQzAwRkVCQ0YzIC8qIExvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQzQ1QTQxQjczRUJFMjAwODVCRDYyIC8qIExvY2su
Y3BwICovOyB9OwogCQk3QzgzREYyNDFEMEE1OTBDMDBGRUJDRjMgLyogUmV0YWluUHRyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMjlCMUIxNDg2
QjI1OTAwODE3REE5IC8qIFJldGFpblB0ci5tbSAqLzsgfTsKIAkJN0M4M0RGMjYxRDBBNTkwQzAw
RkVCQ0YzIC8qIFNhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjNCMTEyMTVFNDVFQUIwMDIxMDA2
OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgKi87IH07CkBAIC0yMzM5LDYg
KzIzNDAsNyBAQAogCQk5M0E0MjdBQTE4MERBMjY0MDBDRDI0RDcgLyogUmVmLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzQTQyN0FDMTgwREE2MEYwMENEMjRENyAvKiBNb3ZlT25seS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb3ZlT25seS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0E0
MjdBRDE4MERBNjBGMDBDRDI0RDcgLyogUmVmTG9nZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZkxv
Z2dlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0E0MjdBRTE4MERBNjBGMDBD
RDI0RDcgLyogQm94UHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJveFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQTcyMEU1MThGMUEw
RTgwMEE4NDhFMSAvKiBDYWxjdWxhdGlvblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENhbGN1bGF0aW9uVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0FCQTgwODE2RERBQjkxMDAyREIyRkEgLyogU3RyaW5nSGFzaGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ0hhc2hlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQUY0RUNBMTUwNkYwMzUwMDdGRDU3RSAvKiBO
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9y
SW1hZ2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwMjIsNiArNDAyNCw3
IEBACiAJCQkJMjZGMUI0NDIxNUNBNDM0RjAwRDFFNEJGIC8qIEF0b21TdHJpbmcuY3BwICovLAog
CQkJCUZFMkQ5NDczMjQ1RUIyREYwMEU0ODEzNSAvKiBCaXRtYXAuY3BwICovLAogCQkJCUU0MDAx
OTMwMUFDRTlCNUMwMDFCMEEyQSAvKiBCbG9vbUZpbHRlci5jcHAgKi8sCisJCQkJOTNBNDI3QUUx
ODBEQTYwRjAwQ0QyNEQ3IC8qIEJveFB0ci5jcHAgKi8sCiAJCQkJMDQ1MUE1QTYyMzVFNDM4RTAw
OURGOTQ1IC8qIEJ1bXBQb2ludGVyQWxsb2NhdG9yLmNwcCAqLywKIAkJCQlBN0E5NjZEQTE0MEVD
Q0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLywKIAkJCQlF
MzAyQkRBOTI0MDRCOTIzMDA4NjUyNzcgLyogQ29tcGFjdFJlZlB0clR1cGxlLmNwcCAqLywKQEAg
LTQ3MzksNiArNDc0Miw3IEBACiAJCQkJRkUyRDk0NzQyNDVFQjJGNDAwRTQ4MTM1IC8qIEJpdG1h
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQURBRDE1MDFENzdBOUY2MDAyMTI1ODYgLyogQmxv
Y2tQdHIubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREU5QzFEMEE1OTBDMDBGRUJDRjMgLyog
Qmxvb21GaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0M4M0RGMTgxRDBBNTkwQzAwRkVC
Q0YzIC8qIEJveFB0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNERCMjM5NjIzNUU0M0VDMDAz
MjhGMTcgLyogQnVtcFBvaW50ZXJBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0RFQTAxRDBBNTkwQzAwRkVCQ0YzIC8qIENoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFMzAyQkRBQTI0MDRCOTI0MDA4NjUyNzcgLyogQ29tcGFjdFJl
ZlB0clR1cGxlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQm94UHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0JveFB0ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hNjk4
NjdhYTQ1NGQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Cb3hQdHIuY3BwCkBAIC0wLDAgKzEsMjEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIwIE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlh
IFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTG9nZ2VyLmgiCisjaW5jbHVkZSA8d3RmL0JveFB0
ci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0cnVjdCBCb3hQdHJMb2dnZXIg
eworICAgIEJveFB0ckxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKTsKKyAgICBzdGF0aWMgQm94UHRy
TG9nZ2VyKiBjcmVhdGUoY29uc3QgY2hhciogbmFtZSkgeyByZXR1cm4gbmV3IEJveFB0ckxvZ2dl
cihuYW1lKTsgfQorICAgIGNvbnN0IGNoYXImIG5hbWU7Cit9OworCitCb3hQdHJMb2dnZXI6OkJv
eFB0ckxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKQorICAgIDogbmFtZSB7ICpuYW1lIH0KK3sKKyAg
ICBsb2coKSA8PCAiY3JlYXRlKCIgPDwgbmFtZSA8PCAiKSAiOworfQorCit2b2lkIGJveFB0ckxv
Z2dlckRlbGV0ZXIoQm94UHRyTG9nZ2VyKiBsb2dnZXIpCit7CisgICAgbG9nKCkgPDwgImRlbGV0
ZSgiIDw8ICZsb2dnZXItPm5hbWUgPDwgIikgIjsKKyAgICBkZWxldGUgbG9nZ2VyOworfQorCit9
OworCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0RFRklORV9CT1hQVFJfREVMRVRFUihUZXN0V2Vi
S2l0QVBJOjpCb3hQdHJMb2dnZXIsIFRlc3RXZWJLaXRBUEk6OmJveFB0ckxvZ2dlckRlbGV0ZXIp
OworCit9CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEZfQm94UHRyLCBC
YXNpYykKK3sKKyAgICB7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IGVtcHR5OworICAg
ICAgICBFWFBFQ1RfRVEoZmFsc2UsIHN0YXRpY19jYXN0PGJvb2w+KGVtcHR5KSk7CisgICAgfQor
ICAgIEVYUEVDVF9TVFJFUSgiIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAg
ICAgICBCb3hQdHJMb2dnZXIqIGEgPSBCb3hQdHJMb2dnZXI6OmNyZWF0ZSgiYSIpOworICAgICAg
ICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwdHIgPSBjcmVhdGVCb3hQdHIoYSk7CisgICAgICAgIEVY
UEVDVF9FUSh0cnVlLCBzdGF0aWNfY2FzdDxib29sPihwdHIpKTsKKyAgICAgICAgRVhQRUNUX0VR
KGEsIHB0ci0+Z2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoYS0+bmFtZSwgKCpwdHIpLT5uYW1l
KTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJjcmVhdGUoYSkgZGVsZXRlKGEpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBhID0gQm94
UHRyTG9nZ2VyOjpjcmVhdGUoImEiKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcDEg
PSBjcmVhdGVCb3hQdHIoYSk7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAyKHAxKTsK
KyAgICAgICAgRVhQRUNUX0VRKGEsIHAxLT5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShhLCBw
Mi0+Z2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImNyZWF0ZShhKSBkZWxldGUoYSkg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBCb3hQdHJMb2dnZXIq
IGEgPSBCb3hQdHJMb2dnZXI6OmNyZWF0ZSgiYSIpOworICAgICAgICBCb3hQdHI8Qm94UHRyTG9n
Z2VyPiBwMSA9IGNyZWF0ZUJveFB0cihhKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4g
cDIgPSBwMTsKKyAgICAgICAgRVhQRUNUX0VRKGEsIHAxLT5nZXQoKSk7CisgICAgICAgIEVYUEVD
VF9FUShhLCBwMi0+Z2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImNyZWF0ZShhKSBk
ZWxldGUoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBCb3hQ
dHJMb2dnZXIqIGEgPSBCb3hQdHJMb2dnZXI6OmNyZWF0ZSgiYSIpOworICAgICAgICBCb3hQdHI8
Qm94UHRyTG9nZ2VyPiBwMSA9IGNyZWF0ZUJveFB0cihhKTsKKyAgICAgICAgQm94UHRyPEJveFB0
ckxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgRVhQRUNUX0VRKGZhbHNlLCBzdGF0
aWNfY2FzdDxib29sPihwMSkpOworICAgICAgICBFWFBFQ1RfRVEoYSwgcDItPmdldCgpKTsKKyAg
ICB9CisgICAgRVhQRUNUX1NUUkVRKCJjcmVhdGUoYSkgZGVsZXRlKGEpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBhID0gQm94UHRyTG9n
Z2VyOjpjcmVhdGUoImEiKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcDEgPSBjcmVh
dGVCb3hQdHIoYSk7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAyKFdURk1vdmUocDEp
KTsKKyAgICAgICAgRVhQRUNUX0VRKGZhbHNlLCBzdGF0aWNfY2FzdDxib29sPihwMSkpOworICAg
ICAgICBFWFBFQ1RfRVEoYSwgcDItPmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJj
cmVhdGUoYSkgZGVsZXRlKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAg
ICAgICAgQm94UHRyTG9nZ2VyKiBhID0gQm94UHRyTG9nZ2VyOjpjcmVhdGUoImEiKTsKKyAgICAg
ICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcHRyID0gY3JlYXRlQm94UHRyKGEpOworICAgICAgICBF
WFBFQ1RfRVEoYSwgcHRyLT5nZXQoKSk7CisgICAgICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAg
IEVYUEVDVF9FUShmYWxzZSwgc3RhdGljX2Nhc3Q8Ym9vbD4ocHRyKSk7CisgICAgfQorICAgIEVY
UEVDVF9TVFJFUSgiY3JlYXRlKGEpIGRlbGV0ZShhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
Cit9CisKK1RFU1QoV1RGX0JveFB0ciwgQXNzaWdubWVudCkKK3sKKyAgICB7CisgICAgICAgIEJv
eFB0ckxvZ2dlciogYSA9IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJhIik7CisgICAgICAgIEJveFB0
ckxvZ2dlciogYiA9IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJiIik7CisgICAgICAgIEJveFB0cjxC
b3hQdHJMb2dnZXI+IHAxID0gY3JlYXRlQm94UHRyKGEpOworICAgICAgICBCb3hQdHI8Qm94UHRy
TG9nZ2VyPiBwMiA9IGNyZWF0ZUJveFB0cihiKTsKKyAgICAgICAgRVhQRUNUX0VRKGEsIHAxLT5n
ZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShiLCBwMi0+Z2V0KCkpOworICAgICAgICBsb2coKSA8
PCAifCAiOworICAgICAgICBwMSA9IHAyOworICAgICAgICBFWFBFQ1RfRVEoYiwgcDEtPmdldCgp
KTsKKyAgICAgICAgRVhQRUNUX0VRKGIsIHAyLT5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8
ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgiY3JlYXRlKGEpIGNyZWF0ZShiKSB8IGRlbGV0
ZShhKSB8IGRlbGV0ZShiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAg
ICAgIEJveFB0ckxvZ2dlciogYSA9IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJhIik7CisgICAgICAg
IEJveFB0ckxvZ2dlciogYiA9IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJiIik7CisgICAgICAgIEJv
eFB0cjxCb3hQdHJMb2dnZXI+IHAxID0gY3JlYXRlQm94UHRyKGEpOworICAgICAgICBCb3hQdHI8
Qm94UHRyTG9nZ2VyPiBwMiA9IGNyZWF0ZUJveFB0cihiKTsKKyAgICAgICAgRVhQRUNUX0VRKGEs
IHAxLT5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShiLCBwMi0+Z2V0KCkpOworICAgICAgICBs
b2coKSA8PCAifCAiOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBFWFBFQ1Rf
RVEoYiwgcDEtPmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGZhbHNlLCBzdGF0aWNfY2FzdDxi
b29sPihwMikpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoImNyZWF0ZShhKSBjcmVhdGUoYikgfCBkZWxldGUoYSkgfCBkZWxldGUoYikgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBCb3hQdHJMb2dnZXIqIGEgPSBCb3hQ
dHJMb2dnZXI6OmNyZWF0ZSgiYSIpOworICAgICAgICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwdHIg
PSBjcmVhdGVCb3hQdHIoYSk7CisgICAgICAgIEVYUEVDVF9FUShhLCBwdHItPmdldCgpKTsKKyAg
ICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0JFR0lO
KCJzZWxmLWFzc2lnbi1vdmVybG9hZGVkIikKKyAgICAgICAgcHRyID0gcHRyOworICAgICAgICBJ
R05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECisgICAgICAgIEVYUEVDVF9FUShhLCBwdHItPmdldCgp
KTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJjcmVh
dGUoYSkgfCB8IGRlbGV0ZShhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7Cisg
ICAgICAgIEJveFB0ckxvZ2dlciogYSA9IEJveFB0ckxvZ2dlcjo6Y3JlYXRlKCJhIik7CisgICAg
ICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHB0ciA9IGNyZWF0ZUJveFB0cihhKTsKKyAgICAgICAg
RVhQRUNUX0VRKGEsIHB0ci0+Z2V0KCkpOworICAgICAgICBJR05PUkVfQ0xBTkdfV0FSTklOR1Nf
QkVHSU4oInNlbGYtbW92ZSIpCisgICAgICAgIHB0ciA9IFdURk1vdmUocHRyKTsKKyAgICAgICAg
SUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAorICAgICAgICBFWFBFQ1RfRVEoYSwgcHRyLT5nZXQo
KSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgiY3JlYXRlKGEpIGRlbGV0ZShhKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX0JveFB0ciwgT3BlcmF0b3JzKQorewor
ICAgIHsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBhID0gQm94UHRyTG9nZ2VyOjpjcmVhdGUoImEi
KTsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBiID0gQm94UHRyTG9nZ2VyOjpjcmVhdGUoImIiKTsK
KyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dlcj4gcDEgPSBjcmVhdGVCb3hQdHIoYSk7CisgICAg
ICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IHAyID0gY3JlYXRlQm94UHRyKGIpOworICAgICAgICBF
WFBFQ1RfRVEocDEsIHAxKTsKKyAgICAgICAgRVhQRUNUX05FKHAxLCBwMik7CisgICAgfQorICAg
IEVYUEVDVF9TVFJFUSgiY3JlYXRlKGEpIGNyZWF0ZShiKSBkZWxldGUoYikgZGVsZXRlKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQm94UHRyTG9nZ2VyKiBh
ID0gQm94UHRyTG9nZ2VyOjpjcmVhdGUoImEiKTsKKyAgICAgICAgQm94UHRyPEJveFB0ckxvZ2dl
cj4gcDEgPSBjcmVhdGVCb3hQdHIoYSk7CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxi
b29sPihwMSksIHRydWUpOworICAgICAgICBFWFBFQ1RfRVEoIXAxLCBmYWxzZSk7CisgICAgfQor
ICAgIEVYUEVDVF9TVFJFUSgiY3JlYXRlKGEpIGRlbGV0ZShhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CisKKyAgICB7CisgICAgICAgIEJveFB0cjxCb3hQdHJMb2dnZXI+IGVtcHR5OworICAg
ICAgICBCb3hQdHJMb2dnZXIqIGEgPSBCb3hQdHJMb2dnZXI6OmNyZWF0ZSgiYSIpOworICAgICAg
ICBCb3hQdHI8Qm94UHRyTG9nZ2VyPiBwMSA9IGNyZWF0ZUJveFB0cihhKTsKKyAgICAgICAgRVhQ
RUNUX05FKGVtcHR5LCBwMSk7CisgICAgICAgIEVYUEVDVF9FUShlbXB0eSwgZW1wdHkpOworICAg
IH0KKyAgICBFWFBFQ1RfU1RSRVEoImNyZWF0ZShhKSBkZWxldGUoYSkgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOworfQorCit9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>