<?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>101087</bug_id>
          
          <creation_ts>2012-11-02 12:23:04 -0700</creation_ts>
          <short_desc>RenderArena could be generic and live in platform</short_desc>
          <delta_ts>2024-08-04 04:53:22 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Cris Neckar">cdn</reporter>
          <assigned_to name="Cris Neckar">cdn</assigned_to>
          <cc>abarth</cc>
    
    <cc>ahmad.saleem792</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>cevans</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbarton</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fmalita</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hppyromz</cc>
    
    <cc>inferno</cc>
    
    <cc>mifenton</cc>
    
    <cc>mitz</cc>
    
    <cc>mjs</cc>
    
    <cc>pdr</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>757458</commentid>
    <comment_count>0</comment_count>
    <who name="Cris Neckar">cdn</who>
    <bug_when>2012-11-02 12:23:04 -0700</bug_when>
    <thetext>It seems like RenderArena is not actually specific to rendering and could be called something like RecycledArena. Seems like a better home would be platform so that other classes could use this type of arena. 

I have a patch for this that I will upload shortly. 

It seems like the only renderer specific code at the moment is the hardcoded arena name but this should probably just be an argument to the constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757505</commentid>
    <comment_count>1</comment_count>
      <attachid>172118</attachid>
    <who name="Cris Neckar">cdn</who>
    <bug_when>2012-11-02 12:59:16 -0700</bug_when>
    <thetext>Created attachment 172118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757509</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 13:03:00 -0700</bug_when>
    <thetext>Attachment 172118 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/platform/RecycledArena.cpp:43:  Missing spaces around /  [whitespace/operators] [3]
Total errors found: 1 in 188 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757550</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-02 13:56:27 -0700</bug_when>
    <thetext>I&apos;m not a huge fan of the name. :)  I suspect neither you or I have particularly strong opinions on the subject.  These feel a lot like malloc zones.  Slab is also a common name for these things I&apos;m told.

I would also note (and this is slightly unrelated to this bug), that if we&apos;re going to make RenderArena more widely used (instead of killing it -- which has long been the plan), then we need to make our smart pointers smarter about it!  Right now you cant OwnPtr a RenderObject because we need to use the arena during destruction.  However, RenderObjects almost always know how to get to their Arena (and certainly could be taught how to get there always) and thus we could (and should!) make a smarter OwnPtr to handle arena&apos;d objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757551</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-02 13:57:02 -0700</bug_when>
    <thetext>I should also note that this code originally comes from mozilla.  It&apos;s possible that we should make some effort to sync up with their version at some point.  Or at least pull any good bits. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757567</commentid>
    <comment_count>5</comment_count>
      <attachid>172118</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 14:17:54 -0700</bug_when>
    <thetext>Comment on attachment 172118
Patch

Attachment 172118 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14670951</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757571</commentid>
    <comment_count>6</comment_count>
    <who name="Cris Neckar">cdn</who>
    <bug_when>2012-11-02 14:19:08 -0700</bug_when>
    <thetext>Eric, Yeah I&apos;m not sure how I feel about the name. The reasoning was that all this really adds on top of Arenas are freelists for easy reuse.

I could see something like ReusableArena but &quot;Recycled&quot; was already mentioned in comments and variable names. 

Making OwnPtrs play nice does seem like a good idea. 

On another note I believe cevans was playing with some benchmarks using this for other object types and getting interesting results but I&apos;ll let him comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757599</commentid>
    <comment_count>7</comment_count>
      <attachid>172141</attachid>
    <who name="Cris Neckar">cdn</who>
    <bug_when>2012-11-02 14:34:32 -0700</bug_when>
    <thetext>Created attachment 172141
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757613</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 14:43:03 -0700</bug_when>
    <thetext>Attachment 172141 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/platform/RecycledArena.cpp:43:  Missing spaces around /  [whitespace/operators] [3]
Total errors found: 1 in 191 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757753</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-11-02 16:49:50 -0700</bug_when>
    <thetext>I would rather not generalize this.  Our long term plan is to stop using the RenderArena, so changes to use it in more places is probably not a great idea.  

If you have specific other uses where this type of allocator would be useful that would be interesting, but we should have those use cases established before moving forward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757768</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-02 16:58:25 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I would rather not generalize this.  Our long term plan is to stop using the RenderArena, so changes to use it in more places is probably not a great idea.  
&gt; 
&gt; If you have specific other uses where this type of allocator would be useful that would be interesting, but we should have those use cases established before moving forward.

cevans would like to use it for allocating DOM Nodes.  He has a prototype patch.  I agree we should probably wait to see how that bears fruit before generalizing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757770</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Evans">cevans</who>
    <bug_when>2012-11-02 17:02:21 -0700</bug_when>
    <thetext>I think generalizing this is the right thing to do. It&apos;s also independent of future usages or de-usages.

It&apos;s the right thing to do because if you look at the RenderArena implementation, it has nothing to do specifically with rendering. It&apos;s simply layering additional allocator functionality on top of platform/Arena.h.

In terms of stopping using RenderArena, I&apos;d be grateful for anyone looking to do that to at least make it a platform-specific choice / define. There are some really nice security properties we get from having it, so we&apos;d keep it for the Chromium port.

In terms of possible additional usages of RecycledArena, we&apos;re looking at security hardening measures that would have stopped Pinkie Pie&apos;s recent SVGUseElement exploit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760356</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Evans">cevans</who>
    <bug_when>2012-11-06 21:00:16 -0800</bug_when>
    <thetext>Some initial performance notes on tests for DOM node slabbing. It&apos;s reasonably promising.
Most tests are performance neutral because creating tons of DOM nodes in a tight loop isn&apos;t a super common thing. In terms of tests that did show a difference:
Parser/html5-full-render.html: +1%
DOM/CreateNodes.html: +2%
Parser/innerHTML-setter.html: +1%

Interestingly, this is in a Chromium build where everything is allocated with tcmalloc (already a fast allocator). I&apos;ve done some spelunking on how a Mac Safari build looks to work, and most Node subclasses are _not_ tagged with WTF_MAKE_FAST_ALLOCATED which would suggest a slower non-tcmalloc allocation and further suggest a possible larger performance gain in that configuration.

I&apos;m working an analysis of the security gain this would have given us against Pinkie Pie&apos;s SVGUseElement attack, it also seems promising but I&apos;m not ready to get properly excited just yet :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760741</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-07 08:41:43 -0800</bug_when>
    <thetext>Mac WebCore uses fastMalloc (an old fork of tcmalloc), it just turns it on a different way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760802</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Evans">cevans</who>
    <bug_when>2012-11-07 09:56:13 -0800</bug_when>
    <thetext>@eseidel: I just want to make sure I understand the Mac WebCore situation fully. My analysis from reading of the code is that:

- operator new by default will use the system malloc()
- Some WebCore classes, though, are annoted with the WTF_MAKE_FAST_ALLOCATED macro, which overrides operator new and calls fastMalloc() directly

Is that correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760848</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-07 10:33:50 -0800</bug_when>
    <thetext>&gt; Is that correct?

I think apple-mac always uses fastMalloc.  Some other ports use the WTF_MAKE_FAST_ALLOCATED macro to have more fine-grained control over which objects use fastMalloc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763757</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Evans">cevans</who>
    <bug_when>2012-11-10 16:23:03 -0800</bug_when>
    <thetext>A brief analysis of the defense a DOM slab would have provided against Pinkie Pie&apos;s exploit has been completed.

It&apos;s also quite promising.

Alignments differ between 32-bit and 64-bit. On 32-bit there are significantly limited exploitation opportunities, particularly is looks like all the SVGUseElement vtables would be valid.

64-bit is more interesting; difference in vtable vs. data overlap could have been achieved with SVGUseElement vs. SVGAltGlyphElement. However, it seems like it would not be directly possible to either leak the value of the vtable ptr (ASLR bypass) or place a plausible pointer value on top of the vtable ptr.

Anyway -- without getting too far into the weeds of the somewhat fringe science of exploitation -- I&apos;m happy to conclude this is a significant defense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764995</commentid>
    <comment_count>17</comment_count>
      <attachid>172141</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-12 17:07:41 -0800</bug_when>
    <thetext>Comment on attachment 172141
Patch

This seems fine to me.  RenderArena is not dead yet, and I don&apos;t believe it&apos;s harmful to move it to WTF.  I think that if we&apos;re going to keep it around we should make it more our own.  This is one step towards doing that.  Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765004</commentid>
    <comment_count>18</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-11-12 17:14:13 -0800</bug_when>
    <thetext>This is completely insane. We don&apos;t want to have two malloc implementations, just because doing so is a 1% speedup. We can get a 1% speedup by optimizing our one malloc implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765013</commentid>
    <comment_count>19</comment_count>
      <attachid>172141</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-11-12 17:18:17 -0800</bug_when>
    <thetext>Comment on attachment 172141
Patch

Marking r-. Please don&apos;t do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765868</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Evans">cevans</who>
    <bug_when>2012-11-13 11:45:40 -0800</bug_when>
    <thetext>Hello Geoffrey,

Thanks for dropping in to assist with the review. I&apos;m not sure that declaring a patch from a fellow WebKit team member &quot;completely insane&quot; is entirely kind; but that strictly aside, there seems to be some confusion as to the scope of this changeset.

Eric correctly summarizes the scope in https://bugs.webkit.org/show_bug.cgi?id=101087#c17 -- it&apos;s strictly a cleanup changeset which is moving something non-render-specific into a generic location.

It&apos;s probably my fault for muddying the waters by putting performance numbers here. This changeset is of course performance neutral.

(For the curious: the numbers relate to another change we will consider via a separate WebKit bug, and the goal of the numbers is _not_ to try and improve performance, but instead to prove that a possible security measure does not harm performance.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767202</commentid>
    <comment_count>21</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-11-14 12:57:56 -0800</bug_when>
    <thetext>&gt; (For the curious: the numbers relate to another change we will consider via a separate WebKit bug

Please don&apos;t use RenderArena in that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767204</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Evans">cevans</who>
    <bug_when>2012-11-14 13:01:05 -0800</bug_when>
    <thetext>Thanks Geoff. I&apos;ll make sure to cc: you on any bug that starts to discuss concrete changes in the area of DOM slabbing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767345</commentid>
    <comment_count>23</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-11-14 15:01:56 -0800</bug_when>
    <thetext>I am puzzled by the claimed security benefits as well. RenderArena is not a true slab allocator, it allocates based on size classes, just like malloc. Both recycle freed memory. And neither limits specific classes to specific types, rather than size classes. What is it about RenderArena that makes it better security-wise? Is it just the fact that fewer different classes are allocated via RenderArena? Or is there some more fundamental difference? Your comment #16 does not really clarify, at least to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767507</commentid>
    <comment_count>24</comment_count>
    <who name="Chris Evans">cevans</who>
    <bug_when>2012-11-14 17:22:44 -0800</bug_when>
    <thetext>@Maciej: I&apos;m not sure if the bug here or the webkit-dev thread is the best place to answer the question; but I&apos;ll simply answer here since the question was asked here.

It is indeed significant that only a small number of classes are allocated within RenderArena. For example, when there&apos;s a RenderObject which has been freed but is still in use, it&apos;s not possible for the attacker to allocate (e.g.) a raw ArrayBuffer contents on top of the freed slot. So the attacker cannot place arbitrary bytes on top of where the vtable pointer is expected to be. We&apos;ve made sure that the first sizeof(void*) bytes either point to a valid vtable pointer, or are a poisoned freelist pointer, or are an invalid pointer in the case that one of the (few) non-virtual classes is overlaid.

It&apos;s essentially about limiting the attacker&apos;s possibilities when the inevitable rendering use-after-frees occur. There are some other non vtable related possibilities that get limited too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767658</commentid>
    <comment_count>25</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-11-14 20:15:33 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; @Maciej: I&apos;m not sure if the bug here or the webkit-dev thread is the best place to answer the question; but I&apos;ll simply answer here since the question was asked here.
&gt; 

Yeah, sorry to fragment the conversation. I&apos;ll reply to this on the webkit-dev thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2050546</commentid>
    <comment_count>27</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2024-08-04 04:53:22 -0700</bug_when>
    <thetext>RenderArena seems to be gone with https://github.com/WebKit/WebKit/commit/c53ce464d613f0aeffb04eb0852aa418d37f236b.

Do we need to keep this bug open.

I am marking this as &apos;RESOLVED WONTFIX&apos; (CCing - Alan for any insight or input).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172118</attachid>
            <date>2012-11-02 12:59:16 -0700</date>
            <delta_ts>2012-11-02 14:34:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101087-20121102125736.patch</filename>
            <type>text/plain</type>
            <size>170557</size>
            <attacher name="Cris Neckar">cdn</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzMzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxNiBAQAorMjAxMi0xMS0wMiAgQ3JpcyBO
ZWNrYXIgIDxjZG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgUmVuZGVyQXJlbmEgdG8g
cGxhdGZvcm0vUmVjeWNsZWRBcmVuYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAxMDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU2ltcGx5IG1vdmluZyBSZW5kZXJBcmVuYSBpbnRvIHBsYXRmb3JtIHNv
IHRoYXQgaXQgY2FuIGJlIHVzZWQgZm9yIHRoaW5ncyBvdGhlciB0aGFuIFJlbmRlck9iamVjdHMu
CisgICAgICAgIE1hZGUgY29uc3RydWN0b3IgZ2VuZXJpYyBzbyB0aGF0IHRoZSBhcmVuYSBuYW1l
IGNhbiBiZSBwYXNzZWQgaW4uCisKKyAgICAgICAgQ29kZSByZWZhY3RvciBkb2VzIG5vdCBjaGFu
Z2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmF0dGFjaCk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpyZW5kZXJBcmVuYSk6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChFbGVtZW50KToKKyAgICAg
ICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjcmVhdGVSZW5kZXJl
cik6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
Tm9kZSk6CisgICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6
Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGRvbS9UZXh0Lmg6CisgICAgICAgIChUZXh0KToK
KyAgICAgICAgKiBodG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZUJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwv
QmFzZUJ1dHRvbklucHV0VHlwZS5oOgorICAgICAgICAoQmFzZUJ1dHRvbklucHV0VHlwZSk6Cisg
ICAgICAgICogaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlw
ZTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvQmFzZU11bHRpcGxlRmllbGRzRGF0
ZUFuZFRpbWVJbnB1dFR5cGUuaDoKKyAgICAgICAgKEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRU
aW1lSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0
bWwvRmlsZUlucHV0VHlwZS5oOgorICAgICAgICAoRmlsZUlucHV0VHlwZSk6CisgICAgICAgICog
aHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXBwbGV0
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1l
bnQuaDoKKyAgICAgICAgKEhUTUxBcHBsZXRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxC
UkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJSRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEJSRWxlbWVudC5oOgorICAgICAgICAoSFRNTEJS
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAq
IGh0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVSZW5k
ZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAoSFRN
TENhbnZhc0VsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNFbGVtZW50Lmg6CisgICAgICAgIChIVE1MRGV0YWls
c0VsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTERpYWxvZ0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAg
KiBodG1sL0hUTUxEaWFsb2dFbGVtZW50Lmg6CisgICAgICAgIChIVE1MRGlhbG9nRWxlbWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoK
KyAgICAgICAgKEhUTUxFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGaWVsZFNldEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oOgorICAgICAgICAo
SFRNTEZpZWxkU2V0RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToK
KyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxGcmFtZUVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAg
ICogaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50Lmg6CisgICAgICAgIChIVE1MRnJhbWVTZXRFbGVt
ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5oOgorICAgICAgICAoSFRNTElGcmFtZUVsZW1lbnQpOgorICAg
ICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyRm9ySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdl
RWxlbWVudC5oOgorICAgICAgICAoSW1hZ2VFbGVtZW50KToKKyAgICAgICAgKEhUTUxJbWFnZUVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRt
bC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgIChIVE1MSW5wdXRFbGVtZW50KToKKyAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5oOgorICAgICAgICAoSFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
TWV0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OmNy
ZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRlckVsZW1lbnQuaDoKKyAgICAg
ICAgKEhUTUxNZXRlckVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmg6Cisg
ICAgICAgIChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxQcm9n
cmVzc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByb2dyZXNzRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxT
ZWxlY3RFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFN1bW1hcnlFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6Cisg
ICAgICAgICogaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxTdW1tYXJ5
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxUZXh0QXJlYUVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRt
bC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgIChIVE1MVmlkZW9FbGVtZW50KToKKyAgICAg
ICAgKiBodG1sL0hpZGRlbklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaWRkZW5J
bnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hpZGRlbklucHV0VHlw
ZS5oOgorICAgICAgICAoSGlkZGVuSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL0ltYWdlSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBlOjpjcmVhdGVSZW5k
ZXJlcik6CisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5oOgorICAgICAgICAoSW1hZ2VJ
bnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKElucHV0VHlwZSk6CisgICAgICAgICog
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlw
ZTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuaDoKKyAg
ICAgICAgKFJhbmdlSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKToK
KyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5oOgorICAgICAgICAoU2VhcmNoSW5wdXRU
eXBlKToKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBo
dG1sL1RleHRGaWVsZElucHV0VHlwZS5oOgorICAgICAgICAoVGV4dEZpZWxkSW5wdXRUeXBlKToK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEZXRhaWxzTWFya2VyQ29udHJvbDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmg6CisgICAgICAgIChEZXRhaWxz
TWFya2VyQ29udHJvbCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW1hZ2VJbm5lckVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VJbm5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbWFnZUlubmVyRWxlbWVudC5oOgorICAgICAgICAo
SW1hZ2VJbm5lckVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNv
bnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmg6CisgICAg
ICAgIChNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWV0
ZXJTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1ldGVySW5uZXJFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVt
ZW50Lmg6CisgICAgICAgIChNZXRlcklubmVyRWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFk
b3cvUGlja2VySW5kaWNhdG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaWNrZXJJ
bmRpY2F0b3JFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cv
UGlja2VySW5kaWNhdG9yRWxlbWVudC5oOgorICAgICAgICAoUGlja2VySW5kaWNhdG9yRWxlbWVu
dCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlByb2dyZXNzSW5uZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6Cisg
ICAgICAgICogaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgIChQ
cm9ncmVzc0lubmVyRWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaW1pdGVyRWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5o
OgorICAgICAgICAoU2xpZGVyVGh1bWJFbGVtZW50KToKKyAgICAgICAgKFRyYWNrTGltaXRlckVs
ZW1lbnQpOgorICAgICAgICAoU2xpZGVyQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAq
IGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorICAgICAgICAoVGV4dENv
bnRyb2xJbm5lclRleHRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0RmllbGRE
ZWNvcmF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGREZWNvcmF0
aW9uRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRG
aWVsZERlY29yYXRpb25FbGVtZW50Lmg6CisgICAgICAgIChUZXh0RmllbGREZWNvcmF0aW9uRWxl
bWVudCk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrQ3VlQm94OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuaDoKKyAgICAgICAgKFRleHRUcmFja0N1ZUJveCk6CisgICAg
ICAgICogbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAqIG1hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50Lmg6CisgICAgICAg
IChNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1M
TWF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWF0aEVsZW1lbnQ6OmNy
ZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaDoKKyAg
ICAgICAgKE1hdGhNTE1hdGhFbGVtZW50KToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MVGV4dEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MVGV4dEVsZW1lbnQ6OmNyZWF0ZVJl
bmRlcmVyKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaDoKKyAgICAgICAg
KE1hdGhNTFRleHRFbGVtZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldHMpOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW5kZXJUcmVlU2l6ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vUmVjeWNsZWRBcmVuYS5jcHA6IEFkZGVkLgorICAgICAgICAoTWFza1B0
cik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3ljbGVkQXJlbmE6
OlJlY3ljbGVkQXJlbmEpOgorICAgICAgICAoV2ViQ29yZTo6UmVjeWNsZWRBcmVuYTo6flJlY3lj
bGVkQXJlbmEpOgorICAgICAgICAoV2ViQ29yZTo6UmVjeWNsZWRBcmVuYTo6YWxsb2NhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVjeWNsZWRBcmVuYTo6ZnJlZSk6CisgICAgICAgICogcGxhdGZv
cm0vUmVjeWNsZWRBcmVuYS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
UmVjeWNsZWRBcmVuYSk6CisgICAgICAgIChXZWJDb3JlOjpSZWN5Y2xlZEFyZW5hOjp0b3RhbFJl
Y3ljbGVkQXJlbmFTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3ljbGVkQXJlbmE6OnRvdGFs
UmVjeWNsZWRBcmVuYUFsbG9jYXRlZEJ5dGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvQmlkaVJ1
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaWRpUnVuOjpkZXN0cm95KToKKyAgICAgICAgKFdl
YkNvcmU6OkJpZGlSdW46Om9wZXJhdG9yIG5ldyk6CisgICAgICAgICogcmVuZGVyaW5nL0JpZGlS
dW4uaDoKKyAgICAgICAgKEJpZGlSdW4pOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpkZXN0cm95KToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUJveDo6b3BlcmF0b3IgbmV3KToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUJveDo6ZGVsZXRlTGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUJveC5oOgorICAg
ICAgICAoSW5saW5lQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpkZWxldGVMaW5lKToKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oOgorICAgICAgICAoSW5saW5lRmxvd0JveCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lVGV4dEJveDo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpkZWxldGVMaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAg
ICAgICAoSW5saW5lVGV4dEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL0xheW91dFN0YXRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFN0YXRlOjpkZXN0cm95KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dFN0YXRlOjpvcGVyYXRvciBuZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9M
YXlvdXRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXlvdXRTdGF0ZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckFyZW5hLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQXJlbmEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUxpbmVS
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lU3RhcnRQb3Np
dGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpvcGVyYXRvciBuZXcpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRlc3Ryb3kpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5oOgorICAgICAgICAoUmVuZGVyTGF5ZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5l
Qm94TGlzdDo6ZGVsZXRlTGluZUJveFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlu
ZUJveExpc3Q6OmRlbGV0ZUxpbmVCb3hlcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxp
bmVCb3hMaXN0Lmg6CisgICAgICAgIChSZW5kZXJMaW5lQm94TGlzdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
Om9wZXJhdG9yIG5ldyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNyZWF0ZU9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFyZW5hRGVsZXRlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChSZW5kZXJPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZW5kZXJBcmVuYSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dDo6ZGVsZXRlVGV4dEJveGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6ZGVzdHJveSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OmRlcmVmKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
V2lkZ2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnJlZik6CisgICAgICAg
IChSZW5kZXJXaWRnZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXRQcm90ZWN0
b3IuaDoKKyAgICAgICAgKFJlbmRlcldpZGdldFByb3RlY3Rvcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpkZXN0cm95KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmRldGFjaEVsbGlwc2lzQm94KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5oOgorICAgICAgICAoUm9vdElubGluZUJveCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKiBz
dmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OmNyZWF0
ZVJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuaDoKKyAgICAgICAgKFNWR0FF
bGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAq
IHN2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAgKFNWR0FsdEdseXBoRWxlbWVudCk6
CisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQ2lyY2xlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdDaXJj
bGVFbGVtZW50Lmg6CisgICAgICAgIChTVkdDaXJjbGVFbGVtZW50KToKKyAgICAgICAgKiBzdmcv
U1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQu
aDoKKyAgICAgICAgKFNWR0NsaXBQYXRoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0RlZnNF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RlZnNFbGVtZW50OjpjcmVhdGVSZW5k
ZXJlcik6CisgICAgICAgICogc3ZnL1NWR0RlZnNFbGVtZW50Lmg6CisgICAgICAgIChTVkdEZWZz
RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICog
c3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6CisgICAgICAgIChTVkdFbGxpcHNlRWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RmlsdGVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJF
bGVtZW50Lmg6CisgICAgICAgIChTVkdGaWx0ZXJFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAg
ICAgICAgKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyk6CisgICAgICAgICog
c3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0Zv
cmVpZ25PYmplY3RFbGVtZW50Lmg6CisgICAgICAgIChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCk6
CisgICAgICAgICogc3ZnL1NWR0dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0dFbGVtZW50Lmg6Cisg
ICAgICAgIChTVkdHRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAg
ICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgIChTVkdJbWFnZUVsZW1lbnQp
OgorICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAg
ICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAoU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAg
ICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuaDoKKyAgICAgICAgKFNWR01hcmtlckVsZW1lbnQp
OgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdNYXNrRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxl
bWVudC5oOgorICAgICAgICAoU1ZHTWFza0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdQYXRo
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5oOgorICAgICAgICAoU1ZHUGF0
aEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAq
IHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAgICAgICAoU1ZHUGF0dGVybkVsZW1lbnQpOgor
ICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAg
ICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAoU1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBz
dmcvU1ZHUmVjdEVsZW1lbnQuaDoKKyAgICAgICAgKFNWR1JlY3RFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKyAgICAg
ICAgKFNWR1NWR0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAg
ICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAgICAoU1ZHU3RvcEVsZW1lbnQpOgorICAg
ICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oOgorICAgICAgICAo
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTd2l0Y2hF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N3aXRjaEVsZW1lbnQ6OmNyZWF0ZVJl
bmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHU3dpdGNoRWxlbWVudC5oOgorICAgICAgICAoU1ZH
U3dpdGNoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3ltYm9sRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAg
ICAqIHN2Zy9TVkdTeW1ib2xFbGVtZW50Lmg6CisgICAgICAgIChTVkdTeW1ib2xFbGVtZW50KToK
KyAgICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAoU1ZHU2hhZG93VGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTaGFkb3dUZXh0OjpjcmVhdGVSZW5kZXJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAg
ICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5oOgorICAgICAgICAoU1ZHVFJlZkVsZW1lbnQpOgorICAg
ICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFNw
YW5FbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1RTcGFuRWxlbWVu
dC5oOgorICAgICAgICAoU1ZHVFNwYW5FbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dEVsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dEVsZW1lbnQuaDoKKyAgICAgICAgKFNWR1RleHRF
bGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAq
IHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6Cisg
ICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAgICAgICAgKFNWR1VzZUVsZW1lbnQpOgor
CiAyMDEyLTExLTAyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
W1Y4XSBHZW5lcmFsaXplIE5vZGVXcmFwcGVyTWFwIHRvIGJlIGFibGUgdG8gaGFuZGxlIG90aGVy
IHNvcnRzIG9mIGtleXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzMyNDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgw
NSw2ICsxODA1LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL1BsYXRmb3Jt
RXZlbnQuY3BwCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1JbnN0cnVtZW50YXRpb24uY3BwCiAgICAg
cGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCisgICAgcGxhdGZvcm0v
UmVjeWNsZWRBcmVuYS5jcHAKICAgICBwbGF0Zm9ybS9SdW5Mb29wLmNwcAogICAgIHBsYXRmb3Jt
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKICAgICBwbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHAKQEAgLTIwNzEsNyArMjA3Miw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5k
ZXJpbmcvTGF5b3V0UmVwYWludGVyLmNwcAogICAgIHJlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0
UnVsZXMuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckFwcGxldC5jcHAKLSAgICByZW5kZXJpbmcv
UmVuZGVyQXJlbmEuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckJSLmNwcAogICAgIHJlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNw
cApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMzMyNDApCisr
KyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC00
Nzk1LDYgKzQ3OTUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXJlbmRlckhhbmRsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QdXJn
ZWFibGVCdWZmZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHVyZ2VQcmlvcml0eS5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWN5Y2xlZEFyZW5hLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUmVjeWNsZWRBcmVuYS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9SZWZDb3VudGVkU3VwcGxlbWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9S
ZWZlcnJlclBvbGljeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wLmNwcCBc
CkBAIC01MDA4LDggKzUwMTAsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuaCBcCiAJU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckFwcGxldC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJBcHBsZXQuaCBcCi0JU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckFyZW5hLmNw
cCBcCi0JU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckFyZW5hLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tMaW5lTGF5b3V0LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEzMzI0MCkKKysr
IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEwNjIsNiArMTA2
Miw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL1BsYXRmb3JtRXZlbnQuY3BwIFwKICAg
ICBwbGF0Zm9ybS9QbGF0Zm9ybUluc3RydW1lbnRhdGlvbi5jcHAgXAogICAgIHBsYXRmb3JtL1Bs
YXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcCBcCisgICAgcGxhdGZvcm0vUmVjeWNsZWRB
cmVuYS5jcHAgXAogICAgIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAgXAog
ICAgIHBsYXRmb3JtL1J1bkxvb3AuY3BwIFwKICAgICBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5j
cHAgXApAQCAtMTEyOSw3ICsxMTMwLDYgQEAgU09VUkNFUyArPSBcCiAgICAgcmVuZGVyaW5nL0xh
eW91dFN0YXRlLmNwcCBcCiAgICAgcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5jcHAgXAogICAg
IHJlbmRlcmluZy9SZW5kZXJBcHBsZXQuY3BwIFwKLSAgICByZW5kZXJpbmcvUmVuZGVyQXJlbmEu
Y3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIFwKICAgICByZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgXApA
QCAtMjI1Miw2ICsyMjUyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1U
b3VjaEV2ZW50LmggXAogICAgIHBsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oIFwKICAgICBw
bGF0Zm9ybS9Qb3B1cE1lbnUuaCBcCisgICAgcGxhdGZvcm0vUmVjeWNsZWRBcmVuYS5oIFwKICAg
ICBwbGF0Zm9ybS9SZWZlcnJlclBvbGljeS5oIFwKICAgICBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRR
dC5oIFwKICAgICBwbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5oIFwKQEAgLTIzNTAsNyArMjM1MSw2
IEBAIEhFQURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9QYWludFBoYXNlLmggXAogICAgIHJlbmRl
cmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckFwcGxl
dC5oIFwKLSAgICByZW5kZXJpbmcvUmVuZGVyQXJlbmEuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJCb3guaCBcCiAgICAgcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTMz
MjQwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzQ1LDggKzMzNDUsNiBAQAogICAgICAgICAgICAgJ3JlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0
UnVsZXMuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckFwcGxldC5jcHAnLAogICAg
ICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJBcHBsZXQuaCcsCi0gICAgICAgICAgICAncmVuZGVy
aW5nL1JlbmRlckFyZW5hLmNwcCcsCi0gICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckFyZW5h
LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJCUi5jcHAnLAogICAgICAgICAgICAg
J3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0xpbmVMYXlvdXQuY3BwJywKQEAgLTQ1MzksNiArNDUzNyw4IEBACiAgICAgICAgICAg
ICAncGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L1ByZXJlbmRlckhhbmRsZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QdXJnZWFibGVCdWZm
ZXIuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUmVjeWNsZWRBcmVuYS5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL1JlY3ljbGVkQXJlbmEuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
UmVmZXJyZXJQb2xpY3kuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUnVuTG9vcFRpbWVyLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAnLApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJl
dmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zOTE5MSw3ICszOTE5MSw3IEBACiAJCQkJPgogCQkJ
PC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJB
cmVuYS5jcHAiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxSZWN5Y2xlZEFyZW5hLmNw
cCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCiAJCQkJCU5hbWU9IkRlYnVnfFdpbjMy
IgpAQCAtMzkyNDMsNyArMzkyNDMsNyBAQAogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQk8
L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckFy
ZW5hLmgiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxSZWN5Y2xlZEFyZW5hLmgiCiAJ
CQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNTczOSw4ICs1NzM5LDggQEAKIAkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8q
IElubGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4NUIwOTdE
OTMwMjAwOTRDOUU0IC8qIFJlbmRlckFwcGxldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgxQzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVy
QXBwbGV0LmNwcCAqLzsgfTsKIAkJQkNFQTQ4NUMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckFw
cGxldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNF
QTQ4MUQwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckFwcGxldC5oICovOyB9OwotCQlCQ0VBNDg1
RDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQXJlbmEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4MUUwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlckFyZW5hLmNwcCAqLzsgfTsKLQkJQkNFQTQ4NUUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRl
ckFyZW5hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0VBNDgxRjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQXJlbmEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQ0VBNDg1RDA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVjeWNsZWRBcmVuYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0VBNDgxRTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVjeWNsZWRBcmVuYS5j
cHAgKi87IH07CisJCUJDRUE0ODVFMDk3RDkzMDIwMDk0QzlFNCAvKiBSZWN5Y2xlZEFyZW5hLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgxRjA5
N0Q5MzAyMDA5NEM5RTQgLyogUmVjeWNsZWRBcmVuYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODVGMDk3RDkzMDIwMDk0QzlFNCAvKiBS
ZW5kZXJCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0VBNDgyMDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQmxvY2suY3BwICovOyB9Owog
CQlCQ0VBNDg2MDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQmxvY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODIxMDk3RDkzMDIwMDk0QzlF
NCAvKiBSZW5kZXJCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUJDRUE0ODYxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCb3guY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4MjIwOTdE
OTMwMjAwOTRDOUU0IC8qIFJlbmRlckJveC5jcHAgKi87IH07CkBAIC0xMzEwNiw4ICsxMzEwNiw4
IEBACiAJCUJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVUZXh0Qm94Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0ODFDMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJBcHBs
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckFwcGxl
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0ODFEMDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJBcHBsZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlckFwcGxldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0VBNDgxRTA5
N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQXJlbmEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbmRlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQkNFQTQ4MUYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckFyZW5hLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJBcmVuYS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCQ0VBNDgxRTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVjeWNsZWRBcmVuYS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVjeWNsZWRBcmVuYS5j
cHA7IHBhdGggPSBSZWN5Y2xlZEFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkNFQTQ4MUYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlY3ljbGVkQXJlbmEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY3ljbGVkQXJlbmEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MjAwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJsb2NrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJCbG9jay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0ODIxMDk3RDkzMDIwMDk0QzlFNCAv
KiBSZW5kZXJCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVy
QmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MjIwOTdEOTMwMjAw
OTRDOUU0IC8qIFJlbmRlckJveC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVuZGVyQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwODQ2
LDYgKzIwODQ2LDggQEAKIAkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIzIC8qIHBsYXRmb3JtICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCQ0VBNDgxRTA5
N0Q5MzAyMDA5NEM5RTQgLyogUmVjeWNsZWRBcmVuYS5jcHAgKi8sCisJCQkJQkNFQTQ4MUYwOTdE
OTMwMjAwOTRDOUU0IC8qIFJlY3ljbGVkQXJlbmEuaCAqLywKIAkJCQk0OUU5MTJBNDBFRkFDOEU2
MDA5RDBDQUYgLyogYW5pbWF0aW9uICovLAogCQkJCUZEMzE2MDQwMTJCMDI2QTMwMEMxQTM1OSAv
KiBhdWRpbyAqLywKIAkJCQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQgLyogY2YgKi8sCkBAIC0y
MTQ5OCw4ICsyMTUwMCw2IEBACiAJCQkJQjJCMUY3MTUwRDAwQ0FBODAwNEFFQTY0IC8qIFBvaW50
ZXJFdmVudHNIaXRSdWxlcy5oICovLAogCQkJCUJDRUE0ODFDMDk3RDkzMDIwMDk0QzlFNCAvKiBS
ZW5kZXJBcHBsZXQuY3BwICovLAogCQkJCUJDRUE0ODFEMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJBcHBsZXQuaCAqLywKLQkJCQlCQ0VBNDgxRTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQXJl
bmEuY3BwICovLAotCQkJCUJDRUE0ODFGMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJBcmVuYS5o
ICovLAogCQkJCUJDRUE0ODIwMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9jay5jcHAgKi8s
CiAJCQkJQkNFQTQ4MjEwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJsb2NrLmggKi8sCiAJCQkJ
QkNFQTQ4MTMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJsb2NrTGluZUxheW91dC5jcHAgKi8s
CkBAIC0yNDgwNCw3ICsyNDgwNCw3IEBACiAJCQkJOTMzMDlFMDUwOTlFNjQ5MjAwNTZFNTgxIC8q
IFJlbW92ZU5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwNzA5OUU2NDky
MDA1NkU1ODEgLyogUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRUE0ODVDMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJBcHBsZXQuaCBp
biBIZWFkZXJzICovLAotCQkJCUJDRUE0ODVFMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJBcmVu
YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNFQTQ4NUUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlY3lj
bGVkQXJlbmEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODYwMDk3RDkzMDIwMDk0QzlFNCAv
KiBSZW5kZXJCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4NjIwOTdEOTMwMjAwOTRD
OUU0IC8qIFJlbmRlckJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5NkRCNDMwRjNBODgwRTAw
NTczQ0IzIC8qIFJlbmRlckJveE1vZGVsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI4MDQ4
LDcgKzI4MDQ4LDcgQEAKIAkJCQk5MzMwOUUwNDA5OUU2NDkyMDA1NkU1ODEgLyogUmVtb3ZlTm9k
ZUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMDYwOTlFNjQ5MjAwNTZFNTgx
IC8qIFJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDRUE0ODVCMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJBcHBsZXQuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJQkNFQTQ4NUQwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckFyZW5hLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUJDRUE0ODVEMDk3RDkzMDIwMDk0QzlFNCAvKiBSZWN5Y2xl
ZEFyZW5hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODVGMDk3RDkzMDIwMDk0QzlFNCAv
KiBSZW5kZXJCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg1MjA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
RUE0ODYxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCb3guY3BwIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw4ICsxMzEsOCBA
QAogI2luY2x1ZGUgIlBvcFN0YXRlRXZlbnQuaCIKICNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCisjaW5jbHVkZSAiUmVjeWNsZWRB
cmVuYS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgiCi0jaW5jbHVkZSAi
UmVuZGVyQXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKICNpbmNs
dWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTIw
NjYsNyArMjA2Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OmF0dGFjaCgpCiAgICAgQVNTRVJUKCFtX2F4
T2JqZWN0Q2FjaGUgfHwgdGhpcyAhPSB0b3BEb2N1bWVudCgpKTsKIAogICAgIGlmICghbV9yZW5k
ZXJBcmVuYSkKLSAgICAgICAgbV9yZW5kZXJBcmVuYSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJBcmVu
YSk7CisgICAgICAgIG1fcmVuZGVyQXJlbmEgPSBhZG9wdFB0cihuZXcgUmVjeWNsZWRBcmVuYSgi
UmVuZGVyQXJlbmEiKSk7CiAgICAgCiAgICAgLy8gQ3JlYXRlIHRoZSByZW5kZXJpbmcgdHJlZQog
ICAgIHNldFJlbmRlcmVyKG5ldyAobV9yZW5kZXJBcmVuYS5nZXQoKSkgUmVuZGVyVmlldyh0aGlz
LCB2aWV3KCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcg
KzEyMiw3IEBAIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFByb2Nlc3NpbmdJbnN0
cnVjdGlvbjsKIGNsYXNzIFJhbmdlOwogY2xhc3MgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI7Ci1j
bGFzcyBSZW5kZXJBcmVuYTsKK2NsYXNzIFJlY3ljbGVkQXJlbmE7CiBjbGFzcyBSZW5kZXJWaWV3
OwogY2xhc3MgUmVuZGVyRnVsbFNjcmVlbjsKIGNsYXNzIFNjcmlwdGFibGVEb2N1bWVudFBhcnNl
cjsKQEAgLTU1OSw3ICs1NTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRB
Y3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKSBPVkVSUklE
RTsKIAotICAgIFJlbmRlckFyZW5hKiByZW5kZXJBcmVuYSgpIHsgcmV0dXJuIG1fcmVuZGVyQXJl
bmEuZ2V0KCk7IH0KKyAgICBSZWN5Y2xlZEFyZW5hKiByZW5kZXJBcmVuYSgpIHsgcmV0dXJuIG1f
cmVuZGVyQXJlbmEuZ2V0KCk7IH0KIAogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcoKSBjb25z
dDsKIApAQCAtMTM0OCw3ICsxMzQ4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdGl0bGVTZXRF
eHBsaWNpdGx5OwogICAgIFJlZlB0cjxFbGVtZW50PiBtX3RpdGxlRWxlbWVudDsKIAotICAgIE93
blB0cjxSZW5kZXJBcmVuYT4gbV9yZW5kZXJBcmVuYTsKKyAgICBPd25QdHI8UmVjeWNsZWRBcmVu
YT4gbV9yZW5kZXJBcmVuYTsKIAogICAgIG11dGFibGUgQVhPYmplY3RDYWNoZSogbV9heE9iamVj
dENhY2hlOwogICAgIE93blB0cjxEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI+IG1fbWFya2VyczsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTY1LDcgKzk2NSw3IEBA
IGNvbnN0IFF1YWxpZmllZE5hbWUmIEVsZW1lbnQ6OmltYWdlU291cmMKICAgICByZXR1cm4gc3Jj
QXR0cjsKIH0KIAotUmVuZGVyT2JqZWN0KiBFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKK1JlbmRlck9iamVjdCogRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkK
IHsKICAgICBpZiAoZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgPT0gdGhpcyAmJiBzdHls
ZS0+ZGlzcGxheSgpID09IE5PTkUpIHsKICAgICAgICAgLy8gSWdub3JlIGRpc3BsYXk6IG5vbmUg
b24gcm9vdCBlbGVtZW50cy4gIEZvcmNlIGEgZGlzcGxheSBvZiBibG9jayBpbiB0aGF0IGNhc2Uu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw3ICsyNjksNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFj
aCgpOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRl
cmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZvaWQgcmVjYWxjU3R5bGUo
U3R5bGVDaGFuZ2UgPSBOb0NoYW5nZSk7CiAKICAgICBFbGVtZW50U2hhZG93KiBzaGFkb3coKSBj
b25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxNyw3ICsxNDE3LDcgQEAg
Ym9vbCBOb2RlOjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZQogICAgIHJldHVybiAoZG9j
dW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgPT0gdGhpcykgfHwgKGNvbnRleHQuc3R5bGUoKS0+
ZGlzcGxheSgpICE9IE5PTkUpOwogfQogCi1SZW5kZXJPYmplY3QqIE5vZGU6OmNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBOb2RlOjpjcmVh
dGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKQogewogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAx
MzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03
OCw4ICs3OCw4IEBAIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFBsYXRmb3JtV2hl
ZWxFdmVudDsKIGNsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBSYWRpb05vZGVMaXN0OworY2xh
c3MgUmVjeWNsZWRBcmVuYTsKIGNsYXNzIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyOwotY2xhc3Mg
UmVuZGVyQXJlbmE7CiBjbGFzcyBSZW5kZXJCb3g7CiBjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVj
dDsKIGNsYXNzIFJlbmRlck9iamVjdDsKQEAgLTUyOCw3ICs1MjgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCk7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIGJvb2wg
Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICBD
b250YWluZXJOb2RlKiBwYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKICAgICAKICAg
ICAvLyBXcmFwcGVyIGZvciBub2RlcyB0aGF0IGRvbid0IGhhdmUgYSByZW5kZXJlciwgYnV0IHN0
aWxsIGNhY2hlIHRoZSBzdHlsZSAobGlrZSBIVE1MT3B0aW9uRWxlbWVudCkuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1RleHQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw3ICsyMzEsNyBAQCBib29sIFRleHQ6OnJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgTm9kZVJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlbmRlck9iamVj
dCogVGV4dDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSog
c3R5bGUpCitSZW5kZXJPYmplY3QqIFRleHQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEq
IGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAjaWYgRU5BQkxFKFNWRykKICAgICBOb2Rl
KiBwYXJlbnRPckhvc3QgPSBwYXJlbnRPckhvc3ROb2RlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgJKHJl
dmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVU
eXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29s
IGRlZXApOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0Jik7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVh
bCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0OwogCiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFRleHQ+IHZpcnR1YWxDcmVhdGUoY29uc3QgU3RyaW5nJik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAJKHJldmlzaW9uIDEzMzI0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCBCYXNlQnV0dG9uSW5wdXRUeXBlOjphcHBl
bmRGb3JtRGF0YQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVuZGVyT2JqZWN0KiBCYXNlQnV0
dG9uSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0
eWxlKikgY29uc3QKK1JlbmRlck9iamVjdCogQmFzZUJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlUmVu
ZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29uc3QKIHsKICAgICBy
ZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyQnV0dG9uKGVsZW1lbnQoKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuaAkocmV2aXNpb24gMTMzMjQwKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDcgKzQzLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIGNv
bnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSop
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzdG9yZXNWYWx1ZVNlcGFyYXRlRnJv
bUF0dHJpYnV0ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBT
dHJpbmcmLCBib29sLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBPVkVSUklERTsKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRU
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VNdWx0aXBsZUZp
ZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIEJhc2VNdWx0aXBsZUZpZWxk
c0RhdGVBbmRUaW1lSW5wdXRUCiAgICAgICAgIG1fZGF0ZVRpbWVFZGl0RWxlbWVudC0+Ymx1ckJ5
T3duZXIoKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBCYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGlt
ZUlucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHls
ZSogc3R5bGUpIGNvbnN0CitSZW5kZXJPYmplY3QqIEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRU
aW1lSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVy
U3R5bGUqIHN0eWxlKSBjb25zdAogewogICAgIHJldHVybiBJbnB1dFR5cGU6OmNyZWF0ZVJlbmRl
cmVyKGFyZW5hLCBzdHlsZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VNdWx0
aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5oCShyZXZp
c2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VNdWx0aXBsZUZpZWxkc0Rh
dGVBbmRUaW1lSW5wdXRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHJp
dmF0ZToKIAogICAgIC8vIElucHV0VHlwZSBmdW5jdGlvbnMKICAgICB2aXJ0dWFsIHZvaWQgYmx1
cigpIE9WRVJSSURFIEZJTkFMOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgY29uc3QgT1ZFUlJJREUgRklOQUw7Cisg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBS
ZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgdm9pZCBjcmVh
dGVTaGFkb3dTdWJ0cmVlKCkgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ry
b3lTaGFkb3dTdWJ0cmVlKCkgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Fi
bGVkQXR0cmlidXRlQ2hhbmdlZCgpIE9WRVJSSURFIEZJTkFMOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsNyArMjAxLDcg
QEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZQogICAgIGV2ZW50LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCi1SZW5kZXJPYmplY3QqIEZpbGVJbnB1dFR5cGU6OmNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKSBjb25zdAorUmVu
ZGVyT2JqZWN0KiBGaWxlSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBh
cmVuYSwgUmVuZGVyU3R5bGUqKSBjb25zdAogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbChlbGVtZW50KCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIHZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZU1pc3NpbmdUZXh0KCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0U3RyaW5nVmFsdWUoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2hhbmdlRnJvbUFub3RoZXJUeXBlKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBGaWxlTGlzdCogZmlsZXMoKSBPVkVSUklERTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMy
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBib29sIEhUTUxBcHBsZXRFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkCiAgICAgcmV0dXJuIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQoY29udGV4dCk7CiB9CiAKLVJlbmRlck9iamVjdCogSFRNTEFwcGxldEVsZW1lbnQ6OmNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqIHN0eWxlKQorUmVuZGVyT2Jq
ZWN0KiBIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJl
bmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBpZiAoIWNhbkVtYmVkSmF2YSgpKQogICAgICAgICBy
ZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0Rm9ySlNCaW5kaW5ncygpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pIE9WRVJSSURFOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSFRNTEJSRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0
cmkKICAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyaWJ1
dGUsIHN0eWxlKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBIVE1MQlJFbGVtZW50OjpjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKK1JlbmRlck9iamVj
dCogSFRNTEJSRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJl
bmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICAgaWYgKHN0eWxlLT5oYXNDb250ZW50KCkpCiAgICAg
ICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCh0aGlzLCBzdHlsZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcg
KzQxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiwgU3R5bGVQcm9wZXJ0
eVNldCopIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRv
bkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgSFRNTEJ1
dHRvbkVsZW1lbnQ6OnNldFR5cGUoY29uc3QgQXQKICAgICBzZXRBdHRyaWJ1dGUodHlwZUF0dHIs
IHR5cGUpOwogfQogCi1SZW5kZXJPYmplY3QqIEhUTUxCdXR0b25FbGVtZW50OjpjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogSFRN
TEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5k
ZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckJ1dHRvbih0aGlzKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmgJKHJldmlzaW9u
IDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0OwogICAgICAgICAKLSAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xl
ZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQWRkQXV0aG9y
U2hhZG93Um9vdCgpIE9WRVJSSURFOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBA
QCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjCiAgICAgSFRNTEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAKLVJlbmRlck9iamVjdCogSFRNTENh
bnZhc0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqIHN0eWxlKQorUmVuZGVyT2JqZWN0KiBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBGcmFt
ZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOwogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+
c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAkocmV2aXNpb24gMTMz
MjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICBIVE1MQ2FudmFzRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwor
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwg
UmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCBi
b29sIGFyZUF1dGhvclNoYWRvd3NBbGxvd2VkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFs
c2U7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNw
cAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgSFRNTERldGFpbHNF
bGVtZW50OjpIVE1MRGV0YWlsc0VsZW1lbnQoYwogICAgIEFTU0VSVChoYXNUYWdOYW1lKGRldGFp
bHNUYWcpKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBI
VE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBS
ZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckJsb2NrKHRoaXMp
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCShyZXZp
c2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
SFRNTERldGFpbHNFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0g
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVj
eWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxk
Q3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZF
UlJJREU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaWFsb2dFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBib29sIEhUTUxEaWFsb2dF
bGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0CiAgICAgcmV0dXJuIEhUTUxFbGVtZW50Ojppc1ByZXNl
bnRhdGlvbkF0dHJpYnV0ZShuYW1lKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBIVE1MRGlhbG9nRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitS
ZW5kZXJPYmplY3QqIEhUTUxEaWFsb2dFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFy
ZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5k
ZXJEaWFsb2codGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaWFsb2dF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGlhbG9nRWxl
bWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaWFs
b2dFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBIVE1MRGlhbG9nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3QgT1ZFUlJJREU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3MCw3ICs3NzAsNyBAQCBib29sIEhUTUxFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0CiAgICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoY29udGV4dCk7CiB9CiAKLVJlbmRlck9iamVjdCogSFRNTEVsZW1lbnQ6
OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQor
UmVuZGVyT2JqZWN0KiBIVE1MRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBpZiAoaGFzTG9jYWxOYW1lKHdiclRh
ZykpCiAgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJXb3JkQnJlYWsodGhpcyk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaWVGb3JiaWRzSW5zZXJ0SFRNTCgpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmKTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5k
ZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIEhUTUxGb3JtRWxlbWVu
dCogZm9ybSgpIGNvbnN0IHsgcmV0dXJuIHZpcnR1YWxGb3JtKCk7IH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTEZpZWxkU2V0
RWxlbWVudDoKICAgICByZXR1cm4gZmllbGRzZXQ7CiB9CiAKLVJlbmRlck9iamVjdCogSFRNTEZp
ZWxkU2V0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSopCitSZW5kZXJPYmplY3QqIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAo
YXJlbmEpIFJlbmRlckZpZWxkc2V0KHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRmllbGRTZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRmllbGRTZXRFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1
MSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJl
cihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHJlY2Fs
Y1dpbGxWYWxpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdl
LCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkgT1ZFUlJJREU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDcgKzUzLDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKAogICAgIHJldHVybiBpc1VSTEFsbG93ZWQoKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBI
VE1MRnJhbWVFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRl
clN0eWxlKikKK1JlbmRlck9iamVjdCogSFRNTEZyYW1lRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIo
UmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChh
cmVuYSkgUmVuZGVyRnJhbWUodGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwotICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Cisg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBS
ZW5kZXJTdHlsZSopOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNyAr
MTU3LDcgQEAgYm9vbCBIVE1MRnJhbWVTZXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZAogICAgIHJl
dHVybiBjb250ZXh0LnN0eWxlKCktPmlzU3R5bGVBdmFpbGFibGUoKTsKIH0KIAotUmVuZGVyT2Jq
ZWN0ICpIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJl
bmEsIFJlbmRlclN0eWxlICpzdHlsZSkKK1JlbmRlck9iamVjdCogSFRNTEZyYW1lU2V0RWxlbWVu
dDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHls
ZSkKIHsKICAgICBpZiAoc3R5bGUtPmhhc0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIFJlbmRl
ck9iamVjdDo6Y3JlYXRlT2JqZWN0KHRoaXMsIHN0eWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMs
NyArNzMsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZp
cnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7
Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwg
UmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIo
UmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSUZyYW1lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSUZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAw
LDcgQEAgYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZAogICAgIHJldHVy
biBpc1VSTEFsbG93ZWQoKSAmJiBjb250ZXh0LnN0eWxlKCktPmRpc3BsYXkoKSAhPSBOT05FOwog
fQogCi1SZW5kZXJPYmplY3QqIEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogSFRNTElGcmFtZUVs
ZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSop
CiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlcklGcmFtZSh0aGlzKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJv
bShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwotICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5k
ZXJTdHlsZSopOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdl
KSBPVkVSUklERTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgSW1hZ2VFbGVt
ZW50OjpzZXRJbWFnZUlmTmVjZXNzYXJ5KFIKICAgICB9CiB9CiAKLVJlbmRlck9iamVjdCogSW1h
Z2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlckZvckltYWdlKEhUTUxFbGVtZW50KiBlbGVtZW50LCBS
ZW5kZXJBcmVuYSogYXJlbmEpCitSZW5kZXJPYmplY3QqIEltYWdlRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXJGb3JJbWFnZShIVE1MRWxlbWVudCogZWxlbWVudCwgUmVjeWNsZWRBcmVuYSogYXJlbmEp
CiB7CiAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2UoZWxl
bWVudCk7CiAgICAgaW1hZ2UtPnNldEltYWdlUmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6
Y3JlYXRlKCkpOwpAQCAtMTk0LDcgKzE5NCw3IEBAIFN0cmluZyBIVE1MSW1hZ2VFbGVtZW50Ojph
bHRUZXh0KCkgY29uc3QKICAgICByZXR1cm4gYWx0OwogfQogCi1SZW5kZXJPYmplY3QqIEhUTUxJ
bWFnZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqIHN0eWxlKQorUmVuZGVyT2JqZWN0KiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVSZW5kZXJl
cihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGlmIChz
dHlsZS0+aGFzQ29udGVudCgpIHx8IHNoYWRvdygpKQogICAgICAgICByZXR1cm4gUmVuZGVyT2Jq
ZWN0OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGNs
YXNzIEltYWdlSW5uZXJFbGVtZW50OwogY2xhc3MgSW1hZ2VFbGVtZW50IHsKIHByb3RlY3RlZDoK
ICAgICB2b2lkIHNldEltYWdlSWZOZWNlc3NhcnkoUmVuZGVyT2JqZWN0KiwgSW1hZ2VMb2FkZXIq
KTsKLSAgICBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyRm9ySW1hZ2UoSFRNTEVsZW1lbnQq
LCBSZW5kZXJBcmVuYSopOworICAgIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXJGb3JJbWFn
ZShIVE1MRWxlbWVudCosIFJlY3ljbGVkQXJlbmEqKTsKIH07CiAKIGNsYXNzIEhUTUxJbWFnZUVs
ZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBJbWFnZUVsZW1lbnQsIHB1YmxpYyBJ
bWFnZUxvYWRlckNsaWVudCB7CkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYsIFN0eWxl
UHJvcGVydHlTZXQqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKLSAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5k
ZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5
Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5TdGFydFNl
bGVjdGlvbigpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4NSw3ICs3ODUsNyBAQCBib29sIEhU
TUxJbnB1dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoCiAgICAgcmV0dXJuIG1faW5wdXRUeXBl
LT5yZW5kZXJlcklzTmVlZGVkKCkgJiYgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoY29udGV4dCk7CiB9CiAKLVJlbmRlck9iamVjdCogSFRNTElucHV0RWxlbWVu
dDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUp
CitSZW5kZXJPYmplY3QqIEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVk
QXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgcmV0dXJuIG1faW5wdXRU
eXBlLT5jcmVhdGVSZW5kZXJlcihhcmVuYSwgc3R5bGUpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyArMTg3
LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuSGF2ZVNlbGVjdGlvbigpIGNvbnN0OwogCiAgICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQm
KTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJl
cihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
KCk7CiAKICAgICAvLyBGSVhNRTogRm9yIGlzQWN0aXZhdGVkU3VibWl0IGFuZCBzZXRBY3RpdmF0
ZWRTdWJtaXQsIHdlIHNob3VsZCB1c2UgdGhlIE5WSS1pZGlvbSBoZXJlIGJ5IG1ha2luZwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMy
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NzksNyArNDc5LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKAogI2VuZGlmCiB9CiAKLVJlbmRlck9iamVjdCogSFRNTE1lZGlhRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJP
YmplY3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8p
CiAgICAgLy8gU2V0dXAgdGhlIHJlbmRlcmVyIGlmIHdlIGFscmVhZHkgaGF2ZSBhIHByb3h5IHdp
ZGdldC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lv
biAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzYzLDcgKzM2Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzRm9jdXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJs
ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVS
ZW5kZXJpbmdDb250ZXh0Jik7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmly
dHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlv
blJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01OSw3ICs1OSw3IEBAIFBhc3NSZWZQdHI8SFRNTE1ldGVyRWxlbWVudD4gSFRNTE1ldGVy
RWwKICAgICByZXR1cm4gbWV0ZXI7CiB9CiAKLVJlbmRlck9iamVjdCogSFRNTE1ldGVyRWxlbWVu
dDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUp
CitSZW5kZXJPYmplY3QqIEhUTUxNZXRlckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVk
QXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaWYgKGhhc0F1dGhvclNo
YWRvd1Jvb3QoKSB8fCAhZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpLT5zdXBwb3J0c01ldGVy
KHN0eWxlLT5hcHBlYXJhbmNlKCkpKQogICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVh
dGVPYmplY3QodGhpcywgc3R5bGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0
ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJF
bGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
dGVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9v
bCByZWNhbGNXaWxsVmFsaWRhdGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxl
Kik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJl
bmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5j
cHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCBib29sIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OndvdWxkTG9hZEFzCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1SZW5kZXJPYmplY3QqIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQorUmVuZGVyT2JqZWN0KiBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwg
UmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIC8vIE9uY2UgYSBQbHVnSW4gRWxlbWVudCBjcmVh
dGVzIGl0cyByZW5kZXJlciwgaXQgbmVlZHMgdG8gYmUgdG9sZCB3aGVuIHRoZSBEb2N1bWVudCBn
b2VzCiAgICAgLy8gaW5hY3RpdmUgb3IgcmVhY3RpdmF0ZXMgc28gaXQgY2FuIGNsZWFyIHRoZSBy
ZW5kZXJlciBiZWZvcmUgZ29pbmcgaW50byB0aGUgcGFnZSBjYWNoZS4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkgT1ZFUlJJREU7CiAKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIHdp
bGxSZWNhbGNTdHlsZShTdHlsZUNoYW5nZSk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aFBhcnNpbmdDaGlsZHJlbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jl
c3NFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9n
cmVzc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBA
IFBhc3NSZWZQdHI8SFRNTFByb2dyZXNzRWxlbWVudD4gSFRNTFByb2cKICAgICByZXR1cm4gcHJv
Z3Jlc3M7CiB9CiAKLVJlbmRlck9iamVjdCogSFRNTFByb2dyZXNzRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCitSZW5kZXJPYmpl
Y3QqIEhUTUxQcm9ncmVzc0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaWYgKCFzdHlsZS0+aGFzQXBwZWFyYW5j
ZSgpIHx8IGhhc0F1dGhvclNoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlck9iamVj
dDo6Y3JlYXRlT2JqZWN0KHRoaXMsIHN0eWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFByb2dyZXNzRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFByb2dyZXNzRWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEs
NyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdDsK
IAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNo
b3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgY29uc3QgT1ZF
UlJJREU7CiAgICAgUmVuZGVyUHJvZ3Jlc3MqIHJlbmRlclByb2dyZXNzKCkgY29uc3Q7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
MzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzM4LDcgKzMzOCw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmNh
blNlbGVjdEFsbCgpIGMKICAgICByZXR1cm4gIXVzZXNNZW51TGlzdCgpOwogfQogCi1SZW5kZXJP
YmplY3QqIEhUTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogSFRNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0
ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgaWYg
KHVzZXNNZW51TGlzdCgpKQogICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyTWVudUxp
c3QodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCShy
ZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxl
ICopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFy
ZW5hKiwgUmVuZGVyU3R5bGUgKik7CiAgICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZv
cm1EYXRhTGlzdCYsIGJvb2wpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMy
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgSFRNTFN1bW1hcnlFbGVtZW50OjpIVE1MU3VtbWFy
eUVsZW1lbnQoYwogICAgIEFTU0VSVChoYXNUYWdOYW1lKHN1bW1hcnlUYWcpKTsKIH0KIAotUmVu
ZGVyT2JqZWN0KiBIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBIVE1MU3VtbWFyeUVsZW1lbnQ6
OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAg
ICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckJsb2NrKHRoaXMpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFN1bW1hcnlFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRl
clN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwNSw3ICsyMDUsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
CiAgICAgICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRy
aWJ1dGUpOwogfQogCi1SZW5kZXJPYmplY3QqIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBI
VE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwg
UmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZSh0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxl
Y3RTdHlsZUZvckF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmLCBTdHlsZVByb3BlcnR5U2V0Kikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29s
IGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNldCgpOwogICAgIHZpcnR1YWwgYm9vbCBoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29uc3QgT1ZF
UlJJREU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKAogfQogCiAjaWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJ
REVPKQotUmVuZGVyT2JqZWN0KiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogSFRNTFZpZGVvRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikK
IHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyVmlkZW8odGhpcyk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAjaWYgIUVOQUJMRShQTFVHSU5fUFJP
WFlfRk9SX1ZJREVPKQotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogI2VuZGlmCiAgICAg
dmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSGlk
ZGVuSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRl
bklucHV0VHlwZS5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SGlkZGVuSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBib29s
IEhpZGRlbklucHV0VHlwZTo6c3VwcG9ydHNWYWxpZGF0aW9uCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1SZW5kZXJPYmplY3QqIEhpZGRlbklucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0CitSZW5kZXJPYmplY3QqIEhpZGRlbklucHV0VHlw
ZTo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKikgY29uc3QKIHsK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRm9ybUNvbnRyb2xTdGF0ZSBzYXZlRm9ybUNvbnRy
b2xTdGF0ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlRm9ybUNv
bnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBib29sIHN0b3Jlc1ZhbHVlU2VwYXJhdGVGcm9tQXR0cmlidXRlKCkgT1ZFUlJJREU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMTMzMjQwKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEltYWdlSW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0
ZUV2CiAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKLVJlbmRlck9iamVjdCog
SW1hZ2VJbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVy
U3R5bGUqKSBjb25zdAorUmVuZGVyT2JqZWN0KiBJbWFnZUlucHV0VHlwZTo6Y3JlYXRlUmVuZGVy
ZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29uc3QKIHsKICAgICBSZW5k
ZXJJbWFnZSogaW1hZ2UgPSBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZShlbGVtZW50KCkpOwogICAg
IGltYWdlLT5zZXRJbWFnZVJlc291cmNlKFJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmgJKHJldmlzaW9uIDEzMzI0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0Zvcm1EYXRhQXBw
ZW5kYWJsZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0
YShGb3JtRGF0YUxpc3QmLCBib29sKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNs
ZWRBcmVuYSosIFJlbmRlclN0eWxlKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgYWx0QXR0cmlidXRlQ2hhbmdlZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzcmNB
dHRyaWJ1dGVDaGFuZ2VkKCkgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0NSw3ICs0NDUsNyBAQCBQYXNzUmVmUHRyPEhUTUxGb3Jt
RWxlbWVudD4gSW5wdXRUeXBlOjpmCiAgICAgcmV0dXJuIGVsZW1lbnQoKS0+Zm9ybSgpOwogfQog
Ci1SZW5kZXJPYmplY3QqIElucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CitSZW5kZXJPYmplY3QqIElucHV0VHlwZTo6Y3JlYXRl
UmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKIHsKICAg
ICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QoZWxlbWVudCgpLCBzdHlsZSk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcg
QEAgY2xhc3MgSWNvbjsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBNb3VzZUV2ZW50Owog
Y2xhc3MgTm9kZTsKLWNsYXNzIFJlbmRlckFyZW5hOworY2xhc3MgUmVjeWNsZWRBcmVuYTsKIGNs
YXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgVG91Y2hFdmVudDsK
QEAgLTIzNyw3ICsyMzcsNyBAQCBwdWJsaWM6CiAgICAgLy8gTWlzY2VsbGFuZW91cyBmdW5jdGlv
bnMKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKCk7Ci0gICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRB
cmVuYSosIFJlbmRlclN0eWxlKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFkZFNlYXJjaFJl
c3VsdCgpOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0
YWNoKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAkocmV2aXNp
b24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlCiAgICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFw
cGVuZENoaWxkKGNvbnRhaW5lci5yZWxlYXNlKCksIGVjKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBS
YW5nZUlucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSopIGNvbnN0CitSZW5kZXJPYmplY3QqIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJl
cihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKSBjb25zdAogewogICAgIHJldHVy
biBuZXcgKGFyZW5hKSBSZW5kZXJTbGlkZXIoZWxlbWVudCgpKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93
bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFy
ZW5hKiwgUmVuZGVyU3R5bGUqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlU2hhZG93U3VidHJlZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgRGVjaW1hbCBwYXJzZVRv
TnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0IE9WRVJSSURF
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAkocmV2aXNpb24g
MTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgU2VhcmNoSW5wdXRUeXBlOjphZGRTZWFy
Y2hSZXN1bHQoKQogICAgICAgICB0b1JlbmRlclNlYXJjaEZpZWxkKHJlbmRlcmVyKS0+YWRkU2Vh
cmNoUmVzdWx0KCk7CiB9CiAKLVJlbmRlck9iamVjdCogU2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29uc3QKK1JlbmRlck9i
amVjdCogU2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVu
YSwgUmVuZGVyU3R5bGUqKSBjb25zdAogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJT
ZWFyY2hGaWVsZChlbGVtZW50KCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9TZWFy
Y2hJbnB1dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElu
cHV0VHlwZS5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJj
aElucHV0VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgU2VhcmNoSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqKTsKICAgICB2aXJ0
dWFsIHZvaWQgYWRkU2VhcmNoUmVzdWx0KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNs
ZWRBcmVuYSosIFJlbmRlclN0eWxlKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRSZXNwZWN0U3BlZWNoQXR0cmlidXRlKCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCBPVkVSUklERTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAJKHJldmlzaW9uIDEzMzI0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjAxLDcgKzIwMSw3IEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGRT
dWJtaXRJbXAKICAgICByZXR1cm4gKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnRleHRJ
bnB1dEV2ZW50ICYmIGV2ZW50LT5oYXNJbnRlcmZhY2UoZXZlbnROYW1lcygpLmludGVyZmFjZUZv
clRleHRFdmVudCkgJiYgc3RhdGljX2Nhc3Q8VGV4dEV2ZW50Kj4oZXZlbnQpLT5kYXRhKCkgPT0g
IlxuIikgfHwgSW5wdXRUeXBlOjpzaG91bGRTdWJtaXRJbXBsaWNpdGx5KGV2ZW50KTsKIH0KIAot
UmVuZGVyT2JqZWN0KiBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKSBjb25zdAorUmVuZGVyT2JqZWN0KiBUZXh0RmllbGRJ
bnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHls
ZSopIGNvbnN0CiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZShlbGVtZW50KCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRGaWVsZElucHV0VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KEJlZm9y
ZVRleHRJbnNlcnRlZEV2ZW50KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGZvcndhcmRF
dmVudChFdmVudCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdWJtaXRJbXBs
aWNpdGx5KEV2ZW50KikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJl
bmRlclN0eWxlKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUlu
cHV0TWV0aG9kKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNv
bnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYp
IGNvbnN0IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWls
c01hcmtlckNvbnRyb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NSw3ICs0NSw3IEBAIERldGFpbHNNYXJrZXJDb250cm9sOjpEZXRhaWxzTWFya2Vy
Q29udHIKIHsKIH0KIAotUmVuZGVyT2JqZWN0KiBEZXRhaWxzTWFya2VyQ29udHJvbDo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3Qq
IERldGFpbHNNYXJrZXJDb250cm9sOjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVu
YSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJEZXRhaWxz
TWFya2VyKHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWls
c01hcmtlckNvbnRyb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9EZXRhaWxzTWFya2VyQ29udHJvbC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZXRhaWxzTWFy
a2VyQ29udHJvbD4gY3JlYXRlKERvY3VtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsK
KyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSos
IFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
Tm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
c2hhZG93UHNldWRvSWQoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSW1hZ2VJbm5lckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0ltYWdlSW5uZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW1hZ2VJbm5lckVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgSW1hZ2VJbm5lckVsZW1lbnQ6OmF0dGFjaCgpCiAg
ICAgc2V0SW1hZ2VJZk5lY2Vzc2FyeShyZW5kZXJlcigpLCBpbWFnZUxvYWRlcigpKTsKIH0KIAot
UmVuZGVyT2JqZWN0KiBJbWFnZUlubmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCitSZW5kZXJPYmplY3QqIEltYWdlSW5uZXJF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUq
IHN0eWxlKQogewogICAgIGlmIChzdHlsZS0+aGFzQ29udGVudCgpKQogICAgICAgICByZXR1cm4g
UmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSW1hZ2VJbm5lckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbWFnZUlubmVyRWxlbWVudC5oCShyZXZpc2lvbiAxMzMy
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbWFnZUlubmVyRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyT2JqZWN0
KiBpbWFnZVJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gSFRNTEVsZW1lbnQ6OnJlbmRlcmVyKCk7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xl
ZEFyZW5hKiwgUmVuZGVyU3R5bGUqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5T
dGFydFNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHJl
dmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgyLDcgKzM4Miw3IEBAIFBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGEKICAgICByZXR1cm4gZWxlbWVudC5yZWxl
YXNlKCk7CiB9CiAKLVJlbmRlck9iamVjdCogTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFp
bmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHls
ZSopCitSZW5kZXJPYmplY3QqIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7
CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVy
KHRoaXMpOwogfQpAQCAtMTIxNSw3ICsxMjE1LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUaW1lRGlz
cGxheUVsZW1lbnQ6OnNldAogICAgIG1fY3VycmVudFZhbHVlID0gdGltZTsKIH0KIAotUmVuZGVy
T2JqZWN0KiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBNZWRpYUNvbnRy
b2xUaW1lRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5h
LCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlck1lZGlhQ29u
dHJvbFRpbWVEaXNwbGF5KHRoaXMpOwogfQpAQCAtMTMwOCw3ICsxMzA4LDcgQEAgUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZQogICAgIHJldHVybiBlbGVtZW50LnJlbGVh
c2UoKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikK
K1JlbmRlck9iamVjdCogTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICBy
ZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCh0aGlzKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250
YWluZXJFbGVtZW50KERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRl
ck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAg
ICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICB2aXJ0dWFs
IE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CkBAIC01MDAsNyAr
NTAwLDcgQEAgcHJvdGVjdGVkOgogICAgIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChE
b2N1bWVudCopOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAg
ICAgZmxvYXQgbV9jdXJyZW50VmFsdWU7CiB9OwpAQCAtNTQ0LDcgKzU0NCw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChEb2N1
bWVudCopOwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBNZWRp
YUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhVGV4
dFRyYWNrRGlzcGxheUNvbnRhaW5lcjsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgYm9vbCBNZXRlcklubmVyRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZAogICAgIHJldHVybiByZW5kZXIgJiYgIXJlbmRlci0+dGhlbWUoKS0+c3VwcG9y
dHNNZXRlcihyZW5kZXItPnN0eWxlKCktPmFwcGVhcmFuY2UoKSkgJiYgSFRNTERpdkVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7CiB9CiAKLVJlbmRlck9iamVjdCogTWV0ZXJJbm5l
ckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUq
KQorUmVuZGVyT2JqZWN0KiBNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNs
ZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkg
UmVuZGVyTWV0ZXIodGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZXRlclNoYWRvd0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7CiB9Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9QaWNrZXJJbmRpY2F0b3JFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9QaWNrZXJJbmRp
Y2F0b3JFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvUGlja2VySW5kaWNhdG9yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDcgKzY2LDcgQEAgUGlja2VySW5kaWNhdG9yRWxlbWVudDo6flBpY2tlckluZGljYXRvcgogICAg
IEFTU0VSVCghbV9jaG9vc2VyKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBQaWNrZXJJbmRpY2F0b3JF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikK
K1JlbmRlck9iamVjdCogUGlja2VySW5kaWNhdG9yRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVj
eWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVu
YSkgUmVuZGVyRGV0YWlsc01hcmtlcih0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1BpY2tlckluZGljYXRvckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9QaWNrZXJJbmRpY2F0b3JFbGVtZW50LmgJKHJldmlzaW9uIDEz
MzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1BpY2tlckluZGljYXRvckVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgUGlja2VySW5kaWNhdG9yRWxlbWVudChEb2N1bWVudCopOwotICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVk
QXJlbmEqLCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgp
IE9WRVJSSURFOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1No
YWRvd0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcyLDcgKzcyLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBQcm9ncmVzc0lubmVyRWxl
bWVudAogICAgIHJldHVybiBwc2V1ZElkOwogfQogCi1SZW5kZXJPYmplY3QqIFByb2dyZXNzSW5u
ZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxl
KikKK1JlbmRlck9iamVjdCogUHJvZ3Jlc3NJbm5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJl
Y3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJl
bmEpIFJlbmRlclByb2dyZXNzKHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFByb2dyZXNzSW5uZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIHByaXZhdGU6
Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwg
UmVuZGVyU3R5bGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw3ICsyMTAs
NyBAQCB2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tCiAgICAgICAgIHJl
bmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi1SZW5kZXJPYmplY3QqIFNsaWRl
clRodW1iRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSopCitSZW5kZXJPYmplY3QqIFNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIo
UmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChh
cmVuYSkgUmVuZGVyU2xpZGVyVGh1bWIodGhpcyk7CiB9CkBAIC00NDcsNyArNDQ3LDcgQEAgUGFz
c1JlZlB0cjxUcmFja0xpbWl0ZXJFbGVtZW50PiBUcmFja0xpbQogICAgIHJldHVybiBlbGVtZW50
LnJlbGVhc2UoKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBUcmFja0xpbWl0ZXJFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVj
dCogVHJhY2tMaW1pdGVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU2xpZGVy
VGh1bWIodGhpcyk7CiB9CkBAIC00OTQsNyArNDk0LDcgQEAgUGFzc1JlZlB0cjxTbGlkZXJDb250
YWluZXJFbGVtZW50PiBTbGlkZQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2xpZGVyQ29udGFp
bmVyRWxlbWVudChkb2N1bWVudCkpOwogfQogCi1SZW5kZXJPYmplY3QqIFNsaWRlckNvbnRhaW5l
ckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUq
KQorUmVuZGVyT2JqZWN0KiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihS
ZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFy
ZW5hKSBSZW5kZXJTbGlkZXJDb250YWluZXIodGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQw
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFNs
aWRlclRodW1iRWxlbWVudChEb2N1bWVudCopOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSop
OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0
cmlidXRlc0FuZENoaWxkcmVuKCk7CiAgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZEZvcm1Db250
cm9sKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHNob3VsZE1hdGNoUmVhZE9ubHlTZWxlY3Rv
cigpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBUcmFja0xpbWl0ZXJFbGVtZW50KERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJl
bmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVk
b0lkKCkgY29uc3Q7CiB9OwogCkBAIC0xMzcsNyArMTM3LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIFNsaWRlckNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwor
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwg
UmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNl
dWRvSWQoKSBjb25zdDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAkocmV2aXNpb24gMTMzMjQw
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCB2b2lkIFRleHRDb250cm9sSW5u
ZXJUZXh0RWxlbWVudDo6ZGVmYXVsCiAgICAgICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKGV2ZW50KTsKIH0KIAotUmVuZGVyT2JqZWN0KiBUZXh0Q29udHJvbElubmVyVGV4
dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUq
KQorUmVuZGVyT2JqZWN0KiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5l
dyAoYXJlbmEpIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayh0aGlzKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KERv
Y3VtZW50Kik7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRp
b25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU4LDcgKzE1OCw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFRl
eHRGaWVsZERlY29yYXQKICAgICByZXR1cm4gc3R5bGUucmVsZWFzZSgpOwogfQogCi1SZW5kZXJP
YmplY3QqIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogVGV4dEZpZWxkRGVjb3Jh
dGlvbkVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSopCiB7CiAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gbmV3IChhcmVuYSkgUmVuZGVySW1h
Z2UodGhpcyk7CiAgICAgaW1hZ2UtPnNldEltYWdlUmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJj
ZTo6Y3JlYXRlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dEZpZWxk
RGVjb3JhdGlvbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgVGV4dEZpZWxkRGVj
b3JhdGlvbkVsZW1lbnQoRG9jdW1lbnQqLCBUZXh0RmllbGREZWNvcmF0b3IqKTsKICAgICB2aXJ0
dWFsIGJvb2wgaXNUZXh0RmllbGREZWNvcmF0aW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2goKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0
IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksNyArMTc5LDcgQEAgY29uc3QgQXRv
bWljU3RyaW5nJiBUZXh0VHJhY2tDdWVCb3g6OnNoYQogICAgIHJldHVybiB0ZXh0VHJhY2tDdWVC
b3hTaGFkb3dQc2V1ZG9JZCgpOwogfQogCi1SZW5kZXJPYmplY3QqIFRleHRUcmFja0N1ZUJveDo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJP
YmplY3QqIFRleHRUcmFja0N1ZUJveDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyVGV4dFRy
YWNrQ3VlKHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlQm94KERvY3VtZW50KiwgVGV4dFRyYWNrQ3VlKik7CiAK
LSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVS
ZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKSBPVkVSUklERTsKIAogICAgIFRl
eHRUcmFja0N1ZSogbV9jdWU7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQw
KQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIFBhc3NSZWZQdHI8TWF0aE1MSW5s
aW5lQ29udGFpbmVyRWxlbWVudD4KICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyT2JqZWN0
KiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogTWF0aE1MSW5saW5lQ29udGFp
bmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0
eWxlKikKIHsKICAgICBpZiAoaGFzTG9jYWxOYW1lKG1yb3dUYWcpKQogICAgICAgICByZXR1cm4g
bmV3IChhcmVuYSkgUmVuZGVyTWF0aE1MUm93KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oCShyZXZpc2lv
biAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVy
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHByb3RlY3RlZDoKICAg
ICBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7
CiB9OwogICAgIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MTWF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIE5vZGU6
Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgTWF0aE0KICAgICByZXR1cm4gTWF0aE1MSW5s
aW5lQ29udGFpbmVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKIH0KIAot
UmVuZGVyT2JqZWN0KiBNYXRoTUxNYXRoRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIE1hdGhNTE1hdGhFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewog
ICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJNYXRoTUxNYXRoKHRoaXMpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHByaXZhdGU6CiAgICAgTWF0aE1MTWF0aEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwg
SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSop
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogfTsKICAgICAKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAkocmV2aXNp
b24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBQYXNzUmVmUHRyPE1hdGhNTFRleHRF
bGVtZW50PiBNYXRoTUxUZXh0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXRoTUxUZXh0RWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1SZW5kZXJPYmplY3QqIE1hdGhNTFRleHRF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBz
dHlsZSkKK1JlbmRlck9iamVjdCogTWF0aE1MVGV4dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJl
Y3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaWYgKGhhc0xv
Y2FsTmFtZShNYXRoTUxOYW1lczo6bW9UYWcpKQogICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkg
UmVuZGVyTWF0aE1MT3BlcmF0b3IodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MVGV4dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MVGV4dEVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBNYXRoTUxUZXh0RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxl
Kik7CiB9OwogICAgIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNp
b24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Miw3ICs1Miw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk92ZXJm
bG93RXZlbnQuaCIKLSNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgorI2luY2x1ZGUgIlJlY3ljbGVk
QXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgogI2luY2x1ZGUgIlJl
bmRlckZ1bGxTY3JlZW4uaCIKICNpbmNsdWRlICJSZW5kZXJJRnJhbWUuaCIKQEAgLTI0MTgsNyAr
MjQxOCw3IEBAIGJvb2wgRnJhbWVWaWV3Ojp1cGRhdGVXaWRnZXRzKCkKICAgICAgICAgbV93aWRn
ZXRVcGRhdGVTZXQtPnJlbW92ZShvYmplY3QpOwogICAgIH0KIAotICAgIFJlbmRlckFyZW5hKiBh
cmVuYSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnJlbmRlckFyZW5hKCk7CisgICAgUmVjeWNsZWRB
cmVuYSogYXJlbmEgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBvYmplY3RzW2ldLT5kZXJl
ZihhcmVuYSk7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDEzMzI0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcg
KzU3LDcgQEAKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2tD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCi0jaW5jbHVkZSAiUmVu
ZGVyQXJlbmEuaCIKKyNpbmNsdWRlICJSZWN5Y2xlZEFyZW5hLmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0
LmgiCkBAIC0yMjMsOSArMjIzLDkgQEAgQXJlbmFTaXplIFBhZ2U6OnJlbmRlclRyZWVTaXplKCkg
Y29uc3QKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoIWZyYW1lLT5k
b2N1bWVudCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChSZW5kZXJBcmVu
YSogYXJlbmEgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSkgewotICAgICAgICAg
ICAgdG90YWwudHJlZVNpemUgKz0gYXJlbmEtPnRvdGFsUmVuZGVyQXJlbmFTaXplKCk7Ci0gICAg
ICAgICAgICB0b3RhbC5hbGxvY2F0ZWQgKz0gYXJlbmEtPnRvdGFsUmVuZGVyQXJlbmFBbGxvY2F0
ZWRCeXRlcygpOworICAgICAgICBpZiAoUmVjeWNsZWRBcmVuYSogYXJlbmEgPSBmcmFtZS0+ZG9j
dW1lbnQoKS0+cmVuZGVyQXJlbmEoKSkgeworICAgICAgICAgICAgdG90YWwudHJlZVNpemUgKz0g
YXJlbmEtPnRvdGFsUmVjeWNsZWRBcmVuYVNpemUoKTsKKyAgICAgICAgICAgIHRvdGFsLmFsbG9j
YXRlZCArPSBhcmVuYS0+dG90YWxSZWN5Y2xlZEFyZW5hQWxsb2NhdGVkQnl0ZXMoKTsKICAgICAg
ICAgfQogICAgIH0KICAgICByZXR1cm4gdG90YWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9SZWN5Y2xlZEFyZW5hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9SZWN5Y2xlZEFyZW5hLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1JlY3ljbGVkQXJlbmEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwMyBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFBvcnRpb25zIGFyZSBDb3B5cmlnaHQgKEMpIDE5OTggTmV0c2NhcGUgQ29t
bXVuaWNhdGlvbnMgQ29ycG9yYXRpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqCisgKiBBbHRlcm5h
dGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0
ZXJtcworICogb2YgZWl0aGVyIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4x
LCBmb3VuZCBhdAorICogaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvICh0aGUgIk1QTCIpIG9y
IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGZvdW5kIGF0
IGh0dHA6Ly93d3cuZnNmLm9yZy9jb3B5bGVmdC9ncGwuaHRtbAorICogKHRoZSAiR1BMIiksIGlu
IHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIE1QTCBvciB0aGUgR1BMIGFyZQorICog
YXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRob3NlIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cg
dXNlIG9mIHlvdXIKKyAqIHZlcnNpb24gb2YgdGhpcyBmaWxlIG9ubHkgdW5kZXIgdGhlIHRlcm1z
IG9mIG9uZSBvZiB0aG9zZSB0d28KKyAqIGxpY2Vuc2VzICh0aGUgTVBMIG9yIHRoZSBHUEwpIGFu
ZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZSB5b3VyCisgKiB2ZXJzaW9uIG9mIHRoaXMgZmls
ZSB1bmRlciB0aGUgTEdQTCwgaW5kaWNhdGUgeW91ciBkZWNpc2lvbiBieQorICogZGVsZXRpbmd0
aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZSBhbmQK
KyAqIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIE1QTCBvciB0aGUgR1BMLCBhcyB0
aGUgY2FzZSBtYXkgYmUuCisgKiBJZiB5b3UgZG8gbm90IGRlbGV0ZSB0aGUgcHJvdmlzaW9ucyBh
Ym92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyCisgKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1
bmRlciBhbnkgb2YgdGhlIExHUEwsIHRoZSBNUEwgb3IgdGhlIEdQTC4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVjeWNsZWRBcmVuYS5oIgorCisjaW5jbHVkZSA8c3Rk
bGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
KworI2RlZmluZSBST1VORFVQKHgsIHkpICgoKCh4KSsoKHkpLTEpKS8oeSkpKih5KSkKKworI2lm
ZGVmIE5ERUJVRworc3RhdGljIHZvaWQqIE1hc2tQdHIodm9pZCogcCwgdWludHB0cl90IG1hc2sp
Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PihwKSBeIG1hc2spOworfQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworI2lmbmRlZiBOREVCVUcKKworY29uc3QgaW50IHNpZ25hdHVyZSA9IDB4REJBMDBBRUE7Citj
b25zdCBpbnQgc2lnbmF0dXJlRGVhZCA9IDB4REJBMDBBRUQ7CisKK3R5cGVkZWYgc3RydWN0IHsK
KyAgICBSZWN5Y2xlZEFyZW5hKiBhcmVuYTsKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBpbnQgc2ln
bmF0dXJlOworfSBSZWN5Y2xlZEFyZW5hRGVidWdIZWFkZXI7CisKK3N0YXRpYyBjb25zdCBzaXpl
X3QgZGVidWdIZWFkZXJTaXplID0gQVJFTkFfQUxJR04oc2l6ZW9mKFJlY3ljbGVkQXJlbmFEZWJ1
Z0hlYWRlcikpOworCisjZW5kaWYKKworUmVjeWNsZWRBcmVuYTo6UmVjeWNsZWRBcmVuYShjb25z
dCBjaGFyKiBhcmVuYU5hbWUsIHVuc2lnbmVkIGFyZW5hU2l6ZSkKKyAgICA6IG1fdG90YWxTaXpl
KDApCisgICAgLCBtX3RvdGFsQWxsb2NhdGVkKDApCit7CisgICAgQVNTRVJUKGFyZW5hU2l6ZSA+
IHNpemVvZihBcmVuYSkgKyBBUkVOQV9BTElHTl9NQVNLKTsKKyAgICAvLyBUaGUgdW5kZXJseWlu
ZyBBcmVuYSBjbGFzcyBhbGxvY2F0ZXMgc29tZSBtZXRhZGF0YSBvbiB0b3Agb2Ygb3VyCisgICAg
Ly8gcmVxdWVzdGVkIHNpemUuIEZhY3RvciB0aGlzIGluIHNvIHRoYXQgd2UgY2FuIGdldCBwZXJm
ZWN0IHBvd2VyLW9mLXR3bworICAgIC8vIGFsbG9jYXRpb24gc2l6ZXMgcGFzc2VkIHRvIHRoZSB1
bmRlcmx5aW5nIG1hbGxvYygpIGNhbGwuCisgICAgYXJlbmFTaXplIC09IChzaXplb2YoQXJlbmEp
ICsgQVJFTkFfQUxJR05fTUFTSyk7CisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgYXJlbmEgcG9vbAor
ICAgIElOSVRfQVJFTkFfUE9PTCgmbV9wb29sLCBhcmVuYU5hbWUsIGFyZW5hU2l6ZSk7CisKKyAg
ICAvLyBaZXJvIG91dCB0aGUgcmVjeWNsZXJzIGFycmF5CisgICAgbWVtc2V0KG1fcmVjeWNsZXJz
LCAwLCBzaXplb2YobV9yZWN5Y2xlcnMpKTsKKworICAgIC8vIE1hc2sgZnJlZWxpc3QgcG9pbnRl
cnMgdG8gZGV0ZWN0IGNvcnJ1cHRpb24gYW5kIHN0b3AgZnJlZWxpc3Qgc3ByYXlpbmcuCisgICAg
Ly8gV2UgdXNlIGFuIGFyYml0cmF5IGZ1bmN0aW9uIGFuZCByZWx5IG9uIEFTTFIgdG8gcmFuZG9t
aXplIGl0LgorICAgIC8vIFRoZSBmaXJzdCB2YWx1ZSBpbiBSZW5kZXJPYmplY3QgKG9yIGFueSBj
bGFzcykgaXMgYSB2dGFibGUgcG9pbnRlciwgd2hpY2gKKyAgICAvLyBhbHdheXMgb3ZlcmxhcHMg
d2l0aCB0aGUgbmV4dCBwb2ludGVyLiBUaGlzIGNoYW5nZSBndWFyYW50ZWVzIHRoYXQgdGhlCisg
ICAgLy8gbWFza2VkIHZ0YWJsZS9uZXh0IHBvaW50ZXIgd2lsbCBuZXZlciBwb2ludCB0byB2YWxp
ZCBtZW1vcnkuIFNvLCB3ZQorICAgIC8vIHNob3VsZCBpbW1lZGlhdGVseSBjcmFzaCBvbiB0aGUg
Zmlyc3QgaW52YWxpZCB2dGFibGUgYWNjZXNzIGZvciBhIHN0YWxlCisgICAgLy8gUmVuZGVyT2Jq
ZWN0IHBvaW50ZXIuCisgICAgLy8gU2VlIGh0dHA6Ly9kb3dubG9hZC5jcm93ZHN0cmlrZS5jb20v
cGFwZXJzL2hlcy1leHBsb2l0aW5nLWEtY29hbG1pbmUucGRmLgorCisgICAgLy8gVGhlIGJvdHRv
bSBiaXRzIGFyZSBwcmVkaWN0YWJsZSBiZWNhdXNlIHRoZSBiaW5hcnkgaXMgbG9hZGVkIG9uIGEK
KyAgICAvLyBib3VuZGFyeS4gVGhpcyBqdXN0IHNoaWZ0cyBtb3N0IG9mIHRob3NlIHByZWRpY3Rh
YmxlIGJpdHMgb3V0LgorICAgIG1fbWFzayA9IH4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KFdURjo6ZmFzdE1hbGxvYykgPj4gMTMpOworfQorCitSZWN5Y2xlZEFyZW5hOjp+UmVjeWNsZWRB
cmVuYSgpCit7CisgICAgRmluaXNoQXJlbmFQb29sKCZtX3Bvb2wpOworfQorCit2b2lkKiBSZWN5
Y2xlZEFyZW5hOjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKK3sKKyAgICBBU1NFUlQoc2l6ZSA8PSBn
TWF4UmVjeWNsZWRTaXplIC0gMzIpOworICAgIG1fdG90YWxTaXplICs9IHNpemU7CisKKyNpZmRl
ZiBBRERSRVNTX1NBTklUSVpFUgorICAgIHJldHVybiA6Om1hbGxvYyhzaXplKTsKKyNlbGlmICFk
ZWZpbmVkKE5ERUJVRykKKyAgICAvLyBVc2Ugc3RhbmRhcmQgbWFsbG9jIHNvIHRoYXQgbWVtb3J5
IGRlYnVnZ2luZyB0b29scyB3b3JrLgorICAgIEFTU0VSVCh0aGlzKTsKKyAgICB2b2lkKiBibG9j
ayA9IDo6bWFsbG9jKGRlYnVnSGVhZGVyU2l6ZSArIHNpemUpOworICAgIFJlY3ljbGVkQXJlbmFE
ZWJ1Z0hlYWRlciogaGVhZGVyID0gc3RhdGljX2Nhc3Q8UmVjeWNsZWRBcmVuYURlYnVnSGVhZGVy
Kj4oYmxvY2spOworICAgIGhlYWRlci0+YXJlbmEgPSB0aGlzOworICAgIGhlYWRlci0+c2l6ZSA9
IHNpemU7CisgICAgaGVhZGVyLT5zaWduYXR1cmUgPSBzaWduYXR1cmU7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNoYXIqPihibG9jaykgKyBkZWJ1Z0hlYWRlclNpemU7CisjZWxzZQorICAgIC8v
IEVuc3VyZSB3ZSBoYXZlIGNvcnJlY3QgYWxpZ25tZW50IGZvciBwb2ludGVycy4gSW1wb3J0YW50
IGZvciBUcnU2NAorICAgIHNpemUgPSBST1VORFVQKHNpemUsIHNpemVvZih2b2lkKikpOworCisg
ICAgY29uc3Qgc2l6ZV90IGluZGV4ID0gc2l6ZSA+PiBrUmVjeWNsZXJTaGlmdDsKKworICAgIHZv
aWQqIHJlc3VsdCA9IG1fcmVjeWNsZXJzW2luZGV4XTsKKyAgICBpZiAocmVzdWx0KSB7CisgICAg
ICAgIC8vIE5lZWQgdG8gbW92ZSB0byB0aGUgbmV4dCBvYmplY3QKKyAgICAgICAgdm9pZCogbmV4
dCA9IE1hc2tQdHIoKigodm9pZCoqKXJlc3VsdCksIG1fbWFzayk7CisgICAgICAgIG1fcmVjeWNs
ZXJzW2luZGV4XSA9IG5leHQ7CisgICAgfQorCisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAg
Ly8gQWxsb2NhdGUgYSBuZXcgY2h1bmsgZnJvbSB0aGUgYXJlbmEKKyAgICAgICAgdW5zaWduZWQg
Ynl0ZXNBbGxvY2F0ZWQgPSAwOworICAgICAgICBBUkVOQV9BTExPQ0FURShyZXN1bHQsICZtX3Bv
b2wsIHNpemUsICZieXRlc0FsbG9jYXRlZCk7CisgICAgICAgIG1fdG90YWxBbGxvY2F0ZWQgKz0g
Ynl0ZXNBbGxvY2F0ZWQ7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbmRpZgorfQor
Cit2b2lkIFJlY3ljbGVkQXJlbmE6OmZyZWUoc2l6ZV90IHNpemUsIHZvaWQqIHB0cikKK3sKKyAg
ICBBU1NFUlQoc2l6ZSA8PSBnTWF4UmVjeWNsZWRTaXplIC0gMzIpOworICAgIG1fdG90YWxTaXpl
IC09IHNpemU7CisKKyNpZmRlZiBBRERSRVNTX1NBTklUSVpFUgorICAgIDo6ZnJlZShwdHIpOwor
I2VsaWYgIWRlZmluZWQoTkRFQlVHKQorICAgIC8vIFVzZSBzdGFuZGFyZCBmcmVlIHNvIHRoYXQg
bWVtb3J5IGRlYnVnZ2luZyB0b29scyB3b3JrLgorICAgIHZvaWQqIGJsb2NrID0gc3RhdGljX2Nh
c3Q8Y2hhcio+KHB0cikgLSBkZWJ1Z0hlYWRlclNpemU7CisgICAgUmVjeWNsZWRBcmVuYURlYnVn
SGVhZGVyKiBoZWFkZXIgPSBzdGF0aWNfY2FzdDxSZWN5Y2xlZEFyZW5hRGVidWdIZWFkZXIqPihi
bG9jayk7CisgICAgQVNTRVJUKGhlYWRlci0+c2lnbmF0dXJlID09IHNpZ25hdHVyZSk7CisgICAg
QVNTRVJUX1VOVVNFRChzaXplLCBoZWFkZXItPnNpemUgPT0gc2l6ZSk7CisgICAgQVNTRVJUKGhl
YWRlci0+YXJlbmEgPT0gdGhpcyk7CisgICAgaGVhZGVyLT5zaWduYXR1cmUgPSBzaWduYXR1cmVE
ZWFkOworICAgIDo6ZnJlZShibG9jayk7CisjZWxzZQorICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGNv
cnJlY3QgYWxpZ25tZW50IGZvciBwb2ludGVycy4gSW1wb3J0YW50IGZvciBUcnU2NAorICAgIHNp
emUgPSBST1VORFVQKHNpemUsIHNpemVvZih2b2lkKikpOworCisgICAgY29uc3Qgc2l6ZV90IGlu
ZGV4ID0gc2l6ZSA+PiBrUmVjeWNsZXJTaGlmdDsKKyAgICB2b2lkKiBjdXJyZW50VG9wID0gbV9y
ZWN5Y2xlcnNbaW5kZXhdOworICAgIG1fcmVjeWNsZXJzW2luZGV4XSA9IHB0cjsKKyAgICAqKCh2
b2lkKiopcHRyKSA9IE1hc2tQdHIoY3VycmVudFRvcCwgbV9tYXNrKTsKKyNlbmRpZgorfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWN5
Y2xlZEFyZW5hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVjeWNs
ZWRBcmVuYS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVjeWNs
ZWRBcmVuYS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDAzIEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICogUG9ydGlvbnMgYXJlIENvcHly
aWdodCAoQykgMTk5OCBOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEw
LTEzMDEgIFVTQQorICoKKyAqIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZp
bGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zCisgKiBvZiBlaXRoZXIgdGhlIE1vemlsbGEg
UHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEsIGZvdW5kIGF0CisgKiBodHRwOi8vd3d3Lm1vemls
bGEub3JnL01QTC8gKHRoZSAiTVBMIikgb3IgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBWZXJzaW9uIDIuMCwgZm91bmQgYXQgaHR0cDovL3d3dy5mc2Yub3JnL2NvcHlsZWZ0L2dw
bC5odG1sCisgKiAodGhlICJHUEwiKSwgaW4gd2hpY2ggY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0
aGUgTVBMIG9yIHRoZSBHUEwgYXJlCisgKiBhcHBsaWNhYmxlIGluc3RlYWQgb2YgdGhvc2UgYWJv
dmUuICBJZiB5b3Ugd2lzaCB0byBhbGxvdyB1c2Ugb2YgeW91cgorICogdmVyc2lvbiBvZiB0aGlz
IGZpbGUgb25seSB1bmRlciB0aGUgdGVybXMgb2Ygb25lIG9mIHRob3NlIHR3bworICogbGljZW5z
ZXMgKHRoZSBNUEwgb3IgdGhlIEdQTCkgYW5kIG5vdCB0byBhbGxvdyBvdGhlcnMgdG8gdXNlIHlv
dXIKKyAqIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSBMR1BMLCBpbmRpY2F0ZSB5b3Vy
IGRlY2lzaW9uIGJ5CisgKiBkZWxldGluZ3RoZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNl
IHRoZW0gd2l0aCB0aGUgbm90aWNlIGFuZAorICogb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBi
eSB0aGUgTVBMIG9yIHRoZSBHUEwsIGFzIHRoZSBjYXNlIG1heSBiZS4KKyAqIElmIHlvdSBkbyBu
b3QgZGVsZXRlIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIK
KyAqIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIGFueSBvZiB0aGUgTEdQTCwgdGhlIE1QTCBv
ciB0aGUgR1BMLgorICovCisKKyNpZm5kZWYgUmVjeWNsZWRBcmVuYV9oCisjZGVmaW5lIFJlY3lj
bGVkQXJlbmFfaAorCisjaW5jbHVkZSAiQXJlbmEuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9j
QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0YXRpYyBjb25zdCBzaXplX3QgZ01heFJlY3ljbGVkU2l6ZSA9IDEwMjQ7CisKK2Ns
YXNzIFJlY3ljbGVkQXJlbmEgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlY3ljbGVkQXJl
bmEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBSZWN5Y2xlZEFyZW5h
KGNvbnN0IGNoYXIqIGFyZW5hTmFtZSwgdW5zaWduZWQgYXJlbmFTaXplID0gODE5Mik7CisgICAg
flJlY3ljbGVkQXJlbmEoKTsKKworICAgIC8vIE1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9ucwor
ICAgIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7CisgICAgdm9pZCBmcmVlKHNpemVfdCwgdm9pZCop
OworCisgICAgc2l6ZV90IHRvdGFsUmVjeWNsZWRBcmVuYVNpemUoKSBjb25zdCB7IHJldHVybiBt
X3RvdGFsU2l6ZTsgfQorICAgIHNpemVfdCB0b3RhbFJlY3ljbGVkQXJlbmFBbGxvY2F0ZWRCeXRl
cygpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxBbGxvY2F0ZWQ7IH0KKworcHJpdmF0ZToKKyAgICAv
LyBVbmRlcmx5aW5nIGFyZW5hIHBvb2wKKyAgICBBcmVuYVBvb2wgbV9wb29sOworCisgICAgLy8g
VGhlIG1hc2sgdXNlZCB0byBzZWN1cmUgdGhlIHJlY3ljbGVkIGZyZWVsaXN0IHBvaW50ZXJzLgor
ICAgIHVpbnRwdHJfdCBtX21hc2s7CisgICAgLy8gVGhlIHJlY3ljbGVyIGFycmF5IGlzIHNwYXJz
ZSB3aXRoIHRoZSBpbmRpY2VzIGJlaW5nIG11bHRpcGxlcyBvZiB0aGUKKyAgICAvLyByb3VuZGlu
ZyBzaXplLCBzaXplb2Yodm9pZCopLCBpLmUuLCAwLCA0LCA4LCAxMiwgMTYsIDIwLCAuLi4gb24g
MzItYml0LgorICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga1JlY3ljbGVyU2hpZnQgPSAoc2l6ZW9m
KHZvaWQqKSA9PSA4KSA/IDMgOiAyOworICAgIHZvaWQqIG1fcmVjeWNsZXJzW2dNYXhSZWN5Y2xl
ZFNpemUgPj4ga1JlY3ljbGVyU2hpZnRdOworCisgICAgc2l6ZV90IG1fdG90YWxTaXplOworICAg
IHNpemVfdCBtX3RvdGFsQWxsb2NhdGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gUmVjeWNsZWRBcmVuYV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQmlkaVJ1bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Jp
ZGlSdW4uY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
QmlkaVJ1bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJCaWRpUnVuLmgiCiAjaW5jbHVkZSAiSW5saW5lQm94LmgiCi0j
aW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKKyNpbmNsdWRlICJSZWN5Y2xlZEFyZW5hLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KIApAQCAtNDMsNyArNDMsNyBAQCB2b2lkIEJpZGlSdW46OmRlc3Ryb3koKQogI2lm
bmRlZiBOREVCVUcKICAgICBpbkJpZGlSdW5EZXN0cm95ID0gdHJ1ZTsKICNlbmRpZgotICAgIFJl
bmRlckFyZW5hKiByZW5kZXJBcmVuYSA9IG1fb2JqZWN0LT5yZW5kZXJBcmVuYSgpOworICAgIFJl
Y3ljbGVkQXJlbmEqIHJlbmRlckFyZW5hID0gbV9vYmplY3QtPnJlbmRlckFyZW5hKCk7CiAgICAg
ZGVsZXRlIHRoaXM7CiAjaWZuZGVmIE5ERUJVRwogICAgIGluQmlkaVJ1bkRlc3Ryb3kgPSBmYWxz
ZTsKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBCaWRpUnVuOjpkZXN0cm95KCkKICAgICByZW5kZXJB
cmVuYS0+ZnJlZSgqcmVpbnRlcnByZXRfY2FzdDxzaXplX3QqPih0aGlzKSwgdGhpcyk7CiB9CiAK
LXZvaWQqIEJpZGlSdW46Om9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIFJlbmRlckFyZW5hKiByZW5k
ZXJBcmVuYSkKK3ZvaWQqIEJpZGlSdW46Om9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIFJlY3ljbGVk
QXJlbmEqIHJlbmRlckFyZW5hKQogewogI2lmbmRlZiBOREVCVUcKICAgICBiaWRpUnVuQ291bnRl
ci5pbmNyZW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CaWRpUnVuLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uaAkocmV2aXNp
b24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBzdHJ1Y3QgQmlkaVJ1biA6IEJpZGlDaGFyYWN0ZXJS
dW4gewogICAgIHZvaWQgZGVzdHJveSgpOwogCiAgICAgLy8gT3ZlcmxvYWRlZCBuZXcgb3BlcmF0
b3IuCi0gICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgUmVuZGVyQXJlbmEqKTsKKyAgICB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBSZWN5Y2xlZEFyZW5hKik7CiAKICAgICAvLyBPdmVy
cmlkZGVuIHRvIHByZXZlbnQgdGhlIG5vcm1hbCBkZWxldGUgZnJvbSBiZWluZyBjYWxsZWQuCiAg
ICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCosIHNpemVfdCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICNpbmNsdWRlICJJbmxpbmVGbG93Qm94LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlBhaW50SW5mby5oIgotI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCisjaW5jbHVkZSAi
UmVjeWNsZWRBcmVuYS5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUm9v
dElubGluZUJveC5oIgogCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSW5saW5lQm94OjpyZW1vdmUo
KQogICAgICAgICBwYXJlbnQoKS0+cmVtb3ZlQ2hpbGQodGhpcyk7CiB9CiAKLXZvaWQgSW5saW5l
Qm94OjpkZXN0cm95KFJlbmRlckFyZW5hKiByZW5kZXJBcmVuYSkKK3ZvaWQgSW5saW5lQm94Ojpk
ZXN0cm95KFJlY3ljbGVkQXJlbmEqIHJlbmRlckFyZW5hKQogewogI2lmbmRlZiBOREVCVUcKICAg
ICBpbklubGluZUJveERldGFjaCA9IHRydWU7CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgSW5saW5l
Qm94OjpkZXN0cm95KFJlbmRlckFyZW5hKiByZW4KICAgICByZW5kZXJBcmVuYS0+ZnJlZSgqKHNp
emVfdCAqKXRoaXMsIHRoaXMpOwogfQogCi12b2lkKiBJbmxpbmVCb3g6Om9wZXJhdG9yIG5ldyhz
aXplX3Qgc3osIFJlbmRlckFyZW5hKiByZW5kZXJBcmVuYSkKK3ZvaWQqIElubGluZUJveDo6b3Bl
cmF0b3IgbmV3KHNpemVfdCBzeiwgUmVjeWNsZWRBcmVuYSogcmVuZGVyQXJlbmEpCiB7CiAgICAg
cmV0dXJuIHJlbmRlckFyZW5hLT5hbGxvY2F0ZShzeik7CiB9CkBAIC0xODYsNyArMTg2LDcgQEAg
dm9pZCBJbmxpbmVCb3g6OmRpcnR5TGluZUJveGVzKCkKICAgICAgICAgY3Vyci0+bWFya0RpcnR5
KCk7CiB9CiAKLXZvaWQgSW5saW5lQm94OjpkZWxldGVMaW5lKFJlbmRlckFyZW5hKiBhcmVuYSkK
K3ZvaWQgSW5saW5lQm94OjpkZWxldGVMaW5lKFJlY3ljbGVkQXJlbmEqIGFyZW5hKQogewogICAg
IGlmICghbV9iaXRmaWVsZHMuZXh0cmFjdGVkKCkgJiYgbV9yZW5kZXJlci0+aXNCb3goKSkKICAg
ICAgICAgdG9SZW5kZXJCb3gobV9yZW5kZXJlciktPnNldElubGluZUJveFdyYXBwZXIoMCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCShyZXZpc2lvbiAxMzMyNDApCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgJKHdvcmtpbmcgY29weSkKQEAg
LTYzLDkgKzYzLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+SW5saW5lQm94KCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGVzdHJveShSZW5kZXJBcmVuYSopOworICAgIHZpcnR1YWwgdm9pZCBk
ZXN0cm95KFJlY3ljbGVkQXJlbmEqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVMaW5lKFJl
bmRlckFyZW5hKik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUxpbmUoUmVjeWNsZWRBcmVuYSop
OwogICAgIHZpcnR1YWwgdm9pZCBleHRyYWN0TGluZSgpOwogICAgIHZpcnR1YWwgdm9pZCBhdHRh
Y2hMaW5lKCk7CiAKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBu
b2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0
b20pOwogCiAgICAgLy8gT3ZlcmxvYWRlZCBuZXcgb3BlcmF0b3IuCi0gICAgdm9pZCogb3BlcmF0
b3IgbmV3KHNpemVfdCwgUmVuZGVyQXJlbmEqKTsKKyAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90LCBSZWN5Y2xlZEFyZW5hKik7CiAKICAgICAvLyBPdmVycmlkZGVuIHRvIHByZXZlbnQgdGhl
IG5vcm1hbCBkZWxldGUgZnJvbSBiZWluZyBjYWxsZWQuCiAgICAgdm9pZCBvcGVyYXRvciBkZWxl
dGUodm9pZCosIHNpemVfdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lRmxvd0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw3ICsyMDIsNyBAQCB2
b2lkIElubGluZUZsb3dCb3g6OnJlbW92ZUNoaWxkKElubGluZUJvCiAgICAgY2hlY2tDb25zaXN0
ZW5jeSgpOwogfQogCi12b2lkIElubGluZUZsb3dCb3g6OmRlbGV0ZUxpbmUoUmVuZGVyQXJlbmEq
IGFyZW5hKQordm9pZCBJbmxpbmVGbG93Qm94OjpkZWxldGVMaW5lKFJlY3ljbGVkQXJlbmEqIGFy
ZW5hKQogewogICAgIElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkKCk7CiAgICAgSW5saW5l
Qm94KiBuZXh0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgdm9pZCBhZGRUb0xpbmUoSW5saW5lQm94KiBjaGlsZCk7Ci0gICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUxpbmUoUmVuZGVyQXJlbmEqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlTGlu
ZShSZWN5Y2xlZEFyZW5hKik7CiAgICAgdmlydHVhbCB2b2lkIGV4dHJhY3RMaW5lKCk7CiAgICAg
dmlydHVhbCB2b2lkIGF0dGFjaExpbmUoKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UG9zaXRp
b24oZmxvYXQgZHgsIGZsb2F0IGR5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUsOCBA
QAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUGFpbnRJbmZvLmgiCisjaW5jbHVkZSAiUmVjeWNsZWRBcmVuYS5oIgogI2luY2x1ZGUgIlJl
bmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgogI2luY2x1
ZGUgIlJlbmRlckJSLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5k
ZXJDb21iaW5lVGV4dC5oIgpAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0
eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBJbmxpbmVUZXh0Qm94KiwgTGF5b3V0UmVjdD4gSW5s
aW5lVGV4dEJveE92ZXJmbG93TWFwOwogc3RhdGljIElubGluZVRleHRCb3hPdmVyZmxvd01hcCog
Z1RleHRCb3hlc1dpdGhPdmVyZmxvdzsKIAotdm9pZCBJbmxpbmVUZXh0Qm94OjpkZXN0cm95KFJl
bmRlckFyZW5hKiBhcmVuYSkKK3ZvaWQgSW5saW5lVGV4dEJveDo6ZGVzdHJveShSZWN5Y2xlZEFy
ZW5hKiBhcmVuYSkKIHsKICAgICBpZiAoIWtub3duVG9IYXZlTm9PdmVyZmxvdygpICYmIGdUZXh0
Qm94ZXNXaXRoT3ZlcmZsb3cpCiAgICAgICAgIGdUZXh0Qm94ZXNXaXRoT3ZlcmZsb3ctPnJlbW92
ZSh0aGlzKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBMYXlvdXRSZWN0IElubGluZVRleHRCb3g6Omxv
Y2FsU2VsZWN0aW9uCiAgICAgcmV0dXJuIExheW91dFJlY3QodG9wUG9pbnQsIExheW91dFNpemUo
d2lkdGgsIGhlaWdodCkpOwogfQogCi12b2lkIElubGluZVRleHRCb3g6OmRlbGV0ZUxpbmUoUmVu
ZGVyQXJlbmEqIGFyZW5hKQordm9pZCBJbmxpbmVUZXh0Qm94OjpkZWxldGVMaW5lKFJlY3ljbGVk
QXJlbmEqIGFyZW5hKQogewogICAgIHRvUmVuZGVyVGV4dChyZW5kZXJlcigpKS0+cmVtb3ZlVGV4
dEJveCh0aGlzKTsKICAgICBkZXN0cm95KGFyZW5hKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KFJl
bmRlckFyZW5hKik7CisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koUmVjeWNsZWRBcmVuYSopOwog
CiAgICAgSW5saW5lVGV4dEJveCogcHJldlRleHRCb3goKSBjb25zdCB7IHJldHVybiBtX3ByZXZU
ZXh0Qm94OyB9CiAgICAgSW5saW5lVGV4dEJveCogbmV4dFRleHRCb3goKSBjb25zdCB7IHJldHVy
biBtX25leHRUZXh0Qm94OyB9CkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgIFJlbmRl
clRleHQqIHRleHRSZW5kZXJlcigpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVMaW5lKFJlbmRlckFyZW5hKik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUxpbmUo
UmVjeWNsZWRBcmVuYSopOwogICAgIHZpcnR1YWwgdm9pZCBleHRyYWN0TGluZSgpOwogICAgIHZp
cnR1YWwgdm9pZCBhdHRhY2hMaW5lKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MYXlvdXRTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xheW91dFN0YXRlLmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xheW91dFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAog
I2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAKICNpbmNsdWRlICJDb2x1bW5JbmZvLmgiCi0jaW5j
bHVkZSAiUmVuZGVyQXJlbmEuaCIKKyNpbmNsdWRlICJSZWN5Y2xlZEFyZW5hLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1
ZGUgIlJlbmRlckxheWVyLmgiCkBAIC0xNzEsNyArMTcxLDcgQEAgTGF5b3V0U3RhdGU6OkxheW91
dFN0YXRlKFJlbmRlck9iamVjdCogcgogc3RhdGljIGJvb2wgaW5MYXlvdXRTdGF0ZURlc3Ryb3k7
CiAjZW5kaWYKIAotdm9pZCBMYXlvdXRTdGF0ZTo6ZGVzdHJveShSZW5kZXJBcmVuYSogcmVuZGVy
QXJlbmEpCit2b2lkIExheW91dFN0YXRlOjpkZXN0cm95KFJlY3ljbGVkQXJlbmEqIHJlbmRlckFy
ZW5hKQogewogI2lmbmRlZiBOREVCVUcKICAgICBpbkxheW91dFN0YXRlRGVzdHJveSA9IHRydWU7
CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBMYXlvdXRTdGF0ZTo6ZGVzdHJveShSZW5kZXJBcmVu
YSogcgogICAgIHJlbmRlckFyZW5hLT5mcmVlKCooc2l6ZV90Kil0aGlzLCB0aGlzKTsKIH0KIAot
dm9pZCogTGF5b3V0U3RhdGU6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIFJlbmRlckFyZW5hKiBy
ZW5kZXJBcmVuYSkKK3ZvaWQqIExheW91dFN0YXRlOjpvcGVyYXRvciBuZXcoc2l6ZV90IHN6LCBS
ZWN5Y2xlZEFyZW5hKiByZW5kZXJBcmVuYSkKIHsKICAgICByZXR1cm4gcmVuZGVyQXJlbmEtPmFs
bG9jYXRlKHN6KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5o
CShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3Rh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFJlbmRlckFyZW5hOworY2xhc3MgUmVjeWNsZWRBcmVuYTsKIGNsYXNzIFJl
bmRlckJsb2NrOwogY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgUmVuZGVyT2JqZWN0OwpAQCAtNjks
MTAgKzY5LDEwIEBAIHB1YmxpYzoKICAgICBMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSosIFJlbmRl
ckJveCosIGNvbnN0IExheW91dFNpemUmIG9mZnNldCwgTGF5b3V0VW5pdCBwYWdlSGVpZ2h0LCBi
b29sIHBhZ2VIZWlnaHRDaGFuZ2VkLCBDb2x1bW5JbmZvKik7CiAgICAgTGF5b3V0U3RhdGUoUmVu
ZGVyT2JqZWN0Kik7CiAKLSAgICB2b2lkIGRlc3Ryb3koUmVuZGVyQXJlbmEqKTsKKyAgICB2b2lk
IGRlc3Ryb3koUmVjeWNsZWRBcmVuYSopOwogCiAgICAgLy8gT3ZlcmxvYWRlZCBuZXcgb3BlcmF0
b3IuCi0gICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgUmVuZGVyQXJlbmEqKTsKKyAgICB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBSZWN5Y2xlZEFyZW5hKik7CiAKICAgICAvLyBPdmVy
cmlkZGVuIHRvIHByZXZlbnQgdGhlIG5vcm1hbCBkZWxldGUgZnJvbSBiZWluZyBjYWxsZWQuCiAg
ICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCosIHNpemVfdCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQXJlbmEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJBcmVuYS5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcmVuYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4KLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBQb3J0aW9ucyBhcmUgQ29weXJpZ2h0IChDKSAxOTk4
IE5ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0g
KgotICogQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNl
ZCB1bmRlciB0aGUgdGVybXMKLSAqIG9mIGVpdGhlciB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5z
ZSBWZXJzaW9uIDEuMSwgZm91bmQgYXQKLSAqIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLyAo
dGhlICJNUEwiKSBvciB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIFZlcnNpb24g
Mi4wLCBmb3VuZCBhdCBodHRwOi8vd3d3LmZzZi5vcmcvY29weWxlZnQvZ3BsLmh0bWwKLSAqICh0
aGUgIkdQTCIpLCBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBNUEwgb3IgdGhl
IEdQTCBhcmUKLSAqIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aG9zZSBhYm92ZS4gIElmIHlvdSB3
aXNoIHRvIGFsbG93IHVzZSBvZiB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5IHVu
ZGVyIHRoZSB0ZXJtcyBvZiBvbmUgb2YgdGhvc2UgdHdvCi0gKiBsaWNlbnNlcyAodGhlIE1QTCBv
ciB0aGUgR1BMKSBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UgeW91cgotICogdmVyc2lv
biBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIExHUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24gYnkK
LSAqIGRlbGV0aW5ndGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRo
ZSBub3RpY2UgYW5kCi0gKiBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBNUEwgb3Ig
dGhlIEdQTCwgYXMgdGhlIGNhc2UgbWF5IGJlLgotICogSWYgeW91IGRvIG5vdCBkZWxldGUgdGhl
IHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91cgotICogdmVyc2lvbiBv
ZiB0aGlzIGZpbGUgdW5kZXIgYW55IG9mIHRoZSBMR1BMLCB0aGUgTVBMIG9yIHRoZSBHUEwuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCi0KLSNp
bmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgotCi0jZGVmaW5lIFJPVU5EVVAoeCwgeSkgKCgoKHgpKygoeSktMSkpLyh5KSkq
KHkpKQotCi0jaWZkZWYgTkRFQlVHCi1zdGF0aWMgdm9pZCogTWFza1B0cih2b2lkKiBwLCB1aW50
cHRyX3QgbWFzaykKLXsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KHApIF4gbWFzayk7Ci19Ci0jZW5kaWYKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi0jaWZuZGVmIE5ERUJVRwotCi1jb25zdCBpbnQgc2lnbmF0dXJlID0gMHhE
QkEwMEFFQTsKLWNvbnN0IGludCBzaWduYXR1cmVEZWFkID0gMHhEQkEwMEFFRDsKLQotdHlwZWRl
ZiBzdHJ1Y3QgewotICAgIFJlbmRlckFyZW5hKiBhcmVuYTsKLSAgICBzaXplX3Qgc2l6ZTsKLSAg
ICBpbnQgc2lnbmF0dXJlOwotfSBSZW5kZXJBcmVuYURlYnVnSGVhZGVyOwotCi1zdGF0aWMgY29u
c3Qgc2l6ZV90IGRlYnVnSGVhZGVyU2l6ZSA9IEFSRU5BX0FMSUdOKHNpemVvZihSZW5kZXJBcmVu
YURlYnVnSGVhZGVyKSk7Ci0KLSNlbmRpZgotCi1SZW5kZXJBcmVuYTo6UmVuZGVyQXJlbmEodW5z
aWduZWQgYXJlbmFTaXplKQotICAgIDogbV90b3RhbFNpemUoMCkKLSAgICAsIG1fdG90YWxBbGxv
Y2F0ZWQoMCkKLXsKLSAgICBBU1NFUlQoYXJlbmFTaXplID4gc2l6ZW9mKEFyZW5hKSArIEFSRU5B
X0FMSUdOX01BU0spOwotICAgIC8vIFRoZSB1bmRlcmx5aW5nIEFyZW5hIGNsYXNzIGFsbG9jYXRl
cyBzb21lIG1ldGFkYXRhIG9uIHRvcCBvZiBvdXIKLSAgICAvLyByZXF1ZXN0ZWQgc2l6ZS4gRmFj
dG9yIHRoaXMgaW4gc28gdGhhdCB3ZSBjYW4gZ2V0IHBlcmZlY3QgcG93ZXItb2YtdHdvCi0gICAg
Ly8gYWxsb2NhdGlvbiBzaXplcyBwYXNzZWQgdG8gdGhlIHVuZGVybHlpbmcgbWFsbG9jKCkgY2Fs
bC4KLSAgICBhcmVuYVNpemUgLT0gKHNpemVvZihBcmVuYSkgKyBBUkVOQV9BTElHTl9NQVNLKTsK
LSAgICAvLyBJbml0aWFsaXplIHRoZSBhcmVuYSBwb29sCi0gICAgSU5JVF9BUkVOQV9QT09MKCZt
X3Bvb2wsICJSZW5kZXJBcmVuYSIsIGFyZW5hU2l6ZSk7Ci0KLSAgICAvLyBaZXJvIG91dCB0aGUg
cmVjeWNsZXJzIGFycmF5Ci0gICAgbWVtc2V0KG1fcmVjeWNsZXJzLCAwLCBzaXplb2YobV9yZWN5
Y2xlcnMpKTsKLQotICAgIC8vIE1hc2sgZnJlZWxpc3QgcG9pbnRlcnMgdG8gZGV0ZWN0IGNvcnJ1
cHRpb24gYW5kIHN0b3AgZnJlZWxpc3Qgc3ByYXlpbmcuCi0gICAgLy8gV2UgdXNlIGFuIGFyYml0
cmF5IGZ1bmN0aW9uIGFuZCByZWx5IG9uIEFTTFIgdG8gcmFuZG9taXplIGl0LgotICAgIC8vIFRo
ZSBmaXJzdCB2YWx1ZSBpbiBSZW5kZXJPYmplY3QgKG9yIGFueSBjbGFzcykgaXMgYSB2dGFibGUg
cG9pbnRlciwgd2hpY2gKLSAgICAvLyBhbHdheXMgb3ZlcmxhcHMgd2l0aCB0aGUgbmV4dCBwb2lu
dGVyLiBUaGlzIGNoYW5nZSBndWFyYW50ZWVzIHRoYXQgdGhlCi0gICAgLy8gbWFza2VkIHZ0YWJs
ZS9uZXh0IHBvaW50ZXIgd2lsbCBuZXZlciBwb2ludCB0byB2YWxpZCBtZW1vcnkuIFNvLCB3ZQot
ICAgIC8vIHNob3VsZCBpbW1lZGlhdGVseSBjcmFzaCBvbiB0aGUgZmlyc3QgaW52YWxpZCB2dGFi
bGUgYWNjZXNzIGZvciBhIHN0YWxlCi0gICAgLy8gUmVuZGVyT2JqZWN0IHBvaW50ZXIuCi0gICAg
Ly8gU2VlIGh0dHA6Ly9kb3dubG9hZC5jcm93ZHN0cmlrZS5jb20vcGFwZXJzL2hlcy1leHBsb2l0
aW5nLWEtY29hbG1pbmUucGRmLgotCi0gICAgLy8gVGhlIGJvdHRvbSBiaXRzIGFyZSBwcmVkaWN0
YWJsZSBiZWNhdXNlIHRoZSBiaW5hcnkgaXMgbG9hZGVkIG9uIGEKLSAgICAvLyBib3VuZGFyeS4g
VGhpcyBqdXN0IHNoaWZ0cyBtb3N0IG9mIHRob3NlIHByZWRpY3RhYmxlIGJpdHMgb3V0LgotICAg
IG1fbWFzayA9IH4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KFdURjo6ZmFzdE1hbGxvYykg
Pj4gMTMpOwotfQotCi1SZW5kZXJBcmVuYTo6flJlbmRlckFyZW5hKCkKLXsKLSAgICBGaW5pc2hB
cmVuYVBvb2woJm1fcG9vbCk7Ci19Ci0KLXZvaWQqIFJlbmRlckFyZW5hOjphbGxvY2F0ZShzaXpl
X3Qgc2l6ZSkKLXsKLSAgICBBU1NFUlQoc2l6ZSA8PSBnTWF4UmVjeWNsZWRTaXplIC0gMzIpOwot
ICAgIG1fdG90YWxTaXplICs9IHNpemU7Ci0KLSNpZmRlZiBBRERSRVNTX1NBTklUSVpFUgotICAg
IHJldHVybiA6Om1hbGxvYyhzaXplKTsKLSNlbGlmICFkZWZpbmVkKE5ERUJVRykKLSAgICAvLyBV
c2Ugc3RhbmRhcmQgbWFsbG9jIHNvIHRoYXQgbWVtb3J5IGRlYnVnZ2luZyB0b29scyB3b3JrLgot
ICAgIEFTU0VSVCh0aGlzKTsKLSAgICB2b2lkKiBibG9jayA9IDo6bWFsbG9jKGRlYnVnSGVhZGVy
U2l6ZSArIHNpemUpOwotICAgIFJlbmRlckFyZW5hRGVidWdIZWFkZXIqIGhlYWRlciA9IHN0YXRp
Y19jYXN0PFJlbmRlckFyZW5hRGVidWdIZWFkZXIqPihibG9jayk7Ci0gICAgaGVhZGVyLT5hcmVu
YSA9IHRoaXM7Ci0gICAgaGVhZGVyLT5zaXplID0gc2l6ZTsKLSAgICBoZWFkZXItPnNpZ25hdHVy
ZSA9IHNpZ25hdHVyZTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KGJsb2NrKSArIGRl
YnVnSGVhZGVyU2l6ZTsKLSNlbHNlCi0gICAgLy8gRW5zdXJlIHdlIGhhdmUgY29ycmVjdCBhbGln
bm1lbnQgZm9yIHBvaW50ZXJzLiAgSW1wb3J0YW50IGZvciBUcnU2NAotICAgIHNpemUgPSBST1VO
RFVQKHNpemUsIHNpemVvZih2b2lkKikpOwotCi0gICAgY29uc3Qgc2l6ZV90IGluZGV4ID0gc2l6
ZSA+PiBrUmVjeWNsZXJTaGlmdDsKLQotICAgIHZvaWQqIHJlc3VsdCA9IG1fcmVjeWNsZXJzW2lu
ZGV4XTsKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIC8vIE5lZWQgdG8gbW92ZSB0byB0aGUg
bmV4dCBvYmplY3QKLSAgICAgICAgdm9pZCogbmV4dCA9IE1hc2tQdHIoKigodm9pZCoqKXJlc3Vs
dCksIG1fbWFzayk7Ci0gICAgICAgIG1fcmVjeWNsZXJzW2luZGV4XSA9IG5leHQ7Ci0gICAgfQot
Ci0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgLy8gQWxsb2NhdGUgYSBuZXcgY2h1bmsgZnJv
bSB0aGUgYXJlbmEKLSAgICAgICAgdW5zaWduZWQgYnl0ZXNBbGxvY2F0ZWQgPSAwOwotICAgICAg
ICBBUkVOQV9BTExPQ0FURShyZXN1bHQsICZtX3Bvb2wsIHNpemUsICZieXRlc0FsbG9jYXRlZCk7
Ci0gICAgICAgIG1fdG90YWxBbGxvY2F0ZWQgKz0gYnl0ZXNBbGxvY2F0ZWQ7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHJlc3VsdDsKLSNlbmRpZgotfQotCi12b2lkIFJlbmRlckFyZW5hOjpmcmVlKHNp
emVfdCBzaXplLCB2b2lkKiBwdHIpCi17Ci0gICAgQVNTRVJUKHNpemUgPD0gZ01heFJlY3ljbGVk
U2l6ZSAtIDMyKTsKLSAgICBtX3RvdGFsU2l6ZSAtPSBzaXplOwotCi0jaWZkZWYgQUREUkVTU19T
QU5JVElaRVIKLSAgICA6OmZyZWUocHRyKTsKLSNlbGlmICFkZWZpbmVkKE5ERUJVRykKLSAgICAv
LyBVc2Ugc3RhbmRhcmQgZnJlZSBzbyB0aGF0IG1lbW9yeSBkZWJ1Z2dpbmcgdG9vbHMgd29yay4K
LSAgICB2b2lkKiBibG9jayA9IHN0YXRpY19jYXN0PGNoYXIqPihwdHIpIC0gZGVidWdIZWFkZXJT
aXplOwotICAgIFJlbmRlckFyZW5hRGVidWdIZWFkZXIqIGhlYWRlciA9IHN0YXRpY19jYXN0PFJl
bmRlckFyZW5hRGVidWdIZWFkZXIqPihibG9jayk7Ci0gICAgQVNTRVJUKGhlYWRlci0+c2lnbmF0
dXJlID09IHNpZ25hdHVyZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChzaXplLCBoZWFkZXItPnNpemUg
PT0gc2l6ZSk7Ci0gICAgQVNTRVJUKGhlYWRlci0+YXJlbmEgPT0gdGhpcyk7Ci0gICAgaGVhZGVy
LT5zaWduYXR1cmUgPSBzaWduYXR1cmVEZWFkOwotICAgIDo6ZnJlZShibG9jayk7Ci0jZWxzZQot
ICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGNvcnJlY3QgYWxpZ25tZW50IGZvciBwb2ludGVycy4gIElt
cG9ydGFudCBmb3IgVHJ1NjQKLSAgICBzaXplID0gUk9VTkRVUChzaXplLCBzaXplb2Yodm9pZCop
KTsKLQotICAgIGNvbnN0IHNpemVfdCBpbmRleCA9IHNpemUgPj4ga1JlY3ljbGVyU2hpZnQ7Ci0g
ICAgdm9pZCogY3VycmVudFRvcCA9IG1fcmVjeWNsZXJzW2luZGV4XTsKLSAgICBtX3JlY3ljbGVy
c1tpbmRleF0gPSBwdHI7Ci0gICAgKigodm9pZCoqKXB0cikgPSBNYXNrUHRyKGN1cnJlbnRUb3As
IG1fbWFzayk7Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckFyZW5hLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckFyZW5hLmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcmVuYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4KLSAqCi0gKiBQb3J0aW9ucyBhcmUgQ29weXJpZ2h0IChDKSAxOTk4IE5ldHNjYXBlIENvbW11
bmljYXRpb25zIENvcnBvcmF0aW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVy
c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwot
ICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKgotICogQWx0ZXJuYXRp
dmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVy
bXMKLSAqIG9mIGVpdGhlciB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSwg
Zm91bmQgYXQKLSAqIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLyAodGhlICJNUEwiKSBvciB0
aGUgR05VIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIFZlcnNpb24gMi4wLCBmb3VuZCBhdCBo
dHRwOi8vd3d3LmZzZi5vcmcvY29weWxlZnQvZ3BsLmh0bWwKLSAqICh0aGUgIkdQTCIpLCBpbiB3
aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBNUEwgb3IgdGhlIEdQTCBhcmUKLSAqIGFw
cGxpY2FibGUgaW5zdGVhZCBvZiB0aG9zZSBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHVz
ZSBvZiB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5IHVuZGVyIHRoZSB0ZXJtcyBv
ZiBvbmUgb2YgdGhvc2UgdHdvCi0gKiBsaWNlbnNlcyAodGhlIE1QTCBvciB0aGUgR1BMKSBhbmQg
bm90IHRvIGFsbG93IG90aGVycyB0byB1c2UgeW91cgotICogdmVyc2lvbiBvZiB0aGlzIGZpbGUg
dW5kZXIgdGhlIExHUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24gYnkKLSAqIGRlbGV0aW5ndGhl
IHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UgYW5kCi0g
KiBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBNUEwgb3IgdGhlIEdQTCwgYXMgdGhl
IGNhc2UgbWF5IGJlLgotICogSWYgeW91IGRvIG5vdCBkZWxldGUgdGhlIHByb3Zpc2lvbnMgYWJv
dmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91cgotICogdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5k
ZXIgYW55IG9mIHRoZSBMR1BMLCB0aGUgTVBMIG9yIHRoZSBHUEwuCi0gKi8KLQotI2lmbmRlZiBS
ZW5kZXJBcmVuYV9oCi0jZGVmaW5lIFJlbmRlckFyZW5hX2gKLQotI2luY2x1ZGUgIkFyZW5hLmgi
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGdNYXhS
ZWN5Y2xlZFNpemUgPSAxMDI0OwotCi1jbGFzcyBSZW5kZXJBcmVuYSB7Ci0gICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUmVuZGVyQXJlbmEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzoKLSAgICBSZW5kZXJBcmVuYSh1bnNpZ25lZCBhcmVuYVNpemUgPSA4MTkyKTsKLSAgICB+UmVu
ZGVyQXJlbmEoKTsKLQotICAgIC8vIE1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9ucwotICAgIHZv
aWQqIGFsbG9jYXRlKHNpemVfdCk7Ci0gICAgdm9pZCBmcmVlKHNpemVfdCwgdm9pZCopOwotCi0g
ICAgc2l6ZV90IHRvdGFsUmVuZGVyQXJlbmFTaXplKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNp
emU7IH0KLSAgICBzaXplX3QgdG90YWxSZW5kZXJBcmVuYUFsbG9jYXRlZEJ5dGVzKCkgY29uc3Qg
eyByZXR1cm4gbV90b3RhbEFsbG9jYXRlZDsgfQotCi1wcml2YXRlOgotICAgIC8vIFVuZGVybHlp
bmcgYXJlbmEgcG9vbAotICAgIEFyZW5hUG9vbCBtX3Bvb2w7Ci0KLSAgICAvLyBUaGUgbWFzayB1
c2VkIHRvIHNlY3VyZSB0aGUgcmVjeWNsZWQgZnJlZWxpc3QgcG9pbnRlcnMuCi0gICAgdWludHB0
cl90IG1fbWFzazsKLSAgICAvLyBUaGUgcmVjeWNsZXIgYXJyYXkgaXMgc3BhcnNlIHdpdGggdGhl
IGluZGljZXMgYmVpbmcgbXVsdGlwbGVzIG9mIHRoZQotICAgIC8vIHJvdW5kaW5nIHNpemUsIHNp
emVvZih2b2lkKiksIGkuZS4sIDAsIDQsIDgsIDEyLCAxNiwgMjAsIC4uLiBvbiAzMi1iaXQuCi0g
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBrUmVjeWNsZXJTaGlmdCA9IChzaXplb2Yodm9pZCopID09
IDgpID8gMyA6IDI7Ci0gICAgdm9pZCogbV9yZWN5Y2xlcnNbZ01heFJlY3ljbGVkU2l6ZSA+PiBr
UmVjeWNsZXJTaGlmdF07Ci0KLSAgICBzaXplX3QgbV90b3RhbFNpemU7Ci0gICAgc2l6ZV90IG1f
dG90YWxBbGxvY2F0ZWQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBSZW5kZXJBcmVuYV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvci5oIgogI2luY2x1ZGUg
IklubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiUmVuZGVy
QXJlbmEuaCIKKyNpbmNsdWRlICJSZWN5Y2xlZEFyZW5hLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ29t
YmluZVRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVu
ZGVySW5saW5lLmgiCkBAIC0xMjk0LDcgKzEyOTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91
c2VzUmVwYWludEJvdW5kczsKIH07CiAKLXN0YXRpYyB2b2lkIGRlbGV0ZUxpbmVSYW5nZShMaW5l
TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBSZW5kZXJBcmVuYSogYXJlbmEsIFJvb3RJbmxpbmVC
b3gqIHN0YXJ0TGluZSwgUm9vdElubGluZUJveCogc3RvcExpbmUgPSAwKQorc3RhdGljIHZvaWQg
ZGVsZXRlTGluZVJhbmdlKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIFJlY3ljbGVkQXJl
bmEqIGFyZW5hLCBSb290SW5saW5lQm94KiBzdGFydExpbmUsIFJvb3RJbmxpbmVCb3gqIHN0b3BM
aW5lID0gMCkKIHsKICAgICBSb290SW5saW5lQm94KiBib3hUb0RlbGV0ZSA9IHN0YXJ0TGluZTsK
ICAgICB3aGlsZSAoYm94VG9EZWxldGUgJiYgYm94VG9EZWxldGUgIT0gc3RvcExpbmUpIHsKQEAg
LTE4MTIsNyArMTgxMiw3IEBAIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrOjpkZXRlcm1pbmVT
dGEKICAgICBpZiAobGF5b3V0U3RhdGUuaXNGdWxsTGF5b3V0KCkpIHsKICAgICAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGp1c3QgY2FsbCBkZWxldGVMaW5lQm94VHJlZSwgYnV0IHRoYXQgY2F1
c2VzCiAgICAgICAgIC8vIGNyYXNoZXMgZm9yIGZhc3QvcmVwYWludCB0ZXN0cy4KLSAgICAgICAg
UmVuZGVyQXJlbmEqIGFyZW5hID0gcmVuZGVyQXJlbmEoKTsKKyAgICAgICAgUmVjeWNsZWRBcmVu
YSogYXJlbmEgPSByZW5kZXJBcmVuYSgpOwogICAgICAgICBjdXJyID0gZmlyc3RSb290Qm94KCk7
CiAgICAgICAgIHdoaWxlIChjdXJyKSB7CiAgICAgICAgICAgICAvLyBOb3RlOiBUaGlzIHVzZXMg
bmV4dFJvb3RCb3goKSBpbnN0ZWQgb2YgbmV4dExpbmVCb3goKSBsaWtlIGRlbGV0ZUxpbmVCb3hU
cmVlIGRvZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2
aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKLSNpbmNsdWRlICJSZW5kZXJB
cmVuYS5oIgorI2luY2x1ZGUgIlJlY3ljbGVkQXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJCb3hS
ZWdpb25JbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmxleGlibGVCb3guaCIKICNpbmNsdWRlICJS
ZW5kZXJGbG93VGhyZWFkLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNs
dWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgorI2luY2x1ZGUgIlJlY3ljbGVk
QXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlckZsb3dU
aHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJHZW9tZXRyeU1hcC5oIgpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NSw3ICs3NSw3IEBACiAjaW5jbHVkZSAiT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgotI2luY2x1ZGUg
IlJlbmRlckFyZW5hLmgiCisjaW5jbHVkZSAiUmVjeWNsZWRBcmVuYS5oIgogI2luY2x1ZGUgIlJl
bmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJS
ZW5kZXJNYXJxdWVlLmgiCkBAIC0xMzAyLDcgKzEzMDIsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpi
ZWdpblRyYW5zcGFyZW5jeUxheWVyCiAgICAgfQogfQogCi12b2lkKiBSZW5kZXJMYXllcjo6b3Bl
cmF0b3IgbmV3KHNpemVfdCBzeiwgUmVuZGVyQXJlbmEqIHJlbmRlckFyZW5hKQordm9pZCogUmVu
ZGVyTGF5ZXI6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIFJlY3ljbGVkQXJlbmEqIHJlbmRlckFy
ZW5hKQogewogICAgIHJldHVybiByZW5kZXJBcmVuYS0+YWxsb2NhdGUoc3opOwogfQpAQCAtMTMx
Myw3ICsxMzEzLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6b3BlcmF0b3IgZGVsZXRlKHZvaWQqIAog
ICAgICooc2l6ZV90ICopcHRyID0gc3o7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmRlc3Ryb3ko
UmVuZGVyQXJlbmEqIHJlbmRlckFyZW5hKQordm9pZCBSZW5kZXJMYXllcjo6ZGVzdHJveShSZWN5
Y2xlZEFyZW5hKiByZW5kZXJBcmVuYSkKIHsKICAgICBkZWxldGUgdGhpczsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MjEsOCArNjIxLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBPdmVybG9hZGVkIG5ldyBv
cGVyYXRvci4gRGVyaXZlZCBjbGFzc2VzIG11c3Qgb3ZlcnJpZGUgb3BlcmF0b3IgbmV3Ci0gICAg
Ly8gaW4gb3JkZXIgdG8gYWxsb2NhdGUgb3V0IG9mIHRoZSBSZW5kZXJBcmVuYS4KLSAgICB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90LCBSZW5kZXJBcmVuYSopOworICAgIC8vIGluIG9yZGVyIHRv
IGFsbG9jYXRlIG91dCBvZiB0aGUgUmVjeWNsZWRBcmVuYS4KKyAgICB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90LCBSZWN5Y2xlZEFyZW5hKik7CiAKICAgICAvLyBPdmVycmlkZGVuIHRvIHByZXZl
bnQgdGhlIG5vcm1hbCBkZWxldGUgZnJvbSBiZWluZyBjYWxsZWQuCiAgICAgdm9pZCBvcGVyYXRv
ciBkZWxldGUodm9pZCosIHNpemVfdCk7CkBAIC04ODYsOCArODg2LDggQEAgcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOwogICAgIGZyaWVuZCBjbGFzcyBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0OwogCi0gICAgLy8gT25seSBzYWZlIHRvIGNhbGwgZnJvbSBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6ZGVzdHJveUxheWVyKFJlbmRlckFyZW5hKikKLSAgICB2b2lk
IGRlc3Ryb3koUmVuZGVyQXJlbmEqKTsKKyAgICAvLyBPbmx5IHNhZmUgdG8gY2FsbCBmcm9tIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpkZXN0cm95TGF5ZXIoUmVjeWNsZWRBcmVuYSopCisgICAgdm9p
ZCBkZXN0cm95KFJlY3ljbGVkQXJlbmEqKTsKIAogICAgIExheW91dFVuaXQgb3ZlcmZsb3dUb3Ao
KSBjb25zdDsKICAgICBMYXlvdXRVbml0IG92ZXJmbG93Qm90dG9tKCkgY29uc3Q7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAJKHJldmlz
aW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJIaXRUZXN0
UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIlBhaW50SW5m
by5oIgotI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCisjaW5jbHVkZSAiUmVjeWNsZWRBcmVuYS5o
IgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNp
bmNsdWRlICJSb290SW5saW5lQm94LmgiCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgUmVuZGVyTGlu
ZUJveExpc3Q6OmFwcGVuZExpbmVCb3goSW4KICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiB9CiAK
LXZvaWQgUmVuZGVyTGluZUJveExpc3Q6OmRlbGV0ZUxpbmVCb3hUcmVlKFJlbmRlckFyZW5hKiBh
cmVuYSkKK3ZvaWQgUmVuZGVyTGluZUJveExpc3Q6OmRlbGV0ZUxpbmVCb3hUcmVlKFJlY3ljbGVk
QXJlbmEqIGFyZW5hKQogewogICAgIElubGluZUZsb3dCb3gqIGxpbmUgPSBtX2ZpcnN0TGluZUJv
eDsKICAgICBJbmxpbmVGbG93Qm94KiBuZXh0TGluZTsKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lk
IFJlbmRlckxpbmVCb3hMaXN0OjpyZW1vdmVMaW5lQm94KEluCiAgICAgY2hlY2tDb25zaXN0ZW5j
eSgpOwogfQogCi12b2lkIFJlbmRlckxpbmVCb3hMaXN0OjpkZWxldGVMaW5lQm94ZXMoUmVuZGVy
QXJlbmEqIGFyZW5hKQordm9pZCBSZW5kZXJMaW5lQm94TGlzdDo6ZGVsZXRlTGluZUJveGVzKFJl
Y3ljbGVkQXJlbmEqIGFyZW5hKQogewogICAgIGlmIChtX2ZpcnN0TGluZUJveCkgewogICAgICAg
ICBJbmxpbmVGbG93Qm94KiBuZXh0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCb3hMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpbmVCb3hMaXN0LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1
Myw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kTGluZUJveChJbmxpbmVGbG93Qm94Kik7
CiAKLSAgICB2b2lkIGRlbGV0ZUxpbmVCb3hUcmVlKFJlbmRlckFyZW5hKik7Ci0gICAgdm9pZCBk
ZWxldGVMaW5lQm94ZXMoUmVuZGVyQXJlbmEqKTsKKyAgICB2b2lkIGRlbGV0ZUxpbmVCb3hUcmVl
KFJlY3ljbGVkQXJlbmEqKTsKKyAgICB2b2lkIGRlbGV0ZUxpbmVCb3hlcyhSZWN5Y2xlZEFyZW5h
Kik7CiAKICAgICB2b2lkIGV4dHJhY3RMaW5lQm94KElubGluZUZsb3dCb3gqKTsKICAgICB2b2lk
IGF0dGFjaExpbmVCb3goSW5saW5lRmxvd0JveCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0
Miw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgorI2luY2x1ZGUg
IlJlY3ljbGVkQXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJDb3VudGVyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyRmxleGlibGVC
b3guaCIKQEAgLTEyMCw3ICsxMjAsNyBAQCBib29sIFJlbmRlck9iamVjdDo6c19hZmZlY3RzUGFy
ZW50QmxvY2sgCiAKIFJlbmRlck9iamVjdEFuY2VzdG9yTGluZWJveERpcnR5U2V0KiBSZW5kZXJP
YmplY3Q6OnNfYW5jZXN0b3JMaW5lYm94RGlydHlTZXQgPSAwOwogCi12b2lkKiBSZW5kZXJPYmpl
Y3Q6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIFJlbmRlckFyZW5hKiByZW5kZXJBcmVuYSkKK3Zv
aWQqIFJlbmRlck9iamVjdDo6b3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgUmVjeWNsZWRBcmVuYSog
cmVuZGVyQXJlbmEpCiB7CiAgICAgcmV0dXJuIHJlbmRlckFyZW5hLT5hbGxvY2F0ZShzeik7CiB9
CkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6Om9wZXJhdG9yIGRlbGV0ZSh2
b2lkKgogUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdChOb2RlKiBub2Rl
LCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgRG9jdW1lbnQqIGRvYyA9IG5vZGUtPmRvY3Vt
ZW50KCk7Ci0gICAgUmVuZGVyQXJlbmEqIGFyZW5hID0gZG9jLT5yZW5kZXJBcmVuYSgpOworICAg
IFJlY3ljbGVkQXJlbmEqIGFyZW5hID0gZG9jLT5yZW5kZXJBcmVuYSgpOwogCiAgICAgLy8gTWlu
aW1hbCBzdXBwb3J0IGZvciBjb250ZW50IHByb3BlcnRpZXMgcmVwbGFjaW5nIGFuIGVudGlyZSBl
bGVtZW50LgogICAgIC8vIFdvcmtzIG9ubHkgaWYgd2UgaGF2ZSBleGFjdGx5IG9uZSBwaWVjZSBv
ZiBjb250ZW50IGFuZCBpdCdzIGEgVVJMLgpAQCAtMjQ4OCw3ICsyNDg4LDcgQEAgdm9pZCBSZW5k
ZXJPYmplY3Q6OmRlc3Ryb3koKQogICAgIGFyZW5hRGVsZXRlKHJlbmRlckFyZW5hKCksIHRoaXMp
OwogfQogCi12b2lkIFJlbmRlck9iamVjdDo6YXJlbmFEZWxldGUoUmVuZGVyQXJlbmEqIGFyZW5h
LCB2b2lkKiBiYXNlKQordm9pZCBSZW5kZXJPYmplY3Q6OmFyZW5hRGVsZXRlKFJlY3ljbGVkQXJl
bmEqIGFyZW5hLCB2b2lkKiBiYXNlKQogewogICAgIGlmIChtX3N0eWxlKSB7CiAgICAgICAgIGZv
ciAoY29uc3QgRmlsbExheWVyKiBiZ0xheWVyID0gbV9zdHlsZS0+YmFja2dyb3VuZExheWVycygp
OyBiZ0xheWVyOyBiZ0xheWVyID0gYmdMYXllci0+bmV4dCgpKSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyMSw4
ICszMjEsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlbmRlck9iamVjdCogY3JlYXRlT2JqZWN0
KE5vZGUqLCBSZW5kZXJTdHlsZSopOwogCiAgICAgLy8gT3ZlcmxvYWRlZCBuZXcgb3BlcmF0b3Iu
ICBEZXJpdmVkIGNsYXNzZXMgbXVzdCBvdmVycmlkZSBvcGVyYXRvciBuZXcKLSAgICAvLyBpbiBv
cmRlciB0byBhbGxvY2F0ZSBvdXQgb2YgdGhlIFJlbmRlckFyZW5hLgotICAgIHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3QsIFJlbmRlckFyZW5hKik7CisgICAgLy8gaW4gb3JkZXIgdG8gYWxsb2Nh
dGUgb3V0IG9mIHRoZSBSZWN5Y2xlZEFyZW5hLgorICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3QsIFJlY3ljbGVkQXJlbmEqKTsKIAogICAgIC8vIE92ZXJyaWRkZW4gdG8gcHJldmVudCB0aGUg
bm9ybWFsIGRlbGV0ZSBmcm9tIGJlaW5nIGNhbGxlZC4KICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0
ZSh2b2lkKiwgc2l6ZV90KTsKQEAgLTMzMiw3ICszMzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3QpIHRocm93KCk7CiAKIHB1YmxpYzoKLSAgICBSZW5kZXJBcmVu
YSogcmVuZGVyQXJlbmEoKSBjb25zdCB7IHJldHVybiBkb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgp
OyB9CisgICAgUmVjeWNsZWRBcmVuYSogcmVuZGVyQXJlbmEoKSBjb25zdCB7IHJldHVybiBkb2N1
bWVudCgpLT5yZW5kZXJBcmVuYSgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNCUigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQmxvY2tGbG93KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KQEAgLTk4MSw3ICs5ODEsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2
b2lkIGNsZWFyTGF5b3V0Um9vdElmTmVlZGVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxCZURlc3Ryb3llZCgpOwotICAgIHZvaWQgYXJlbmFEZWxldGUoUmVuZGVyQXJlbmEqLCB2b2lk
KiBvYmplY3RCYXNlKTsKKyAgICB2b2lkIGFyZW5hRGVsZXRlKFJlY3ljbGVkQXJlbmEqLCB2b2lk
KiBvYmplY3RCYXNlKTsKIAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9y
UmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgTGF5
b3V0UG9pbnQqIC8qY2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29udGFpbmVyKi8gPSAwKSBjb25zdCB7
IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5j
bHVkZSAiSHlwaGVuYXRpb24uaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVk
ZSAiUmFuZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgorI2luY2x1ZGUgIlJlY3ljbGVk
QXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlckNvbWJp
bmVUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKQEAgLTMwMSw3ICszMDEsNyBAQCB2
b2lkIFJlbmRlclRleHQ6OnJlbW92ZVRleHRCb3goSW5saW5lVGV4CiB2b2lkIFJlbmRlclRleHQ6
OmRlbGV0ZVRleHRCb3hlcygpCiB7CiAgICAgaWYgKGZpcnN0VGV4dEJveCgpKSB7Ci0gICAgICAg
IFJlbmRlckFyZW5hKiBhcmVuYSA9IHJlbmRlckFyZW5hKCk7CisgICAgICAgIFJlY3ljbGVkQXJl
bmEqIGFyZW5hID0gcmVuZGVyQXJlbmEoKTsKICAgICAgICAgSW5saW5lVGV4dEJveCogbmV4dDsK
ICAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBjdXJyID0gZmlyc3RUZXh0Qm94KCk7IGN1cnI7
IGN1cnIgPSBuZXh0KSB7CiAgICAgICAgICAgICBuZXh0ID0gY3Vyci0+bmV4dFRleHRCb3goKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCShyZXZpc2lv
biAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpkZXN0
cm95KCkKIAogICAgIC8vIEdyYWIgdGhlIGFyZW5hIGZyb20gbm9kZSgpLT5kb2N1bWVudCgpLT5y
ZW5kZXJBcmVuYSgpIGJlZm9yZSBjbGVhcmluZyB0aGUgbm9kZSBwb2ludGVyLgogICAgIC8vIENs
ZWFyIHRoZSBub2RlIGJlZm9yZSBkZXJlZi1pbmcsIGFzIHRoaXMgbWF5IGJlIGRlbGV0ZWQgd2hl
biBkZXJlZiBpcyBjYWxsZWQuCi0gICAgUmVuZGVyQXJlbmEqIGFyZW5hID0gcmVuZGVyQXJlbmEo
KTsKKyAgICBSZWN5Y2xlZEFyZW5hKiBhcmVuYSA9IHJlbmRlckFyZW5hKCk7CiAgICAgc2V0Tm9k
ZSgwKTsKICAgICBkZXJlZihhcmVuYSk7CiB9CkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBSZW5k
ZXJXaWRnZXQ6OnNldE92ZXJsYXBUZXN0UmVzdWx0KAogICAgIHN0YXRpY19jYXN0PEZyYW1lVmll
dyo+KG1fd2lkZ2V0LmdldCgpKS0+c2V0SXNPdmVybGFwcGVkKGlzT3ZlcmxhcHBlZCk7CiB9CiAK
LXZvaWQgUmVuZGVyV2lkZ2V0OjpkZXJlZihSZW5kZXJBcmVuYSAqYXJlbmEpCit2b2lkIFJlbmRl
cldpZGdldDo6ZGVyZWYoUmVjeWNsZWRBcmVuYSAqYXJlbmEpCiB7CiAgICAgaWYgKC0tbV9yZWZD
b3VudCA8PSAwKQogICAgICAgICBhcmVuYURlbGV0ZShhcmVuYSwgdGhpcyk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTY5LDggKzY5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBub3RpZnlXaWRnZXQoV2lkZ2V0Tm90
aWZpY2F0aW9uKTsKIAotICAgIFJlbmRlckFyZW5hKiByZWYoKSB7ICsrbV9yZWZDb3VudDsgcmV0
dXJuIHJlbmRlckFyZW5hKCk7IH0KLSAgICB2b2lkIGRlcmVmKFJlbmRlckFyZW5hKik7CisgICAg
UmVjeWNsZWRBcmVuYSogcmVmKCkgeyArK21fcmVmQ291bnQ7IHJldHVybiByZW5kZXJBcmVuYSgp
OyB9CisgICAgdm9pZCBkZXJlZihSZWN5Y2xlZEFyZW5hKik7CiAKIHByb3RlY3RlZDoKICAgICBS
ZW5kZXJXaWRnZXQoTm9kZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cldpZGdldFByb3RlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJXaWRnZXRQcm90ZWN0b3IuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldFByb3RlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBSZW5kZXJXaWRnZXQqIG1f
b2JqZWN0OwotICAgIFJlbmRlckFyZW5hKiBtX2FyZW5hOworICAgIFJlY3ljbGVkQXJlbmEqIG1f
YXJlbmE7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5n
QWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJpbmdBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5
LDggQEAKICNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuY3BwIgogI2luY2x1ZGUgIkxheW91dFN0
YXRlLmNwcCIKICNpbmNsdWRlICJQb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwIgorI2luY2x1ZGUg
IlJlY3ljbGVkQXJlbmEuY3BwIgogI2luY2x1ZGUgIlJlbmRlckFwcGxldC5jcHAiCi0jaW5jbHVk
ZSAiUmVuZGVyQXJlbmEuY3BwIgogI2luY2x1ZGUgIlJlbmRlckJSLmNwcCIKICNpbmNsdWRlICJS
ZW5kZXJCbG9jay5jcHAiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCIKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAJKHJldmlzaW9u
IDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIklubGluZVRleHRCb3gu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCi0jaW5jbHVkZSAi
UmVuZGVyQXJlbmEuaCIKKyNpbmNsdWRlICJSZWN5Y2xlZEFyZW5hLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiVmVydGljYWxQ
b3NpdGlvbkNhY2hlLmgiCkBAIC01OSwxMyArNTksMTMgQEAgUm9vdElubGluZUJveDo6Um9vdElu
bGluZUJveChSZW5kZXJCbG9jawogfQogCiAKLXZvaWQgUm9vdElubGluZUJveDo6ZGVzdHJveShS
ZW5kZXJBcmVuYSogYXJlbmEpCit2b2lkIFJvb3RJbmxpbmVCb3g6OmRlc3Ryb3koUmVjeWNsZWRB
cmVuYSogYXJlbmEpCiB7CiAgICAgZGV0YWNoRWxsaXBzaXNCb3goYXJlbmEpOwogICAgIElubGlu
ZUZsb3dCb3g6OmRlc3Ryb3koYXJlbmEpOwogfQogCi12b2lkIFJvb3RJbmxpbmVCb3g6OmRldGFj
aEVsbGlwc2lzQm94KFJlbmRlckFyZW5hKiBhcmVuYSkKK3ZvaWQgUm9vdElubGluZUJveDo6ZGV0
YWNoRWxsaXBzaXNCb3goUmVjeWNsZWRBcmVuYSogYXJlbmEpCiB7CiAgICAgaWYgKGhhc0VsbGlw
c2lzQm94KCkpIHsKICAgICAgICAgRWxsaXBzaXNCb3gqIGJveCA9IGdFbGxpcHNpc0JveE1hcC0+
dGFrZSh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
aAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDExIEBAIGNsYXNzIFJvb3RJbmxp
bmVCb3ggOiBwdWJsaWMgSW5saW5lRmxvd0IKIHB1YmxpYzoKICAgICBSb290SW5saW5lQm94KFJl
bmRlckJsb2NrKiBibG9jayk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveShSZW5kZXJBcmVu
YSopOworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KFJlY3ljbGVkQXJlbmEqKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBpc1Jvb3RJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAg
ICB2b2lkIGRldGFjaEVsbGlwc2lzQm94KFJlbmRlckFyZW5hKik7CisgICAgdm9pZCBkZXRhY2hF
bGxpcHNpc0JveChSZWN5Y2xlZEFyZW5hKik7CiAKICAgICBSb290SW5saW5lQm94KiBuZXh0Um9v
dEJveCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJvb3RJbmxpbmVCb3gqPihtX25leHRM
aW5lQm94KTsgfQogICAgIFJvb3RJbmxpbmVCb3gqIHByZXZSb290Qm94KCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Um9vdElubGluZUJveCo+KG1fcHJldkxpbmVCb3gpOyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlz
aW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJGb250Lmgi
CiAjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiUXVvdGVzRGF0YS5oIgotI2lu
Y2x1ZGUgIlJlbmRlckFyZW5hLmgiCisjaW5jbHVkZSAiUmVjeWNsZWRBcmVuYS5oIgogI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgi
CiAjaW5jbHVkZSAiU2hhZG93RGF0YS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBTVkdBRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjbwogICAgIH0KIH0KIAotUmVuZGVyT2JqZWN0KiBTVkdBRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitS
ZW5kZXJPYmplY3QqIFNWR0FFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBh
cmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9k
ZSgpLT5pc1NWR0VsZW1lbnQoKSAmJiBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4ocGFyZW50Tm9k
ZSgpKS0+aXNUZXh0Q29udGVudCgpKQogICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVy
U1ZHSW5saW5lKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgJKHJldmlzaW9u
IDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Cisg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBS
ZW5kZXJTdHlsZSopOwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCBib29sIFNWR0FsdEds
eXBoRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZW5k
ZXJPYmplY3QqIFNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
IGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR0FsdEdseXBoRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAg
ICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHVFNwYW4odGhpcyk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdBbHRHbHlwaEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVy
U3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25z
dCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIGNvbnN0OwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR0FsdEdseXBoRWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDcgKzE0
NSw3IEBAIGJvb2wgU1ZHQ2lyY2xlRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGUKICAgICAgICAg
fHwgcigpLmlzUmVsYXRpdmUoKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBTVkdDaXJjbGVFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRl
ck9iamVjdCogU1ZHQ2lyY2xlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZH
RWxsaXBzZSh0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQu
aAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAotICAgIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7
CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQ2lyY2xlRWxlbWVu
dCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZAogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi1SZW5kZXJP
YmplY3QqIFNWR0NsaXBQYXRoRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR0NsaXBQYXRoRWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICBy
ZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKHRoaXMpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQw
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hh
bmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7
CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJl
cihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdDbGlwUGF0aEVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfRU5VTUVSQVRJT04oQ2xpcFBhdGhVbml0cywgY2xpcFBhdGhVbml0cywgU1ZHVW5pdFR5
cGVzOjpTVkdVbml0VHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNw
cAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBib29sIFNWR0RlZnNFbGVtZW50
Ojppc1ZhbGlkKCkgY29uc3QKICAgICByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsKIH0KIAot
UmVuZGVyT2JqZWN0KiBTVkdEZWZzRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
IGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR0RlZnNFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJl
dHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIodGhpcyk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcg
KzQyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdEZWZzRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9C
T09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHJldmlz
aW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEsNyBAQCBib29sIFNWR0VsbGlwc2VFbGVtZW50
OjpzZWxmSGFzUmVsYXRpdmVMCiAgICAgICAgIHx8IHJ5KCkuaXNSZWxhdGl2ZSgpOwogfQogCi1S
ZW5kZXJPYmplY3QqIFNWR0VsbGlwc2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogU1ZHRWxsaXBzZUVsZW1lbnQ6
OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAg
ICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0VsbGlwc2UodGhpcyk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRp
dmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUq
KSBPVkVSUklERTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdF
bGxpcHNlRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMTMz
MjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQoYgogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi1S
ZW5kZXJPYmplY3QqIFNWR0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBTVkdGaWx0ZXJFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAg
IHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcih0aGlzKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5D
aGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9
IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCi0g
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVM
ZW5ndGhzKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkocmV2aXNpb24gMTMz
MjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlCiAgICAgICAgIGZpbHRlckVmZmVjdC0+c2V0
SGFzSGVpZ2h0KHRydWUpOwogfQogCi1SZW5kZXJPYmplY3QqIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5k
ZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikK
IHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRp
dmUodGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCShyZXZpc2lvbiAxMzMyNDApCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgaXNGaWx0ZXJFZmZlY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVh
dGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9p
ZCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3ZnQXR0cmlidQogICAgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRl
cmVyKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3Qq
IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBh
cmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdG
b3JlaWduT2JqZWN0KHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVp
Z25PYmplY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
cmVpZ25PYmplY3RFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0
Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRl
UmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBjb25zdDsKLSAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSogc3R5bGUpOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50
LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFNWR0dFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvCiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9y
TGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOwogfQogCi1SZW5k
ZXJPYmplY3QqIFNWR0dFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEs
IFJlbmRlclN0eWxlKiBzdHlsZSkKK1JlbmRlck9iamVjdCogU1ZHR0VsZW1lbnQ6OmNyZWF0ZVJl
bmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAg
Ly8gU1ZHIDEuMSB0ZXN0c3VpdGUgZXhwbGljaXRlbHkgdXNlcyBjb25zdHJ1Y3RzIGxpa2UgPGcg
ZGlzcGxheT0ibm9uZSI+PGxpbmVhckdyYWRpZW50PgogICAgIC8vIFdlIHN0aWxsIGhhdmUgdG8g
Y3JlYXRlIHJlbmRlcmVycyBmb3IgdGhlIDxnPiAmIDxsaW5lYXJHcmFkaWVudD4gZWxlbWVudCwg
dGhvdWdoIHRoZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBTVkdHRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlU1ZH
RWxlbWVudCk7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVh
dGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlk
KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lv
biAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTg5LDcgKzE4OSw3IEBAIGJvb2wgU1ZHSW1hZ2VFbGVtZW50OjpzZWxm
SGFzUmVsYXRpdmVMZW4KICAgICAgICAgfHwgaGVpZ2h0KCkuaXNSZWxhdGl2ZSgpOwogfQogCi1S
ZW5kZXJPYmplY3QqIFNWR0ltYWdlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
IGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR0ltYWdlRWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICBy
ZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHSW1hZ2UodGhpcyk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCBJbnNl
cnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZF
UlJJREU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVS
ZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAKICAgICB2aXJ0dWFsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0OyAgICAg
ICAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNo
U2V0PEtVUkw+JikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
OCw3ICsxMTgsNyBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmliCiAg
ICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAKLVJlbmRlck9iamVjdCog
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewog
ICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50KHRo
aXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVh
ckdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAgICAgdmlydHVh
bCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUs
NyArMjE1LDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0FuZ2xlKAogICAg
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQob3JpZW50QW5nbGVQcm9wZXJ0eUluZm8oKS0+YXR0cmlidXRl
TmFtZSk7CiB9CiAKLVJlbmRlck9iamVjdCogU1ZHTWFya2VyRWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR01h
cmtlckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1Jlc291cmNlTWFya2Vy
KHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCShyZXZp
c2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVh
bCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2Rl
KiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50
RGVsdGEgPSAwKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBj
b25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAkocmV2aXNpb24g
MTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZChib28KICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAot
UmVuZGVyT2JqZWN0KiBTVkdNYXNrRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
IGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR01hc2tFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJl
dHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcih0aGlzKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyAr
NTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJv
b2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUq
IGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCi0gICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVu
YSosIFJlbmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVu
Z3RocygpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNCw3ICs0MDQsNyBAQCBGbG9hdFJlY3QgU1ZHUGF0aEVs
ZW1lbnQ6OmdldEJCb3goU3R5bGVVCiAgICAgcmV0dXJuIHJlbmRlcmVyLT5wYXRoKCkuYm91bmRp
bmdSZWN0KCk7CiB9CiAKLVJlbmRlck9iamVjdCogU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBTVkdQ
YXRoRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0
eWxlKikKIHsKICAgICAvLyBCeSBkZWZhdWx0LCBhbnkgc3ViY2xhc3MgaXMgZXhwZWN0ZWQgdG8g
ZG8gcGF0aC1iYXNlZCBkcmF3aW5nCiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1Bh
dGgodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkocmV2aXNpb24g
MTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWly
ZWRFeHRlbnNpb25zKHRoaXMpOyB9CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVt
TGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9
CiAKLSAgICBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKTsKKyAgICBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEq
LCBSZW5kZXJTdHlsZSopOwogCiAgICAgdmlydHVhbCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZCgKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAotUmVuZGVy
T2JqZWN0KiBTVkdQYXR0ZXJuRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR1BhdHRlcm5FbGVtZW50OjpjcmVh
dGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJl
dHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4odGhpcyk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVu
Q2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2Ug
PSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAot
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJl
Y3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNS
ZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0
dHJpYgogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi1SZW5kZXJP
YmplY3QqIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR1JhZGlhbEdyYWRpZW50
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxl
KikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFk
aWVudCh0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1
dGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4
LDcgKzE2OCw3IEBAIGJvb2wgU1ZHUmVjdEVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmcKICAg
ICAgICAgfHwgcnkoKS5pc1JlbGF0aXZlKCk7CiB9CiAKLVJlbmRlck9iamVjdCogU1ZHUmVjdEVs
ZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQor
UmVuZGVyT2JqZWN0KiBTVkdSZWN0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVu
YSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVy
U1ZHUmVjdCh0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCShy
ZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBi
b29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAotICAgIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAg
ICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUmVjdEVsZW1lbnQpCiAgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MCw3ICs0NzAsNyBAQCBBZmZp
bmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6bG9jYWxDb29yCiAgICAgcmV0dXJuIHRyYW5zZm9y
bS5tdWx0aXBseSh2aWV3Qm94VHJhbnNmb3JtKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBTVkdTVkdF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikK
K1JlbmRlck9iamVjdCogU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVu
YSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICBpZiAoaXNPdXRlcm1vc3RTVkdTVkdFbGVt
ZW50KCkpCiAgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSb290KHRoaXMpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcs
NyArMTQ3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkgeyByZXR1cm4gU3R5bGVk
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsgfQotICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5k
ZXJTdHlsZSopOwogCiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGlu
c2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0b3BFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0b3BFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBA
IHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBTVkdTdG9wRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNW
R1N0b3BFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVy
U3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdHcmFkaWVudFN0b3Ao
dGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkocmV2aXNpb24g
MTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBpc0dy
YWRpZW50U3RvcCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5k
ZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVS
ZW5kZXJpbmdDb250ZXh0JikgT1ZFUlJJREU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHU3RvcEVsZW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBGbG9hdFJlY3QgU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQ6CiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFibGU6OmdldEJC
b3godGhpcywgc3R5bGVVcGRhdGVTdHJhdGVneSk7CiB9CiAKLVJlbmRlck9iamVjdCogU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVu
YSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikK
IHsKICAgICAvLyBCeSBkZWZhdWx0LCBhbnkgc3ViY2xhc3MgaXMgZXhwZWN0ZWQgdG8gZG8gcGF0
aC1iYXNlZCBkcmF3aW5nCiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1BhdGgodGhp
cyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5
LDcgQEAgcHVibGljOgogCiAgICAgLy8gImJhc2UgY2xhc3MiIG1ldGhvZHMgZm9yIGFsbCB0aGUg
ZWxlbWVudHMgd2hpY2ggcmVuZGVyIGFzIHBhdGhzCiAgICAgdmlydHVhbCB2b2lkIHRvQ2xpcFBh
dGgoUGF0aCYpOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZVNWR0VsZW1lbnQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02OCw3ICs2OCw3IEBAIGJvb2wgU1ZHU3dpdGNoRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGUK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlbmRlck9iamVjdCogU1ZHU3dpdGNoRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJP
YmplY3QqIFNWR1N3aXRjaEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1Ry
YW5zZm9ybWFibGVDb250YWluZXIodGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3dpdGNoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
d2l0Y2hFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTd2l0Y2hFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5v
ZGVSZW5kZXJpbmdDb250ZXh0JikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUq
KTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTd2l0Y2hFbGVt
ZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEw
MSw3IEBAIGJvb2wgU1ZHU3ltYm9sRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGUKICAgICByZXR1
cm4gaGFzQXR0cmlidXRlKFNWR05hbWVzOjp2aWV3Qm94QXR0cik7CiB9CiAKLVJlbmRlck9iamVj
dCogU1ZHU3ltYm9sRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBS
ZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR1N5bWJvbEVsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5l
dyAoYXJlbmEpIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcih0aGlzKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyAr
NDcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
MiwxMSArMTQyLDExIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBzZXRIYXNDdXN0b21DYWxs
YmFja3MoKTsKICAgICB9Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxSZWNhbGNUZXh0U3R5bGUoU3R5bGVDaGFuZ2UpOwogfTsKIAotUmVuZGVyT2Jq
ZWN0KiBTVkdTaGFkb3dUZXh0OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJl
bmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogU1ZHU2hhZG93VGV4dDo6Y3JlYXRlUmVuZGVyZXIo
UmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChh
cmVuYSkgUmVuZGVyU1ZHSW5saW5lVGV4dCh0aGlzLCBkYXRhSW1wbCgpKTsKIH0KQEAgLTI1NSw3
ICsyNTUsNyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVJlbmRlck9iamVjdCogU1ZHVFJlZkVsZW1lbnQ6
OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVy
T2JqZWN0KiBTVkdUUmVmRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHSW5s
aW5lKHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgJKHJldmlz
aW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxl
Kik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJl
bmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw3ICs0MSw3IEBAIFBhc3NSZWZQdHI8U1ZHVFNwYW5FbGVtZW50PiBTVkdUU3BhbkVs
ZW0KICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1RTcGFuRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQogCi1SZW5kZXJPYmplY3QqIFNWR1RTcGFuRWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR1RT
cGFuRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0
eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHVFNwYW4odGhpcyk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdUU3BhbkVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgICAgICAKLSAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFy
ZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzUsNyArMTM1LDcgQEAgQWZmaW5lVHJhbnNmb3JtKiBTVkdUZXh0RWxlbWVudDo6c3Vw
cGxlbQogICAgIHJldHVybiBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybS5nZXQoKTsKIH0KIAotUmVu
ZGVyT2JqZWN0KiBTVkdUZXh0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR1RleHRFbGVtZW50OjpjcmVhdGVS
ZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVy
biBuZXcgKGFyZW5hKSBSZW5kZXJTVkdUZXh0KHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0qIHN1cHBsZW1lbnRhbFRyYW5zZm9ybSgp
OwogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNm
b3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUgbW9kZSkgY29uc3QgeyByZXR1cm4gU1ZHVHJhbnNm
b3JtYWJsZTo6bG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0obW9kZSk7IH0KIAotICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVk
QXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgY29uc3Q7CiAgICAgICAgICAg
ICAKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAko
cmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFNWR1RleHRQYXRo
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhCiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJr
Rm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ob2JqZWN0KTsKIH0KIAotUmVu
ZGVyT2JqZWN0KiBTVkdUZXh0UGF0aEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBTVkdUZXh0UGF0aEVsZW1lbnQ6
OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAg
ICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1RleHRQYXRoKHRoaXMpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjcsNyArMTI3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCi0gICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJl
bmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
Y29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0Nyw3ICs1
NDcsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmJ1aWxkU2hhZG93QW5kSW5zdGFuCiAjZW5kaWYK
IH0KIAotUmVuZGVyT2JqZWN0KiBTVkdVc2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogU1ZHVXNlRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAg
ICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcih0aGlz
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQw
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHdpbGxSZWNhbGNT
dHlsZShTdHlsZUNoYW5nZSk7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2
aXJ0dWFsIHZvaWQgdG9DbGlwUGF0aChQYXRoJik7CiAKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VS
ZWZlcmVuY2VzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172141</attachid>
            <date>2012-11-02 14:34:32 -0700</date>
            <delta_ts>2012-11-12 17:18:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101087-20121102143251.patch</filename>
            <type>text/plain</type>
            <size>172637</size>
            <attacher name="Cris Neckar">cdn</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzM0NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxNiBAQAorMjAxMi0xMS0wMiAgQ3JpcyBO
ZWNrYXIgIDxjZG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgUmVuZGVyQXJlbmEgdG8g
cGxhdGZvcm0vUmVjeWNsZWRBcmVuYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAxMDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU2ltcGx5IG1vdmluZyBSZW5kZXJBcmVuYSBpbnRvIHBsYXRmb3JtIHNv
IHRoYXQgaXQgY2FuIGJlIHVzZWQgZm9yIHRoaW5ncyBvdGhlciB0aGFuIFJlbmRlck9iamVjdHMu
CisgICAgICAgIE1hZGUgY29uc3RydWN0b3IgZ2VuZXJpYyBzbyB0aGF0IHRoZSBhcmVuYSBuYW1l
IGNhbiBiZSBwYXNzZWQgaW4uCisKKyAgICAgICAgQ29kZSByZWZhY3RvciBkb2VzIG5vdCBjaGFu
Z2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmF0dGFjaCk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpyZW5kZXJBcmVuYSk6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChFbGVtZW50KToKKyAgICAg
ICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjcmVhdGVSZW5kZXJl
cik6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
Tm9kZSk6CisgICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6
Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGRvbS9UZXh0Lmg6CisgICAgICAgIChUZXh0KToK
KyAgICAgICAgKiBodG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZUJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwv
QmFzZUJ1dHRvbklucHV0VHlwZS5oOgorICAgICAgICAoQmFzZUJ1dHRvbklucHV0VHlwZSk6Cisg
ICAgICAgICogaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlw
ZTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvQmFzZU11bHRpcGxlRmllbGRzRGF0
ZUFuZFRpbWVJbnB1dFR5cGUuaDoKKyAgICAgICAgKEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRU
aW1lSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0
bWwvRmlsZUlucHV0VHlwZS5oOgorICAgICAgICAoRmlsZUlucHV0VHlwZSk6CisgICAgICAgICog
aHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXBwbGV0
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1l
bnQuaDoKKyAgICAgICAgKEhUTUxBcHBsZXRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxC
UkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJSRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEJSRWxlbWVudC5oOgorICAgICAgICAoSFRNTEJS
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAq
IGh0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVSZW5k
ZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAoSFRN
TENhbnZhc0VsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNFbGVtZW50Lmg6CisgICAgICAgIChIVE1MRGV0YWls
c0VsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTERpYWxvZ0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAg
KiBodG1sL0hUTUxEaWFsb2dFbGVtZW50Lmg6CisgICAgICAgIChIVE1MRGlhbG9nRWxlbWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoK
KyAgICAgICAgKEhUTUxFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGaWVsZFNldEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oOgorICAgICAgICAo
SFRNTEZpZWxkU2V0RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToK
KyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxGcmFtZUVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAg
ICogaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50Lmg6CisgICAgICAgIChIVE1MRnJhbWVTZXRFbGVt
ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5oOgorICAgICAgICAoSFRNTElGcmFtZUVsZW1lbnQpOgorICAg
ICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyRm9ySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdl
RWxlbWVudC5oOgorICAgICAgICAoSW1hZ2VFbGVtZW50KToKKyAgICAgICAgKEhUTUxJbWFnZUVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRt
bC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgIChIVE1MSW5wdXRFbGVtZW50KToKKyAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5oOgorICAgICAgICAoSFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
TWV0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OmNy
ZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRlckVsZW1lbnQuaDoKKyAgICAg
ICAgKEhUTUxNZXRlckVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmg6Cisg
ICAgICAgIChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxQcm9n
cmVzc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByb2dyZXNzRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxT
ZWxlY3RFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFN1bW1hcnlFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6Cisg
ICAgICAgICogaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxTdW1tYXJ5
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxUZXh0QXJlYUVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRt
bC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgIChIVE1MVmlkZW9FbGVtZW50KToKKyAgICAg
ICAgKiBodG1sL0hpZGRlbklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaWRkZW5J
bnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hpZGRlbklucHV0VHlw
ZS5oOgorICAgICAgICAoSGlkZGVuSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL0ltYWdlSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBlOjpjcmVhdGVSZW5k
ZXJlcik6CisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5oOgorICAgICAgICAoSW1hZ2VJ
bnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBl
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKElucHV0VHlwZSk6CisgICAgICAgICog
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlw
ZTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuaDoKKyAg
ICAgICAgKFJhbmdlSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKToK
KyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5oOgorICAgICAgICAoU2VhcmNoSW5wdXRU
eXBlKToKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBo
dG1sL1RleHRGaWVsZElucHV0VHlwZS5oOgorICAgICAgICAoVGV4dEZpZWxkSW5wdXRUeXBlKToK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEZXRhaWxzTWFya2VyQ29udHJvbDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmg6CisgICAgICAgIChEZXRhaWxz
TWFya2VyQ29udHJvbCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW1hZ2VJbm5lckVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VJbm5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbWFnZUlubmVyRWxlbWVudC5oOgorICAgICAgICAo
SW1hZ2VJbm5lckVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNv
bnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmg6CisgICAg
ICAgIChNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWV0
ZXJTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1ldGVySW5uZXJFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVt
ZW50Lmg6CisgICAgICAgIChNZXRlcklubmVyRWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFk
b3cvUGlja2VySW5kaWNhdG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaWNrZXJJ
bmRpY2F0b3JFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cv
UGlja2VySW5kaWNhdG9yRWxlbWVudC5oOgorICAgICAgICAoUGlja2VySW5kaWNhdG9yRWxlbWVu
dCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlByb2dyZXNzSW5uZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6Cisg
ICAgICAgICogaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgIChQ
cm9ncmVzc0lubmVyRWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaW1pdGVyRWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5o
OgorICAgICAgICAoU2xpZGVyVGh1bWJFbGVtZW50KToKKyAgICAgICAgKFRyYWNrTGltaXRlckVs
ZW1lbnQpOgorICAgICAgICAoU2xpZGVyQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAq
IGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorICAgICAgICAoVGV4dENv
bnRyb2xJbm5lclRleHRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0RmllbGRE
ZWNvcmF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGREZWNvcmF0
aW9uRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRG
aWVsZERlY29yYXRpb25FbGVtZW50Lmg6CisgICAgICAgIChUZXh0RmllbGREZWNvcmF0aW9uRWxl
bWVudCk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrQ3VlQm94OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuaDoKKyAgICAgICAgKFRleHRUcmFja0N1ZUJveCk6CisgICAg
ICAgICogbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAqIG1hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50Lmg6CisgICAgICAg
IChNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1M
TWF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWF0aEVsZW1lbnQ6OmNy
ZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaDoKKyAg
ICAgICAgKE1hdGhNTE1hdGhFbGVtZW50KToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MVGV4dEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MVGV4dEVsZW1lbnQ6OmNyZWF0ZVJl
bmRlcmVyKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaDoKKyAgICAgICAg
KE1hdGhNTFRleHRFbGVtZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldHMpOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW5kZXJUcmVlU2l6ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vUmVjeWNsZWRBcmVuYS5jcHA6IEFkZGVkLgorICAgICAgICAoTWFza1B0
cik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3ljbGVkQXJlbmE6
OlJlY3ljbGVkQXJlbmEpOgorICAgICAgICAoV2ViQ29yZTo6UmVjeWNsZWRBcmVuYTo6flJlY3lj
bGVkQXJlbmEpOgorICAgICAgICAoV2ViQ29yZTo6UmVjeWNsZWRBcmVuYTo6YWxsb2NhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVjeWNsZWRBcmVuYTo6ZnJlZSk6CisgICAgICAgICogcGxhdGZv
cm0vUmVjeWNsZWRBcmVuYS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
UmVjeWNsZWRBcmVuYSk6CisgICAgICAgIChXZWJDb3JlOjpSZWN5Y2xlZEFyZW5hOjp0b3RhbFJl
Y3ljbGVkQXJlbmFTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3ljbGVkQXJlbmE6OnRvdGFs
UmVjeWNsZWRBcmVuYUFsbG9jYXRlZEJ5dGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvQmlkaVJ1
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaWRpUnVuOjpkZXN0cm95KToKKyAgICAgICAgKFdl
YkNvcmU6OkJpZGlSdW46Om9wZXJhdG9yIG5ldyk6CisgICAgICAgICogcmVuZGVyaW5nL0JpZGlS
dW4uaDoKKyAgICAgICAgKEJpZGlSdW4pOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpkZXN0cm95KToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUJveDo6b3BlcmF0b3IgbmV3KToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUJveDo6ZGVsZXRlTGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUJveC5oOgorICAg
ICAgICAoSW5saW5lQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpkZWxldGVMaW5lKToKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oOgorICAgICAgICAoSW5saW5lRmxvd0JveCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lVGV4dEJveDo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpkZWxldGVMaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAg
ICAgICAoSW5saW5lVGV4dEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL0xheW91dFN0YXRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFN0YXRlOjpkZXN0cm95KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dFN0YXRlOjpvcGVyYXRvciBuZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9M
YXlvdXRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXlvdXRTdGF0ZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckFyZW5hLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQXJlbmEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUxpbmVS
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lU3RhcnRQb3Np
dGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpvcGVyYXRvciBuZXcpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRlc3Ryb3kpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5oOgorICAgICAgICAoUmVuZGVyTGF5ZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5l
Qm94TGlzdDo6ZGVsZXRlTGluZUJveFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlu
ZUJveExpc3Q6OmRlbGV0ZUxpbmVCb3hlcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxp
bmVCb3hMaXN0Lmg6CisgICAgICAgIChSZW5kZXJMaW5lQm94TGlzdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
Om9wZXJhdG9yIG5ldyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNyZWF0ZU9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFyZW5hRGVsZXRlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChSZW5kZXJPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZW5kZXJBcmVuYSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dDo6ZGVsZXRlVGV4dEJveGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6ZGVzdHJveSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OmRlcmVmKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
V2lkZ2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnJlZik6CisgICAgICAg
IChSZW5kZXJXaWRnZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXRQcm90ZWN0
b3IuaDoKKyAgICAgICAgKFJlbmRlcldpZGdldFByb3RlY3Rvcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpkZXN0cm95KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmRldGFjaEVsbGlwc2lzQm94KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5oOgorICAgICAgICAoUm9vdElubGluZUJveCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKiBz
dmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OmNyZWF0
ZVJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuaDoKKyAgICAgICAgKFNWR0FF
bGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAq
IHN2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAgKFNWR0FsdEdseXBoRWxlbWVudCk6
CisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQ2lyY2xlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdDaXJj
bGVFbGVtZW50Lmg6CisgICAgICAgIChTVkdDaXJjbGVFbGVtZW50KToKKyAgICAgICAgKiBzdmcv
U1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQu
aDoKKyAgICAgICAgKFNWR0NsaXBQYXRoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0RlZnNF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RlZnNFbGVtZW50OjpjcmVhdGVSZW5k
ZXJlcik6CisgICAgICAgICogc3ZnL1NWR0RlZnNFbGVtZW50Lmg6CisgICAgICAgIChTVkdEZWZz
RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICog
c3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6CisgICAgICAgIChTVkdFbGxpcHNlRWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RmlsdGVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJF
bGVtZW50Lmg6CisgICAgICAgIChTVkdGaWx0ZXJFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAg
ICAgICAgKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyk6CisgICAgICAgICog
c3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0Zv
cmVpZ25PYmplY3RFbGVtZW50Lmg6CisgICAgICAgIChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCk6
CisgICAgICAgICogc3ZnL1NWR0dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0dFbGVtZW50Lmg6Cisg
ICAgICAgIChTVkdHRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAg
ICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgIChTVkdJbWFnZUVsZW1lbnQp
OgorICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAg
ICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAoU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAg
ICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuaDoKKyAgICAgICAgKFNWR01hcmtlckVsZW1lbnQp
OgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdNYXNrRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxl
bWVudC5oOgorICAgICAgICAoU1ZHTWFza0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdQYXRo
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5oOgorICAgICAgICAoU1ZHUGF0
aEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAq
IHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAgICAgICAoU1ZHUGF0dGVybkVsZW1lbnQpOgor
ICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAg
ICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAoU1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBz
dmcvU1ZHUmVjdEVsZW1lbnQuaDoKKyAgICAgICAgKFNWR1JlY3RFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKyAgICAg
ICAgKFNWR1NWR0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAg
ICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAgICAoU1ZHU3RvcEVsZW1lbnQpOgorICAg
ICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oOgorICAgICAgICAo
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTd2l0Y2hF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N3aXRjaEVsZW1lbnQ6OmNyZWF0ZVJl
bmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHU3dpdGNoRWxlbWVudC5oOgorICAgICAgICAoU1ZH
U3dpdGNoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3ltYm9sRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAg
ICAqIHN2Zy9TVkdTeW1ib2xFbGVtZW50Lmg6CisgICAgICAgIChTVkdTeW1ib2xFbGVtZW50KToK
KyAgICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAoU1ZHU2hhZG93VGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTaGFkb3dUZXh0OjpjcmVhdGVSZW5kZXJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAg
ICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5oOgorICAgICAgICAoU1ZHVFJlZkVsZW1lbnQpOgorICAg
ICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFNw
YW5FbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1RTcGFuRWxlbWVu
dC5oOgorICAgICAgICAoU1ZHVFNwYW5FbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dEVsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dEVsZW1lbnQuaDoKKyAgICAgICAgKFNWR1RleHRF
bGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAq
IHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6Cisg
ICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAgICAgICAgKFNWR1VzZUVsZW1lbnQpOgor
CiAyMDEyLTExLTAyICBMaWFuZ2h1aSBDaGVuICA8bGlhY2hlbkByaW0uY29tPgogCiAgICAgICAg
IFtCbGFja0JlcnJ5XSBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKCkgaW4gUmVzb3VyY2VIYW5kbGVC
bGFja0JlcnJ5IHNob3VsZCBzZXRDbGllbnQgdG8gbnVsbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMTgwNSw2ICsxODA1LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL1BsYXRmb3JtRXZlbnQuY3BwCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1JbnN0
cnVtZW50YXRpb24uY3BwCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRp
b24uY3BwCisgICAgcGxhdGZvcm0vUmVjeWNsZWRBcmVuYS5jcHAKICAgICBwbGF0Zm9ybS9SdW5M
b29wLmNwcAogICAgIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKICAgICBw
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTIwNzEsNyArMjA3Miw2IEBAIFNFVChXZWJD
b3JlX1NPVVJDRVMKICAgICByZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmNwcAogICAgIHJlbmRl
cmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckFwcGxl
dC5jcHAKLSAgICByZW5kZXJpbmcvUmVuZGVyQXJlbmEuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckJSLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKICAgICByZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CSh3b3JraW5nIGNvcHkpCkBAIC00Nzk1LDYgKzQ3OTUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXJlbmRlckhhbmRsZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QdXJnZWFibGVCdWZmZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHVyZ2VQcmlvcml0eS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWN5Y2xl
ZEFyZW5hLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVjeWNsZWRBcmVuYS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWZDb3VudGVkU3VwcGxlbWVudC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWZlcnJlclBvbGljeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9SdW5Mb29wLmNwcCBcCkBAIC01MDA4LDggKzUwMTAsNiBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMu
aCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckFwcGxldC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcHBsZXQuaCBcCi0JU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckFyZW5hLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckFyZW5hLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJ
KHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNjIsNiArMTA2Miw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL1Bs
YXRmb3JtRXZlbnQuY3BwIFwKICAgICBwbGF0Zm9ybS9QbGF0Zm9ybUluc3RydW1lbnRhdGlvbi5j
cHAgXAogICAgIHBsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcCBcCisg
ICAgcGxhdGZvcm0vUmVjeWNsZWRBcmVuYS5jcHAgXAogICAgIHBsYXRmb3JtL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5jcHAgXAogICAgIHBsYXRmb3JtL1J1bkxvb3AuY3BwIFwKICAgICBwbGF0
Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAgXApAQCAtMTEyOSw3ICsxMTMwLDYgQEAgU09VUkNFUyAr
PSBcCiAgICAgcmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcCBcCiAgICAgcmVuZGVyaW5nL0xheW91
dFJlcGFpbnRlci5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJBcHBsZXQuY3BwIFwKLSAgICBy
ZW5kZXJpbmcvUmVuZGVyQXJlbmEuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
IFwKICAgICByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBcCiAgICAgcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAgXApAQCAtMjI1Miw2ICsyMjUyLDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaEV2ZW50LmggXAogICAgIHBsYXRmb3JtL1BsYXRmb3Jt
VG91Y2hQb2ludC5oIFwKICAgICBwbGF0Zm9ybS9Qb3B1cE1lbnUuaCBcCisgICAgcGxhdGZvcm0v
UmVjeWNsZWRBcmVuYS5oIFwKICAgICBwbGF0Zm9ybS9SZWZlcnJlclBvbGljeS5oIFwKICAgICBw
bGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oIFwKICAgICBwbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5o
IFwKQEAgLTIzNTAsNyArMjM1MSw2IEBAIEhFQURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9QYWlu
dFBoYXNlLmggXAogICAgIHJlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuaCBcCiAgICAg
cmVuZGVyaW5nL1JlbmRlckFwcGxldC5oIFwKLSAgICByZW5kZXJpbmcvUmVuZGVyQXJlbmEuaCBc
CiAgICAgcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJCb3gu
aCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmggXApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzQ1LDggKzMzNDUsNiBAQAogICAgICAgICAgICAgJ3JlbmRl
cmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1Jl
bmRlckFwcGxldC5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJBcHBsZXQuaCcs
Ci0gICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckFyZW5hLmNwcCcsCi0gICAgICAgICAgICAn
cmVuZGVyaW5nL1JlbmRlckFyZW5hLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJC
Ui5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAnLAogICAgICAg
ICAgICAgJ3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwJywKQEAgLTQ1MzksNiAr
NDUzNyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL1ByZXJlbmRlckhhbmRsZS5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9QdXJnZWFibGVCdWZmZXIuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUmVjeWNs
ZWRBcmVuYS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1JlY3ljbGVkQXJlbmEuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vUnVuTG9vcFRpbWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zOTE5MSw3ICsz
OTE5MSw3IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHJlbmRlcmluZ1xSZW5kZXJBcmVuYS5jcHAiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0
Zm9ybVxSZWN5Y2xlZEFyZW5hLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCiAJ
CQkJCU5hbWU9IkRlYnVnfFdpbjMyIgpAQCAtMzkyNDMsNyArMzkyNDMsNyBAQAogCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccmVuZGVyaW5nXFJlbmRlckFyZW5hLmgiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxSZWN5Y2xlZEFyZW5hLmgiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTczOSw4ICs1NzM5LDggQEAKIAkJQkNFQTQ4
NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBJ
bmxpbmVUZXh0Qm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkNFQTQ4NUIwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckFwcGxldC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgxQzA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVyQXBwbGV0LmNwcCAqLzsgfTsKIAkJQkNFQTQ4NUMwOTdEOTMw
MjAwOTRDOUU0IC8qIFJlbmRlckFwcGxldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4MUQwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckFwcGxl
dC5oICovOyB9OwotCQlCQ0VBNDg1RDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQXJlbmEuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4MUUw
OTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckFyZW5hLmNwcCAqLzsgfTsKLQkJQkNFQTQ4NUUwOTdE
OTMwMjAwOTRDOUU0IC8qIFJlbmRlckFyZW5hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgxRjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQXJl
bmEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlC
Q0VBNDg1RDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVjeWNsZWRBcmVuYS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgxRTA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVjeWNsZWRBcmVuYS5jcHAgKi87IH07CisJCUJDRUE0ODVFMDk3RDkzMDIwMDk0QzlF
NCAvKiBSZWN5Y2xlZEFyZW5hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0VBNDgxRjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVjeWNsZWRBcmVuYS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODVG
MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgyMDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVyQmxvY2suY3BwICovOyB9OwogCQlCQ0VBNDg2MDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVy
QmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
RUE0ODIxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9jay5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODYxMDk3RDkzMDIwMDk0QzlF
NCAvKiBSZW5kZXJCb3guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNFQTQ4MjIwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJveC5jcHAgKi87IH07
CkBAIC0xMzEwNiw4ICsxMzEwNiw4IEBACiAJCUJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBJ
bmxpbmVUZXh0Qm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVU
ZXh0Qm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0ODFDMDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJBcHBsZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlckFwcGxldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDRUE0ODFEMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJBcHBsZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckFwcGxldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlCQ0VBNDgxRTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQXJlbmEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckFyZW5hLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNFQTQ4MUYwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlckFyZW5hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJBcmVu
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0VBNDgxRTA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVjeWNsZWRBcmVuYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gUmVjeWNsZWRBcmVuYS5jcHA7IHBhdGggPSBSZWN5Y2xlZEFyZW5hLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNFQTQ4MUYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlY3lj
bGVkQXJlbmEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY3ljbGVkQXJl
bmEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MjAwOTdEOTMwMjAwOTRD
OUU0IC8qIFJlbmRlckJsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0
ODIxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNFQTQ4MjIwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJveC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQm94LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIwODQ2LDYgKzIwODQ2LDggQEAKIAkJQkNGMUE1QkEwOTc4MzIwOTAw
NjFBMTIzIC8qIHBsYXRmb3JtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlCQ0VBNDgxRTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVjeWNsZWRBcmVuYS5jcHAg
Ki8sCisJCQkJQkNFQTQ4MUYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlY3ljbGVkQXJlbmEuaCAqLywK
IAkJCQk0OUU5MTJBNDBFRkFDOEU2MDA5RDBDQUYgLyogYW5pbWF0aW9uICovLAogCQkJCUZEMzE2
MDQwMTJCMDI2QTMwMEMxQTM1OSAvKiBhdWRpbyAqLywKIAkJCQkxQUU0MkY2NzBBQTRCOENCMDBD
ODYxMkQgLyogY2YgKi8sCkBAIC0yMTQ5OCw4ICsyMTUwMCw2IEBACiAJCQkJQjJCMUY3MTUwRDAw
Q0FBODAwNEFFQTY0IC8qIFBvaW50ZXJFdmVudHNIaXRSdWxlcy5oICovLAogCQkJCUJDRUE0ODFD
MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJBcHBsZXQuY3BwICovLAogCQkJCUJDRUE0ODFEMDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJBcHBsZXQuaCAqLywKLQkJCQlCQ0VBNDgxRTA5N0Q5MzAy
MDA5NEM5RTQgLyogUmVuZGVyQXJlbmEuY3BwICovLAotCQkJCUJDRUE0ODFGMDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJBcmVuYS5oICovLAogCQkJCUJDRUE0ODIwMDk3RDkzMDIwMDk0QzlFNCAv
KiBSZW5kZXJCbG9jay5jcHAgKi8sCiAJCQkJQkNFQTQ4MjEwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlckJsb2NrLmggKi8sCiAJCQkJQkNFQTQ4MTMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJs
b2NrTGluZUxheW91dC5jcHAgKi8sCkBAIC0yNDgwNCw3ICsyNDgwNCw3IEBACiAJCQkJOTMzMDlF
MDUwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5MzMwOUUwNzA5OUU2NDkyMDA1NkU1ODEgLyogUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGls
ZHJlbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODVDMDk3RDkzMDIwMDk0QzlF
NCAvKiBSZW5kZXJBcHBsZXQuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDRUE0ODVFMDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJBcmVuYS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNFQTQ4NUUwOTdE
OTMwMjAwOTRDOUU0IC8qIFJlY3ljbGVkQXJlbmEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0
ODYwMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFQTQ4NjIwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJveC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM5NkRCNDMwRjNBODgwRTAwNTczQ0IzIC8qIFJlbmRlckJveE1vZGVsT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKQEAgLTI4MDQ4LDcgKzI4MDQ4LDcgQEAKIAkJCQk5MzMwOUUwNDA5OUU2NDky
MDA1NkU1ODEgLyogUmVtb3ZlTm9kZUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMz
MDlFMDYwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21t
YW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODVCMDk3RDkzMDIwMDk0QzlFNCAvKiBS
ZW5kZXJBcHBsZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkNFQTQ4NUQwOTdEOTMwMjAwOTRD
OUU0IC8qIFJlbmRlckFyZW5hLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDRUE0ODVEMDk3RDkz
MDIwMDk0QzlFNCAvKiBSZWN5Y2xlZEFyZW5hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0
ODVGMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0VBNDg1MjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDRUE0ODYxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCb3gu
Y3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9u
IDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMSw4ICsxMzEsOCBAQAogI2luY2x1ZGUgIlBvcFN0YXRlRXZlbnQuaCIKICNpbmNs
dWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgi
CisjaW5jbHVkZSAiUmVjeWNsZWRBcmVuYS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyZWRFdmVudExp
c3RlbmVyLmgiCi0jaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKQEAgLTIwNjYsNyArMjA2Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OmF0dGFj
aCgpCiAgICAgQVNTRVJUKCFtX2F4T2JqZWN0Q2FjaGUgfHwgdGhpcyAhPSB0b3BEb2N1bWVudCgp
KTsKIAogICAgIGlmICghbV9yZW5kZXJBcmVuYSkKLSAgICAgICAgbV9yZW5kZXJBcmVuYSA9IGFk
b3B0UHRyKG5ldyBSZW5kZXJBcmVuYSk7CisgICAgICAgIG1fcmVuZGVyQXJlbmEgPSBhZG9wdFB0
cihuZXcgUmVjeWNsZWRBcmVuYSgiUmVuZGVyQXJlbmEiKSk7CiAgICAgCiAgICAgLy8gQ3JlYXRl
IHRoZSByZW5kZXJpbmcgdHJlZQogICAgIHNldFJlbmRlcmVyKG5ldyAobV9yZW5kZXJBcmVuYS5n
ZXQoKSkgUmVuZGVyVmlldyh0aGlzLCB2aWV3KCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBAIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsK
IGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjsKIGNsYXNzIFJhbmdlOwogY2xhc3MgUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXI7Ci1jbGFzcyBSZW5kZXJBcmVuYTsKK2NsYXNzIFJlY3ljbGVkQXJl
bmE7CiBjbGFzcyBSZW5kZXJWaWV3OwogY2xhc3MgUmVuZGVyRnVsbFNjcmVlbjsKIGNsYXNzIFNj
cmlwdGFibGVEb2N1bWVudFBhcnNlcjsKQEAgLTU1OSw3ICs1NTksNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6UmVh
c29uRm9yU3VzcGVuc2lvbikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFjdGl2
ZURPTU9iamVjdHMoKSBPVkVSUklERTsKIAotICAgIFJlbmRlckFyZW5hKiByZW5kZXJBcmVuYSgp
IHsgcmV0dXJuIG1fcmVuZGVyQXJlbmEuZ2V0KCk7IH0KKyAgICBSZWN5Y2xlZEFyZW5hKiByZW5k
ZXJBcmVuYSgpIHsgcmV0dXJuIG1fcmVuZGVyQXJlbmEuZ2V0KCk7IH0KIAogICAgIFJlbmRlclZp
ZXcqIHJlbmRlclZpZXcoKSBjb25zdDsKIApAQCAtMTM0OCw3ICsxMzQ4LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fdGl0bGVTZXRFeHBsaWNpdGx5OwogICAgIFJlZlB0cjxFbGVtZW50PiBtX3Rp
dGxlRWxlbWVudDsKIAotICAgIE93blB0cjxSZW5kZXJBcmVuYT4gbV9yZW5kZXJBcmVuYTsKKyAg
ICBPd25QdHI8UmVjeWNsZWRBcmVuYT4gbV9yZW5kZXJBcmVuYTsKIAogICAgIG11dGFibGUgQVhP
YmplY3RDYWNoZSogbV9heE9iamVjdENhY2hlOwogICAgIE93blB0cjxEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXI+IG1fbWFya2VyczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9u
IDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTY1LDcgKzk2NSw3IEBAIGNvbnN0IFF1YWxpZmllZE5hbWUmIEVsZW1lbnQ6OmltYWdl
U291cmMKICAgICByZXR1cm4gc3JjQXR0cjsKIH0KIAotUmVuZGVyT2JqZWN0KiBFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKK1Jl
bmRlck9iamVjdCogRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEs
IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBpZiAoZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVt
ZW50KCkgPT0gdGhpcyAmJiBzdHlsZS0+ZGlzcGxheSgpID09IE5PTkUpIHsKICAgICAgICAgLy8g
SWdub3JlIGRpc3BsYXk6IG5vbmUgb24gcm9vdCBlbGVtZW50cy4gIEZvcmNlIGEgZGlzcGxheSBv
ZiBibG9jayBpbiB0aGF0IGNhc2UuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9uIDEz
MzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2OSw3ICsyNjksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwog
ICAgIHZvaWQgcmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgPSBOb0NoYW5nZSk7CiAKICAgICBFbGVt
ZW50U2hhZG93KiBzaGFkb3coKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9u
IDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQxNyw3ICsxNDE3LDcgQEAgYm9vbCBOb2RlOjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5v
ZGVSZQogICAgIHJldHVybiAoZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgPT0gdGhpcykg
fHwgKGNvbnRleHQuc3R5bGUoKS0+ZGlzcGxheSgpICE9IE5PTkUpOwogfQogCi1SZW5kZXJPYmpl
Y3QqIE5vZGU6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKQorUmVu
ZGVyT2JqZWN0KiBOb2RlOjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5
bGUqKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03OCw4ICs3OCw4IEBAIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVu
dDsKIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVudDsKIGNsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFz
cyBSYWRpb05vZGVMaXN0OworY2xhc3MgUmVjeWNsZWRBcmVuYTsKIGNsYXNzIFJlZ2lzdGVyZWRF
dmVudExpc3RlbmVyOwotY2xhc3MgUmVuZGVyQXJlbmE7CiBjbGFzcyBSZW5kZXJCb3g7CiBjbGFz
cyBSZW5kZXJCb3hNb2RlbE9iamVjdDsKIGNsYXNzIFJlbmRlck9iamVjdDsKQEAgLTUyOCw3ICs1
MjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCk7CiAgICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQm
KTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2Rl
UmVuZGVyaW5nQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwor
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwg
UmVuZGVyU3R5bGUqKTsKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlRm9yUmVuZGVyaW5n
QW5kU3R5bGUoKTsKICAgICAKICAgICAvLyBXcmFwcGVyIGZvciBub2RlcyB0aGF0IGRvbid0IGhh
dmUgYSByZW5kZXJlciwgYnV0IHN0aWxsIGNhY2hlIHRoZSBzdHlsZSAobGlrZSBIVE1MT3B0aW9u
RWxlbWVudCkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw3ICsyMzEsNyBA
QCBib29sIFRleHQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLVJlbmRlck9iamVjdCogVGV4dDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
IGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCitSZW5kZXJPYmplY3QqIFRleHQ6OmNyZWF0ZVJl
bmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAjaWYg
RU5BQkxFKFNWRykKICAgICBOb2RlKiBwYXJlbnRPckhvc3QgPSBwYXJlbnRPckhvc3ROb2RlKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7Ci0gICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRl
clN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNv
bnN0OwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRleHQ+IHZpcnR1YWxDcmVhdGUoY29uc3Qg
U3RyaW5nJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlw
ZS5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRv
bklucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCBCYXNl
QnV0dG9uSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
UmVuZGVyT2JqZWN0KiBCYXNlQnV0dG9uSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29uc3QKK1JlbmRlck9iamVjdCogQmFzZUJ1dHRv
bklucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0
eWxlKikgY29uc3QKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyQnV0dG9uKGVsZW1l
bnQoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUu
aAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5w
dXRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHJvdGVjdGVkOgogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29udHJvbFN0
YXRlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZv
cm1EYXRhTGlzdCYsIGJvb2wpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVk
QXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBz
dG9yZXNWYWx1ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sLCBUZXh0RmllbGRFdmVudEJlaGF2aW9y
KSBPVkVSUklERTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VNdWx0aXBsZUZp
ZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAkocmV2aXNp
b24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNEYXRl
QW5kVGltZUlucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2
b2lkIEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUCiAgICAgICAgIG1fZGF0ZVRp
bWVFZGl0RWxlbWVudC0+Ymx1ckJ5T3duZXIoKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBCYXNlTXVs
dGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CitSZW5kZXJPYmplY3QqIEJhc2VN
dWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xl
ZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogewogICAgIHJldHVybiBJ
bnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKGFyZW5hLCBzdHlsZSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5k
VGltZUlucHV0VHlwZS5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIElucHV0VHlwZSBmdW5jdGlvbnMK
ICAgICB2aXJ0dWFsIHZvaWQgYmx1cigpIE9WRVJSSURFIEZJTkFMOwotICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgY29u
c3QgT1ZFUlJJREUgRklOQUw7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRl
cmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFIEZJTkFMOwog
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgT1ZFUlJJREUgRklOQUw7CiAg
ICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkgT1ZFUlJJREUgRklOQUw7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpIE9WRVJSSURFIEZJTkFM
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAxMzMy
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpoYW5kbGVET01BY3Rp
dmF0ZUV2ZQogICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCi1SZW5kZXJPYmpl
Y3QqIEZpbGVJbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVu
ZGVyU3R5bGUqKSBjb25zdAorUmVuZGVyT2JqZWN0KiBGaWxlSW5wdXRUeXBlOjpjcmVhdGVSZW5k
ZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKSBjb25zdAogewogICAgIHJl
dHVybiBuZXcgKGFyZW5hKSBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbChlbGVtZW50KCkpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgJKHJldmlzaW9uIDEzMzI0MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHZhbHVlTWlzc2luZyhjb25z
dCBTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZU1pc3Np
bmdUZXh0KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZURPTUFjdGl2
YXRlRXZlbnQoRXZlbnQqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwg
UmVuZGVyU3R5bGUqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0U3Ry
aW5nVmFsdWUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2hhbmdlRnJv
bUFub3RoZXJUeXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBGaWxlTGlzdCogZmls
ZXMoKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBs
ZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBib29sIEhUTUxB
cHBsZXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkCiAgICAgcmV0dXJuIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7CiB9CiAKLVJlbmRlck9iamVjdCog
SFRNTEFwcGxldEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqIHN0eWxlKQorUmVuZGVyT2JqZWN0KiBIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBpZiAoIWNhbkVt
YmVkSmF2YSgpKQogICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QodGhp
cywgc3R5bGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaAko
cmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwogICAgIAog
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250
ZXh0JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRl
ck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKikgT1ZF
UlJJREU7CiAKICAgICB2aXJ0dWFsIFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0Rm9ySlNCaW5k
aW5ncygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRp
b25PcHRpb24pIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSFRNTEJSRWxlbWVu
dDo6Y29sbGVjdFN0eWxlRm9yQXR0cmkKICAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHls
ZUZvckF0dHJpYnV0ZShhdHRyaWJ1dGUsIHN0eWxlKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBIVE1M
QlJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxl
KiBzdHlsZSkKK1JlbmRlck9iamVjdCogSFRNTEJSRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVj
eWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICAgaWYgKHN0eWxl
LT5oYXNDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVj
dCh0aGlzLCBzdHlsZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaAkocmV2
aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoY29uc3QgQXR0
cmlidXRlJiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJl
bmRlclN0eWxlKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3
ICs1OCw3IEBAIHZvaWQgSFRNTEJ1dHRvbkVsZW1lbnQ6OnNldFR5cGUoY29uc3QgQXQKICAgICBz
ZXRBdHRyaWJ1dGUodHlwZUF0dHIsIHR5cGUpOwogfQogCi1SZW5kZXJPYmplY3QqIEhUTUxCdXR0
b25FbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxl
KikKK1JlbmRlck9iamVjdCogSFRNTEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3lj
bGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEp
IFJlbmRlckJ1dHRvbih0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1
dHRvbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0
b25FbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEJ1dHRvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRl
OgogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNv
bnN0OwogICAgICAgICAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHZpcnR1
YWwgdm9pZCB3aWxsQWRkQXV0aG9yU2hhZG93Um9vdCgpIE9WRVJSSURFOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjCiAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAK
LVJlbmRlck9iamVjdCogSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQorUmVuZGVyT2JqZWN0KiBIVE1MQ2FudmFz
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxl
KiBzdHlsZSkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOwogICAg
IGlmIChmcmFtZSAmJiBmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0
VG9FeGVjdXRlU2NyaXB0KSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJpdmF0ZToK
ICAgICBIVE1MQ2FudmFzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5k
ZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0
YWNoKCk7CiAgICAgdmlydHVhbCBib29sIGFyZUF1dGhvclNoYWRvd3NBbGxvd2VkKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRGV0YWlsc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERldGFpbHNFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyAr
MTAyLDcgQEAgSFRNTERldGFpbHNFbGVtZW50OjpIVE1MRGV0YWlsc0VsZW1lbnQoYwogICAgIEFT
U0VSVChoYXNUYWdOYW1lKGRldGFpbHNUYWcpKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBIVE1MRGV0
YWlsc0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqKQorUmVuZGVyT2JqZWN0KiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJl
Y3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJl
bmEpIFJlbmRlckJsb2NrKHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RGV0YWlsc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
ZXRhaWxzRWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEZXRhaWxzRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTERldGFpbHNFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmly
dHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERpYWxvZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERpYWxvZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEs
NyBAQCBib29sIEhUTUxEaWFsb2dFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0CiAgICAgcmV0dXJu
IEhUTUxFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1lKTsKIH0KIAotUmVuZGVy
T2JqZWN0KiBIVE1MRGlhbG9nRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIEhUTUxEaWFsb2dFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJl
dHVybiBuZXcgKGFyZW5hKSBSZW5kZXJEaWFsb2codGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGlhbG9nRWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcg
KzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MRGlhbG9nRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5k
ZXJTdHlsZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgT1ZFUlJJREU7CiB9OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3MCw3ICs3
NzAsNyBAQCBib29sIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0CiAgICAgcmV0
dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7CiB9CiAKLVJlbmRl
ck9iamVjdCogSFRNTEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwg
UmVuZGVyU3R5bGUqIHN0eWxlKQorUmVuZGVyT2JqZWN0KiBIVE1MRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBp
ZiAoaGFzTG9jYWxOYW1lKHdiclRhZykpCiAgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5k
ZXJXb3JkQnJlYWsodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCShyZXZp
c2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaWVGb3JiaWRzSW5z
ZXJ0SFRNTCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsK
IAogICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSgpIGNvbnN0IHsgcmV0dXJuIHZpcnR1YWxGb3Jt
KCk7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNl
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgSFRNTEZpZWxkU2V0RWxlbWVudDoKICAgICByZXR1cm4gZmllbGRzZXQ7CiB9CiAK
LVJlbmRlck9iamVjdCogSFRNTEZpZWxkU2V0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIEhUTUxGaWVsZFNldEVs
ZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSop
CiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckZpZWxkc2V0KHRoaXMpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgJKHJldmlzaW9uIDEz
MzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNFbnVtZXJhdGFibGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzRm9jdXMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIHJlY2FsY1dpbGxWYWxpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNl
ciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnRE
ZWx0YSkgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgYm9vbCBIVE1MRnJh
bWVFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKAogICAgIHJldHVybiBpc1VSTEFsbG93ZWQoKTsK
IH0KIAotUmVuZGVyT2JqZWN0KiBIVE1MRnJhbWVFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogSFRNTEZyYW1lRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikK
IHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyRnJhbWUodGhpcyk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4
dCYpOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRl
cmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMy
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTcsNyArMTU3LDcgQEAgYm9vbCBIVE1MRnJhbWVTZXRFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZAogICAgIHJldHVybiBjb250ZXh0LnN0eWxlKCktPmlzU3R5bGVBdmFpbGFi
bGUoKTsKIH0KIAotUmVuZGVyT2JqZWN0ICpIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSAqYXJlbmEsIFJlbmRlclN0eWxlICpzdHlsZSkKK1JlbmRlck9iamVj
dCogSFRNTEZyYW1lU2V0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBpZiAoc3R5bGUtPmhhc0NvbnRlbnQoKSkK
ICAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KHRoaXMsIHN0eWxlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCShyZXZpc2lv
biAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2
b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5v
ZGVSZW5kZXJpbmdDb250ZXh0Jik7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAg
CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZAogICAgIHJldHVybiBpc1VSTEFsbG93ZWQoKSAmJiBjb250ZXh0LnN0eWxlKCkt
PmRpc3BsYXkoKSAhPSBOT05FOwogfQogCi1SZW5kZXJPYmplY3QqIEhUTUxJRnJhbWVFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRl
ck9iamVjdCogSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEq
IGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlcklG
cmFtZSh0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50
LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKICAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYp
OwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2FsY1N0eWxlKFN0eWxlQ2hhbmdlKSBPVkVSUklERTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2
MCw3IEBAIHZvaWQgSW1hZ2VFbGVtZW50OjpzZXRJbWFnZUlmTmVjZXNzYXJ5KFIKICAgICB9CiB9
CiAKLVJlbmRlck9iamVjdCogSW1hZ2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlckZvckltYWdlKEhU
TUxFbGVtZW50KiBlbGVtZW50LCBSZW5kZXJBcmVuYSogYXJlbmEpCitSZW5kZXJPYmplY3QqIElt
YWdlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXJGb3JJbWFnZShIVE1MRWxlbWVudCogZWxlbWVudCwg
UmVjeWNsZWRBcmVuYSogYXJlbmEpCiB7CiAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gbmV3IChh
cmVuYSkgUmVuZGVySW1hZ2UoZWxlbWVudCk7CiAgICAgaW1hZ2UtPnNldEltYWdlUmVzb3VyY2Uo
UmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkpOwpAQCAtMTk0LDcgKzE5NCw3IEBAIFN0cmlu
ZyBIVE1MSW1hZ2VFbGVtZW50OjphbHRUZXh0KCkgY29uc3QKICAgICByZXR1cm4gYWx0OwogfQog
Ci1SZW5kZXJPYmplY3QqIEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQorUmVuZGVyT2JqZWN0KiBIVE1MSW1hZ2VF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUq
IHN0eWxlKQogewogICAgIGlmIChzdHlsZS0+aGFzQ29udGVudCgpIHx8IHNoYWRvdygpKQogICAg
ICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEltYWdlSW5uZXJFbGVtZW50OwogY2xhc3MgSW1hZ2VF
bGVtZW50IHsKIHByb3RlY3RlZDoKICAgICB2b2lkIHNldEltYWdlSWZOZWNlc3NhcnkoUmVuZGVy
T2JqZWN0KiwgSW1hZ2VMb2FkZXIqKTsKLSAgICBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
Rm9ySW1hZ2UoSFRNTEVsZW1lbnQqLCBSZW5kZXJBcmVuYSopOworICAgIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXJGb3JJbWFnZShIVE1MRWxlbWVudCosIFJlY3ljbGVkQXJlbmEqKTsKIH07
CiAKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBJ
bWFnZUVsZW1lbnQsIHB1YmxpYyBJbWFnZUxvYWRlckNsaWVudCB7CkBAIC0xMTAsNyArMTEwLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGNv
bnN0IEF0dHJpYnV0ZSYsIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgdm9pZCBhdHRhY2goKTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4
NSw3ICs3ODUsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoCiAg
ICAgcmV0dXJuIG1faW5wdXRUeXBlLT5yZW5kZXJlcklzTmVlZGVkKCkgJiYgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7CiB9CiAKLVJlbmRlck9i
amVjdCogSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5h
LCBSZW5kZXJTdHlsZSogc3R5bGUpCitSZW5kZXJPYmplY3QqIEhUTUxJbnB1dEVsZW1lbnQ6OmNy
ZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7
CiAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5jcmVhdGVSZW5kZXJlcihhcmVuYSwgc3R5bGUpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHJldmlzaW9uIDEz
MzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xODcsNyArMTg3LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuSGF2ZVNlbGVj
dGlvbigpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
Tm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAKICAgICAvLyBGSVhNRTogRm9yIGlzQWN0aXZhdGVk
U3VibWl0IGFuZCBzZXRBY3RpdmF0ZWRTdWJtaXQsIHdlIHNob3VsZCB1c2UgdGhlIE5WSS1pZGlv
bSBoZXJlIGJ5IG1ha2luZwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzksNyArNDc5LDcgQEAgYm9vbCBIVE1M
TWVkaWFFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKAogI2VuZGlmCiB9CiAKLVJlbmRlck9iamVj
dCogSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBS
ZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAjaWYgRU5BQkxFKFBM
VUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgLy8gU2V0dXAgdGhlIHJlbmRlcmVyIGlmIHdlIGFs
cmVhZHkgaGF2ZSBhIHByb3h5IHdpZGdldC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYzLDcgKzM2Myw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7Ci0gICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJl
bmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
Y29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSop
IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIFBhc3NSZWZQdHI8SFRNTE1l
dGVyRWxlbWVudD4gSFRNTE1ldGVyRWwKICAgICByZXR1cm4gbWV0ZXI7CiB9CiAKLVJlbmRlck9i
amVjdCogSFRNTE1ldGVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5h
LCBSZW5kZXJTdHlsZSogc3R5bGUpCitSZW5kZXJPYmplY3QqIEhUTUxNZXRlckVsZW1lbnQ6OmNy
ZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7
CiAgICAgaWYgKGhhc0F1dGhvclNoYWRvd1Jvb3QoKSB8fCAhZG9jdW1lbnQoKS0+cGFnZSgpLT50
aGVtZSgpLT5zdXBwb3J0c01ldGVyKHN0eWxlLT5hcHBlYXJhbmNlKCkpKQogICAgICAgICByZXR1
cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3
ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgYm9vbCByZWNhbGNXaWxsVmFsaWRhdGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jikg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0
dHJpYnV0ZSYpIE9WRVJSSURFOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
OSw3ICsxMjksNyBAQCBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OndvdWxkTG9hZEFzCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZW5kZXJPYmplY3QqIEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxl
KQorUmVuZGVyT2JqZWN0KiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihS
ZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIC8vIE9uY2Ug
YSBQbHVnSW4gRWxlbWVudCBjcmVhdGVzIGl0cyByZW5kZXJlciwgaXQgbmVlZHMgdG8gYmUgdG9s
ZCB3aGVuIHRoZSBEb2N1bWVudCBnb2VzCiAgICAgLy8gaW5hY3RpdmUgb3IgcmVhY3RpdmF0ZXMg
c28gaXQgY2FuIGNsZWFyIHRoZSByZW5kZXJlciBiZWZvcmUgZ29pbmcgaW50byB0aGUgcGFnZSBj
YWNoZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRl
cmVyKCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7
CiAgICAgdmlydHVhbCBib29sIHdpbGxSZWNhbGNTdHlsZShTdHlsZUNoYW5nZSk7CiAgICAgCiAg
ICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw3ICs2MCw3IEBAIFBhc3NSZWZQdHI8SFRNTFByb2dyZXNzRWxlbWVudD4gSFRN
TFByb2cKICAgICByZXR1cm4gcHJvZ3Jlc3M7CiB9CiAKLVJlbmRlck9iamVjdCogSFRNTFByb2dy
ZXNzRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHls
ZSogc3R5bGUpCitSZW5kZXJPYmplY3QqIEhUTUxQcm9ncmVzc0VsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaWYg
KCFzdHlsZS0+aGFzQXBwZWFyYW5jZSgpIHx8IGhhc0F1dGhvclNoYWRvd1Jvb3QoKSkKICAgICAg
ICAgcmV0dXJuIFJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KHRoaXMsIHN0eWxlKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oCShyZXZpc2lvbiAxMzMy
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzRm9jdXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAg
IHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJp
bmdDb250ZXh0JikgY29uc3QgT1ZFUlJJREU7CiAgICAgUmVuZGVyUHJvZ3Jlc3MqIHJlbmRlclBy
b2dyZXNzKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM4LDcgKzMzOCw3IEBAIGJvb2wg
SFRNTFNlbGVjdEVsZW1lbnQ6OmNhblNlbGVjdEFsbCgpIGMKICAgICByZXR1cm4gIXVzZXNNZW51
TGlzdCgpOwogfQogCi1SZW5kZXJPYmplY3QqIEhUTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogSFRN
TFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5k
ZXJTdHlsZSopCiB7CiAgICAgaWYgKHVzZXNNZW51TGlzdCgpKQogICAgICAgICByZXR1cm4gbmV3
IChhcmVuYSkgUmVuZGVyTWVudUxpc3QodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJikgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIGNvbnN0
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSosIFJlbmRlclN0eWxlICopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVh
dGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUgKik7CiAgICAgdmlydHVhbCBi
b29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpOwogCiAgICAgdmlydHVhbCB2
b2lkIHJlc2V0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1t
YXJ5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgSFRNTFN1bW1h
cnlFbGVtZW50OjpIVE1MU3VtbWFyeUVsZW1lbnQoYwogICAgIEFTU0VSVChoYXNUYWdOYW1lKHN1
bW1hcnlUYWcpKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0
KiBIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5h
LCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckJsb2NrKHRo
aXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCShy
ZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgSFRNTFN1bW1hcnlFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwog
Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwg
UmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIo
UmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHJldmlz
aW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlCiAgICAgICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogCi1SZW5kZXJPYmplY3QqIEhUTUxUZXh0
QXJlYUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqKQorUmVuZGVyT2JqZWN0KiBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihS
ZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFy
ZW5hKSBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZSh0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNl
bnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
LCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxl
Kik7CiAgICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wp
OwogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwogICAgIHZpcnR1YWwgYm9vbCBoYXNDdXN0b21G
b2N1c0xvZ2ljKCkgY29uc3QgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAg
Ym9vbCBIVE1MVmlkZW9FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKAogfQogCiAjaWYgIUVOQUJM
RShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotUmVuZGVyT2JqZWN0KiBIVE1MVmlkZW9FbGVtZW50
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRl
ck9iamVjdCogSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyVmlk
ZW8odGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAko
cmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAj
aWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzIsNyArNzIsNyBAQCBib29sIEhpZGRlbklucHV0VHlwZTo6c3VwcG9ydHNWYWxpZGF0aW9u
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZW5kZXJPYmplY3QqIEhpZGRlbklucHV0VHlwZTo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0CitSZW5kZXJP
YmplY3QqIEhpZGRlbklucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJl
bmRlclN0eWxlKikgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaAkocmV2aXNpb24g
MTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRm9ybUNvbnRy
b2xTdGF0ZSBzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCByZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0IE9W
RVJSSURFOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91
c2VFdmVudHMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHN0b3Jlc1ZhbHVlU2VwYXJhdGVGcm9tQXR0cmli
dXRlKCkgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNw
cAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEltYWdlSW5wdXRU
eXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2CiAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7
CiB9CiAKLVJlbmRlck9iamVjdCogSW1hZ2VJbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKSBjb25zdAorUmVuZGVyT2JqZWN0KiBJbWFnZUlu
cHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxl
KikgY29uc3QKIHsKICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBuZXcgKGFyZW5hKSBSZW5kZXJJ
bWFnZShlbGVtZW50KCkpOwogICAgIGltYWdlLT5zZXRJbWFnZVJlc291cmNlKFJlbmRlckltYWdl
UmVzb3VyY2U6OmNyZWF0ZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1
dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBl
LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgYm9vbCBpc0Zvcm1EYXRhQXBwZW5kYWJsZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3QgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwg
UmVuZGVyU3R5bGUqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKikgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgYWx0QXR0cmlidXRlQ2hhbmdlZCgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBzcmNBdHRyaWJ1dGVDaGFuZ2VkKCkgT1ZFUlJJREU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0NSw3ICs0NDUsNyBA
QCBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gSW5wdXRUeXBlOjpmCiAgICAgcmV0dXJuIGVs
ZW1lbnQoKS0+Zm9ybSgpOwogfQogCi1SZW5kZXJPYmplY3QqIElucHV0VHlwZTo6Y3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CitSZW5kZXJPYmpl
Y3QqIElucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxl
KiBzdHlsZSkgY29uc3QKIHsKICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3Qo
ZWxlbWVudCgpLCBzdHlsZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgJKHJldmlz
aW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgSWNvbjsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7
CiBjbGFzcyBNb3VzZUV2ZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFJlbmRlckFyZW5hOworY2xh
c3MgUmVjeWNsZWRBcmVuYTsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclN0eWxl
OwogY2xhc3MgVG91Y2hFdmVudDsKQEAgLTIzNyw3ICsyMzcsNyBAQCBwdWJsaWM6CiAgICAgLy8g
TWlzY2VsbGFuZW91cyBmdW5jdGlvbnMKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKCk7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKikgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIGFkZFNlYXJjaFJlc3VsdCgpOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1Jh
bmdlSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1Jhbmdl
SW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9S
YW5nZUlucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lk
IFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlCiAgICAgZWxlbWVudCgpLT51c2Vy
QWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKGNvbnRhaW5lci5yZWxlYXNlKCksIGVjKTsK
IH0KIAotUmVuZGVyT2JqZWN0KiBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopIGNvbnN0CitSZW5kZXJPYmplY3QqIFJhbmdlSW5w
dXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUq
KSBjb25zdAogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTbGlkZXIoZWxlbWVudCgp
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgJKHJldmlzaW9uIDEz
MzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNTksNyArNTksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjZW5kaWYKICAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5k
ZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVh
dGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgRGVjaW1hbCBwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwm
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoY29uc3QgRGVj
aW1hbCYpIGNvbnN0IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJ
bnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5w
dXRUeXBlLmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9TZWFy
Y2hJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgU2Vh
cmNoSW5wdXRUeXBlOjphZGRTZWFyY2hSZXN1bHQoKQogICAgICAgICB0b1JlbmRlclNlYXJjaEZp
ZWxkKHJlbmRlcmVyKS0+YWRkU2VhcmNoUmVzdWx0KCk7CiB9CiAKLVJlbmRlck9iamVjdCogU2Vh
cmNoSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0
eWxlKikgY29uc3QKK1JlbmRlck9iamVjdCogU2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJl
cihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKSBjb25zdAogewogICAgIHJldHVy
biBuZXcgKGFyZW5hKSBSZW5kZXJTZWFyY2hGaWVsZChlbGVtZW50KCkpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3
ICs0OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU2VhcmNoSW5wdXRUeXBlKEhUTUxJbnB1
dEVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkU2VhcmNoUmVzdWx0KCkgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwg
UmVuZGVyU3R5bGUqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKikgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXNwZWN0U3BlZWNoQXR0cmli
dXRlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCBP
VkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5j
cHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5w
dXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDcgKzIwMSw3IEBAIGJvb2wgVGV4dEZp
ZWxkSW5wdXRUeXBlOjpzaG91bGRTdWJtaXRJbXAKICAgICByZXR1cm4gKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLnRleHRJbnB1dEV2ZW50ICYmIGV2ZW50LT5oYXNJbnRlcmZhY2UoZXZl
bnROYW1lcygpLmludGVyZmFjZUZvclRleHRFdmVudCkgJiYgc3RhdGljX2Nhc3Q8VGV4dEV2ZW50
Kj4oZXZlbnQpLT5kYXRhKCkgPT0gIlxuIikgfHwgSW5wdXRUeXBlOjpzaG91bGRTdWJtaXRJbXBs
aWNpdGx5KGV2ZW50KTsKIH0KIAotUmVuZGVyT2JqZWN0KiBUZXh0RmllbGRJbnB1dFR5cGU6OmNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKSBjb25zdAorUmVu
ZGVyT2JqZWN0KiBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJl
bmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopIGNvbnN0CiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEp
IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShlbGVtZW50KCkpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUJlZm9yZVRl
eHRJbnNlcnRlZEV2ZW50KEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGZvcndhcmRFdmVudChFdmVudCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRTdWJtaXRJbXBsaWNpdGx5KEV2ZW50KikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBib29sIHNob3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0
RmllbGRFdmVudEJlaGF2aW9yKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBzYW5pdGl6
ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcAkocmV2aXNp
b24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNv
bnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIERldGFpbHNNYXJrZXJD
b250cm9sOjpEZXRhaWxzTWFya2VyQ29udHIKIHsKIH0KIAotUmVuZGVyT2JqZWN0KiBEZXRhaWxz
TWFya2VyQ29udHJvbDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSopCitSZW5kZXJPYmplY3QqIERldGFpbHNNYXJrZXJDb250cm9sOjpjcmVhdGVSZW5kZXJl
cihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcg
KGFyZW5hKSBSZW5kZXJEZXRhaWxzTWFya2VyKHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5oCShyZXZpc2lvbiAx
MzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJv
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxEZXRhaWxzTWFya2VyQ29udHJvbD4gY3JlYXRlKERvY3VtZW50Kik7CiAKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIHJl
bmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW1hZ2VJbm5lckVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0ltYWdlSW5uZXJFbGVtZW50LmNwcAkocmV2
aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW1hZ2VJbm5lckVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgSW1hZ2VJbm5l
ckVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgc2V0SW1hZ2VJZk5lY2Vzc2FyeShyZW5kZXJlcigpLCBp
bWFnZUxvYWRlcigpKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBJbWFnZUlubmVyRWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCitSZW5k
ZXJPYmplY3QqIEltYWdlSW5uZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5h
KiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGlmIChzdHlsZS0+aGFzQ29udGVu
dCgpKQogICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QodGhpcywgc3R5
bGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW1hZ2VJbm5lckVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbWFnZUlubmVyRWxl
bWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9J
bWFnZUlubmVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHByaXZh
dGU6CiAgICAgUmVuZGVyT2JqZWN0KiBpbWFnZVJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gSFRN
TEVsZW1lbnQ6OnJlbmRlcmVyKCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqLCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgy
LDcgKzM4Miw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGEKICAg
ICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7CiB9CiAKLVJlbmRlck9iamVjdCogTWVkaWFDb250
cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlck1lZGlh
Vm9sdW1lU2xpZGVyQ29udGFpbmVyKHRoaXMpOwogfQpAQCAtMTIxNSw3ICsxMjE1LDcgQEAgdm9p
ZCBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQ6OnNldAogICAgIG1fY3VycmVudFZhbHVl
ID0gdGltZTsKIH0KIAotUmVuZGVyT2JqZWN0KiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVu
ZGVyT2JqZWN0KiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAo
YXJlbmEpIFJlbmRlck1lZGlhQ29udHJvbFRpbWVEaXNwbGF5KHRoaXMpOwogfQpAQCAtMTMwOCw3
ICsxMzA4LDcgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZQogICAg
IHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBNZWRpYUNvbnRy
b2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogTWVkaWFDb250cm9sVGV4dFRyYWNr
Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJl
bmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudCh0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50KERvY3VtZW50Kik7Ci0gICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVu
YSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqKTsKICAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBl
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lk
KCkgY29uc3Q7CkBAIC01MDAsNyArNTAwLDcgQEAgcHJvdGVjdGVkOgogICAgIE1lZGlhQ29udHJv
bFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCopOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7
CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEq
LCBSZW5kZXJTdHlsZSopOwogCiAgICAgZmxvYXQgbV9jdXJyZW50VmFsdWU7CiB9OwpAQCAtNTQ0
LDcgKzU0NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWVkaWFDb250cm9sVGV4dFRyYWNr
Q29udGFpbmVyRWxlbWVudChEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxl
Kik7CiAgICAgdmlydHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIE1lZGlhVGV4dFRyYWNrRGlzcGxheUNvbnRhaW5lcjsgfQogICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hh
ZG93RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgYm9vbCBNZXRl
cklubmVyRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZAogICAgIHJldHVybiByZW5kZXIgJiYgIXJl
bmRlci0+dGhlbWUoKS0+c3VwcG9ydHNNZXRlcihyZW5kZXItPnN0eWxlKCktPmFwcGVhcmFuY2Uo
KSkgJiYgSFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7CiB9CiAKLVJl
bmRlck9iamVjdCogTWV0ZXJJbm5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBNZXRlcklubmVyRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAg
ICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyTWV0ZXIodGhpcyk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaAkocmV2aXNpb24g
MTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250
ZXh0JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRl
ck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkg
Y29uc3QgT1ZFUlJJREU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Q
aWNrZXJJbmRpY2F0b3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9QaWNrZXJJbmRpY2F0b3JFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUGlja2VySW5kaWNhdG9yRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgUGlja2VySW5kaWNhdG9yRWxlbWVudDo6
flBpY2tlckluZGljYXRvcgogICAgIEFTU0VSVCghbV9jaG9vc2VyKTsKIH0KIAotUmVuZGVyT2Jq
ZWN0KiBQaWNrZXJJbmRpY2F0b3JFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogUGlja2VySW5kaWNhdG9yRWxlbWVu
dDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsK
ICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyRGV0YWlsc01hcmtlcih0aGlzKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1BpY2tlckluZGljYXRvckVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9QaWNrZXJJbmRpY2F0b3JF
bGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1BpY2tlckluZGljYXRvckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUGlja2VySW5kaWNhdG9yRWxlbWVudChEb2N1bWVu
dCopOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSosIFJlbmRlclN0eWxlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRldGFjaCgpIE9WRVJSSURFOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAJKHJldmlzaW9u
IDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBQcm9ncmVzc0lubmVyRWxlbWVudAogICAgIHJldHVybiBwc2V1ZElkOwogfQogCi1SZW5k
ZXJPYmplY3QqIFByb2dyZXNzSW5uZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogUHJvZ3Jlc3NJbm5lckVsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7
CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclByb2dyZXNzKHRoaXMpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50
LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dy
ZXNzU2hhZG93RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2dyZXNzSW5uZXJFbGVtZW50PiBjcmVhdGUo
RG9jdW1lbnQqKTsKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxl
KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVk
b0lkKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9k
ZVJlbmRlcmluZ0NvbnRleHQmKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6c2V0UG9z
aXRpb25Gcm9tCiAgICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQog
Ci1SZW5kZXJPYmplY3QqIFNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNsaWRlclRodW1iRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikK
IHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU2xpZGVyVGh1bWIodGhpcyk7CiB9CkBA
IC00NDcsNyArNDQ3LDcgQEAgUGFzc1JlZlB0cjxUcmFja0xpbWl0ZXJFbGVtZW50PiBUcmFja0xp
bQogICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBUcmFj
a0xpbWl0ZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRl
clN0eWxlKikKK1JlbmRlck9iamVjdCogVHJhY2tMaW1pdGVyRWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3
IChhcmVuYSkgUmVuZGVyU2xpZGVyVGh1bWIodGhpcyk7CiB9CkBAIC00OTQsNyArNDk0LDcgQEAg
UGFzc1JlZlB0cjxTbGlkZXJDb250YWluZXJFbGVtZW50PiBTbGlkZQogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU2xpZGVyQ29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOwogfQogCi1SZW5kZXJP
YmplY3QqIFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBTbGlkZXJDb250YWluZXJFbGVt
ZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQog
ewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTbGlkZXJDb250YWluZXIodGhpcyk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1l
bnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xp
ZGVyVGh1bWJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIFNsaWRlclRodW1iRWxlbWVudChEb2N1bWVudCopOwotICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVk
QXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBj
bG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCk7CiAgICAgdmlydHVhbCBi
b29sIGlzRW5hYmxlZEZvcm1Db250cm9sKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZE1hdGNoUmVhZE9ubHlTZWxlY3RvcigpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTIxLDcgKzEyMSw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBUcmFja0xpbWl0ZXJFbGVtZW50KERvY3VtZW50
Kik7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiB9OwogCkBAIC0xMzcsNyArMTM3LDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFNsaWRlckNvbnRhaW5lckVsZW1lbnQoRG9jdW1l
bnQqKTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5k
ZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIH07CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBA
QCB2b2lkIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6ZGVmYXVsCiAgICAgICAgIEhUTUxE
aXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAotUmVuZGVyT2JqZWN0
KiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBUZXh0Q29udHJvbElubmVyVGV4
dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHls
ZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9j
ayh0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAkod29ya2luZyBj
b3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgVGV4dENvbnRy
b2xJbm5lclRleHRFbGVtZW50KERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxl
Kik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJl
bmRlcmVyKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRGaWVsZERlY29yYXRpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5jcHAJKHJldmlz
aW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRGaWVsZERlY29y
YXRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDcgKzE1OCw3IEBAIFBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IFRleHRGaWVsZERlY29yYXQKICAgICByZXR1cm4gc3R5bGUucmVs
ZWFzZSgpOwogfQogCi1SZW5kZXJPYmplY3QqIFRleHRGaWVsZERlY29yYXRpb25FbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9i
amVjdCogVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVk
QXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0g
bmV3IChhcmVuYSkgUmVuZGVySW1hZ2UodGhpcyk7CiAgICAgaW1hZ2UtPnNldEltYWdlUmVzb3Vy
Y2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0RmllbGREZWNvcmF0aW9uRWxlbWVudC5oCShy
ZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0RmllbGRE
ZWNvcmF0aW9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHByaXZh
dGU6CiAgICAgVGV4dEZpZWxkRGVjb3JhdGlvbkVsZW1lbnQoRG9jdW1lbnQqLCBUZXh0RmllbGRE
ZWNvcmF0b3IqKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RmllbGREZWNvcmF0aW9uKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21T
dHlsZUZvclJlbmRlcmVyKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRl
clN0eWxlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNN
b3VzZUZvY3VzYWJsZSgpIGNvbnN0IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzks
NyArMTc5LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2tDdWVCb3g6OnNoYQogICAg
IHJldHVybiB0ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpOwogfQogCi1SZW5kZXJPYmpl
Y3QqIFRleHRUcmFja0N1ZUJveDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBS
ZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFRleHRUcmFja0N1ZUJveDo6Y3JlYXRlUmVuZGVy
ZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3
IChhcmVuYSkgUmVuZGVyVGV4dFRyYWNrQ3VlKHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3
ICs2NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlQm94KERvY3VtZW50
KiwgVGV4dFRyYWNrQ3VlKik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUq
KSBPVkVSUklERTsKIAogICAgIFRleHRUcmFja0N1ZSogbV9jdWU7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBA
IFBhc3NSZWZQdHI8TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudD4KICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
KTsKIH0KIAotUmVuZGVyT2JqZWN0KiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVj
dCogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRB
cmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICBpZiAoaGFzTG9jYWxOYW1lKG1yb3dU
YWcpKQogICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyTWF0aE1MUm93KHRoaXMpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFp
bmVyRWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0
MCw3IEBAIHByb3RlY3RlZDoKICAgICBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRB
cmVuYSosIFJlbmRlclN0eWxlKik7CiB9OwogICAgIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw3ICs1MSw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgTWF0aE0K
ICAgICByZXR1cm4gTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGlu
c2VydGlvblBvaW50KTsKIH0KIAotUmVuZGVyT2JqZWN0KiBNYXRoTUxNYXRoRWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmpl
Y3QqIE1hdGhNTE1hdGhFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVu
YSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJNYXRoTUxN
YXRoKHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVt
ZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxN
YXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHByaXZhdGU6CiAg
ICAgTWF0aE1MTWF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqKTsKIAogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRl
ZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHls
ZSopOwogfTsKICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRl
eHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFRleHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBQ
YXNzUmVmUHRyPE1hdGhNTFRleHRFbGVtZW50PiBNYXRoTUxUZXh0CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBNYXRoTUxUZXh0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1SZW5k
ZXJPYmplY3QqIE1hdGhNTFRleHRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKK1JlbmRlck9iamVjdCogTWF0aE1MVGV4dEVsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5
bGUpCiB7CiAgICAgaWYgKGhhc0xvY2FsTmFtZShNYXRoTUxOYW1lczo6bW9UYWcpKQogICAgICAg
ICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyTWF0aE1MT3BlcmF0b3IodGhpcyk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQw
KQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBNYXRoTUxUZXh0
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwogCi0gICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNs
ZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiB9OwogICAgIAogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBACiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIk92ZXJmbG93RXZlbnQuaCIKLSNpbmNsdWRlICJSZW5kZXJBcmVuYS5o
IgorI2luY2x1ZGUgIlJlY3ljbGVkQXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9i
amVjdC5oIgogI2luY2x1ZGUgIlJlbmRlckZ1bGxTY3JlZW4uaCIKICNpbmNsdWRlICJSZW5kZXJJ
RnJhbWUuaCIKQEAgLTI0MTgsNyArMjQxOCw3IEBAIGJvb2wgRnJhbWVWaWV3Ojp1cGRhdGVXaWRn
ZXRzKCkKICAgICAgICAgbV93aWRnZXRVcGRhdGVTZXQtPnJlbW92ZShvYmplY3QpOwogICAgIH0K
IAotICAgIFJlbmRlckFyZW5hKiBhcmVuYSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnJlbmRlckFy
ZW5hKCk7CisgICAgUmVjeWNsZWRBcmVuYSogYXJlbmEgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5y
ZW5kZXJBcmVuYSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAg
ICAgICBvYmplY3RzW2ldLT5kZXJlZihhcmVuYSk7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAj
aW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFj
a2VyLmgiCi0jaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKKyNpbmNsdWRlICJSZWN5Y2xlZEFyZW5h
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAj
aW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCkBAIC0yMjMsOSArMjIzLDkgQEAgQXJlbmFTaXplIFBh
Z2U6OnJlbmRlclRyZWVTaXplKCkgY29uc3QKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5G
cmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewog
ICAgICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIGlmIChSZW5kZXJBcmVuYSogYXJlbmEgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVy
QXJlbmEoKSkgewotICAgICAgICAgICAgdG90YWwudHJlZVNpemUgKz0gYXJlbmEtPnRvdGFsUmVu
ZGVyQXJlbmFTaXplKCk7Ci0gICAgICAgICAgICB0b3RhbC5hbGxvY2F0ZWQgKz0gYXJlbmEtPnRv
dGFsUmVuZGVyQXJlbmFBbGxvY2F0ZWRCeXRlcygpOworICAgICAgICBpZiAoUmVjeWNsZWRBcmVu
YSogYXJlbmEgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSkgeworICAgICAgICAg
ICAgdG90YWwudHJlZVNpemUgKz0gYXJlbmEtPnRvdGFsUmVjeWNsZWRBcmVuYVNpemUoKTsKKyAg
ICAgICAgICAgIHRvdGFsLmFsbG9jYXRlZCArPSBhcmVuYS0+dG90YWxSZWN5Y2xlZEFyZW5hQWxs
b2NhdGVkQnl0ZXMoKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdG90YWw7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWN5Y2xlZEFyZW5hLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWN5Y2xlZEFyZW5hLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlY3ljbGVkQXJlbmEuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMyBBcHBsZSBDb21w
dXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAy
MDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBvcnRpb25zIGFyZSBDb3B5cmlnaHQg
KEMpIDE5OTggTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAx
ICBVU0EKKyAqCisgKiBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1h
eSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcworICogb2YgZWl0aGVyIHRoZSBNb3ppbGxhIFB1Ymxp
YyBMaWNlbnNlIFZlcnNpb24gMS4xLCBmb3VuZCBhdAorICogaHR0cDovL3d3dy5tb3ppbGxhLm9y
Zy9NUEwvICh0aGUgIk1QTCIpIG9yIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
VmVyc2lvbiAyLjAsIGZvdW5kIGF0IGh0dHA6Ly93d3cuZnNmLm9yZy9jb3B5bGVmdC9ncGwuaHRt
bAorICogKHRoZSAiR1BMIiksIGluIHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIE1Q
TCBvciB0aGUgR1BMIGFyZQorICogYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRob3NlIGFib3ZlLiAg
SWYgeW91IHdpc2ggdG8gYWxsb3cgdXNlIG9mIHlvdXIKKyAqIHZlcnNpb24gb2YgdGhpcyBmaWxl
IG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIG9uZSBvZiB0aG9zZSB0d28KKyAqIGxpY2Vuc2VzICh0
aGUgTVBMIG9yIHRoZSBHUEwpIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZSB5b3VyCisg
KiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTEdQTCwgaW5kaWNhdGUgeW91ciBkZWNp
c2lvbiBieQorICogZGVsZXRpbmd0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVt
IHdpdGggdGhlIG5vdGljZSBhbmQKKyAqIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhl
IE1QTCBvciB0aGUgR1BMLCBhcyB0aGUgY2FzZSBtYXkgYmUuCisgKiBJZiB5b3UgZG8gbm90IGRl
bGV0ZSB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyCisgKiB2
ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciBhbnkgb2YgdGhlIExHUEwsIHRoZSBNUEwgb3IgdGhl
IEdQTC4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVjeWNsZWRBcmVu
YS5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworI2RlZmluZSBST1VORFVQKHgsIHkpICgoKCh4KSsoKHkp
LTEpKS8oeSkpKih5KSkKKworI2lmZGVmIE5ERUJVRworc3RhdGljIHZvaWQqIE1hc2tQdHIodm9p
ZCogcCwgdWludHB0cl90IG1hc2spCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwKSBeIG1hc2spOworfQorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmbmRlZiBOREVCVUcKKworY29uc3QgaW50IHNpZ25h
dHVyZSA9IDB4REJBMDBBRUE7Citjb25zdCBpbnQgc2lnbmF0dXJlRGVhZCA9IDB4REJBMDBBRUQ7
CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBSZWN5Y2xlZEFyZW5hKiBhcmVuYTsKKyAgICBzaXpl
X3Qgc2l6ZTsKKyAgICBpbnQgc2lnbmF0dXJlOworfSBSZWN5Y2xlZEFyZW5hRGVidWdIZWFkZXI7
CisKK3N0YXRpYyBjb25zdCBzaXplX3QgZGVidWdIZWFkZXJTaXplID0gQVJFTkFfQUxJR04oc2l6
ZW9mKFJlY3ljbGVkQXJlbmFEZWJ1Z0hlYWRlcikpOworCisjZW5kaWYKKworUmVjeWNsZWRBcmVu
YTo6UmVjeWNsZWRBcmVuYShjb25zdCBjaGFyKiBhcmVuYU5hbWUsIHVuc2lnbmVkIGFyZW5hU2l6
ZSkKKyAgICA6IG1fdG90YWxTaXplKDApCisgICAgLCBtX3RvdGFsQWxsb2NhdGVkKDApCit7Cisg
ICAgQVNTRVJUKGFyZW5hU2l6ZSA+IHNpemVvZihBcmVuYSkgKyBBUkVOQV9BTElHTl9NQVNLKTsK
KyAgICAvLyBUaGUgdW5kZXJseWluZyBBcmVuYSBjbGFzcyBhbGxvY2F0ZXMgc29tZSBtZXRhZGF0
YSBvbiB0b3Agb2Ygb3VyCisgICAgLy8gcmVxdWVzdGVkIHNpemUuIEZhY3RvciB0aGlzIGluIHNv
IHRoYXQgd2UgY2FuIGdldCBwZXJmZWN0IHBvd2VyLW9mLXR3bworICAgIC8vIGFsbG9jYXRpb24g
c2l6ZXMgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nIG1hbGxvYygpIGNhbGwuCisgICAgYXJlbmFT
aXplIC09IChzaXplb2YoQXJlbmEpICsgQVJFTkFfQUxJR05fTUFTSyk7CisgICAgLy8gSW5pdGlh
bGl6ZSB0aGUgYXJlbmEgcG9vbAorICAgIElOSVRfQVJFTkFfUE9PTCgmbV9wb29sLCBhcmVuYU5h
bWUsIGFyZW5hU2l6ZSk7CisKKyAgICAvLyBaZXJvIG91dCB0aGUgcmVjeWNsZXJzIGFycmF5Cisg
ICAgbWVtc2V0KG1fcmVjeWNsZXJzLCAwLCBzaXplb2YobV9yZWN5Y2xlcnMpKTsKKworICAgIC8v
IE1hc2sgZnJlZWxpc3QgcG9pbnRlcnMgdG8gZGV0ZWN0IGNvcnJ1cHRpb24gYW5kIHN0b3AgZnJl
ZWxpc3Qgc3ByYXlpbmcuCisgICAgLy8gV2UgdXNlIGFuIGFyYml0cmF5IGZ1bmN0aW9uIGFuZCBy
ZWx5IG9uIEFTTFIgdG8gcmFuZG9taXplIGl0LgorICAgIC8vIFRoZSBmaXJzdCB2YWx1ZSBpbiBS
ZW5kZXJPYmplY3QgKG9yIGFueSBjbGFzcykgaXMgYSB2dGFibGUgcG9pbnRlciwgd2hpY2gKKyAg
ICAvLyBhbHdheXMgb3ZlcmxhcHMgd2l0aCB0aGUgbmV4dCBwb2ludGVyLiBUaGlzIGNoYW5nZSBn
dWFyYW50ZWVzIHRoYXQgdGhlCisgICAgLy8gbWFza2VkIHZ0YWJsZS9uZXh0IHBvaW50ZXIgd2ls
bCBuZXZlciBwb2ludCB0byB2YWxpZCBtZW1vcnkuIFNvLCB3ZQorICAgIC8vIHNob3VsZCBpbW1l
ZGlhdGVseSBjcmFzaCBvbiB0aGUgZmlyc3QgaW52YWxpZCB2dGFibGUgYWNjZXNzIGZvciBhIHN0
YWxlCisgICAgLy8gUmVuZGVyT2JqZWN0IHBvaW50ZXIuCisgICAgLy8gU2VlIGh0dHA6Ly9kb3du
bG9hZC5jcm93ZHN0cmlrZS5jb20vcGFwZXJzL2hlcy1leHBsb2l0aW5nLWEtY29hbG1pbmUucGRm
LgorCisgICAgLy8gVGhlIGJvdHRvbSBiaXRzIGFyZSBwcmVkaWN0YWJsZSBiZWNhdXNlIHRoZSBi
aW5hcnkgaXMgbG9hZGVkIG9uIGEKKyAgICAvLyBib3VuZGFyeS4gVGhpcyBqdXN0IHNoaWZ0cyBt
b3N0IG9mIHRob3NlIHByZWRpY3RhYmxlIGJpdHMgb3V0LgorICAgIG1fbWFzayA9IH4ocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KFdURjo6ZmFzdE1hbGxvYykgPj4gMTMpOworfQorCitSZWN5
Y2xlZEFyZW5hOjp+UmVjeWNsZWRBcmVuYSgpCit7CisgICAgRmluaXNoQXJlbmFQb29sKCZtX3Bv
b2wpOworfQorCit2b2lkKiBSZWN5Y2xlZEFyZW5hOjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKK3sK
KyAgICBBU1NFUlQoc2l6ZSA8PSBnTWF4UmVjeWNsZWRTaXplIC0gMzIpOworICAgIG1fdG90YWxT
aXplICs9IHNpemU7CisKKyNpZmRlZiBBRERSRVNTX1NBTklUSVpFUgorICAgIHJldHVybiA6Om1h
bGxvYyhzaXplKTsKKyNlbGlmICFkZWZpbmVkKE5ERUJVRykKKyAgICAvLyBVc2Ugc3RhbmRhcmQg
bWFsbG9jIHNvIHRoYXQgbWVtb3J5IGRlYnVnZ2luZyB0b29scyB3b3JrLgorICAgIEFTU0VSVCh0
aGlzKTsKKyAgICB2b2lkKiBibG9jayA9IDo6bWFsbG9jKGRlYnVnSGVhZGVyU2l6ZSArIHNpemUp
OworICAgIFJlY3ljbGVkQXJlbmFEZWJ1Z0hlYWRlciogaGVhZGVyID0gc3RhdGljX2Nhc3Q8UmVj
eWNsZWRBcmVuYURlYnVnSGVhZGVyKj4oYmxvY2spOworICAgIGhlYWRlci0+YXJlbmEgPSB0aGlz
OworICAgIGhlYWRlci0+c2l6ZSA9IHNpemU7CisgICAgaGVhZGVyLT5zaWduYXR1cmUgPSBzaWdu
YXR1cmU7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihibG9jaykgKyBkZWJ1Z0hlYWRl
clNpemU7CisjZWxzZQorICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGNvcnJlY3QgYWxpZ25tZW50IGZv
ciBwb2ludGVycy4gSW1wb3J0YW50IGZvciBUcnU2NAorICAgIHNpemUgPSBST1VORFVQKHNpemUs
IHNpemVvZih2b2lkKikpOworCisgICAgY29uc3Qgc2l6ZV90IGluZGV4ID0gc2l6ZSA+PiBrUmVj
eWNsZXJTaGlmdDsKKworICAgIHZvaWQqIHJlc3VsdCA9IG1fcmVjeWNsZXJzW2luZGV4XTsKKyAg
ICBpZiAocmVzdWx0KSB7CisgICAgICAgIC8vIE5lZWQgdG8gbW92ZSB0byB0aGUgbmV4dCBvYmpl
Y3QKKyAgICAgICAgdm9pZCogbmV4dCA9IE1hc2tQdHIoKigodm9pZCoqKXJlc3VsdCksIG1fbWFz
ayk7CisgICAgICAgIG1fcmVjeWNsZXJzW2luZGV4XSA9IG5leHQ7CisgICAgfQorCisgICAgaWYg
KCFyZXN1bHQpIHsKKyAgICAgICAgLy8gQWxsb2NhdGUgYSBuZXcgY2h1bmsgZnJvbSB0aGUgYXJl
bmEKKyAgICAgICAgdW5zaWduZWQgYnl0ZXNBbGxvY2F0ZWQgPSAwOworICAgICAgICBBUkVOQV9B
TExPQ0FURShyZXN1bHQsICZtX3Bvb2wsIHNpemUsICZieXRlc0FsbG9jYXRlZCk7CisgICAgICAg
IG1fdG90YWxBbGxvY2F0ZWQgKz0gYnl0ZXNBbGxvY2F0ZWQ7CisgICAgfQorCisgICAgcmV0dXJu
IHJlc3VsdDsKKyNlbmRpZgorfQorCit2b2lkIFJlY3ljbGVkQXJlbmE6OmZyZWUoc2l6ZV90IHNp
emUsIHZvaWQqIHB0cikKK3sKKyAgICBBU1NFUlQoc2l6ZSA8PSBnTWF4UmVjeWNsZWRTaXplIC0g
MzIpOworICAgIG1fdG90YWxTaXplIC09IHNpemU7CisKKyNpZmRlZiBBRERSRVNTX1NBTklUSVpF
UgorICAgIDo6ZnJlZShwdHIpOworI2VsaWYgIWRlZmluZWQoTkRFQlVHKQorICAgIC8vIFVzZSBz
dGFuZGFyZCBmcmVlIHNvIHRoYXQgbWVtb3J5IGRlYnVnZ2luZyB0b29scyB3b3JrLgorICAgIHZv
aWQqIGJsb2NrID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHB0cikgLSBkZWJ1Z0hlYWRlclNpemU7Cisg
ICAgUmVjeWNsZWRBcmVuYURlYnVnSGVhZGVyKiBoZWFkZXIgPSBzdGF0aWNfY2FzdDxSZWN5Y2xl
ZEFyZW5hRGVidWdIZWFkZXIqPihibG9jayk7CisgICAgQVNTRVJUKGhlYWRlci0+c2lnbmF0dXJl
ID09IHNpZ25hdHVyZSk7CisgICAgQVNTRVJUX1VOVVNFRChzaXplLCBoZWFkZXItPnNpemUgPT0g
c2l6ZSk7CisgICAgQVNTRVJUKGhlYWRlci0+YXJlbmEgPT0gdGhpcyk7CisgICAgaGVhZGVyLT5z
aWduYXR1cmUgPSBzaWduYXR1cmVEZWFkOworICAgIDo6ZnJlZShibG9jayk7CisjZWxzZQorICAg
IC8vIEVuc3VyZSB3ZSBoYXZlIGNvcnJlY3QgYWxpZ25tZW50IGZvciBwb2ludGVycy4gSW1wb3J0
YW50IGZvciBUcnU2NAorICAgIHNpemUgPSBST1VORFVQKHNpemUsIHNpemVvZih2b2lkKikpOwor
CisgICAgY29uc3Qgc2l6ZV90IGluZGV4ID0gc2l6ZSA+PiBrUmVjeWNsZXJTaGlmdDsKKyAgICB2
b2lkKiBjdXJyZW50VG9wID0gbV9yZWN5Y2xlcnNbaW5kZXhdOworICAgIG1fcmVjeWNsZXJzW2lu
ZGV4XSA9IHB0cjsKKyAgICAqKCh2b2lkKiopcHRyKSA9IE1hc2tQdHIoY3VycmVudFRvcCwgbV9t
YXNrKTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SZWN5Y2xlZEFyZW5hLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUmVjeWNsZWRBcmVuYS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUmVjeWNsZWRBcmVuYS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzIEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgor
ICogUG9ydGlvbnMgYXJlIENvcHlyaWdodCAoQykgMTk5OCBOZXRzY2FwZSBDb21tdW5pY2F0aW9u
cyBDb3Jwb3JhdGlvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4x
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICoKKyAqIEFsdGVybmF0aXZlbHksIHRo
ZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zCisgKiBv
ZiBlaXRoZXIgdGhlIE1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEsIGZvdW5kIGF0
CisgKiBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC8gKHRoZSAiTVBMIikgb3IgdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBWZXJzaW9uIDIuMCwgZm91bmQgYXQgaHR0cDovL3d3
dy5mc2Yub3JnL2NvcHlsZWZ0L2dwbC5odG1sCisgKiAodGhlICJHUEwiKSwgaW4gd2hpY2ggY2Fz
ZSB0aGUgcHJvdmlzaW9ucyBvZiB0aGUgTVBMIG9yIHRoZSBHUEwgYXJlCisgKiBhcHBsaWNhYmxl
IGluc3RlYWQgb2YgdGhvc2UgYWJvdmUuICBJZiB5b3Ugd2lzaCB0byBhbGxvdyB1c2Ugb2YgeW91
cgorICogdmVyc2lvbiBvZiB0aGlzIGZpbGUgb25seSB1bmRlciB0aGUgdGVybXMgb2Ygb25lIG9m
IHRob3NlIHR3bworICogbGljZW5zZXMgKHRoZSBNUEwgb3IgdGhlIEdQTCkgYW5kIG5vdCB0byBh
bGxvdyBvdGhlcnMgdG8gdXNlIHlvdXIKKyAqIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRo
ZSBMR1BMLCBpbmRpY2F0ZSB5b3VyIGRlY2lzaW9uIGJ5CisgKiBkZWxldGluZ3RoZSBwcm92aXNp
b25zIGFib3ZlIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgbm90aWNlIGFuZAorICogb3RoZXIg
cHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgTVBMIG9yIHRoZSBHUEwsIGFzIHRoZSBjYXNlIG1h
eSBiZS4KKyAqIElmIHlvdSBkbyBub3QgZGVsZXRlIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJl
Y2lwaWVudCBtYXkgdXNlIHlvdXIKKyAqIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIGFueSBv
ZiB0aGUgTEdQTCwgdGhlIE1QTCBvciB0aGUgR1BMLgorICovCisKKyNpZm5kZWYgUmVjeWNsZWRB
cmVuYV9oCisjZGVmaW5lIFJlY3ljbGVkQXJlbmFfaAorCisjaW5jbHVkZSAiQXJlbmEuaCIKKyNp
bmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBzaXplX3QgZ01heFJlY3lj
bGVkU2l6ZSA9IDEwMjQ7CisKK2NsYXNzIFJlY3ljbGVkQXJlbmEgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFJlY3ljbGVkQXJlbmEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBSZWN5Y2xlZEFyZW5hKGNvbnN0IGNoYXIqIGFyZW5hTmFtZSwgdW5zaWduZWQgYXJl
bmFTaXplID0gODE5Mik7CisgICAgflJlY3ljbGVkQXJlbmEoKTsKKworICAgIC8vIE1lbW9yeSBt
YW5hZ2VtZW50IGZ1bmN0aW9ucworICAgIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7CisgICAgdm9p
ZCBmcmVlKHNpemVfdCwgdm9pZCopOworCisgICAgc2l6ZV90IHRvdGFsUmVjeWNsZWRBcmVuYVNp
emUoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsU2l6ZTsgfQorICAgIHNpemVfdCB0b3RhbFJlY3lj
bGVkQXJlbmFBbGxvY2F0ZWRCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxBbGxvY2F0ZWQ7
IH0KKworcHJpdmF0ZToKKyAgICAvLyBVbmRlcmx5aW5nIGFyZW5hIHBvb2wKKyAgICBBcmVuYVBv
b2wgbV9wb29sOworCisgICAgLy8gVGhlIG1hc2sgdXNlZCB0byBzZWN1cmUgdGhlIHJlY3ljbGVk
IGZyZWVsaXN0IHBvaW50ZXJzLgorICAgIHVpbnRwdHJfdCBtX21hc2s7CisgICAgLy8gVGhlIHJl
Y3ljbGVyIGFycmF5IGlzIHNwYXJzZSB3aXRoIHRoZSBpbmRpY2VzIGJlaW5nIG11bHRpcGxlcyBv
ZiB0aGUKKyAgICAvLyByb3VuZGluZyBzaXplLCBzaXplb2Yodm9pZCopLCBpLmUuLCAwLCA0LCA4
LCAxMiwgMTYsIDIwLCAuLi4gb24gMzItYml0LgorICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga1Jl
Y3ljbGVyU2hpZnQgPSAoc2l6ZW9mKHZvaWQqKSA9PSA4KSA/IDMgOiAyOworICAgIHZvaWQqIG1f
cmVjeWNsZXJzW2dNYXhSZWN5Y2xlZFNpemUgPj4ga1JlY3ljbGVyU2hpZnRdOworCisgICAgc2l6
ZV90IG1fdG90YWxTaXplOworICAgIHNpemVfdCBtX3RvdGFsQWxsb2NhdGVkOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVjeWNsZWRBcmVuYV9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcg
KzI0LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCaWRpUnVuLmgiCiAjaW5j
bHVkZSAiSW5saW5lQm94LmgiCi0jaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKKyNpbmNsdWRlICJS
ZWN5Y2xlZEFyZW5hLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtNDMsNyArNDMsNyBAQCB2b2lkIEJp
ZGlSdW46OmRlc3Ryb3koKQogI2lmbmRlZiBOREVCVUcKICAgICBpbkJpZGlSdW5EZXN0cm95ID0g
dHJ1ZTsKICNlbmRpZgotICAgIFJlbmRlckFyZW5hKiByZW5kZXJBcmVuYSA9IG1fb2JqZWN0LT5y
ZW5kZXJBcmVuYSgpOworICAgIFJlY3ljbGVkQXJlbmEqIHJlbmRlckFyZW5hID0gbV9vYmplY3Qt
PnJlbmRlckFyZW5hKCk7CiAgICAgZGVsZXRlIHRoaXM7CiAjaWZuZGVmIE5ERUJVRwogICAgIGlu
QmlkaVJ1bkRlc3Ryb3kgPSBmYWxzZTsKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBCaWRpUnVuOjpk
ZXN0cm95KCkKICAgICByZW5kZXJBcmVuYS0+ZnJlZSgqcmVpbnRlcnByZXRfY2FzdDxzaXplX3Qq
Pih0aGlzKSwgdGhpcyk7CiB9CiAKLXZvaWQqIEJpZGlSdW46Om9wZXJhdG9yIG5ldyhzaXplX3Qg
c3osIFJlbmRlckFyZW5hKiByZW5kZXJBcmVuYSkKK3ZvaWQqIEJpZGlSdW46Om9wZXJhdG9yIG5l
dyhzaXplX3Qgc3osIFJlY3ljbGVkQXJlbmEqIHJlbmRlckFyZW5hKQogewogI2lmbmRlZiBOREVC
VUcKICAgICBiaWRpUnVuQ291bnRlci5pbmNyZW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9CaWRpUnVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0JpZGlSdW4uaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0JpZGlSdW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBzdHJ1Y3QgQmlk
aVJ1biA6IEJpZGlDaGFyYWN0ZXJSdW4gewogICAgIHZvaWQgZGVzdHJveSgpOwogCiAgICAgLy8g
T3ZlcmxvYWRlZCBuZXcgb3BlcmF0b3IuCi0gICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwg
UmVuZGVyQXJlbmEqKTsKKyAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBSZWN5Y2xlZEFy
ZW5hKik7CiAKICAgICAvLyBPdmVycmlkZGVuIHRvIHByZXZlbnQgdGhlIG5vcm1hbCBkZWxldGUg
ZnJvbSBiZWluZyBjYWxsZWQuCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCosIHNpemVf
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcAkocmV2aXNpb24g
MTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJJbmxpbmVGbG93Qm94LmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgotI2luY2x1ZGUgIlJlbmRl
ckFyZW5hLmgiCisjaW5jbHVkZSAiUmVjeWNsZWRBcmVuYS5oIgogI2luY2x1ZGUgIlJlbmRlckJs
b2NrLmgiCiAjaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgogCkBAIC03MSw3ICs3MSw3IEBAIHZv
aWQgSW5saW5lQm94OjpyZW1vdmUoKQogICAgICAgICBwYXJlbnQoKS0+cmVtb3ZlQ2hpbGQodGhp
cyk7CiB9CiAKLXZvaWQgSW5saW5lQm94OjpkZXN0cm95KFJlbmRlckFyZW5hKiByZW5kZXJBcmVu
YSkKK3ZvaWQgSW5saW5lQm94OjpkZXN0cm95KFJlY3ljbGVkQXJlbmEqIHJlbmRlckFyZW5hKQog
ewogI2lmbmRlZiBOREVCVUcKICAgICBpbklubGluZUJveERldGFjaCA9IHRydWU7CkBAIC04NSw3
ICs4NSw3IEBAIHZvaWQgSW5saW5lQm94OjpkZXN0cm95KFJlbmRlckFyZW5hKiByZW4KICAgICBy
ZW5kZXJBcmVuYS0+ZnJlZSgqKHNpemVfdCAqKXRoaXMsIHRoaXMpOwogfQogCi12b2lkKiBJbmxp
bmVCb3g6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIFJlbmRlckFyZW5hKiByZW5kZXJBcmVuYSkK
K3ZvaWQqIElubGluZUJveDo6b3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgUmVjeWNsZWRBcmVuYSog
cmVuZGVyQXJlbmEpCiB7CiAgICAgcmV0dXJuIHJlbmRlckFyZW5hLT5hbGxvY2F0ZShzeik7CiB9
CkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBJbmxpbmVCb3g6OmRpcnR5TGluZUJveGVzKCkKICAg
ICAgICAgY3Vyci0+bWFya0RpcnR5KCk7CiB9CiAKLXZvaWQgSW5saW5lQm94OjpkZWxldGVMaW5l
KFJlbmRlckFyZW5hKiBhcmVuYSkKK3ZvaWQgSW5saW5lQm94OjpkZWxldGVMaW5lKFJlY3ljbGVk
QXJlbmEqIGFyZW5hKQogewogICAgIGlmICghbV9iaXRmaWVsZHMuZXh0cmFjdGVkKCkgJiYgbV9y
ZW5kZXJlci0+aXNCb3goKSkKICAgICAgICAgdG9SZW5kZXJCb3gobV9yZW5kZXJlciktPnNldElu
bGluZUJveFdyYXBwZXIoMCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5o
CShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDkgKzYzLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB+SW5saW5lQm94KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveShSZW5kZXJBcmVuYSop
OworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KFJlY3ljbGVkQXJlbmEqKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVMaW5lKFJlbmRlckFyZW5hKik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZUxpbmUoUmVjeWNsZWRBcmVuYSopOwogICAgIHZpcnR1YWwgdm9pZCBleHRyYWN0TGluZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hMaW5lKCk7CiAKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhp
dFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9w
LCBMYXlvdXRVbml0IGxpbmVCb3R0b20pOwogCiAgICAgLy8gT3ZlcmxvYWRlZCBuZXcgb3BlcmF0
b3IuCi0gICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgUmVuZGVyQXJlbmEqKTsKKyAgICB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBSZWN5Y2xlZEFyZW5hKik7CiAKICAgICAvLyBPdmVy
cmlkZGVuIHRvIHByZXZlbnQgdGhlIG5vcm1hbCBkZWxldGUgZnJvbSBiZWluZyBjYWxsZWQuCiAg
ICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCosIHNpemVfdCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnJlbW92ZUNoaWxkKElubGlu
ZUJvCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogfQogCi12b2lkIElubGluZUZsb3dCb3g6OmRl
bGV0ZUxpbmUoUmVuZGVyQXJlbmEqIGFyZW5hKQordm9pZCBJbmxpbmVGbG93Qm94OjpkZWxldGVM
aW5lKFJlY3ljbGVkQXJlbmEqIGFyZW5hKQogewogICAgIElubGluZUJveCogY2hpbGQgPSBmaXJz
dENoaWxkKCk7CiAgICAgSW5saW5lQm94KiBuZXh0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyAr
OTcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBhZGRUb0xpbmUoSW5saW5lQm94KiBj
aGlsZCk7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUxpbmUoUmVuZGVyQXJlbmEqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlTGluZShSZWN5Y2xlZEFyZW5hKik7CiAgICAgdmlydHVhbCB2b2lk
IGV4dHJhY3RMaW5lKCk7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaExpbmUoKTsKICAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0UG9zaXRpb24oZmxvYXQgZHgsIGZsb2F0IGR5KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDEzMzI0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzUsOCArMzUsOCBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCisjaW5jbHVkZSAiUmVjeWNsZWRB
cmVuYS5oIgogI2luY2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIKLSNpbmNsdWRlICJS
ZW5kZXJBcmVuYS5oIgogI2luY2x1ZGUgIlJlbmRlckJSLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxv
Y2suaCIKICNpbmNsdWRlICJSZW5kZXJDb21iaW5lVGV4dC5oIgpAQCAtNTcsNyArNTcsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB0eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBJbmxpbmVUZXh0
Qm94KiwgTGF5b3V0UmVjdD4gSW5saW5lVGV4dEJveE92ZXJmbG93TWFwOwogc3RhdGljIElubGlu
ZVRleHRCb3hPdmVyZmxvd01hcCogZ1RleHRCb3hlc1dpdGhPdmVyZmxvdzsKIAotdm9pZCBJbmxp
bmVUZXh0Qm94OjpkZXN0cm95KFJlbmRlckFyZW5hKiBhcmVuYSkKK3ZvaWQgSW5saW5lVGV4dEJv
eDo6ZGVzdHJveShSZWN5Y2xlZEFyZW5hKiBhcmVuYSkKIHsKICAgICBpZiAoIWtub3duVG9IYXZl
Tm9PdmVyZmxvdygpICYmIGdUZXh0Qm94ZXNXaXRoT3ZlcmZsb3cpCiAgICAgICAgIGdUZXh0Qm94
ZXNXaXRoT3ZlcmZsb3ctPnJlbW92ZSh0aGlzKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBMYXlvdXRS
ZWN0IElubGluZVRleHRCb3g6OmxvY2FsU2VsZWN0aW9uCiAgICAgcmV0dXJuIExheW91dFJlY3Qo
dG9wUG9pbnQsIExheW91dFNpemUod2lkdGgsIGhlaWdodCkpOwogfQogCi12b2lkIElubGluZVRl
eHRCb3g6OmRlbGV0ZUxpbmUoUmVuZGVyQXJlbmEqIGFyZW5hKQordm9pZCBJbmxpbmVUZXh0Qm94
OjpkZWxldGVMaW5lKFJlY3ljbGVkQXJlbmEqIGFyZW5hKQogewogICAgIHRvUmVuZGVyVGV4dChy
ZW5kZXJlcigpKS0+cmVtb3ZlVGV4dEJveCh0aGlzKTsKICAgICBkZXN0cm95KGFyZW5hKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAkocmV2aXNpb24gMTMz
MjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZp
cnR1YWwgdm9pZCBkZXN0cm95KFJlbmRlckFyZW5hKik7CisgICAgdmlydHVhbCB2b2lkIGRlc3Ry
b3koUmVjeWNsZWRBcmVuYSopOwogCiAgICAgSW5saW5lVGV4dEJveCogcHJldlRleHRCb3goKSBj
b25zdCB7IHJldHVybiBtX3ByZXZUZXh0Qm94OyB9CiAgICAgSW5saW5lVGV4dEJveCogbmV4dFRl
eHRCb3goKSBjb25zdCB7IHJldHVybiBtX25leHRUZXh0Qm94OyB9CkBAIC0xMjQsNyArMTI0LDcg
QEAgcHVibGljOgogICAgIFJlbmRlclRleHQqIHRleHRSZW5kZXJlcigpIGNvbnN0OwogCiBwcml2
YXRlOgotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVMaW5lKFJlbmRlckFyZW5hKik7CisgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUxpbmUoUmVjeWNsZWRBcmVuYSopOwogICAgIHZpcnR1YWwgdm9pZCBl
eHRyYWN0TGluZSgpOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hMaW5lKCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcAkocmV2aXNpb24gMTMzMjQwKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAKICNpbmNsdWRl
ICJDb2x1bW5JbmZvLmgiCi0jaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKKyNpbmNsdWRlICJSZWN5
Y2xlZEFyZW5hLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJl
bmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCkBAIC0xNzEsNyArMTcxLDcg
QEAgTGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKFJlbmRlck9iamVjdCogcgogc3RhdGljIGJvb2wg
aW5MYXlvdXRTdGF0ZURlc3Ryb3k7CiAjZW5kaWYKIAotdm9pZCBMYXlvdXRTdGF0ZTo6ZGVzdHJv
eShSZW5kZXJBcmVuYSogcmVuZGVyQXJlbmEpCit2b2lkIExheW91dFN0YXRlOjpkZXN0cm95KFJl
Y3ljbGVkQXJlbmEqIHJlbmRlckFyZW5hKQogewogI2lmbmRlZiBOREVCVUcKICAgICBpbkxheW91
dFN0YXRlRGVzdHJveSA9IHRydWU7CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBMYXlvdXRTdGF0
ZTo6ZGVzdHJveShSZW5kZXJBcmVuYSogcgogICAgIHJlbmRlckFyZW5hLT5mcmVlKCooc2l6ZV90
Kil0aGlzLCB0aGlzKTsKIH0KIAotdm9pZCogTGF5b3V0U3RhdGU6Om9wZXJhdG9yIG5ldyhzaXpl
X3Qgc3osIFJlbmRlckFyZW5hKiByZW5kZXJBcmVuYSkKK3ZvaWQqIExheW91dFN0YXRlOjpvcGVy
YXRvciBuZXcoc2l6ZV90IHN6LCBSZWN5Y2xlZEFyZW5hKiByZW5kZXJBcmVuYSkKIHsKICAgICBy
ZXR1cm4gcmVuZGVyQXJlbmEtPmFsbG9jYXRlKHN6KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MYXlvdXRTdGF0ZS5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJlbmRlckFyZW5hOworY2xhc3MgUmVj
eWNsZWRBcmVuYTsKIGNsYXNzIFJlbmRlckJsb2NrOwogY2xhc3MgUmVuZGVyQm94OwogY2xhc3Mg
UmVuZGVyT2JqZWN0OwpAQCAtNjksMTAgKzY5LDEwIEBAIHB1YmxpYzoKICAgICBMYXlvdXRTdGF0
ZShMYXlvdXRTdGF0ZSosIFJlbmRlckJveCosIGNvbnN0IExheW91dFNpemUmIG9mZnNldCwgTGF5
b3V0VW5pdCBwYWdlSGVpZ2h0LCBib29sIHBhZ2VIZWlnaHRDaGFuZ2VkLCBDb2x1bW5JbmZvKik7
CiAgICAgTGF5b3V0U3RhdGUoUmVuZGVyT2JqZWN0Kik7CiAKLSAgICB2b2lkIGRlc3Ryb3koUmVu
ZGVyQXJlbmEqKTsKKyAgICB2b2lkIGRlc3Ryb3koUmVjeWNsZWRBcmVuYSopOwogCiAgICAgLy8g
T3ZlcmxvYWRlZCBuZXcgb3BlcmF0b3IuCi0gICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwg
UmVuZGVyQXJlbmEqKTsKKyAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBSZWN5Y2xlZEFy
ZW5hKik7CiAKICAgICAvLyBPdmVycmlkZGVuIHRvIHByZXZlbnQgdGhlIG5vcm1hbCBkZWxldGUg
ZnJvbSBiZWluZyBjYWxsZWQuCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCosIHNpemVf
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXJlbmEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcmVuYS5jcHAJKHJldmlz
aW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcmVuYS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDMgQXBwbGUgQ29tcHV0ZXIsIEluYy4KLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBQb3J0aW9ucyBh
cmUgQ29weXJpZ2h0IChDKSAxOTk4IE5ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9u
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSAgVVNBCi0gKgotICogQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9m
IHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMKLSAqIG9mIGVpdGhlciB0aGUg
TW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSwgZm91bmQgYXQKLSAqIGh0dHA6Ly93
d3cubW96aWxsYS5vcmcvTVBMLyAodGhlICJNUEwiKSBvciB0aGUgR05VIEdlbmVyYWwgUHVibGlj
Ci0gKiBMaWNlbnNlIFZlcnNpb24gMi4wLCBmb3VuZCBhdCBodHRwOi8vd3d3LmZzZi5vcmcvY29w
eWxlZnQvZ3BsLmh0bWwKLSAqICh0aGUgIkdQTCIpLCBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNp
b25zIG9mIHRoZSBNUEwgb3IgdGhlIEdQTCBhcmUKLSAqIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0
aG9zZSBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHVzZSBvZiB5b3VyCi0gKiB2ZXJzaW9u
IG9mIHRoaXMgZmlsZSBvbmx5IHVuZGVyIHRoZSB0ZXJtcyBvZiBvbmUgb2YgdGhvc2UgdHdvCi0g
KiBsaWNlbnNlcyAodGhlIE1QTCBvciB0aGUgR1BMKSBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0
byB1c2UgeW91cgotICogdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIExHUEwsIGluZGlj
YXRlIHlvdXIgZGVjaXNpb24gYnkKLSAqIGRlbGV0aW5ndGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5k
IHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UgYW5kCi0gKiBvdGhlciBwcm92aXNpb25zIHJl
cXVpcmVkIGJ5IHRoZSBNUEwgb3IgdGhlIEdQTCwgYXMgdGhlIGNhc2UgbWF5IGJlLgotICogSWYg
eW91IGRvIG5vdCBkZWxldGUgdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1
c2UgeW91cgotICogdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgYW55IG9mIHRoZSBMR1BMLCB0
aGUgTVBMIG9yIHRoZSBHUEwuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlJlbmRlckFyZW5hLmgiCi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcu
aD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi0jZGVmaW5lIFJPVU5EVVAoeCwgeSkg
KCgoKHgpKygoeSktMSkpLyh5KSkqKHkpKQotCi0jaWZkZWYgTkRFQlVHCi1zdGF0aWMgdm9pZCog
TWFza1B0cih2b2lkKiBwLCB1aW50cHRyX3QgbWFzaykKLXsKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHApIF4gbWFzayk7Ci19
Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWZuZGVmIE5ERUJVRwotCi1jb25z
dCBpbnQgc2lnbmF0dXJlID0gMHhEQkEwMEFFQTsKLWNvbnN0IGludCBzaWduYXR1cmVEZWFkID0g
MHhEQkEwMEFFRDsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFJlbmRlckFyZW5hKiBhcmVuYTsK
LSAgICBzaXplX3Qgc2l6ZTsKLSAgICBpbnQgc2lnbmF0dXJlOwotfSBSZW5kZXJBcmVuYURlYnVn
SGVhZGVyOwotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGRlYnVnSGVhZGVyU2l6ZSA9IEFSRU5BX0FM
SUdOKHNpemVvZihSZW5kZXJBcmVuYURlYnVnSGVhZGVyKSk7Ci0KLSNlbmRpZgotCi1SZW5kZXJB
cmVuYTo6UmVuZGVyQXJlbmEodW5zaWduZWQgYXJlbmFTaXplKQotICAgIDogbV90b3RhbFNpemUo
MCkKLSAgICAsIG1fdG90YWxBbGxvY2F0ZWQoMCkKLXsKLSAgICBBU1NFUlQoYXJlbmFTaXplID4g
c2l6ZW9mKEFyZW5hKSArIEFSRU5BX0FMSUdOX01BU0spOwotICAgIC8vIFRoZSB1bmRlcmx5aW5n
IEFyZW5hIGNsYXNzIGFsbG9jYXRlcyBzb21lIG1ldGFkYXRhIG9uIHRvcCBvZiBvdXIKLSAgICAv
LyByZXF1ZXN0ZWQgc2l6ZS4gRmFjdG9yIHRoaXMgaW4gc28gdGhhdCB3ZSBjYW4gZ2V0IHBlcmZl
Y3QgcG93ZXItb2YtdHdvCi0gICAgLy8gYWxsb2NhdGlvbiBzaXplcyBwYXNzZWQgdG8gdGhlIHVu
ZGVybHlpbmcgbWFsbG9jKCkgY2FsbC4KLSAgICBhcmVuYVNpemUgLT0gKHNpemVvZihBcmVuYSkg
KyBBUkVOQV9BTElHTl9NQVNLKTsKLSAgICAvLyBJbml0aWFsaXplIHRoZSBhcmVuYSBwb29sCi0g
ICAgSU5JVF9BUkVOQV9QT09MKCZtX3Bvb2wsICJSZW5kZXJBcmVuYSIsIGFyZW5hU2l6ZSk7Ci0K
LSAgICAvLyBaZXJvIG91dCB0aGUgcmVjeWNsZXJzIGFycmF5Ci0gICAgbWVtc2V0KG1fcmVjeWNs
ZXJzLCAwLCBzaXplb2YobV9yZWN5Y2xlcnMpKTsKLQotICAgIC8vIE1hc2sgZnJlZWxpc3QgcG9p
bnRlcnMgdG8gZGV0ZWN0IGNvcnJ1cHRpb24gYW5kIHN0b3AgZnJlZWxpc3Qgc3ByYXlpbmcuCi0g
ICAgLy8gV2UgdXNlIGFuIGFyYml0cmF5IGZ1bmN0aW9uIGFuZCByZWx5IG9uIEFTTFIgdG8gcmFu
ZG9taXplIGl0LgotICAgIC8vIFRoZSBmaXJzdCB2YWx1ZSBpbiBSZW5kZXJPYmplY3QgKG9yIGFu
eSBjbGFzcykgaXMgYSB2dGFibGUgcG9pbnRlciwgd2hpY2gKLSAgICAvLyBhbHdheXMgb3Zlcmxh
cHMgd2l0aCB0aGUgbmV4dCBwb2ludGVyLiBUaGlzIGNoYW5nZSBndWFyYW50ZWVzIHRoYXQgdGhl
Ci0gICAgLy8gbWFza2VkIHZ0YWJsZS9uZXh0IHBvaW50ZXIgd2lsbCBuZXZlciBwb2ludCB0byB2
YWxpZCBtZW1vcnkuIFNvLCB3ZQotICAgIC8vIHNob3VsZCBpbW1lZGlhdGVseSBjcmFzaCBvbiB0
aGUgZmlyc3QgaW52YWxpZCB2dGFibGUgYWNjZXNzIGZvciBhIHN0YWxlCi0gICAgLy8gUmVuZGVy
T2JqZWN0IHBvaW50ZXIuCi0gICAgLy8gU2VlIGh0dHA6Ly9kb3dubG9hZC5jcm93ZHN0cmlrZS5j
b20vcGFwZXJzL2hlcy1leHBsb2l0aW5nLWEtY29hbG1pbmUucGRmLgotCi0gICAgLy8gVGhlIGJv
dHRvbSBiaXRzIGFyZSBwcmVkaWN0YWJsZSBiZWNhdXNlIHRoZSBiaW5hcnkgaXMgbG9hZGVkIG9u
IGEKLSAgICAvLyBib3VuZGFyeS4gVGhpcyBqdXN0IHNoaWZ0cyBtb3N0IG9mIHRob3NlIHByZWRp
Y3RhYmxlIGJpdHMgb3V0LgotICAgIG1fbWFzayA9IH4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KFdURjo6ZmFzdE1hbGxvYykgPj4gMTMpOwotfQotCi1SZW5kZXJBcmVuYTo6flJlbmRlckFy
ZW5hKCkKLXsKLSAgICBGaW5pc2hBcmVuYVBvb2woJm1fcG9vbCk7Ci19Ci0KLXZvaWQqIFJlbmRl
ckFyZW5hOjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKLXsKLSAgICBBU1NFUlQoc2l6ZSA8PSBnTWF4
UmVjeWNsZWRTaXplIC0gMzIpOwotICAgIG1fdG90YWxTaXplICs9IHNpemU7Ci0KLSNpZmRlZiBB
RERSRVNTX1NBTklUSVpFUgotICAgIHJldHVybiA6Om1hbGxvYyhzaXplKTsKLSNlbGlmICFkZWZp
bmVkKE5ERUJVRykKLSAgICAvLyBVc2Ugc3RhbmRhcmQgbWFsbG9jIHNvIHRoYXQgbWVtb3J5IGRl
YnVnZ2luZyB0b29scyB3b3JrLgotICAgIEFTU0VSVCh0aGlzKTsKLSAgICB2b2lkKiBibG9jayA9
IDo6bWFsbG9jKGRlYnVnSGVhZGVyU2l6ZSArIHNpemUpOwotICAgIFJlbmRlckFyZW5hRGVidWdI
ZWFkZXIqIGhlYWRlciA9IHN0YXRpY19jYXN0PFJlbmRlckFyZW5hRGVidWdIZWFkZXIqPihibG9j
ayk7Ci0gICAgaGVhZGVyLT5hcmVuYSA9IHRoaXM7Ci0gICAgaGVhZGVyLT5zaXplID0gc2l6ZTsK
LSAgICBoZWFkZXItPnNpZ25hdHVyZSA9IHNpZ25hdHVyZTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y2hhcio+KGJsb2NrKSArIGRlYnVnSGVhZGVyU2l6ZTsKLSNlbHNlCi0gICAgLy8gRW5zdXJl
IHdlIGhhdmUgY29ycmVjdCBhbGlnbm1lbnQgZm9yIHBvaW50ZXJzLiAgSW1wb3J0YW50IGZvciBU
cnU2NAotICAgIHNpemUgPSBST1VORFVQKHNpemUsIHNpemVvZih2b2lkKikpOwotCi0gICAgY29u
c3Qgc2l6ZV90IGluZGV4ID0gc2l6ZSA+PiBrUmVjeWNsZXJTaGlmdDsKLQotICAgIHZvaWQqIHJl
c3VsdCA9IG1fcmVjeWNsZXJzW2luZGV4XTsKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIC8v
IE5lZWQgdG8gbW92ZSB0byB0aGUgbmV4dCBvYmplY3QKLSAgICAgICAgdm9pZCogbmV4dCA9IE1h
c2tQdHIoKigodm9pZCoqKXJlc3VsdCksIG1fbWFzayk7Ci0gICAgICAgIG1fcmVjeWNsZXJzW2lu
ZGV4XSA9IG5leHQ7Ci0gICAgfQotCi0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgLy8gQWxs
b2NhdGUgYSBuZXcgY2h1bmsgZnJvbSB0aGUgYXJlbmEKLSAgICAgICAgdW5zaWduZWQgYnl0ZXNB
bGxvY2F0ZWQgPSAwOwotICAgICAgICBBUkVOQV9BTExPQ0FURShyZXN1bHQsICZtX3Bvb2wsIHNp
emUsICZieXRlc0FsbG9jYXRlZCk7Ci0gICAgICAgIG1fdG90YWxBbGxvY2F0ZWQgKz0gYnl0ZXNB
bGxvY2F0ZWQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbmRpZgotfQotCi12b2lk
IFJlbmRlckFyZW5hOjpmcmVlKHNpemVfdCBzaXplLCB2b2lkKiBwdHIpCi17Ci0gICAgQVNTRVJU
KHNpemUgPD0gZ01heFJlY3ljbGVkU2l6ZSAtIDMyKTsKLSAgICBtX3RvdGFsU2l6ZSAtPSBzaXpl
OwotCi0jaWZkZWYgQUREUkVTU19TQU5JVElaRVIKLSAgICA6OmZyZWUocHRyKTsKLSNlbGlmICFk
ZWZpbmVkKE5ERUJVRykKLSAgICAvLyBVc2Ugc3RhbmRhcmQgZnJlZSBzbyB0aGF0IG1lbW9yeSBk
ZWJ1Z2dpbmcgdG9vbHMgd29yay4KLSAgICB2b2lkKiBibG9jayA9IHN0YXRpY19jYXN0PGNoYXIq
PihwdHIpIC0gZGVidWdIZWFkZXJTaXplOwotICAgIFJlbmRlckFyZW5hRGVidWdIZWFkZXIqIGhl
YWRlciA9IHN0YXRpY19jYXN0PFJlbmRlckFyZW5hRGVidWdIZWFkZXIqPihibG9jayk7Ci0gICAg
QVNTRVJUKGhlYWRlci0+c2lnbmF0dXJlID09IHNpZ25hdHVyZSk7Ci0gICAgQVNTRVJUX1VOVVNF
RChzaXplLCBoZWFkZXItPnNpemUgPT0gc2l6ZSk7Ci0gICAgQVNTRVJUKGhlYWRlci0+YXJlbmEg
PT0gdGhpcyk7Ci0gICAgaGVhZGVyLT5zaWduYXR1cmUgPSBzaWduYXR1cmVEZWFkOwotICAgIDo6
ZnJlZShibG9jayk7Ci0jZWxzZQotICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGNvcnJlY3QgYWxpZ25t
ZW50IGZvciBwb2ludGVycy4gIEltcG9ydGFudCBmb3IgVHJ1NjQKLSAgICBzaXplID0gUk9VTkRV
UChzaXplLCBzaXplb2Yodm9pZCopKTsKLQotICAgIGNvbnN0IHNpemVfdCBpbmRleCA9IHNpemUg
Pj4ga1JlY3ljbGVyU2hpZnQ7Ci0gICAgdm9pZCogY3VycmVudFRvcCA9IG1fcmVjeWNsZXJzW2lu
ZGV4XTsKLSAgICBtX3JlY3ljbGVyc1tpbmRleF0gPSBwdHI7Ci0gICAgKigodm9pZCoqKXB0cikg
PSBNYXNrUHRyKGN1cnJlbnRUb3AsIG1fbWFzayk7Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckFyZW5hLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckFyZW5hLmgJKHJl
dmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcmVuYS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDMgQXBwbGUgQ29tcHV0ZXIsIEluYy4KLSAqCi0gKiBQb3J0aW9ucyBhcmUgQ29weXJpZ2h0IChD
KSAxOTk4IE5ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCi0gKgotICogQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkg
YmUgdXNlZCB1bmRlciB0aGUgdGVybXMKLSAqIG9mIGVpdGhlciB0aGUgTW96aWxsYSBQdWJsaWMg
TGljZW5zZSBWZXJzaW9uIDEuMSwgZm91bmQgYXQKLSAqIGh0dHA6Ly93d3cubW96aWxsYS5vcmcv
TVBMLyAodGhlICJNUEwiKSBvciB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIFZl
cnNpb24gMi4wLCBmb3VuZCBhdCBodHRwOi8vd3d3LmZzZi5vcmcvY29weWxlZnQvZ3BsLmh0bWwK
LSAqICh0aGUgIkdQTCIpLCBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBNUEwg
b3IgdGhlIEdQTCBhcmUKLSAqIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aG9zZSBhYm92ZS4gIElm
IHlvdSB3aXNoIHRvIGFsbG93IHVzZSBvZiB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBv
bmx5IHVuZGVyIHRoZSB0ZXJtcyBvZiBvbmUgb2YgdGhvc2UgdHdvCi0gKiBsaWNlbnNlcyAodGhl
IE1QTCBvciB0aGUgR1BMKSBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UgeW91cgotICog
dmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIExHUEwsIGluZGljYXRlIHlvdXIgZGVjaXNp
b24gYnkKLSAqIGRlbGV0aW5ndGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3
aXRoIHRoZSBub3RpY2UgYW5kCi0gKiBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBN
UEwgb3IgdGhlIEdQTCwgYXMgdGhlIGNhc2UgbWF5IGJlLgotICogSWYgeW91IGRvIG5vdCBkZWxl
dGUgdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91cgotICogdmVy
c2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgYW55IG9mIHRoZSBMR1BMLCB0aGUgTVBMIG9yIHRoZSBH
UEwuCi0gKi8KLQotI2lmbmRlZiBSZW5kZXJBcmVuYV9oCi0jZGVmaW5lIFJlbmRlckFyZW5hX2gK
LQotI2luY2x1ZGUgIkFyZW5hLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KLSNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0
aWMgY29uc3Qgc2l6ZV90IGdNYXhSZWN5Y2xlZFNpemUgPSAxMDI0OwotCi1jbGFzcyBSZW5kZXJB
cmVuYSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVuZGVyQXJlbmEpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBSZW5kZXJBcmVuYSh1bnNpZ25lZCBhcmVuYVNp
emUgPSA4MTkyKTsKLSAgICB+UmVuZGVyQXJlbmEoKTsKLQotICAgIC8vIE1lbW9yeSBtYW5hZ2Vt
ZW50IGZ1bmN0aW9ucwotICAgIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7Ci0gICAgdm9pZCBmcmVl
KHNpemVfdCwgdm9pZCopOwotCi0gICAgc2l6ZV90IHRvdGFsUmVuZGVyQXJlbmFTaXplKCkgY29u
c3QgeyByZXR1cm4gbV90b3RhbFNpemU7IH0KLSAgICBzaXplX3QgdG90YWxSZW5kZXJBcmVuYUFs
bG9jYXRlZEJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbEFsbG9jYXRlZDsgfQotCi1wcml2
YXRlOgotICAgIC8vIFVuZGVybHlpbmcgYXJlbmEgcG9vbAotICAgIEFyZW5hUG9vbCBtX3Bvb2w7
Ci0KLSAgICAvLyBUaGUgbWFzayB1c2VkIHRvIHNlY3VyZSB0aGUgcmVjeWNsZWQgZnJlZWxpc3Qg
cG9pbnRlcnMuCi0gICAgdWludHB0cl90IG1fbWFzazsKLSAgICAvLyBUaGUgcmVjeWNsZXIgYXJy
YXkgaXMgc3BhcnNlIHdpdGggdGhlIGluZGljZXMgYmVpbmcgbXVsdGlwbGVzIG9mIHRoZQotICAg
IC8vIHJvdW5kaW5nIHNpemUsIHNpemVvZih2b2lkKiksIGkuZS4sIDAsIDQsIDgsIDEyLCAxNiwg
MjAsIC4uLiBvbiAzMi1iaXQuCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBrUmVjeWNsZXJTaGlm
dCA9IChzaXplb2Yodm9pZCopID09IDgpID8gMyA6IDI7Ci0gICAgdm9pZCogbV9yZWN5Y2xlcnNb
Z01heFJlY3ljbGVkU2l6ZSA+PiBrUmVjeWNsZXJTaGlmdF07Ci0KLSAgICBzaXplX3QgbV90b3Rh
bFNpemU7Ci0gICAgc2l6ZV90IG1fdG90YWxBbGxvY2F0ZWQ7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSZW5kZXJBcmVuYV9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNpb24g
MTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJJbmxpbmVJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCi0jaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKKyNpbmNsdWRlICJSZWN5Y2xlZEFyZW5hLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQ29tYmluZVRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJGbG93VGhy
ZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCkBAIC0xMjk0LDcgKzEyOTQsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV91c2VzUmVwYWludEJvdW5kczsKIH07CiAKLXN0YXRpYyB2b2lk
IGRlbGV0ZUxpbmVSYW5nZShMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBSZW5kZXJBcmVu
YSogYXJlbmEsIFJvb3RJbmxpbmVCb3gqIHN0YXJ0TGluZSwgUm9vdElubGluZUJveCogc3RvcExp
bmUgPSAwKQorc3RhdGljIHZvaWQgZGVsZXRlTGluZVJhbmdlKExpbmVMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUsIFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSb290SW5saW5lQm94KiBzdGFydExpbmUs
IFJvb3RJbmxpbmVCb3gqIHN0b3BMaW5lID0gMCkKIHsKICAgICBSb290SW5saW5lQm94KiBib3hU
b0RlbGV0ZSA9IHN0YXJ0TGluZTsKICAgICB3aGlsZSAoYm94VG9EZWxldGUgJiYgYm94VG9EZWxl
dGUgIT0gc3RvcExpbmUpIHsKQEAgLTE4MTIsNyArMTgxMiw3IEBAIFJvb3RJbmxpbmVCb3gqIFJl
bmRlckJsb2NrOjpkZXRlcm1pbmVTdGEKICAgICBpZiAobGF5b3V0U3RhdGUuaXNGdWxsTGF5b3V0
KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGp1c3QgY2FsbCBkZWxldGVMaW5l
Qm94VHJlZSwgYnV0IHRoYXQgY2F1c2VzCiAgICAgICAgIC8vIGNyYXNoZXMgZm9yIGZhc3QvcmVw
YWludCB0ZXN0cy4KLSAgICAgICAgUmVuZGVyQXJlbmEqIGFyZW5hID0gcmVuZGVyQXJlbmEoKTsK
KyAgICAgICAgUmVjeWNsZWRBcmVuYSogYXJlbmEgPSByZW5kZXJBcmVuYSgpOwogICAgICAgICBj
dXJyID0gZmlyc3RSb290Qm94KCk7CiAgICAgICAgIHdoaWxlIChjdXJyKSB7CiAgICAgICAgICAg
ICAvLyBOb3RlOiBUaGlzIHVzZXMgbmV4dFJvb3RCb3goKSBpbnN0ZWQgb2YgbmV4dExpbmVCb3go
KSBsaWtlIGRlbGV0ZUxpbmVCb3hUcmVlIGRvZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWludEluZm8u
aCIKLSNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgorI2luY2x1ZGUgIlJlY3ljbGVkQXJlbmEuaCIK
ICNpbmNsdWRlICJSZW5kZXJCb3hSZWdpb25JbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmxleGli
bGVCb3guaCIKICNpbmNsdWRlICJSZW5kZXJGbG93VGhyZWFkLmgiCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5s
aW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJBcmVuYS5o
IgorI2luY2x1ZGUgIlJlY3ljbGVkQXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgog
I2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJHZW9tZXRyeU1h
cC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZp
c2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBACiAjaW5jbHVkZSAiT3ZlcmxhcFRlc3RS
ZXF1ZXN0Q2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91
c2VFdmVudC5oIgotI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCisjaW5jbHVkZSAiUmVjeWNsZWRB
cmVuYS5oIgogI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJJ
bmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJNYXJxdWVlLmgiCkBAIC0xMzAyLDcgKzEzMDIsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyCiAgICAgfQogfQogCi12
b2lkKiBSZW5kZXJMYXllcjo6b3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgUmVuZGVyQXJlbmEqIHJl
bmRlckFyZW5hKQordm9pZCogUmVuZGVyTGF5ZXI6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIFJl
Y3ljbGVkQXJlbmEqIHJlbmRlckFyZW5hKQogewogICAgIHJldHVybiByZW5kZXJBcmVuYS0+YWxs
b2NhdGUoc3opOwogfQpAQCAtMTMxMyw3ICsxMzEzLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6b3Bl
cmF0b3IgZGVsZXRlKHZvaWQqIAogICAgICooc2l6ZV90ICopcHRyID0gc3o7CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OmRlc3Ryb3koUmVuZGVyQXJlbmEqIHJlbmRlckFyZW5hKQordm9pZCBSZW5k
ZXJMYXllcjo6ZGVzdHJveShSZWN5Y2xlZEFyZW5hKiByZW5kZXJBcmVuYSkKIHsKICAgICBkZWxl
dGUgdGhpczsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHJl
dmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MjEsOCArNjIxLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAg
ICAvLyBPdmVybG9hZGVkIG5ldyBvcGVyYXRvci4gRGVyaXZlZCBjbGFzc2VzIG11c3Qgb3ZlcnJp
ZGUgb3BlcmF0b3IgbmV3Ci0gICAgLy8gaW4gb3JkZXIgdG8gYWxsb2NhdGUgb3V0IG9mIHRoZSBS
ZW5kZXJBcmVuYS4KLSAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBSZW5kZXJBcmVuYSop
OworICAgIC8vIGluIG9yZGVyIHRvIGFsbG9jYXRlIG91dCBvZiB0aGUgUmVjeWNsZWRBcmVuYS4K
KyAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBSZWN5Y2xlZEFyZW5hKik7CiAKICAgICAv
LyBPdmVycmlkZGVuIHRvIHByZXZlbnQgdGhlIG5vcm1hbCBkZWxldGUgZnJvbSBiZWluZyBjYWxs
ZWQuCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCosIHNpemVfdCk7CkBAIC04ODYsOCAr
ODg2LDggQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OwogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJMYXllck1vZGVsT2JqZWN0OwogCi0gICAgLy8gT25s
eSBzYWZlIHRvIGNhbGwgZnJvbSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZGVzdHJveUxheWVyKFJl
bmRlckFyZW5hKikKLSAgICB2b2lkIGRlc3Ryb3koUmVuZGVyQXJlbmEqKTsKKyAgICAvLyBPbmx5
IHNhZmUgdG8gY2FsbCBmcm9tIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkZXN0cm95TGF5ZXIoUmVj
eWNsZWRBcmVuYSopCisgICAgdm9pZCBkZXN0cm95KFJlY3ljbGVkQXJlbmEqKTsKIAogICAgIExh
eW91dFVuaXQgb3ZlcmZsb3dUb3AoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG92ZXJmbG93Qm90
dG9tKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJv
eExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aW5lQm94TGlzdC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcg
QEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5o
IgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgotI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCisjaW5j
bHVkZSAiUmVjeWNsZWRBcmVuYS5oIgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCkBAIC02NCw3ICs2
NCw3IEBAIHZvaWQgUmVuZGVyTGluZUJveExpc3Q6OmFwcGVuZExpbmVCb3goSW4KICAgICBjaGVj
a0NvbnNpc3RlbmN5KCk7CiB9CiAKLXZvaWQgUmVuZGVyTGluZUJveExpc3Q6OmRlbGV0ZUxpbmVC
b3hUcmVlKFJlbmRlckFyZW5hKiBhcmVuYSkKK3ZvaWQgUmVuZGVyTGluZUJveExpc3Q6OmRlbGV0
ZUxpbmVCb3hUcmVlKFJlY3ljbGVkQXJlbmEqIGFyZW5hKQogewogICAgIElubGluZUZsb3dCb3gq
IGxpbmUgPSBtX2ZpcnN0TGluZUJveDsKICAgICBJbmxpbmVGbG93Qm94KiBuZXh0TGluZTsKQEAg
LTEyNyw3ICsxMjcsNyBAQCB2b2lkIFJlbmRlckxpbmVCb3hMaXN0OjpyZW1vdmVMaW5lQm94KElu
CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogfQogCi12b2lkIFJlbmRlckxpbmVCb3hMaXN0Ojpk
ZWxldGVMaW5lQm94ZXMoUmVuZGVyQXJlbmEqIGFyZW5hKQordm9pZCBSZW5kZXJMaW5lQm94TGlz
dDo6ZGVsZXRlTGluZUJveGVzKFJlY3ljbGVkQXJlbmEqIGFyZW5hKQogewogICAgIGlmIChtX2Zp
cnN0TGluZUJveCkgewogICAgICAgICBJbmxpbmVGbG93Qm94KiBuZXh0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmgJKHJldmlzaW9uIDEzMzI0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kTGlu
ZUJveChJbmxpbmVGbG93Qm94Kik7CiAKLSAgICB2b2lkIGRlbGV0ZUxpbmVCb3hUcmVlKFJlbmRl
ckFyZW5hKik7Ci0gICAgdm9pZCBkZWxldGVMaW5lQm94ZXMoUmVuZGVyQXJlbmEqKTsKKyAgICB2
b2lkIGRlbGV0ZUxpbmVCb3hUcmVlKFJlY3ljbGVkQXJlbmEqKTsKKyAgICB2b2lkIGRlbGV0ZUxp
bmVCb3hlcyhSZWN5Y2xlZEFyZW5hKik7CiAKICAgICB2b2lkIGV4dHJhY3RMaW5lQm94KElubGlu
ZUZsb3dCb3gqKTsKICAgICB2b2lkIGF0dGFjaExpbmVCb3goSW5saW5lRmxvd0JveCopOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDEz
MzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJSZW5k
ZXJBcmVuYS5oIgorI2luY2x1ZGUgIlJlY3ljbGVkQXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJD
b3VudGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgiCiAjaW5j
bHVkZSAiUmVuZGVyRmxleGlibGVCb3guaCIKQEAgLTEyMCw3ICsxMjAsNyBAQCBib29sIFJlbmRl
ck9iamVjdDo6c19hZmZlY3RzUGFyZW50QmxvY2sgCiAKIFJlbmRlck9iamVjdEFuY2VzdG9yTGlu
ZWJveERpcnR5U2V0KiBSZW5kZXJPYmplY3Q6OnNfYW5jZXN0b3JMaW5lYm94RGlydHlTZXQgPSAw
OwogCi12b2lkKiBSZW5kZXJPYmplY3Q6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIFJlbmRlckFy
ZW5hKiByZW5kZXJBcmVuYSkKK3ZvaWQqIFJlbmRlck9iamVjdDo6b3BlcmF0b3IgbmV3KHNpemVf
dCBzeiwgUmVjeWNsZWRBcmVuYSogcmVuZGVyQXJlbmEpCiB7CiAgICAgcmV0dXJuIHJlbmRlckFy
ZW5hLT5hbGxvY2F0ZShzeik7CiB9CkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6Om9wZXJhdG9yIGRlbGV0ZSh2b2lkKgogUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNy
ZWF0ZU9iamVjdChOb2RlKiBub2RlLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgRG9jdW1l
bnQqIGRvYyA9IG5vZGUtPmRvY3VtZW50KCk7Ci0gICAgUmVuZGVyQXJlbmEqIGFyZW5hID0gZG9j
LT5yZW5kZXJBcmVuYSgpOworICAgIFJlY3ljbGVkQXJlbmEqIGFyZW5hID0gZG9jLT5yZW5kZXJB
cmVuYSgpOwogCiAgICAgLy8gTWluaW1hbCBzdXBwb3J0IGZvciBjb250ZW50IHByb3BlcnRpZXMg
cmVwbGFjaW5nIGFuIGVudGlyZSBlbGVtZW50LgogICAgIC8vIFdvcmtzIG9ubHkgaWYgd2UgaGF2
ZSBleGFjdGx5IG9uZSBwaWVjZSBvZiBjb250ZW50IGFuZCBpdCdzIGEgVVJMLgpAQCAtMjQ4OCw3
ICsyNDg4LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRlc3Ryb3koKQogICAgIGFyZW5hRGVsZXRl
KHJlbmRlckFyZW5hKCksIHRoaXMpOwogfQogCi12b2lkIFJlbmRlck9iamVjdDo6YXJlbmFEZWxl
dGUoUmVuZGVyQXJlbmEqIGFyZW5hLCB2b2lkKiBiYXNlKQordm9pZCBSZW5kZXJPYmplY3Q6OmFy
ZW5hRGVsZXRlKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCB2b2lkKiBiYXNlKQogewogICAgIGlmICht
X3N0eWxlKSB7CiAgICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBiZ0xheWVyID0gbV9zdHls
ZS0+YmFja2dyb3VuZExheWVycygpOyBiZ0xheWVyOyBiZ0xheWVyID0gYmdMYXllci0+bmV4dCgp
KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lv
biAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyMSw4ICszMjEsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlbmRl
ck9iamVjdCogY3JlYXRlT2JqZWN0KE5vZGUqLCBSZW5kZXJTdHlsZSopOwogCiAgICAgLy8gT3Zl
cmxvYWRlZCBuZXcgb3BlcmF0b3IuICBEZXJpdmVkIGNsYXNzZXMgbXVzdCBvdmVycmlkZSBvcGVy
YXRvciBuZXcKLSAgICAvLyBpbiBvcmRlciB0byBhbGxvY2F0ZSBvdXQgb2YgdGhlIFJlbmRlckFy
ZW5hLgotICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIFJlbmRlckFyZW5hKik7CisgICAg
Ly8gaW4gb3JkZXIgdG8gYWxsb2NhdGUgb3V0IG9mIHRoZSBSZWN5Y2xlZEFyZW5hLgorICAgIHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIFJlY3ljbGVkQXJlbmEqKTsKIAogICAgIC8vIE92ZXJy
aWRkZW4gdG8gcHJldmVudCB0aGUgbm9ybWFsIGRlbGV0ZSBmcm9tIGJlaW5nIGNhbGxlZC4KICAg
ICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiwgc2l6ZV90KTsKQEAgLTMzMiw3ICszMzIsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QpIHRocm93KCk7CiAKIHB1
YmxpYzoKLSAgICBSZW5kZXJBcmVuYSogcmVuZGVyQXJlbmEoKSBjb25zdCB7IHJldHVybiBkb2N1
bWVudCgpLT5yZW5kZXJBcmVuYSgpOyB9CisgICAgUmVjeWNsZWRBcmVuYSogcmVuZGVyQXJlbmEo
KSBjb25zdCB7IHJldHVybiBkb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpOyB9CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNCUigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzQmxvY2tGbG93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTk4MSw3ICs5ODEsNyBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGNsZWFyTGF5b3V0Um9vdElmTmVlZGVkKCkgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwotICAgIHZvaWQgYXJlbmFEZWxl
dGUoUmVuZGVyQXJlbmEqLCB2b2lkKiBvYmplY3RCYXNlKTsKKyAgICB2b2lkIGFyZW5hRGVsZXRl
KFJlY3ljbGVkQXJlbmEqLCB2b2lkKiBvYmplY3RCYXNlKTsKIAogICAgIHZpcnR1YWwgTGF5b3V0
UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiAvKnJl
cGFpbnRDb250YWluZXIqLywgTGF5b3V0UG9pbnQqIC8qY2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29u
dGFpbmVyKi8gPSAwKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiSHlwaGVuYXRpb24uaCIKICNpbmNsdWRlICJJbmxp
bmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJBcmVuYS5o
IgorI2luY2x1ZGUgIlJlY3ljbGVkQXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgog
I2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIK
QEAgLTMwMSw3ICszMDEsNyBAQCB2b2lkIFJlbmRlclRleHQ6OnJlbW92ZVRleHRCb3goSW5saW5l
VGV4CiB2b2lkIFJlbmRlclRleHQ6OmRlbGV0ZVRleHRCb3hlcygpCiB7CiAgICAgaWYgKGZpcnN0
VGV4dEJveCgpKSB7Ci0gICAgICAgIFJlbmRlckFyZW5hKiBhcmVuYSA9IHJlbmRlckFyZW5hKCk7
CisgICAgICAgIFJlY3ljbGVkQXJlbmEqIGFyZW5hID0gcmVuZGVyQXJlbmEoKTsKICAgICAgICAg
SW5saW5lVGV4dEJveCogbmV4dDsKICAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBjdXJyID0g
Zmlyc3RUZXh0Qm94KCk7IGN1cnI7IGN1cnIgPSBuZXh0KSB7CiAgICAgICAgICAgICBuZXh0ID0g
Y3Vyci0+bmV4dFRleHRCb3goKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIHZv
aWQgUmVuZGVyV2lkZ2V0OjpkZXN0cm95KCkKIAogICAgIC8vIEdyYWIgdGhlIGFyZW5hIGZyb20g
bm9kZSgpLT5kb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpIGJlZm9yZSBjbGVhcmluZyB0aGUgbm9k
ZSBwb2ludGVyLgogICAgIC8vIENsZWFyIHRoZSBub2RlIGJlZm9yZSBkZXJlZi1pbmcsIGFzIHRo
aXMgbWF5IGJlIGRlbGV0ZWQgd2hlbiBkZXJlZiBpcyBjYWxsZWQuCi0gICAgUmVuZGVyQXJlbmEq
IGFyZW5hID0gcmVuZGVyQXJlbmEoKTsKKyAgICBSZWN5Y2xlZEFyZW5hKiBhcmVuYSA9IHJlbmRl
ckFyZW5hKCk7CiAgICAgc2V0Tm9kZSgwKTsKICAgICBkZXJlZihhcmVuYSk7CiB9CkBAIC0zMjAs
NyArMzIwLDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnNldE92ZXJsYXBUZXN0UmVzdWx0KAogICAg
IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KG1fd2lkZ2V0LmdldCgpKS0+c2V0SXNPdmVybGFwcGVk
KGlzT3ZlcmxhcHBlZCk7CiB9CiAKLXZvaWQgUmVuZGVyV2lkZ2V0OjpkZXJlZihSZW5kZXJBcmVu
YSAqYXJlbmEpCit2b2lkIFJlbmRlcldpZGdldDo6ZGVyZWYoUmVjeWNsZWRBcmVuYSAqYXJlbmEp
CiB7CiAgICAgaWYgKC0tbV9yZWZDb3VudCA8PSAwKQogICAgICAgICBhcmVuYURlbGV0ZShhcmVu
YSwgdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCShy
ZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBu
b3RpZnlXaWRnZXQoV2lkZ2V0Tm90aWZpY2F0aW9uKTsKIAotICAgIFJlbmRlckFyZW5hKiByZWYo
KSB7ICsrbV9yZWZDb3VudDsgcmV0dXJuIHJlbmRlckFyZW5hKCk7IH0KLSAgICB2b2lkIGRlcmVm
KFJlbmRlckFyZW5hKik7CisgICAgUmVjeWNsZWRBcmVuYSogcmVmKCkgeyArK21fcmVmQ291bnQ7
IHJldHVybiByZW5kZXJBcmVuYSgpOyB9CisgICAgdm9pZCBkZXJlZihSZWN5Y2xlZEFyZW5hKik7
CiAKIHByb3RlY3RlZDoKICAgICBSZW5kZXJXaWRnZXQoTm9kZSopOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldFByb3RlY3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXRQcm90ZWN0b3IuaAkocmV2aXNpb24g
MTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldFByb3RlY3Rv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICBSZW5kZXJXaWRnZXQqIG1fb2JqZWN0OwotICAgIFJlbmRlckFyZW5hKiBtX2FyZW5hOwor
ICAgIFJlY3ljbGVkQXJlbmEqIG1fYXJlbmE7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDEzMzI0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDggKzM5LDggQEAKICNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuY3Bw
IgogI2luY2x1ZGUgIkxheW91dFN0YXRlLmNwcCIKICNpbmNsdWRlICJQb2ludGVyRXZlbnRzSGl0
UnVsZXMuY3BwIgorI2luY2x1ZGUgIlJlY3ljbGVkQXJlbmEuY3BwIgogI2luY2x1ZGUgIlJlbmRl
ckFwcGxldC5jcHAiCi0jaW5jbHVkZSAiUmVuZGVyQXJlbmEuY3BwIgogI2luY2x1ZGUgIlJlbmRl
ckJSLmNwcCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5jcHAiCiAjaW5jbHVkZSAiUmVuZGVyQmxv
Y2tMaW5lTGF5b3V0LmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5s
aW5lQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElu
bGluZUJveC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9Sb290SW5saW5lQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lu
Y2x1ZGUgIklubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFp
bnRJbmZvLmgiCi0jaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKKyNpbmNsdWRlICJSZWN5Y2xlZEFy
ZW5hLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
CiAjaW5jbHVkZSAiVmVydGljYWxQb3NpdGlvbkNhY2hlLmgiCkBAIC01OSwxMyArNTksMTMgQEAg
Um9vdElubGluZUJveDo6Um9vdElubGluZUJveChSZW5kZXJCbG9jawogfQogCiAKLXZvaWQgUm9v
dElubGluZUJveDo6ZGVzdHJveShSZW5kZXJBcmVuYSogYXJlbmEpCit2b2lkIFJvb3RJbmxpbmVC
b3g6OmRlc3Ryb3koUmVjeWNsZWRBcmVuYSogYXJlbmEpCiB7CiAgICAgZGV0YWNoRWxsaXBzaXNC
b3goYXJlbmEpOwogICAgIElubGluZUZsb3dCb3g6OmRlc3Ryb3koYXJlbmEpOwogfQogCi12b2lk
IFJvb3RJbmxpbmVCb3g6OmRldGFjaEVsbGlwc2lzQm94KFJlbmRlckFyZW5hKiBhcmVuYSkKK3Zv
aWQgUm9vdElubGluZUJveDo6ZGV0YWNoRWxsaXBzaXNCb3goUmVjeWNsZWRBcmVuYSogYXJlbmEp
CiB7CiAgICAgaWYgKGhhc0VsbGlwc2lzQm94KCkpIHsKICAgICAgICAgRWxsaXBzaXNCb3gqIGJv
eCA9IGdFbGxpcHNpc0JveE1hcC0+dGFrZSh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9Sb290SW5saW5lQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTEgKzM2
LDExIEBAIGNsYXNzIFJvb3RJbmxpbmVCb3ggOiBwdWJsaWMgSW5saW5lRmxvd0IKIHB1YmxpYzoK
ICAgICBSb290SW5saW5lQm94KFJlbmRlckJsb2NrKiBibG9jayk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGVzdHJveShSZW5kZXJBcmVuYSopOworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KFJlY3lj
bGVkQXJlbmEqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1Jvb3RJbmxpbmVCb3goKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAKLSAgICB2b2lkIGRldGFjaEVsbGlwc2lzQm94KFJlbmRlckFyZW5h
Kik7CisgICAgdm9pZCBkZXRhY2hFbGxpcHNpc0JveChSZWN5Y2xlZEFyZW5hKik7CiAKICAgICBS
b290SW5saW5lQm94KiBuZXh0Um9vdEJveCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJv
b3RJbmxpbmVCb3gqPihtX25leHRMaW5lQm94KTsgfQogICAgIFJvb3RJbmxpbmVCb3gqIHByZXZS
b290Qm94KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Um9vdElubGluZUJveCo+KG1fcHJl
dkxpbmVCb3gpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcg
QEAKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVk
ZSAiUXVvdGVzRGF0YS5oIgotI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCisjaW5jbHVkZSAiUmVj
eWNsZWRBcmVuYS5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNjYWxl
VHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhZG93RGF0YS5oIgpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyArMTQzLDcg
QEAgdm9pZCBTVkdBRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjbwogICAgIH0KIH0KIAot
UmVuZGVyT2JqZWN0KiBTVkdBRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR0FFbGVtZW50OjpjcmVhdGVSZW5k
ZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIGlmIChwYXJl
bnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc1NWR0VsZW1lbnQoKSAmJiBzdGF0aWNfY2FzdDxT
VkdFbGVtZW50Kj4ocGFyZW50Tm9kZSgpKS0+aXNUZXh0Q29udGVudCgpKQogICAgICAgICByZXR1
cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHSW5saW5lKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRl
cmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAgICAgdmlydHVhbCB2b2lkIGRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNyAr
ODMsNyBAQCBib29sIFNWR0FsdEdseXBoRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1SZW5kZXJPYmplY3QqIFNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3Qq
IFNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEs
IFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHVFNwYW4o
dGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCShy
ZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBTVkdBbHRHbHlwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAK
LSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91
bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIGNvbnN0OwogCiAg
ICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0FsdEdseXBoRWxlbWVudCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHJldmlzaW9uIDEz
MzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw3IEBAIGJvb2wgU1ZHQ2lyY2xlRWxlbWVudDo6c2VsZkhh
c1JlbGF0aXZlTGUKICAgICAgICAgfHwgcigpLmlzUmVsYXRpdmUoKTsKIH0KIAotUmVuZGVyT2Jq
ZWN0KiBTVkdDaXJjbGVFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEs
IFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogU1ZHQ2lyY2xlRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4g
bmV3IChhcmVuYSkgUmVuZGVyU1ZHRWxsaXBzZSh0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBA
QCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBj
b25zdDsKIAotICAgIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopOworICAgIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRB
cmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHQ2lyY2xlRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgo
Q3gsIGN4KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBTVkdDbGlwUGF0
aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZAogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0
KHRydWUpOwogfQogCi1SZW5kZXJPYmplY3QqIFNWR0NsaXBQYXRoRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNW
R0NsaXBQYXRoRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJl
bmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyKHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1l
bnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRo
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBm
YWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQg
Y2hpbGRDb3VudERlbHRhID0gMCk7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAog
ICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDbGlwUGF0aEVsZW1lbnQp
CiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oQ2xpcFBhdGhVbml0cywgY2xp
cFBhdGhVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RlZnNFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBA
QCBib29sIFNWR0RlZnNFbGVtZW50Ojppc1ZhbGlkKCkgY29uc3QKICAgICByZXR1cm4gU1ZHVGVz
dHM6OmlzVmFsaWQoKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBTVkdEZWZzRWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3Qq
IFNWR0RlZnNFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVu
ZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdIaWRkZW5Db250
YWluZXIodGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaAkocmV2
aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9v
bCBpc1ZhbGlkKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAg
IEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdEZWZzRWxlbWVudCkKICAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxs
aXBzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxp
cHNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGxpcHNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEsNyBAQCBi
b29sIFNWR0VsbGlwc2VFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMCiAgICAgICAgIHx8IHJ5KCku
aXNSZWxhdGl2ZSgpOwogfQogCi1SZW5kZXJPYmplY3QqIFNWR0VsbGlwc2VFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVj
dCogU1ZHRWxsaXBzZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5h
LCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0VsbGlw
c2UodGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAko
cmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1
YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xl
ZEFyZW5hKiwgUmVuZGVyU3R5bGUqKSBPVkVSUklERTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdFbGxpcHNlRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoQ3gsIGN4KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBTVkdG
aWx0ZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYgogICAgICAgICBvYmplY3QtPnNldE5lZWRz
TGF5b3V0KHRydWUpOwogfQogCi1SZW5kZXJPYmplY3QqIFNWR0ZpbHRlckVsZW1lbnQ6OmNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0
KiBTVkdGaWx0ZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwg
UmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcih0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQu
aAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2Us
IE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxk
Q291bnREZWx0YSA9IDApOwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3
ICsxNDIsNyBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlCiAgICAg
ICAgIGZpbHRlckVmZmVjdC0+c2V0SGFzSGVpZ2h0KHRydWUpOwogfQogCi1SZW5kZXJPYmplY3Qq
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUodGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
CShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAg
cHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWx0ZXJFZmZlY3QoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5
bGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBO
b2RlUmVuZGVyaW5nQ29udGV4dCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNo
b3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
cmVpZ25PYmplY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzMsNyArMTMzLDcgQEAgdm9pZCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3ZnQXR0cmli
dQogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291
cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBTVkdGb3JlaWdu
T2JqZWN0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSopCitSZW5kZXJPYmplY3QqIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGVSZW5k
ZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBu
ZXcgKGFyZW5hKSBSZW5kZXJTVkdGb3JlaWduT2JqZWN0KHRoaXMpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgdmlydHVhbCBi
b29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQm
KSBjb25zdDsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpOworICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIFNWR0dFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvCiAgICAgICAgIFJlbmRl
clNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24o
cmVuZGVyZXIpOwogfQogCi1SZW5kZXJPYmplY3QqIFNWR0dFbGVtZW50OjpjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKK1JlbmRlck9iamVjdCog
U1ZHR0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSogc3R5bGUpCiB7CiAgICAgLy8gU1ZHIDEuMSB0ZXN0c3VpdGUgZXhwbGljaXRlbHkgdXNl
cyBjb25zdHJ1Y3RzIGxpa2UgPGcgZGlzcGxheT0ibm9uZSI+PGxpbmVhckdyYWRpZW50PgogICAg
IC8vIFdlIHN0aWxsIGhhdmUgdG8gY3JlYXRlIHJlbmRlcmVycyBmb3IgdGhlIDxnPiAmIDxsaW5l
YXJHcmFkaWVudD4gZWxlbWVudCwgdGhvdWdoIHRoZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVt
ZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoK
ICAgICBTVkdHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBDb25zdHJ1
Y3Rpb25UeXBlID0gQ3JlYXRlU1ZHRWxlbWVudCk7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0
dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJ
bWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
SW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDcgKzE4OSw3IEBAIGJvb2wg
U1ZHSW1hZ2VFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW4KICAgICAgICAgfHwgaGVpZ2h0KCku
aXNSZWxhdGl2ZSgpOwogfQogCi1SZW5kZXJPYmplY3QqIFNWR0ltYWdlRWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3Qq
IFNWR0ltYWdlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJl
bmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHSW1hZ2UodGhp
cyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCShyZXZpc2lvbiAx
MzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
KCk7CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50
byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUq
KTsKICAKICAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGltYWdlU291cmNlQXR0cmli
dXRlTmFtZSgpIGNvbnN0OyAgICAgICAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTMz
MjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50
RWxlbWVudDo6c3ZnQXR0cmliCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7
CiB9CiAKLVJlbmRlck9iamVjdCogU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVu
YSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNv
dXJjZUxpbmVhckdyYWRpZW50KHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25z
dDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkocmV2aXNp
b24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50Ojpz
ZXRPcmllbnRUb0FuZ2xlKAogICAgIHN2Z0F0dHJpYnV0ZUNoYW5nZWQob3JpZW50QW5nbGVQcm9w
ZXJ0eUluZm8oKS0+YXR0cmlidXRlTmFtZSk7CiB9CiAKLVJlbmRlck9iamVjdCogU1ZHTWFya2Vy
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSop
CitSZW5kZXJPYmplY3QqIFNWR01hcmtlckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVk
QXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJl
bmRlclNWR1Jlc291cmNlTWFya2VyKHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hcmtlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFya2VyRWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFya2VyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRC
eVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5n
ZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0JikgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBib29sIHNlbGZI
YXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
YXNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tF
bGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01h
c2tFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgU1ZH
TWFza0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib28KICAgICAgICAgb2JqZWN0LT5zZXROZWVk
c0xheW91dCh0cnVlKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBTVkdNYXNrRWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3Qq
IFNWR01hc2tFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVu
ZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcih0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCShyZXZp
c2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJl
Zm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0
YSA9IDApOwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFsIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNCw3ICs0MDQsNyBA
QCBGbG9hdFJlY3QgU1ZHUGF0aEVsZW1lbnQ6OmdldEJCb3goU3R5bGVVCiAgICAgcmV0dXJuIHJl
bmRlcmVyLT5wYXRoKCkuYm91bmRpbmdSZWN0KCk7CiB9CiAKLVJlbmRlck9iamVjdCogU1ZHUGF0
aEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUq
KQorUmVuZGVyT2JqZWN0KiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRB
cmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICAvLyBCeSBkZWZhdWx0LCBhbnkgc3Vi
Y2xhc3MgaXMgZXhwZWN0ZWQgdG8gZG8gcGF0aC1iYXNlZCBkcmF3aW5nCiAgICAgcmV0dXJuIG5l
dyAoYXJlbmEpIFJlbmRlclNWR1BhdGgodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVz
dHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9CiAgICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5
c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiAKLSAgICBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAgICAgdmlydHVhbCBOb2Rl
OjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2Rl
KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUq
KSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNw
cAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgU1ZHUGF0dGVy
bkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91
dCh0cnVlKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBTVkdQYXR0ZXJuRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNW
R1BhdHRlcm5FbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVu
ZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm4odGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQu
aAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNl
LCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGls
ZENvdW50RGVsdGEgPSAwKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAgICAg
dmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlz
aW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYgogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0
KHRydWUpOwogfQogCi1SZW5kZXJPYmplY3QqIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmpl
Y3QqIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVu
YSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVy
U1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudCh0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwor
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwg
UmVuZGVyU3R5bGUqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhz
KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkocmV2
aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIGJvb2wgU1ZHUmVjdEVsZW1lbnQ6OnNl
bGZIYXNSZWxhdGl2ZUxlbmcKICAgICAgICAgfHwgcnkoKS5pc1JlbGF0aXZlKCk7CiB9CiAKLVJl
bmRlck9iamVjdCogU1ZHUmVjdEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBh
cmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBTVkdSZWN0RWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1
cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVjdCh0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdSZWN0RWxlbWVudC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUmVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsK
IAotICAgIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOworICAgIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSos
IFJlbmRlclN0eWxlKik7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHUmVjdEVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzMyNDApCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ3MCw3ICs0NzAsNyBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6bG9jYWxDb29y
CiAgICAgcmV0dXJuIHRyYW5zZm9ybS5tdWx0aXBseSh2aWV3Qm94VHJhbnNmb3JtKTsKIH0KIAot
UmVuZGVyT2JqZWN0KiBTVkdTVkdFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogU1ZHU1ZHRWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICBpZiAo
aXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBS
ZW5kZXJTVkdSb290KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCShy
ZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29u
dGV4dCkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsg
fQotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAgICAgdmlydHVhbCBJbnNlcnRpb25O
b3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQw
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBTVkdT
dG9wRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHls
ZSopCitSZW5kZXJPYmplY3QqIFNWR1N0b3BFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xl
ZEFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBS
ZW5kZXJTVkdHcmFkaWVudFN0b3AodGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3RvcEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3Rv
cEVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
b3BFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc0dyYWRpZW50U3RvcCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgT1ZFUlJJREU7CiAKICAgICBC
RUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3RvcEVsZW1lbnQpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNyBA
QCBGbG9hdFJlY3QgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6CiAgICAgcmV0dXJuIFNW
R1RyYW5zZm9ybWFibGU6OmdldEJCb3godGhpcywgc3R5bGVVcGRhdGVTdHJhdGVneSk7CiB9CiAK
LVJlbmRlck9iamVjdCogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICAvLyBCeSBkZWZhdWx0LCBhbnkgc3ViY2xhc3Mg
aXMgZXhwZWN0ZWQgdG8gZG8gcGF0aC1iYXNlZCBkcmF3aW5nCiAgICAgcmV0dXJuIG5ldyAoYXJl
bmEpIFJlbmRlclNWR1BhdGgodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgLy8gImJhc2UgY2xhc3Mi
IG1ldGhvZHMgZm9yIGFsbCB0aGUgZWxlbWVudHMgd2hpY2ggcmVuZGVyIGFzIHBhdGhzCiAgICAg
dmlydHVhbCB2b2lkIHRvQ2xpcFBhdGgoUGF0aCYpOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHls
ZSopOwogCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZVNW
R0VsZW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAko
cmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgU1ZHU3dpdGNoRWxlbWVu
dDo6Y2hpbGRTaG91bGRDcmVhdGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlbmRlck9iamVj
dCogU1ZHU3dpdGNoRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBS
ZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR1N3aXRjaEVsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5l
dyAoYXJlbmEpIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIodGhpcyk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xl
ZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdTd2l0Y2hFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xF
QU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDEz
MzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIGJvb2wgU1ZHU3ltYm9sRWxlbWVudDo6c2VsZkhh
c1JlbGF0aXZlTGUKICAgICByZXR1cm4gaGFzQXR0cmlidXRlKFNWR05hbWVzOjp2aWV3Qm94QXR0
cik7CiB9CiAKLVJlbmRlck9iamVjdCogU1ZHU3ltYm9sRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR1N5bWJv
bEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHls
ZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcih0
aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAkocmV2aXNp
b24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsK
KyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSos
IFJlbmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3Ro
cygpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0MiwxMSArMTQyLDExIEBAIHByaXZhdGU6CiAgICAgewogICAg
ICAgICBzZXRIYXNDdXN0b21DYWxsYmFja3MoKTsKICAgICB9Ci0gICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRl
clN0eWxlKik7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZWNhbGNUZXh0U3R5bGUoU3R5bGVDaGFu
Z2UpOwogfTsKIAotUmVuZGVyT2JqZWN0KiBTVkdTaGFkb3dUZXh0OjpjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogU1ZHU2hhZG93
VGV4dDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikK
IHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHSW5saW5lVGV4dCh0aGlzLCBkYXRh
SW1wbCgpKTsKIH0KQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVJlbmRlck9i
amVjdCogU1ZHVFJlZkVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwg
UmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBTVkdUUmVmRWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3
IChhcmVuYSkgUmVuZGVyU1ZHSW5saW5lKHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RSZWZFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RSZWZFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUUmVmRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jikg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRl
cmluZ0NvbnRleHQmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5j
cHAJKHJldmlzaW9uIDEzMzI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIFBhc3NSZWZQdHI8U1ZHVFNw
YW5FbGVtZW50PiBTVkdUU3BhbkVsZW0KICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1RTcGFu
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1SZW5kZXJPYmplY3QqIFNWR1RTcGFu
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSop
CitSZW5kZXJPYmplY3QqIFNWR1RTcGFuRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRB
cmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVu
ZGVyU1ZHVFNwYW4odGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5F
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVu
dC5oCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBTVkdUU3BhbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAg
ICAgICAgICAgICAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVh
dGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJv
b2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0Jik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNyArMTM1LDcgQEAgQWZmaW5lVHJhbnNmb3Jt
KiBTVkdUZXh0RWxlbWVudDo6c3VwcGxlbQogICAgIHJldHVybiBtX3N1cHBsZW1lbnRhbFRyYW5z
Zm9ybS5nZXQoKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBTVkdUZXh0RWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNW
R1RleHRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiBhcmVuYSwgUmVuZGVy
U3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdUZXh0KHRoaXMpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmgJKHJldmlzaW9uIDEzMzI0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0qIHN1
cHBsZW1lbnRhbFRyYW5zZm9ybSgpOwogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2Fs
Q29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUgbW9kZSkgY29u
c3QgeyByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6bG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zv
cm0obW9kZSk7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwg
Ym9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0
JikgY29uc3Q7CiAgICAgICAgICAgICAKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjks
NyBAQCB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhCiAgICAgICAgIFJl
bmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24ob2JqZWN0KTsKIH0KIAotUmVuZGVyT2JqZWN0KiBTVkdUZXh0UGF0aEVsZW1lbnQ6OmNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0
KiBTVkdUZXh0UGF0aEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlY3ljbGVkQXJlbmEqIGFyZW5h
LCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1RleHRQ
YXRoKHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQu
aAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVjeWNsZWRBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29u
dGV4dCYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCShyZXZpc2lv
biAxMzMyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU0Nyw3ICs1NDcsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmJ1aWxkU2hh
ZG93QW5kSW5zdGFuCiAjZW5kaWYKIH0KIAotUmVuZGVyT2JqZWN0KiBTVkdVc2VFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9i
amVjdCogU1ZHVXNlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVjeWNsZWRBcmVuYSogYXJlbmEs
IFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHVHJhbnNm
b3JtYWJsZUNvbnRhaW5lcih0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
c2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuaAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCBib29sIHdpbGxSZWNhbGNTdHlsZShTdHlsZUNoYW5nZSk7CiAKLSAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwor
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZWN5Y2xlZEFyZW5hKiwg
UmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgdG9DbGlwUGF0aChQYXRoJik7CiAKICAg
ICB2b2lkIGNsZWFyUmVzb3VyY2VSZWZlcmVuY2VzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkocmV2aXNpb24gMTMzMzQ1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMS0wMiAgQ3JpcyBO
ZWNrYXIgIDxjZG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVwZGF0ZSByZWZlcmVuY2VzIHRv
IFJlbmRlckFyZW5hCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDEwODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHRlc3RzL1JlbmRlclRhYmxlQ2VsbFRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1Jl
bmRlclRhYmxlUm93VGVzdC5jcHA6CisKIDIwMTItMTEtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBQbHVnaW5JbmFjdGl2ZSBwbHVnLWlu
IHVuYXZhaWxhYmlsaXR5IHJlYXNvbgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9SZW5kZXJUYWJsZUNlbGxUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1JlbmRlclRhYmxlQ2VsbFRlc3QuY3BwCShyZXZpc2lvbiAxMzMyNDApCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1JlbmRlclRhYmxlQ2VsbFRlc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVGVzdEhlbHBlcnMuaCIKLSNpbmNsdWRl
ICJSZW5kZXJBcmVuYS5oIgorI2luY2x1ZGUgIlJlY3ljbGVkQXJlbmEuaCIKICNpbmNsdWRlICJX
ZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgogI2luY2x1ZGUgIldlYlZpZXcu
aCIKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgUmVuZGVyVGFibGVDZWxsRGVhdGhUZXN0IDogcHVi
bGljIAogICAgICAgICByZXR1cm4gZnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgUmVuZGVyQXJlbmEqIGFyZW5hKCkKKyAgICBzdGF0aWMgUmVjeWNsZWRBcmVuYSogYXJl
bmEoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCk7CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9SZW5kZXJUYWJsZVJvd1Rl
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUmVuZGVy
VGFibGVSb3dUZXN0LmNwcAkocmV2aXNpb24gMTMzMjQwKQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9SZW5kZXJUYWJsZVJvd1Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lVGVzdEhlbHBlcnMuaCIKLSNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgorI2lu
Y2x1ZGUgIlJlY3ljbGVkQXJlbmEuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUg
IldlYkZyYW1lSW1wbC5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKQEAgLTY1LDcgKzY1LDcgQEAg
Y2xhc3MgUmVuZGVyVGFibGVSb3dEZWF0aFRlc3QgOiBwdWJsaWMgdAogICAgICAgICByZXR1cm4g
ZnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVuZGVyQXJlbmEqIGFy
ZW5hKCkKKyAgICBzdGF0aWMgUmVjeWNsZWRBcmVuYSogYXJlbmEoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCk7CiAgICAgfQo=
</data>
<flag name="review"
          id="186336"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>