<?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>25463</bug_id>
          
          <creation_ts>2009-04-28 17:11:37 -0700</creation_ts>
          <short_desc>Desktop Notifications API</short_desc>
          <delta_ts>2009-08-12 09:20:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Gregg">johnnyg</reporter>
          <assigned_to name="John Gregg">johnnyg</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>atwilson</cc>
    
    <cc>emacemac7</cc>
    
    <cc>eric</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>michaeln</cc>
    
    <cc>mike</cc>
    
    <cc>mjs</cc>
    
    <cc>playmobil</cc>
    
    <cc>sam</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>119221</commentid>
    <comment_count>0</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-04-28 17:11:37 -0700</bug_when>
    <thetext>Working on a new feature enabling workers to pop up notifications UI.  Prototyping this in chromium, but WebKit needs the Javascript API (will be protected behind a compile time flag which is default off).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119233</commentid>
    <comment_count>1</comment_count>
      <attachid>29871</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-04-28 17:30:46 -0700</bug_when>
    <thetext>Created attachment 29871
Patch implementing proposed API for worker notifications

Proposed patch which implements the Notification API for workers.  

It requires a container such as Chromium to inject a custom Notifications interface which exposes the supported methods, and a NotificationProvider which actually does the rendering work.  It&apos;s also all disabled by a compile time flag since it is a prototype.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119245</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-04-28 18:33:43 -0700</bug_when>
    <thetext>Can you please provide a link to the specification this is from?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119247</commentid>
    <comment_count>3</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-04-28 18:50:48 -0700</bug_when>
    <thetext>Sure.  The notifications API has been in &amp; out of the HTML5 spec over the last 6 months or so; right now it is not in the spec but I am hoping to use a prototype implementation to motivate things again and arrive at a spec that makes the most sense.

I circulated the design doc for this particular code on WHATWG last month:
http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-March/019113.html
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119249</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-04-28 18:56:39 -0700</bug_when>
    <thetext>Given that we don&apos;t support Persistent Workers it doesn&apos;t seem like there is that much of a compelling use case for these since window.open() works just fine.  Do we really want to give authors another way to annoy our users with popups?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119254</commentid>
    <comment_count>5</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-04-28 19:21:51 -0700</bug_when>
    <thetext>That&apos;s fair, although there is more to it than window.open(): the user agent can manage the screen space on the desktop by queueing, stacking, etc., or relay to a different notification platform (e.g., Growl) if the user wants.  I&apos;m hoping letting people try out an experimental feature will reveal the compelling use cases.  And I certainly agree about popups, but I think it fits into the current popup permissions world we already have.

In any case, I want to clean up some style problems with my patch (apologies, this is my first experience with webkit), so allow me to try it again and in the meantime I&apos;m happy to discuss the motivation for the feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119282</commentid>
    <comment_count>6</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-04-29 09:25:46 -0700</bug_when>
    <thetext>When I think of notifications from an html page, here&apos;s some use cases without persistent workers:
1. Calendar notifications about appointments.  If you look at something like Google Calendar, right now they do an alert pop up which has several problems for me as a user.
2. Email notifications from a tab that has my email.
3. Potentially IM notifications from in browser im clients.
etc.

Now these notifications do have the potential for abuse, but that can be mitigated by having them only be work for something that is installed like widgets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119307</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-04-29 12:03:50 -0700</bug_when>
    <thetext>Why not use the options string passed to window.open() to inform the app that this window should be of a different style? </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119528</commentid>
    <comment_count>8</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-04-30 15:33:11 -0700</bug_when>
    <thetext>I find it really odd this is tied to workers in any way. Why prevent normal web pages that don&apos;t use/need workers from using notifications? </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119530</commentid>
    <comment_count>9</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-04-30 15:36:29 -0700</bug_when>
    <thetext>Timothy: agreed.  &apos;Headless&apos; persistent workers is the motivation, and there are good reasons to use shared workers for things like calendar notifications (don&apos;t want multiple tabs open to the same app to duplicate each other), so starting there but I would like to make this to available to pages as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119568</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-04-30 23:40:34 -0700</bug_when>
    <thetext>My understanding is that persistent workers are still at early design stages, and they will certainly require a lot of new browser UI functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120175</commentid>
    <comment_count>11</comment_count>
      <attachid>30072</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-05-06 16:04:21 -0700</bug_when>
    <thetext>Created attachment 30072
Revised patch for Notifications

Here is a new version of the patch with some code review feedback addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122228</commentid>
    <comment_count>12</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-05-20 17:12:15 -0700</bug_when>
    <thetext>About to submit a new patch, which makes the Notification API available to regular pages via DOMWindow as well as workers via WorkerContext.  

Still the only code being proposed to add to WebKit is an interface from Javascript up to a client provider which will implement the security policy and do the display; and plumbing for event callbacks on Notification objects. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122229</commentid>
    <comment_count>13</comment_count>
      <attachid>30517</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-05-20 17:13:26 -0700</bug_when>
    <thetext>Created attachment 30517
Notifications API for DOMWindow and WorkerContext</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122252</commentid>
    <comment_count>14</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-05-20 22:19:01 -0700</bug_when>
    <thetext>I believe without a compelling use case, we should not have this feature in WebKit.  As I see it, if we don&apos;t have persistent workers (which we don&apos;t and don&apos;t even yet agree if they are good idea), it seems like every thing here could be achieved with a new parameter to the window.open() feature string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122379</commentid>
    <comment_count>15</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-05-21 10:20:39 -0700</bug_when>
    <thetext>The use cases are pretty clear: calendar reminders / new email, etc.  Anything that wants to alert the user. 

Here&apos;s why I think it&apos;s different from window.open() from the WebKit perspective:
 - The semantics of the interface are to alert the user, not necessarily to open a window.  If the user is idle, or the desktop is cluttered with other notifications, the user agent might not open a window immediately but queue it instead.  
 - If the user&apos;s preferences are configured so that web-app notifications go to Growl, e.g., the result is not opening a window.  This I think is the real compelling use case: allow the browser to enable web applications to use external desktop notification engines according to user prefs.

Suppose we dropped the createHTMLNotification(URL) interface entirely, and just had createNotification(icon, title, text, onclick-link)?  That moves it pretty far from window.open().  Would that be a reasonable place to start exploring the use cases?  


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122400</commentid>
    <comment_count>16</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-05-21 13:18:35 -0700</bug_when>
    <thetext>
(In reply to comment #14)
&gt; I believe without a compelling use case, we should not have this feature in
&gt; WebKit.  As I see it, if we don&apos;t have persistent workers (which we don&apos;t and
&gt; don&apos;t even yet agree if they are good idea), it seems like every thing here
&gt; could be achieved with a new parameter to the window.open() feature string.
&gt; 
As John mentioned, one use case is for applications like Calendar that want to display notifications to the user that doesn&apos;t rely on alert(). For an example of other use cases/prior art, you can look at the HTML5 extension APIs that are provided by the Palm WebOS for their Pre devices, which expose similar functionality. 

We are trying to address two cases:

1) Applications that want to display notifications with rich HTML/dynamic javascript. One simple example would be a calendar meeting notification that displays &quot;time until meeting&quot; via a dynamic countdown. These would be styled differently from standard popup windows, and would likely have other behavior that differs from popups (be non-focusable so they cannot receive keyboard input).
2) Some platforms have an alternate non-HTML, non-interactive notification format which the user may wish to use - Growl on the Mac is one example of this. Alternatively, some platforms may not allow HTML popups - Palm and Android phones have a specific icon + text format that they can display in their notification bar, and Ubuntu requires that all well-behaved apps use their standard libnotify APIs for displaying notifications.

The suggestion of window.open() to address use case #1 is reasonable, but it does not address the capabilities detection case (how can a web application detect that a given platform supports HTML notifications, so it can fall back to non-HTML notifications)? It is not a reasonable fallback to display a regular popup window in that case (this would especially break for mobile platforms that don&apos;t really support non-full-screen windows).

Additionally, window.open() gives the web application no way to interface with non-HTML notification systems like Growl. So window.open(), by itself, is not sufficient.

Another alternative would be to have a single notifications API that takes both an HTML URL and a fallback text+icon if HTML notifications aren&apos;t supported:

createNotification(url, altIcon, altTitle, altText);

If you could clarify your concerns further we can try to address them - there are at least a half-dozen teams within Google that are interested in using this, and we&apos;ve also gotten some good feedback externally as well, so if you are looking for more use cases we can certainly provide them.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122406</commentid>
    <comment_count>17</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-05-21 13:33:25 -0700</bug_when>
    <thetext>Speaking of prior art, this is similar to some of the functionality being exposed via Mozilla Jetpack for Firefox:

https://jetpack.mozillalabs.com/api.html

It sounds like ultimately they are planning on supporting full HTML notifications as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122435</commentid>
    <comment_count>18</comment_count>
      <attachid>30562</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-05-21 15:09:21 -0700</bug_when>
    <thetext>Created attachment 30562
Notifications Patch

minor refactor based on review feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122516</commentid>
    <comment_count>19</comment_count>
      <attachid>30562</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-05-21 20:03:37 -0700</bug_when>
    <thetext>Comment on attachment 30562
Notifications Patch

The comments in the bug seem to show a lack of consensus as to whether we want this feature and whether the API is appropriate. These design issues should be hashed out (perhaps on the mailing list) before submitting a patch for code review. Marking r- for now pending further discussion and rough consensus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123161</commentid>
    <comment_count>20</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-05-26 11:29:14 -0700</bug_when>
    <thetext>I do appreciate the concerns and I would be very happy to discuss the design issues, but putting this out on the mailing list a second time has not generated any discussion.  How can we get to a rough consensus?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123363</commentid>
    <comment_count>21</comment_count>
      <attachid>30728</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-05-27 23:53:44 -0700</bug_when>
    <thetext>Created attachment 30728
Notifications API with Permissions API

Added the permissions API as discussed on webkit-dev.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123445</commentid>
    <comment_count>22</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-05-28 12:37:22 -0700</bug_when>
    <thetext>&gt; // Callback methods for the provider when events occur regarding the notification.
&gt; void display();

I think the naming convention for methods like these are something like callDisplayListener().

&gt; ACCESSOR_SETTER(NotificationOndisplay) 
&gt; ACCESSOR_GETTER(NotificationOndisplay)
&gt; ACCESSOR_SETTER(NotificationOnerror) 
&gt; ACCESSOR_GETTER(NotificationOnerror)
&gt; ACCESSOR_SETTER(NotificationOnclose) 
&gt; ACCESSOR_GETTER(NotificationOnclose)

This technique of v8 bindings for event handler results in more code bloat then we really like. We end up with distinct boiler plate functions for each event attribute. There is another available to us that involves looking up the event attribute by name, resulting in one getter/setter pair for all event attributes.

It be great if the code generator just generated this gunk without intervention... but until that glorious day.

You can see that technique in use in DOMWindow (which has a good number of events), and also in these patches out for review for the DOMAppliationCache...

// see V8DOMApplicationCacheCustom.cpp
http://codereview.chromium.org/113554  

// see v8_custom.h and CodeGeneratorV8.pm for the voodoo required
// to use this over the default code bloaty technique
http://codereview.chromium.org/115531

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123450</commentid>
    <comment_count>23</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-05-28 13:03:33 -0700</bug_when>
    <thetext>Okay, thanks.  I couldn&apos;t find a good example in the code that bound event listeners in a way that worked for both document and worker contexts (which I want for notifications), but it looks like the ApplicationCache code does, so will convert to that style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123453</commentid>
    <comment_count>24</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-05-28 13:19:15 -0700</bug_when>
    <thetext>Heads up... I actually haven&apos;t worker&apos;ified the appcache bindings yet. It *wants* to eventually work in workers too, but i haven&apos;t actually done that yet. Maybe I can pick up the details of what you do in that context :)

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126817</commentid>
    <comment_count>25</comment_count>
      <attachid>30728</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-18 17:00:26 -0700</bug_when>
    <thetext>Comment on attachment 30728
Notifications API with Permissions API

I have no idea who can review this.  This does not add JSC bindings (perhaps intentionally), which means that this is useless to main-line webkit.

Why don&apos;t we just land this on a branch instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126827</commentid>
    <comment_count>26</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-06-18 17:32:01 -0700</bug_when>
    <thetext>FYI, Maciej and Weinig, who helped workthrough the design issues, have told me offline they will be looking at this patch soon.

But to address your other points, this patch is just plumbing.  Even in V8 it doesn&apos;t do the actual work, it just defines an interface for notifications.  I think that&apos;s valuable to have shared in WebKit rather than added on by each browser, especially as we drive for this to be spec&apos;d officially. 

You&apos;ll see that the V8 bindings there are effectively pass-throughs into a NotificationProvider interface implemented by the containing browser, where the real work happens depending on the platform.  That said, I would be happy to add JSC bindings which also pass-through, but without a NotificationProvider it wouldn&apos;t do anything.  Also I&apos;d rather do it as a follow-up given the suggestions that this patch is already unwieldy. :)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127383</commentid>
    <comment_count>27</comment_count>
      <attachid>31655</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-06-22 10:58:12 -0700</bug_when>
    <thetext>Created attachment 31655
Notifications API, WebCore only

Uploading a smaller version of the patch which contains the WebCore pieces only, no bindings.  This patch has no effect without the ENABLE_NOTIFICATIONS flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127475</commentid>
    <comment_count>28</comment_count>
      <attachid>31683</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-06-22 15:45:47 -0700</bug_when>
    <thetext>Created attachment 31683
Notifications API, WebCore only

The last patch dropped ChangeLogs accidentally.  Replacing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127802</commentid>
    <comment_count>29</comment_count>
      <attachid>31683</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-06-23 20:30:44 -0700</bug_when>
    <thetext>Comment on attachment 31683
Notifications API, WebCore only

Thanks for the patch! This will be a neat feature. Review- for now, to address the following comments:


- Might be clearer to refer to the guard as ENABLE(NOTIFICATIONS)

&gt; This change adds an (experimental) HTML notification API, being prototyped in Chromium.  It&apos;s protected by compile-time feature flag ENABLE_NOTIFICATIONS.


- It sure is awkward having classes named &quot;Notification&quot; and &quot;Notificiations&quot;. Is there any way to make the latter name more distinct, perhaps &quot;NotificationCenter&quot;?


- I&apos;d suggest renaming m_HTML to m_isHTML to make it more clear that it&apos;s a flag, not content.


- m_fields is a pretty poor data member name - it doesn&apos;t really clarify what it holds. Perhaps m_parameters would be better. But then I&apos;d want it to also hold the HTML flag and optional URL, so that show() doesn&apos;t have to contain an if statement. It seems like those are really parameters controlling display too, right?


- In Notification::show(), it seems that nothing prevents the notification from being shown twice in a row, overwriting m_id. That seems bad.


- In Notification::cancel(), nothing checks if the notification is currently showing. Since m_id is an int, this could lead to closing an entirely different notification.


- Having an integer ID for tracking the open notification seems like poor design anyway. Why not an object? This would allow double-show and double-cancel problems mentioned above to be handled in a clean way. Perhaps even the Notification object itself could be passed to the NotificationProvider&apos;s show() and cancel().


- It looks to me like Notification::dispatchDisplayEvent, dispatchErrorEvent and dispatchCloseEvent will not dispatch to the built-in event listeners in the right order - they should come between the capture phase listeners and the bubble phase listeners.


- Even more seriously, the dispatchEvent, addEventListener and removeEventListener appear to be no-ops. That&apos;s not a correct implementation of the EventTarget interface.


- As far as I can tell, display(), close() and error() are never called. A comment implies they would be called by the NotificationProvider, but the Notification object is not passed to NotificationProvider, so how can they be?


- Not that this has any practical effect, but why is the Notification IDL interface in the &quot;threads&quot; module?

&gt; module threads {


- These files are cited in the ChangeLog but are missing from the patch, I should add that these sound like they would be incomplete for either JSC or V8 bindings.

* bindings/v8/custom/V8NotificationsCustom.cpp: Added.
* bindings/js/JSWorkerContextCustom.cpp:


- It&apos;s not clear from the patch why the show() and cancel() methods on Notification need to be [Custom].


- NotificationProvider seems a bit backwards as a name - as I understand it, this isn&apos;t something that provides notifications, but rather provides the cabability of displaying them, so something like NotificationListener, NotificationSink, NotificationView, NotificationClient might be a good name.


- Will this patch even compile with ENABLE(NOTIFICATIONS) turned on, since the bindings code appears to be missing?


- This is sort of an API-level question, but why is there a two-step process to create a notification and then show it? Is there a use case for creating a notification, keeping it around, and then showing it later?


- I don&apos;t think it&apos;s necessary to explicitly call m_notifications.clear in the WorkerContext destructor.


- Will the test case provided actually pass without the missing JS bindings code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127803</commentid>
    <comment_count>30</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-06-23 20:34:18 -0700</bug_when>
    <thetext>One thing I must add is that we should probably prefix the feature since it is not a standard, ie, WebKitNotification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127954</commentid>
    <comment_count>31</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-06-24 11:52:46 -0700</bug_when>
    <thetext>Thanks for taking the time to look at the patch and provide all the review comments!  I&apos;m working on another revision now, but wanted to respond to your comments:

&gt; - Might be clearer to refer to the guard as ENABLE(NOTIFICATIONS)
Ok, will do.

&gt; - It sure is awkward having classes named &quot;Notification&quot; and &quot;Notificiations&quot;.
&gt; Is there any way to make the latter name more distinct, perhaps
&gt; &quot;NotificationCenter&quot;?
Fair enough.  Will change.

&gt;- Not that this has any practical effect, but why is the Notification IDL
&gt;interface in the &quot;threads&quot; module?
&gt;&gt; module threads {
Again, because I followed WorkerContext as my model to get started. :X  I&apos;ll change that.

&gt;- It&apos;s not clear from the patch why the show() and cancel() methods on
&gt;Notification need to be [Custom].
I&apos;ll check that.

&gt; - I&apos;d suggest renaming m_HTML to m_isHTML to make it more clear that it&apos;s a
&gt; flag, not content.
&gt; - m_fields is a pretty poor data member name - it doesn&apos;t really clarify what
&gt; it holds. Perhaps m_parameters would be better. But then I&apos;d want it to also
&gt; hold the HTML flag and optional URL, so that show() doesn&apos;t have to contain an
&gt; if statement. It seems like those are really parameters controlling display
&gt; too, right?
I&apos;m renaming it to NotificationContents, which I think better reflects the distinction: either the contents of the notification are in a remote URL, or they are right here in the object.  

&gt; - In Notification::show(), it seems that nothing prevents the notification from
&gt; being shown twice in a row, overwriting m_id. That seems bad.
&gt; - In Notification::cancel(), nothing checks if the notification is currently
&gt; showing. Since m_id is an int, this could lead to closing an entirely different
&gt; notification.
&gt; - Having an integer ID for tracking the open notification seems like poor
&gt; design anyway. Why not an object? This would allow double-show and
&gt; double-cancel problems mentioned above to be handled in a clean way. Perhaps
&gt; even the Notification object itself could be passed to the
&gt; NotificationProvider&apos;s show() and cancel().
I&apos;m removing the int and adding an m_isShowing to deal with the double-check.  NotificationProvider::show() already does take the object; I will make NotificationProvider::cancel() take the object as well in order to get rid of the ID.

&gt;- It looks to me like Notification::dispatchDisplayEvent, dispatchErrorEvent
&gt;and dispatchCloseEvent will not dispatch to the built-in event listeners in the
&gt;right order - they should come between the capture phase listeners and the
&gt;bubble phase listeners.
This is the part I understand the least, however I followed the model of the way WorkerContext.onmessage events are dispatched.  Is it possible that is wrong also?

&gt;- Even more seriously, the dispatchEvent, addEventListener and
&gt;removeEventListener appear to be no-ops. That&apos;s not a correct implementation of
&gt;the EventTarget interface.
Yes, apologies.  I guess I stubbed that out and never fixed it.  Will do.

&gt;- As far as I can tell, display(), close() and error() are never called. A
&gt;comment implies they would be called by the NotificationProvider, but the
&gt;Notification object is not passed to NotificationProvider, so how can they be?
Actually the Notification object _is_ a parameter of NotificationProvider::show().  I think I will make it the only parameter to simplify that API.

&gt;- This is sort of an API-level question, but why is there a two-step process to
&gt;create a notification and then show it? Is there a use case for creating a
&gt;notification, keeping it around, and then showing it later?
That wasn&apos;t the use case I had in mind; it was to allow registration of event listeners (ondisplay, onclose) before showing.  Sort of like XMLHttpRequest lets you set things up between creation and send(). 

&gt;- NotificationProvider seems a bit backwards as a name - as I understand it,
&gt;this isn&apos;t something that provides notifications, but rather provides the
&gt;cabability of displaying them, so something like NotificationListener,
&gt;NotificationSink, NotificationView, NotificationClient might be a good name.
I was thinking &quot;the thing that provides actual notification of the user&quot;, i.e, not a provider of notification _objects_, but a provider of notification itself. :)  Would NotificationPlatform be reasonable?  NotificationDisplay?  NotificationDisplayProvider?  View would be okay but is sort of a loaded term at least in Chromium.

&gt;- These files are cited in the ChangeLog but are missing from the patch, I
&gt;should add that these sound like they would be incomplete for either JSC or V8
&gt;bindings.
&gt;* bindings/v8/custom/V8NotificationsCustom.cpp: Added.
&gt;* bindings/js/JSWorkerContextCustom.cpp:
Yeah, the ChangeLog entry is from an earlier iteration.  Originally this was only on workers and for JS bindings I returned a stub, so for a moment it time it was complete.

&gt;- Will this patch even compile with ENABLE(NOTIFICATIONS) turned on, since the
&gt;bindings code appears to be missing?
&gt;- Will the test case provided actually pass without the missing JS bindings
&gt;code?
missing bindings... so basically the answer is no. The test case belongs with bindings, which are not in this patch. I completely understand it is lame to check in a chromium-only build flag, on the other hand, the feature requires browser-level changes in addition to bindings to be valuable.  So if the patch is unacceptable with a chromium-only build flag even as an intermediate step, I will add JS bindings now. If that can wait, it would be less code to maintain as the feature iterates.

&gt;One thing I must add is that we should probably prefix the feature since it is
&gt;not a standard, ie, WebKitNotification.
I&apos;m okay with that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130076</commentid>
    <comment_count>32</comment_count>
      <attachid>32340</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-07-06 18:10:29 -0700</bug_when>
    <thetext>Created attachment 32340
Notifications API, WebCore only</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130078</commentid>
    <comment_count>33</comment_count>
      <attachid>32341</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-07-06 18:10:59 -0700</bug_when>
    <thetext>Created attachment 32341
Notifications API, Tests and DumpRenderTree hooks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130079</commentid>
    <comment_count>34</comment_count>
      <attachid>32342</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-07-06 18:11:18 -0700</bug_when>
    <thetext>Created attachment 32342
Notifications API, V8 Bindings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130080</commentid>
    <comment_count>35</comment_count>
      <attachid>32343</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-07-06 18:14:09 -0700</bug_when>
    <thetext>Created attachment 32343
Notifications API, Core &amp; JSC Bindings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130081</commentid>
    <comment_count>36</comment_count>
      <attachid>32344</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-07-06 18:18:59 -0700</bug_when>
    <thetext>Created attachment 32344
Notifications API, Core &amp; JSC Bindings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132133</commentid>
    <comment_count>37</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-07-15 21:39:00 -0700</bug_when>
    <thetext>Loking at this now. I&apos;m a little confused as to why there are 3 different patches, but I guess I&apos;ll figure it out soon enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132632</commentid>
    <comment_count>38</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-07-17 10:56:06 -0700</bug_when>
    <thetext>Multiple patches was just to allow distributed reviews if it made sense.  I was going to suggest that a Chromium reviewer could look at the V8 stuff, although due to V8 churn since I uploaded it I have to revise that patch anyway, so I took it out of the queue for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132638</commentid>
    <comment_count>39</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-17 11:03:59 -0700</bug_when>
    <thetext>&gt; although
&gt; due to V8 churn since I uploaded it I have to revise that patch anyway, so I
&gt; took it out of the queue for now.

Yeah, sorry you got hit by the DOM wrapper refactoring.  Most of those APIs have moved to JSDOMWrapper from V8Proxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133360</commentid>
    <comment_count>40</comment_count>
      <attachid>32344</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-07-20 21:41:41 -0700</bug_when>
    <thetext>Comment on attachment 32344
Notifications API, Core &amp; JSC Bindings

This is looking much better! I still have some comments that I think need addressing. The main substantive issue is the dispatch logic still being buggy in various ways, and I also think there is a lot of unnecessary use of custom bindings which could be manual. r- to address remaining issues. I suggested test case ideas that could verify correctness of event dispatch logic. I&apos;d also be happy to help further by email or IRC, or I could even try to make full test cases showing the bugs if my descriptions are too vague. r- for remaining issues.

&gt; Index: JavaScriptCore/ChangeLog
&gt; ===================================================================
&gt; --- JavaScriptCore/ChangeLog	(revision 45576)
&gt; +++ JavaScriptCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,15 @@
&gt; +2009-07-06  John Gregg  &lt;johnnyg@google.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Desktop Notifications API
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=25463
&gt; +
&gt; +        Adds ENABLE_NOTIFICATION flag.
&gt; +
&gt; +        * Configurations/FeatureDefines.xcconfig:
&gt; +        * wtf/Platform.h:
&gt; +
&gt;  2009-07-06  Ada Chan  &lt;adachan@apple.com&gt;
&gt;  
&gt;          Reviewed by Darin Adler and Mark Rowe.
&gt; Index: JavaScriptCore/Configurations/FeatureDefines.xcconfig
&gt; ===================================================================
&gt; --- JavaScriptCore/Configurations/FeatureDefines.xcconfig	(revision 45574)
&gt; +++ JavaScriptCore/Configurations/FeatureDefines.xcconfig	(working copy)
&gt; @@ -37,6 +37,7 @@ ENABLE_FILTERS = ;
&gt;  ENABLE_GEOLOCATION = ;
&gt;  ENABLE_ICONDATABASE = ENABLE_ICONDATABASE;
&gt;  ENABLE_JAVASCRIPT_DEBUGGER = ENABLE_JAVASCRIPT_DEBUGGER;
&gt; +ENABLE_NOTIFICATIONS = ;
&gt;  ENABLE_OFFLINE_WEB_APPLICATIONS = ENABLE_OFFLINE_WEB_APPLICATIONS;
&gt;  ENABLE_SVG = ENABLE_SVG;
&gt;  ENABLE_SVG_ANIMATION = ENABLE_SVG_ANIMATION;
&gt; @@ -51,4 +52,4 @@ ENABLE_WORKERS = ENABLE_WORKERS;
&gt;  ENABLE_XPATH = ENABLE_XPATH;
&gt;  ENABLE_XSLT = ENABLE_XSLT;
&gt;  
&gt; -FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_DATABASE) $(ENABLE_DOM_STORAGE) $(ENABLE_FILTERS) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_SVG) $(ENABLE_SVG_ANIMATION) $(ENABLE_SVG_AS_IMAGE) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_FOREIGN_OBJECT) $(ENABLE_SVG_USE) $(ENABLE_VIDEO) $(ENABLE_WML) $(ENABLE_WORKERS) $(ENABLE_XPATH) $(ENABLE_XSLT);
&gt; +FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_DATABASE) $(ENABLE_DOM_STORAGE) $(ENABLE_FILTERS) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_NOTIFICATIONS) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_SVG) $(ENABLE_SVG_ANIMATION) $(ENABLE_SVG_AS_IMAGE) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_FOREIGN_OBJECT) $(ENABLE_SVG_USE) $(ENABLE_VIDEO) $(ENABLE_WML) $(ENABLE_WORKERS) $(ENABLE_XPATH) $(ENABLE_XSLT);
&gt; Index: JavaScriptCore/wtf/Platform.h
&gt; ===================================================================
&gt; --- JavaScriptCore/wtf/Platform.h	(revision 45574)
&gt; +++ JavaScriptCore/wtf/Platform.h	(working copy)
&gt; @@ -514,6 +514,10 @@
&gt;  #define ENABLE_GEOLOCATION 0
&gt;  #endif
&gt;  
&gt; +#if !defined(ENABLE_NOTIFICATIONS)
&gt; +#define ENABLE_NOTIFICATIONS 0
&gt; +#endif
&gt; +
&gt;  #if !defined(ENABLE_TEXT_CARET)
&gt;  #define ENABLE_TEXT_CARET 1
&gt;  #endif
&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 45576)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,105 @@
&gt; +2009-07-06  John Gregg  &lt;johnnyg@google.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Desktop Notifications API
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=25463
&gt; +
&gt; +        Adds an implementation of desktop notifications, behind the compile-time
&gt; +        flag ENABLE(NOTIFICATIONS).  This code simply relays calls on the JavaScript
&gt; +        API through a NotificationProvider interface, which must provide the services
&gt; +        to actually notify the user and manage the desktop.  This provider is injected
&gt; +        into WebKit through the ChromeClient for normal page contexts and through the
&gt; +        WorkerThread for worker contexts.
&gt; +
&gt; +        A permissions API is defined on a per-origin basis, which allows a web page
&gt; +        to check if its origin is allowed to show desktop notifications, and to request
&gt; +        permission for its origin.
&gt; +
&gt; +        * Configurations/FeatureDefines.xcconfig:
&gt; +        * DerivedSources.cpp:
&gt; +        * DerivedSources.make:
&gt; +        * GNUmakefile.am:
&gt; +        * WebCore.vcproj/WebCore.vcproj:
&gt; +        * WebCore.vcproj/WebCoreCommon.vsprops:
&gt; +        * WebCore.xcodeproj/project.pbxproj:
&gt; +        * bindings/js/JSDOMWindowCustom.cpp:
&gt; +        (WebCore::JSDOMWindow::notifications):
&gt; +        * bindings/js/JSDesktopNotificationsCustom.cpp: Added.
&gt; +        (WebCore::JSNotificationCenter::createHTMLNotification):
&gt; +        (WebCore::JSNotificationCenter::createNotification):
&gt; +        (WebCore::JSNotificationCenter::checkPermission):
&gt; +        (WebCore::JSNotificationCenter::requestPermission):
&gt; +        * loader/EmptyClients.h:
&gt; +        (WebCore::EmptyChromeClient::notificationProvider):
&gt; +        * notifications: Added.
&gt; +        * notifications/Notification.cpp: Added.
&gt; +        (WebCore::Notification::Notification):
&gt; +        (WebCore::Notification::~Notification):
&gt; +        (WebCore::Notification::show):
&gt; +        (WebCore::Notification::cancel):
&gt; +        (WebCore::Notification::dispatchDisplayEvent):
&gt; +        (WebCore::Notification::dispatchErrorEvent):
&gt; +        (WebCore::Notification::dispatchCloseEvent):
&gt; +        (WebCore::Notification::addEventListener):
&gt; +        (WebCore::Notification::removeEventListener):
&gt; +        (WebCore::Notification::dispatchEvent):
&gt; +        (WebCore::Notification::display):
&gt; +        (WebCore::Notification::error):
&gt; +        (WebCore::Notification::close):
&gt; +        * notifications/Notification.h: Added.
&gt; +        (WebCore::Notification::create):
&gt; +        (WebCore::Notification::isHTML):
&gt; +        (WebCore::Notification::url):
&gt; +        (WebCore::Notification::contents):
&gt; +        (WebCore::Notification::ondisplay):
&gt; +        (WebCore::Notification::setOndisplay):
&gt; +        (WebCore::Notification::onerror):
&gt; +        (WebCore::Notification::setOnerror):
&gt; +        (WebCore::Notification::onclose):
&gt; +        (WebCore::Notification::setOnclose):
&gt; +        (WebCore::Notification::scriptExecutionContext):
&gt; +        (WebCore::Notification::refEventTarget):
&gt; +        (WebCore::Notification::derefEventTarget):
&gt; +        * notifications/Notification.idl: Added.
&gt; +        * notifications/NotificationCenter.cpp: Added.
&gt; +        (WebCore::NotificationCenter::NotificationCenter):
&gt; +        (WebCore::NotificationCenter::checkPermission):
&gt; +        (WebCore::NotificationCenter::requestPermission):
&gt; +        * notifications/NotificationCenter.h: Added.
&gt; +        (WebCore::NotificationCenter::create):
&gt; +        (WebCore::NotificationCenter::createHTMLNotification):
&gt; +        (WebCore::NotificationCenter::createNotification):
&gt; +        (WebCore::NotificationCenter::context):
&gt; +        (WebCore::NotificationCenter::provider):
&gt; +        * notifications/NotificationCenter.idl: Added.
&gt; +        * notifications/NotificationContents.h: Added.
&gt; +        (WebCore::NotificationContents::NotificationContents):
&gt; +        (WebCore::NotificationContents::icon):
&gt; +        (WebCore::NotificationContents::title):
&gt; +        (WebCore::NotificationContents::body):
&gt; +        * notifications/NotificationProvider.h: Added.
&gt; +        (WebCore::NotificationProvider::):
&gt; +        (WebCore::NotificationProvider::~NotificationProvider):
&gt; +        * page/Chrome.cpp:
&gt; +        (WebCore::Chrome::notificationProvider):
&gt; +        * page/Chrome.h:
&gt; +        * page/ChromeClient.h:
&gt; +        * page/DOMWindow.cpp:
&gt; +        (WebCore::DOMWindow::clear):
&gt; +        (WebCore::DOMWindow::webkitNotifications):
&gt; +        * page/DOMWindow.h:
&gt; +        * page/DOMWindow.idl:
&gt; +        * page/Page.h:
&gt; +        * workers/WorkerContext.cpp:
&gt; +        (WebCore::WorkerContext::~WorkerContext):
&gt; +        (WebCore::WorkerContext::webkitNotifications):
&gt; +        * workers/WorkerContext.h:
&gt; +        * workers/WorkerContext.idl:
&gt; +        * workers/WorkerThread.h:
&gt; +        (WebCore::WorkerThread::getNotificationProvider):
&gt; +        (WebCore::WorkerThread::setNotificationProvider):
&gt; +
&gt;  2009-07-06  Eric Carlson  &lt;eric.carlson@apple.com&gt;
&gt;  
&gt;          Reviewed by Simon Fraser.
&gt; Index: WebCore/DerivedSources.cpp
&gt; ===================================================================
&gt; --- WebCore/DerivedSources.cpp	(revision 45574)
&gt; +++ WebCore/DerivedSources.cpp	(working copy)
&gt; @@ -162,6 +162,8 @@
&gt;  #include &quot;JSNodeIterator.cpp&quot;
&gt;  #include &quot;JSNodeList.cpp&quot;
&gt;  #include &quot;JSNotation.cpp&quot;
&gt; +#include &quot;JSNotificationCenter.cpp&quot;
&gt; +#include &quot;JSNotification.cpp&quot;
&gt;  #include &quot;JSOverflowEvent.cpp&quot;
&gt;  #include &quot;JSPlugin.cpp&quot;
&gt;  #include &quot;JSPluginArray.cpp&quot;
&gt; Index: WebCore/DerivedSources.make
&gt; ===================================================================
&gt; --- WebCore/DerivedSources.make	(revision 45574)
&gt; +++ WebCore/DerivedSources.make	(working copy)
&gt; @@ -34,6 +34,7 @@ VPATH = \
&gt;      $(WebCore)/html \
&gt;      $(WebCore)/inspector \
&gt;      $(WebCore)/loader/appcache \
&gt; +    $(WebCore)/notifications \
&gt;      $(WebCore)/page \
&gt;      $(WebCore)/plugins \
&gt;      $(WebCore)/storage \
&gt; @@ -188,6 +189,8 @@ DOM_CLASSES = \
&gt;      NodeIterator \
&gt;      NodeList \
&gt;      Notation \
&gt; +    Notification \
&gt; +    NotificationCenter \
&gt;      OverflowEvent \
&gt;      Plugin \
&gt;      PluginArray \
&gt; @@ -678,7 +681,7 @@ endif
&gt;  # JavaScript bindings
&gt;  
&gt;  GENERATE_BINDINGS = perl -I $(WebCore)/bindings/scripts $(WebCore)/bindings/scripts/generate-bindings.pl \
&gt; -    --include dom --include html --include css --include page --include xml --include svg --outputDir .
&gt; +    --include dom --include html --include css --include page --include notifications --include xml --include svg --outputDir .
&gt;  
&gt;  GENERATE_BINDINGS_SCRIPTS = \
&gt;      bindings/scripts/CodeGenerator.pm \
&gt; Index: WebCore/GNUmakefile.am
&gt; ===================================================================
&gt; --- WebCore/GNUmakefile.am	(revision 45574)
&gt; +++ WebCore/GNUmakefile.am	(working copy)
&gt; @@ -25,6 +25,7 @@ webcore_cppflags += \
&gt;  	-I$(srcdir)/WebCore/loader/appcache \
&gt;  	-I$(srcdir)/WebCore/loader/archive \
&gt;  	-I$(srcdir)/WebCore/loader/icon \
&gt; +	-I$(srcdir)/WebCore/notifications \
&gt;  	-I$(srcdir)/WebCore/page \
&gt;  	-I$(srcdir)/WebCore/page/animation \
&gt;  	-I$(srcdir)/WebCore/platform \
&gt; @@ -231,6 +232,8 @@ IDL_BINDINGS += \
&gt;  	WebCore/html/VoidCallback.idl \
&gt;  	WebCore/inspector/JavaScriptCallFrame.idl \
&gt;  	WebCore/inspector/InspectorController.idl \
&gt; +	WebCore/notifications/Notification.idl \
&gt; +	WebCore/notifications/NotificationCenter.idl \
&gt;  	WebCore/page/BarInfo.idl \
&gt;  	WebCore/page/Console.idl \
&gt;  	WebCore/page/Coordinates.idl \
&gt; @@ -2428,6 +2431,24 @@ webcoregtk_sources += \
&gt;  	WebCore/platform/gtk/GeolocationServiceGtk.h
&gt;  endif # END ENABLE_GEOLOCATION
&gt;  
&gt; +# ----
&gt; +# Notifications support
&gt; +# ----
&gt; +if ENABLE_NOTIFICATIONS
&gt; +FEATURE_DEFINES_JAVASCRIPT += ENABLE_NOTIFICATIONS=1
&gt; +
&gt; +webcore_cppflags += \
&gt; +	-DENABLE_NOTIFICATIONS=1
&gt; +
&gt; +webcore_sources += \
&gt; +	WebCore/notifications/Notification.cpp \
&gt; +	WebCore/notifications/Notification.h \
&gt; +	WebCore/notifications/NotificationCenter.cpp \
&gt; +	WebCore/notifications/NotificationCenter.h \
&gt; +	WebCore/notifications/NotificationProvider.h \
&gt; +	WebCore/notifications/NotificationContents.h
&gt; +
&gt; +endif # END ENABLE_NOTIFICATIONS
&gt;  
&gt;  # ----
&gt;  # SVG Support
&gt; Index: WebCore/Configurations/FeatureDefines.xcconfig
&gt; ===================================================================
&gt; --- WebCore/Configurations/FeatureDefines.xcconfig	(revision 45574)
&gt; +++ WebCore/Configurations/FeatureDefines.xcconfig	(working copy)
&gt; @@ -38,6 +38,7 @@ ENABLE_FILTERS = ;
&gt;  ENABLE_GEOLOCATION = ;
&gt;  ENABLE_ICONDATABASE = ENABLE_ICONDATABASE;
&gt;  ENABLE_JAVASCRIPT_DEBUGGER = ENABLE_JAVASCRIPT_DEBUGGER;
&gt; +ENABLE_NOTIFICATIONS = ;
&gt;  ENABLE_OFFLINE_WEB_APPLICATIONS = ENABLE_OFFLINE_WEB_APPLICATIONS;
&gt;  ENABLE_SVG = ENABLE_SVG;
&gt;  ENABLE_SVG_ANIMATION = ENABLE_SVG_ANIMATION;
&gt; @@ -52,4 +53,5 @@ ENABLE_WORKERS = ENABLE_WORKERS;
&gt;  ENABLE_XPATH = ENABLE_XPATH;
&gt;  ENABLE_XSLT = ENABLE_XSLT;
&gt;  
&gt; -FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_DATABASE) $(ENABLE_DATAGRID) $(ENABLE_DOM_STORAGE) $(ENABLE_FILTERS) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_SVG) $(ENABLE_SVG_ANIMATION) $(ENABLE_SVG_AS_IMAGE) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_FOREIGN_OBJECT) $(ENABLE_SVG_USE) $(ENABLE_VIDEO) $(ENABLE_WML) $(ENABLE_WORKERS) $(ENABLE_XPATH) $(ENABLE_XSLT);
&gt; +FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_DATABASE) $(ENABLE_DATAGRID) $(ENABLE_DOM_STORAGE) $(ENABLE_FILTERS) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_NOTIFICATIONS) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_SVG) $(ENABLE_SVG_ANIMATION) $(ENABLE_SVG_AS_IMAGE) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_FOREIGN_OBJECT) $(ENABLE_SVG_USE) $(ENABLE_VIDEO) $(ENABLE_WML) $(ENABLE_WORKERS) $(ENABLE_XPATH) $(ENABLE_XSLT);
&gt; +
&gt; Index: WebCore/WebCore.vcproj/WebCore.vcproj
&gt; ===================================================================
&gt; --- WebCore/WebCore.vcproj/WebCore.vcproj	(revision 45574)
&gt; +++ WebCore/WebCore.vcproj/WebCore.vcproj	(working copy)
&gt; @@ -67,7 +67,7 @@
&gt;  			/&gt;
&gt;  			&lt;Tool
&gt;  				Name=&quot;VCPostBuildEventTool&quot;
&gt; -				CommandLine=&quot;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&amp;quot;&amp;#x0D;&amp;#x0A;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\config.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\accessibility\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\accessibility\win\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\inspector\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\loader\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\loader\appcache\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\loader\archive\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\loader\archive\cf\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\loader\icon\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\history\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\history\cf\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\html\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\css\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\animation\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\cf\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\graphics\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\graphics\transforms\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\graphics\win\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\graphics\opentype\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\text\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\win\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\network\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\network\cf\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\network\win\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\sql\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\bindings\js\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\page\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\page\animation\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\page\win\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\bridge\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\plugins\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\plugins\win\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\rendering\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\rendering\style\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\editing\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\dom\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\xml\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\svg\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\storage\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\workers\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\parser\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\runtime\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\masm\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\profiler\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\wrec\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&amp;quot;&amp;#x0D;&amp;#x0A;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d /s /exclude:xcopy.excludes &amp;quot;$(ProjectDir)\..\inspector\front-end\*&amp;quot; &amp;quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d /s /exclude:xcopy.excludes &amp;quot;$(ProjectDir)\..\English.lproj\localizedStrings.js&amp;quot; &amp;quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&amp;quot;&amp;#x0D;&amp;#x0A;&amp;#x0D;&amp;#x0A;if exist &amp;quot;$(WebKitOutputDir)\buildfailed&amp;quot; del &amp;quot;$(WebKitOutputDir)\buildfailed&amp;quot;&amp;#x0D;&amp;#x0A;&quot;
&gt; +				CommandLine=&quot;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&amp;quot;&amp;#x0D;&amp;#x0A;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\config.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\accessibility\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\accessibility\win\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\inspector\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\loader\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\loader\appcache\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\loader\archive\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\loader\archive\cf\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\loader\icon\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\history\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\history\cf\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\html\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\notifications\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\css\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\animation\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\cf\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\graphics\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\graphics\transforms\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\graphics\win\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\graphics\opentype\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\text\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\win\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\network\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\network\cf\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\network\win\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\sql\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\bindings\js\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\page\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\page\animation\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\page\win\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\bridge\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\plugins\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\plugins\win\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\rendering\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\rendering\style\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\editing\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\dom\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\xml\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\svg\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\storage\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\workers\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\parser\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\parser&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\runtime\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\runtime&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\masm\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\masm&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\profiler\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\profiler&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\wrec\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wrec&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&amp;quot;&amp;#x0D;&amp;#x0A;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d /s /exclude:xcopy.excludes &amp;quot;$(ProjectDir)\..\inspector\front-end\*&amp;quot; &amp;quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&amp;quot;&amp;#x0D;&amp;#x0A;mkdir 2&amp;gt;NUL &amp;quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d /s /exclude:xcopy.excludes &amp;quot;$(ProjectDir)\..\English.lproj\localizedStrings.js&amp;quot; &amp;quot;$(WebKitOutputDir)\bin\WebKit.resources\en.lproj&amp;quot;&amp;#x0D;&amp;#x0A;&amp;#x0D;&amp;#x0A;if exist &amp;quot;$(WebKitOutputDir)\buildfailed&amp;quot; del &amp;quot;$(WebKitOutputDir)\buildfailed&amp;quot;&amp;#x0D;&amp;#x0A;&quot;
&gt;  			/&gt;
&gt;  		&lt;/Configuration&gt;
&gt;  		&lt;Configuration
&gt; @@ -7190,6 +7190,102 @@
&gt;  				&gt;
&gt;  			&lt;/File&gt;
&gt;  			&lt;File
&gt; +				RelativePath=&quot;$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSNotification.cpp&quot;
&gt; +				&gt;
&gt; +				&lt;FileConfiguration
&gt; +					Name=&quot;Debug|Win32&quot;
&gt; +					ExcludedFromBuild=&quot;true&quot;
&gt; +					&gt;
&gt; +					&lt;Tool
&gt; +						Name=&quot;VCCLCompilerTool&quot;
&gt; +					/&gt;
&gt; +				&lt;/FileConfiguration&gt;
&gt; +				&lt;FileConfiguration
&gt; +					Name=&quot;Release|Win32&quot;
&gt; +					ExcludedFromBuild=&quot;true&quot;
&gt; +					&gt;
&gt; +					&lt;Tool
&gt; +						Name=&quot;VCCLCompilerTool&quot;
&gt; +					/&gt;
&gt; +				&lt;/FileConfiguration&gt;
&gt; +				&lt;FileConfiguration
&gt; +					Name=&quot;Debug_Internal|Win32&quot;
&gt; +					ExcludedFromBuild=&quot;true&quot;
&gt; +					&gt;
&gt; +					&lt;Tool
&gt; +						Name=&quot;VCCLCompilerTool&quot;
&gt; +					/&gt;
&gt; +				&lt;/FileConfiguration&gt;
&gt; +				&lt;FileConfiguration
&gt; +					Name=&quot;Debug_Cairo|Win32&quot;
&gt; +					ExcludedFromBuild=&quot;true&quot;
&gt; +					&gt;
&gt; +					&lt;Tool
&gt; +						Name=&quot;VCCLCompilerTool&quot;
&gt; +					/&gt;
&gt; +				&lt;/FileConfiguration&gt;
&gt; +				&lt;FileConfiguration
&gt; +					Name=&quot;Release_Cairo|Win32&quot;
&gt; +					ExcludedFromBuild=&quot;true&quot;
&gt; +					&gt;
&gt; +					&lt;Tool
&gt; +						Name=&quot;VCCLCompilerTool&quot;
&gt; +					/&gt;
&gt; +				&lt;/FileConfiguration&gt;
&gt; +			&lt;/File&gt;
&gt; +			&lt;File
&gt; +				RelativePath=&quot;$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSNotification.h&quot;
&gt; +				&gt;
&gt; +			&lt;/File&gt;
&gt; +			&lt;File
&gt; +				RelativePath=&quot;$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSNotificationCenter.cpp&quot;
&gt; +				&gt;
&gt; +				&lt;FileConfiguration
&gt; +					Name=&quot;Debug|Win32&quot;
&gt; +					ExcludedFromBuild=&quot;true&quot;
&gt; +					&gt;
&gt; +					&lt;Tool
&gt; +						Name=&quot;VCCLCompilerTool&quot;
&gt; +					/&gt;
&gt; +				&lt;/FileConfiguration&gt;
&gt; +				&lt;FileConfiguration
&gt; +					Name=&quot;Release|Win32&quot;
&gt; +					ExcludedFromBuild=&quot;true&quot;
&gt; +					&gt;
&gt; +					&lt;Tool
&gt; +						Name=&quot;VCCLCompilerTool&quot;
&gt; +					/&gt;
&gt; +				&lt;/FileConfiguration&gt;
&gt; +				&lt;FileConfiguration
&gt; +					Name=&quot;Debug_Internal|Win32&quot;
&gt; +					ExcludedFromBuild=&quot;true&quot;
&gt; +					&gt;
&gt; +					&lt;Tool
&gt; +						Name=&quot;VCCLCompilerTool&quot;
&gt; +					/&gt;
&gt; +				&lt;/FileConfiguration&gt;
&gt; +				&lt;FileConfiguration
&gt; +					Name=&quot;Debug_Cairo|Win32&quot;
&gt; +					ExcludedFromBuild=&quot;true&quot;
&gt; +					&gt;
&gt; +					&lt;Tool
&gt; +						Name=&quot;VCCLCompilerTool&quot;
&gt; +					/&gt;
&gt; +				&lt;/FileConfiguration&gt;
&gt; +				&lt;FileConfiguration
&gt; +					Name=&quot;Release_Cairo|Win32&quot;
&gt; +					ExcludedFromBuild=&quot;true&quot;
&gt; +					&gt;
&gt; +					&lt;Tool
&gt; +						Name=&quot;VCCLCompilerTool&quot;
&gt; +					/&gt;
&gt; +				&lt;/FileConfiguration&gt;
&gt; +			&lt;/File&gt;
&gt; +			&lt;File
&gt; +				RelativePath=&quot;$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSNotificationCenter.h&quot;
&gt; +				&gt;
&gt; +			&lt;/File&gt;
&gt; +			&lt;File
&gt;  				RelativePath=&quot;$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSOverflowEvent.cpp&quot;
&gt;  				&gt;
&gt;  				&lt;FileConfiguration
&gt; @@ -23832,6 +23928,34 @@
&gt;  			&lt;/File&gt;
&gt;  		&lt;/Filter&gt;
&gt;  		&lt;Filter
&gt; +			Name=&quot;notifications&quot;
&gt; +			&gt;
&gt; +			&lt;File
&gt; +				RelativePath=&quot;..\notifications\Notification.cpp&quot;
&gt; +				&gt;
&gt; +			&lt;/File&gt;
&gt; +			&lt;File
&gt; +				RelativePath=&quot;..\notifications\Notification.h&quot;
&gt; +				&gt;
&gt; +			&lt;/File&gt;
&gt; +			&lt;File
&gt; +				RelativePath=&quot;..\notifications\NotificationCenter.cpp&quot;
&gt; +				&gt;
&gt; +			&lt;/File&gt;
&gt; +			&lt;File
&gt; +				RelativePath=&quot;..\notifications\NotificationCenter.h&quot;
&gt; +				&gt;
&gt; +			&lt;/File&gt;
&gt; +			&lt;File
&gt; +				RelativePath=&quot;..\notifications\NotificationContents.h&quot;
&gt; +				&gt;
&gt; +			&lt;/File&gt;
&gt; +			&lt;File
&gt; +				RelativePath=&quot;..\notifications\NotificationProvider.h&quot;
&gt; +				&gt;
&gt; +			&lt;/File&gt;
&gt; +		&lt;/Filter&gt;
&gt; +		&lt;Filter
&gt;  			Name=&quot;editing&quot;
&gt;  			&gt;
&gt;  			&lt;File
&gt; @@ -28066,6 +28190,10 @@
&gt;  					&gt;
&gt;  				&lt;/File&gt;
&gt;  				&lt;File
&gt; +					RelativePath=&quot;..\bindings\js\JSDesktopNotificationsCustom.cpp&quot;
&gt; +					&gt;
&gt; +				&lt;/File&gt;
&gt; +				&lt;File
&gt;  					RelativePath=&quot;..\bindings\js\JSDocumentCustom.cpp&quot;
&gt;  					&gt;
&gt;  				&lt;/File&gt;
&gt; Index: WebCore/WebCore.vcproj/WebCoreCommon.vsprops
&gt; ===================================================================
&gt; --- WebCore/WebCore.vcproj/WebCoreCommon.vsprops	(revision 45574)
&gt; +++ WebCore/WebCore.vcproj/WebCoreCommon.vsprops	(working copy)
&gt; @@ -7,7 +7,7 @@
&gt;  	&gt;
&gt;  	&lt;Tool
&gt;  		Name=&quot;VCCLCompilerTool&quot;
&gt; -		AdditionalIncludeDirectories=&quot;&amp;quot;$(ProjectDir)..\&amp;quot;;&amp;quot;$(ProjectDir)..&amp;quot;;&amp;quot;$(ProjectDir)..\accessibility&amp;quot;;&amp;quot;$(ProjectDir)..\accessibility\win&amp;quot;;&amp;quot;$(ProjectDir)..\bridge&amp;quot;;&amp;quot;$(ProjectDir)..\bridge\c&amp;quot;;&amp;quot;$(ProjectDir)..\css&amp;quot;;&amp;quot;$(ProjectDir)..\editing&amp;quot;;&amp;quot;$(ProjectDir)..\rendering&amp;quot;;&amp;quot;$(ProjectDir)..\rendering\style&amp;quot;;&amp;quot;$(ProjectDir)..\bindings\js&amp;quot;;&amp;quot;$(ProjectDir)..\dom&amp;quot;;&amp;quot;$(ProjectDir)..\dom\default&amp;quot;;&amp;quot;$(ProjectDir)..\history&amp;quot;;&amp;quot;$(ProjectDir)..\html&amp;quot;;&amp;quot;$(ProjectDir)..\inspector&amp;quot;;&amp;quot;$(ProjectDir)..\loader&amp;quot;;&amp;quot;$(ProjectDir)..\loader\appcache&amp;quot;;&amp;quot;$(ProjectDir)..\loader\archive&amp;quot;;&amp;quot;$(ProjectDir)..\loader\archive\cf&amp;quot;;&amp;quot;$(ProjectDir)..\loader\icon&amp;quot;;&amp;quot;$(ProjectDir)..\page&amp;quot;;&amp;quot;$(ProjectDir)..\page\animation&amp;quot;;&amp;quot;$(ProjectDir)..\page\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform&amp;quot;;&amp;quot;$(ProjectDir)..\platform\animation&amp;quot;;&amp;quot;$(ProjectDir)..\platform\sql&amp;quot;;&amp;quot;$(ProjectDir)..\platform\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform\network&amp;quot;;&amp;quot;$(ProjectDir)..\platform\network\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform\cf&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\opentype&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\transforms&amp;quot;;&amp;quot;$(ProjectDir)..\platform\text&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\win&amp;quot;;&amp;quot;$(ProjectDir)..\xml&amp;quot;;&amp;quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources&amp;quot;;&amp;quot;$(ProjectDir)..\plugins&amp;quot;;&amp;quot;$(ProjectDir)..\plugins\win&amp;quot;;&amp;quot;$(ProjectDir)..\svg\graphics&amp;quot;;&amp;quot;$(ProjectDir)..\svg\graphics\filters&amp;quot;;&amp;quot;$(ProjectDir)..\svg&amp;quot;;&amp;quot;$(ProjectDir)..\wml&amp;quot;;&amp;quot;$(ProjectDir)..\storage&amp;quot;;&amp;quot;$(ProjectDir)..\workers&amp;quot;;&amp;quot;$(WebKitOutputDir)\include&amp;quot;;&amp;quot;$(WebKitOutputDir)\include\JavaScriptCore&amp;quot;;&amp;quot;$(ProjectDir)..\ForwardingHeaders&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\icu&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\iconv&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\pthreads&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\sqlite&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\JavaScriptCore&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility&amp;quot;;&amp;quot;$(ProjectDir)..\svg\animation&amp;quot;&quot;
&gt; +		AdditionalIncludeDirectories=&quot;&amp;quot;$(ProjectDir)..\&amp;quot;;&amp;quot;$(ProjectDir)..&amp;quot;;&amp;quot;$(ProjectDir)..\accessibility&amp;quot;;&amp;quot;$(ProjectDir)..\accessibility\win&amp;quot;;&amp;quot;$(ProjectDir)..\bridge&amp;quot;;&amp;quot;$(ProjectDir)..\bridge\c&amp;quot;;&amp;quot;$(ProjectDir)..\css&amp;quot;;&amp;quot;$(ProjectDir)..\editing&amp;quot;;&amp;quot;$(ProjectDir)..\notifications&amp;quot;;&amp;quot;$(ProjectDir)..\rendering&amp;quot;;&amp;quot;$(ProjectDir)..\rendering\style&amp;quot;;&amp;quot;$(ProjectDir)..\bindings\js&amp;quot;;&amp;quot;$(ProjectDir)..\dom&amp;quot;;&amp;quot;$(ProjectDir)..\dom\default&amp;quot;;&amp;quot;$(ProjectDir)..\history&amp;quot;;&amp;quot;$(ProjectDir)..\html&amp;quot;;&amp;quot;$(ProjectDir)..\inspector&amp;quot;;&amp;quot;$(ProjectDir)..\loader&amp;quot;;&amp;quot;$(ProjectDir)..\loader\appcache&amp;quot;;&amp;quot;$(ProjectDir)..\loader\archive&amp;quot;;&amp;quot;$(ProjectDir)..\loader\archive\cf&amp;quot;;&amp;quot;$(ProjectDir)..\loader\icon&amp;quot;;&amp;quot;$(ProjectDir)..\page&amp;quot;;&amp;quot;$(ProjectDir)..\page\animation&amp;quot;;&amp;quot;$(ProjectDir)..\page\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform&amp;quot;;&amp;quot;$(ProjectDir)..\platform\animation&amp;quot;;&amp;quot;$(ProjectDir)..\platform\sql&amp;quot;;&amp;quot;$(ProjectDir)..\platform\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform\network&amp;quot;;&amp;quot;$(ProjectDir)..\platform\network\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform\cf&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\opentype&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\transforms&amp;quot;;&amp;quot;$(ProjectDir)..\platform\text&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\win&amp;quot;;&amp;quot;$(ProjectDir)..\xml&amp;quot;;&amp;quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources&amp;quot;;&amp;quot;$(ProjectDir)..\plugins&amp;quot;;&amp;quot;$(ProjectDir)..\plugins\win&amp;quot;;&amp;quot;$(ProjectDir)..\svg\graphics&amp;quot;;&amp;quot;$(ProjectDir)..\svg\graphics\filters&amp;quot;;&amp;quot;$(ProjectDir)..\svg&amp;quot;;&amp;quot;$(ProjectDir)..\wml&amp;quot;;&amp;quot;$(ProjectDir)..\storage&amp;quot;;&amp;quot;$(ProjectDir)..\workers&amp;quot;;&amp;quot;$(WebKitOutputDir)\include&amp;quot;;&amp;quot;$(WebKitOutputDir)\include\JavaScriptCore&amp;quot;;&amp;quot;$(ProjectDir)..\ForwardingHeaders&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\icu&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\iconv&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\pthreads&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\sqlite&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\JavaScriptCore&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility&amp;quot;;&amp;quot;$(ProjectDir)..\svg\animation&amp;quot;&quot;
&gt;  		PreprocessorDefinitions=&quot;__WIN32__;WEBCORE_CONTEXT_MENUS;ENABLE_DATABASE;ENABLE_DATAGRID;ENABLE_DOM_STORAGE;ENABLE_ICONDATABASE;ENABLE_OFFLINE_WEB_APPLICATIONS;ENABLE_SVG;ENABLE_SVG_ANIMATION;ENABLE_SVG_AS_IMAGE;ENABLE_SVG_FONTS;ENABLE_SVG_FOREIGN_OBJECT;ENABLE_SVG_USE;ENABLE_WORKERS;ENABLE_XPATH;ENABLE_XSLT&quot;
&gt;  		UsePrecompiledHeader=&quot;2&quot;
&gt;  		PrecompiledHeaderThrough=&quot;WebCorePrefix.h&quot;
&gt; Index: WebCore/WebCore.xcodeproj/project.pbxproj
&gt; ===================================================================
&gt; --- WebCore/WebCore.xcodeproj/project.pbxproj	(revision 45574)
&gt; +++ WebCore/WebCore.xcodeproj/project.pbxproj	(working copy)
&gt; @@ -614,6 +614,10 @@
&gt;  		31C0FF4C0E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C0FF460E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.h */; };
&gt;  		31C0FF4D0E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 31C0FF470E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.mm */; };
&gt;  		31C0FF4E0E4CEFDD007D6FE5 /* DOMWebKitTransitionEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C0FF480E4CEFDD007D6FE5 /* DOMWebKitTransitionEventInternal.h */; };
&gt; +		3390CA550FFC157B00921962 /* NotificationCenter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3390CA510FFC157B00921962 /* NotificationCenter.cpp */; };
&gt; +		3390CA560FFC157B00921962 /* NotificationCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3390CA520FFC157B00921962 /* NotificationCenter.h */; };
&gt; +		3390CA570FFC157B00921962 /* NotificationCenter.idl in Resources */ = {isa = PBXBuildFile; fileRef = 3390CA530FFC157B00921962 /* NotificationCenter.idl */; };
&gt; +		3390CA580FFC157B00921962 /* NotificationContents.h in Headers */ = {isa = PBXBuildFile; fileRef = 3390CA540FFC157B00921962 /* NotificationContents.h */; };
&gt;  		371F4F400D25B9AF00ECE0D5 /* FontData.h in Headers */ = {isa = PBXBuildFile; fileRef = 371F4F3E0D25B9AF00ECE0D5 /* FontData.h */; settings = {ATTRIBUTES = (Private, ); }; };
&gt;  		371F4F410D25B9AF00ECE0D5 /* FontData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 371F4F3F0D25B9AF00ECE0D5 /* FontData.cpp */; };
&gt;  		371F4FFC0D25E7F300ECE0D5 /* SegmentedFontData.h in Headers */ = {isa = PBXBuildFile; fileRef = 371F4FFA0D25E7F300ECE0D5 /* SegmentedFontData.h */; };
&gt; @@ -5542,6 +5546,14 @@
&gt;  		31C0FF460E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitTransitionEvent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		31C0FF470E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMWebKitTransitionEvent.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		31C0FF480E4CEFDD007D6FE5 /* DOMWebKitTransitionEventInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWebKitTransitionEventInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		333F704E0FB49CA2008E12A6 /* Notification.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Notification.idl; path = notifications/Notification.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		333F704F0FB49CA2008E12A6 /* Notification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Notification.h; path = notifications/Notification.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		333F70500FB49CA2008E12A6 /* Notification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Notification.cpp; path = notifications/Notification.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		333F70510FB49CA2008E12A6 /* NotificationProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NotificationProvider.h; path = notifications/NotificationProvider.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		3390CA510FFC157B00921962 /* NotificationCenter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NotificationCenter.cpp; path = notifications/NotificationCenter.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		3390CA520FFC157B00921962 /* NotificationCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NotificationCenter.h; path = notifications/NotificationCenter.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		3390CA530FFC157B00921962 /* NotificationCenter.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = NotificationCenter.idl; path = notifications/NotificationCenter.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		3390CA540FFC157B00921962 /* NotificationContents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NotificationContents.h; path = notifications/NotificationContents.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		371F4F3E0D25B9AF00ECE0D5 /* FontData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontData.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		371F4F3F0D25B9AF00ECE0D5 /* FontData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontData.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		371F4FFA0D25E7F300ECE0D5 /* SegmentedFontData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SegmentedFontData.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; @@ -9414,6 +9426,7 @@
&gt;  				93EEC1EC09C2877700C515D1 /* html */,
&gt;  				1C81B94D0E9732D900266E07 /* inspector */,
&gt;  				BCB16BFB0979C38700467741 /* loader */,
&gt; +				333F703D0FB49C16008E12A6 /* notifications */,
&gt;  				65BF02180974806300C43196 /* page */,
&gt;  				BCF1A5BA097832090061A123 /* platform */,
&gt;  				5DCF83690D59157800953BC6 /* plugins */,
&gt; @@ -9884,6 +9897,21 @@
&gt;  			name = animation;
&gt;  			sourceTree = &quot;&lt;group&gt;&quot;;
&gt;  		};
&gt; +		333F703D0FB49C16008E12A6 /* notifications */ = {
&gt; +			isa = PBXGroup;
&gt; +			children = (
&gt; +				3390CA510FFC157B00921962 /* NotificationCenter.cpp */,
&gt; +				3390CA520FFC157B00921962 /* NotificationCenter.h */,
&gt; +				3390CA530FFC157B00921962 /* NotificationCenter.idl */,
&gt; +				3390CA540FFC157B00921962 /* NotificationContents.h */,
&gt; +				333F704E0FB49CA2008E12A6 /* Notification.idl */,
&gt; +				333F704F0FB49CA2008E12A6 /* Notification.h */,
&gt; +				333F70500FB49CA2008E12A6 /* Notification.cpp */,
&gt; +				333F70510FB49CA2008E12A6 /* NotificationProvider.h */,
&gt; +			);
&gt; +			name = notifications;
&gt; +			sourceTree = &quot;&lt;group&gt;&quot;;
&gt; +		};
&gt;  		449195900FBE175B00D9F824 /* Exports */ = {
&gt;  			isa = PBXGroup;
&gt;  			children = (
&gt; @@ -16917,6 +16945,8 @@
&gt;  				BC77D16C0FF19F560070887B /* JSDataGridColumnList.h in Headers */,
&gt;  				BCBCAE370FF19385000762AE /* DataGridDataSource.h in Headers */,
&gt;  				BCBCAE3D0FF19399000762AE /* JSDataGridDataSource.h in Headers */,
&gt; +				3390CA560FFC157B00921962 /* NotificationCenter.h in Headers */,
&gt; +				3390CA580FFC157B00921962 /* NotificationContents.h in Headers */,
&gt;  				C50D0E830FF4272900AC2644 /* StorageNamespace.h in Headers */,
&gt;  				BC7DAAEF0FF9615D00CE0138 /* DOMDataGridDataSource.h in Headers */,
&gt;  				B5A684220FFABE9800D24689 /* SQLiteFileSystem.h in Headers */,
&gt; @@ -17028,6 +17058,7 @@
&gt;  				BC77CDA30FEFEB530070887B /* HTMLDataGridCellElement.idl in Resources */,
&gt;  				BC77CF990FF172420070887B /* DataGridColumnList.idl in Resources */,
&gt;  				BC77CF9F0FF172B30070887B /* DataGridColumn.idl in Resources */,
&gt; +				3390CA570FFC157B00921962 /* NotificationCenter.idl in Resources */,
&gt;  			);
&gt;  			runOnlyForDeploymentPostprocessing = 0;
&gt;  		};
&gt; @@ -18932,6 +18963,7 @@
&gt;  				BCBCAE540FF1A29E000762AE /* JSHTMLDataGridElementCustom.cpp in Sources */,
&gt;  				BC77D1FD0FF28D9B0070887B /* DataGridColumnList.cpp in Sources */,
&gt;  				BC77D2390FF298080070887B /* DataGridColumn.cpp in Sources */,
&gt; +				3390CA550FFC157B00921962 /* NotificationCenter.cpp in Sources */,
&gt;  				C50D0E820FF4272900AC2644 /* StorageNamespace.cpp in Sources */,
&gt;  				BC7DAAEE0FF9615D00CE0138 /* DOMDataGridDataSource.cpp in Sources */,
&gt;  				B5A684240FFABEAA00D24689 /* SQLiteFileSystem.cpp in Sources */,
&gt; Index: WebCore/bindings/js/JSDOMWindowCustom.cpp
&gt; ===================================================================
&gt; --- WebCore/bindings/js/JSDOMWindowCustom.cpp	(revision 45574)
&gt; +++ WebCore/bindings/js/JSDOMWindowCustom.cpp	(working copy)
&gt; @@ -44,6 +44,7 @@
&gt;  #include &quot;JSLocation.h&quot;
&gt;  #include &quot;JSMessageChannelConstructor.h&quot;
&gt;  #include &quot;JSMessagePort.h&quot;
&gt; +#include &quot;JSNotificationCenter.h&quot;
&gt;  #include &quot;JSOptionConstructor.h&quot;
&gt;  #include &quot;JSWebKitCSSMatrixConstructor.h&quot;
&gt;  #include &quot;JSWebKitPointConstructor.h&quot;
&gt; @@ -53,6 +54,7 @@
&gt;  #include &quot;Location.h&quot;
&gt;  #include &quot;MediaPlayer.h&quot;
&gt;  #include &quot;MessagePort.h&quot;
&gt; +#include &quot;NotificationCenter.h&quot;
&gt;  #include &quot;Page.h&quot;
&gt;  #include &quot;PlatformScreen.h&quot;
&gt;  #include &quot;RegisteredEventListener.h&quot;
&gt; @@ -374,6 +376,19 @@ JSValue JSDOMWindow::location(ExecState*
&gt;      return jsLocation;
&gt;  }
&gt;  
&gt; +#if ENABLE(NOTIFICATIONS)
&gt; +JSValue JSDOMWindow::notifications(ExecState* exec) const
&gt; +{
&gt; +    NotificationCenter* notifications = impl()-&gt;notifications();
&gt; +    if (DOMObject* wrapper = getCachedDOMObjectWrapper(exec-&gt;globalData(), notifications))
&gt; +        return wrapper;
&gt; +
&gt; +    JSNotificationCenter* jsNotifications = new (exec) JSNotificationCenter(getDOMStructure&lt;JSNotificationCenter&gt;(exec, const_cast&lt;JSDOMWindow*&gt;(this)), notifications);
&gt; +    cacheDOMObjectWrapper(exec-&gt;globalData(), notifications, jsNotifications);
&gt; +    return jsNotifications;
&gt; +}
&gt; +#endif
&gt; +

Why does this need to be a custom binding? Seems like this does basically the same thing that a manual binding would (except the manual binding would use toJS() instead of doing the wrapper conversion by hand).

&gt; +
&gt; +JSValue JSNotificationCenter::createHTMLNotification(ExecState* exec, const ArgList&amp; args)
&gt; +{
&gt; +    ExceptionCode ec = 0;
&gt; +    String url = args.at(0).toString(exec);
&gt; +    JSValue value = toJS(exec, Notification::create(url, impl()-&gt;context(), ec, impl()-&gt;provider()));
&gt; +    setDOMException(exec, ec);
&gt; +    return value;
&gt; +}

Why does this need to be a custom binding? Wouldn&apos;t it be simpler to give JSNotificationCenter a createHTMLNotification() method and let the bindings generator do the work? Also, it looks like this code will use &quot;undefined&quot; for url if the URL parameter is omitted, instead of an empty string as is the case with many other DOM APIs. Is that intentional?

&gt; +
&gt; +JSValue JSNotificationCenter::createNotification(ExecState* exec, const ArgList&amp; args)
&gt; +{
&gt; +    ExceptionCode ec = 0;
&gt; +    NotificationContents contents(args.at(0).toString(exec), args.at(1).toString(exec), args.at(2).toString(exec));
&gt; +
&gt; +
&gt; +    JSValue value = toJS(exec, Notification::create(contents, impl()-&gt;context(), ec, impl()-&gt;provider()));
&gt; +    setDOMException(exec, ec);
&gt; +    return value;
&gt; +}

Ditto the two issues above.

&gt; +
&gt; +JSValue JSNotificationCenter::checkPermission(ExecState* exec, const ArgList&amp; args)
&gt; +{
&gt; +    return JSValue(exec, impl()-&gt;checkPermission());
&gt; +}

Once again, not clear why this needs to be a custom binding.



&gt; +Notification::~Notification() 
&gt; +{
&gt; +}

It&apos;s not necessary to explicitly define an empty constructor.

&gt; +
&gt; +void Notification::dispatchDisplayEvent() 
&gt; +{   
&gt; +    RefPtr&lt;Event&gt; event = Event::create(&quot;display&quot;, false, true);
&gt; +
&gt; +    if (m_onDisplayListener) {
&gt; +        event-&gt;setTarget(this);
&gt; +        event-&gt;setCurrentTarget(this);
&gt; +        m_onDisplayListener-&gt;handleEvent(event.get(), true);
&gt; +    }
&gt; +
&gt; +    ExceptionCode ec = 0;
&gt; +    dispatchEvent(event.release(), ec);
&gt; +    ASSERT(!ec);
&gt; +}

I think all of the event dispatch has some bugs. The event flow should be like this:

1) All capturing event listeners -- ones registered with addEventListener&apos;s third argument (useCapture) set to true -- get to handle the event, in the order in which they were added.
2) All non-capturing event listeners, including built-in ones set via the attributes, get to handle the event in the order in which they were added.

This should happen whether or not the event is dispatched internally or by an explicit dispatchEvent() call from JS.

I believe you have at least four bugs here, I will describe them plus test cases that would catch them (which you should add).

A) For events dispatched internally, the built-in listener will be invoked *before* the capturing listeners (which we don&apos;t get to until handleEvent). This is wrong, capturing listeners need to fire first. You can test this by setting a capturing listener with addEventListener as well as one via the builtin (onerror, onclose, etc) DOM attributes. Then cause one of the events to be dispatched in a built-in way.

B) For events dispatched by calling dispatchEvent() directly, the built-in listeners will be skipped entirely. That&apos;s because they are only called by the special dispatchErrorEvent / dispatchCloseEvent etc functions, but those are not invoked when dispatchEvent is called directly.

C) Very minor - if you add a non-capturing listener with addEventListener, and then afterwards set a DOM property listener (say, by setting onerror) the addEventListener listener should fire first on a built-in dispatch, but with your code it will fire second.

D) You are not handling propagationStopped properly between the phases. You can observe this by setting a capturing and non-capturing listener, and calling stopPropagation in the capturing listener. 

There may be EventTarget subclasses that get this wrong. Node gets it right, although it also has logic to go up and down the DOM tree which is not necessary here. If you code it more like what Node does, starting with the line event-&gt;setEventPhase(Event::AT_TARGET) in Node::dispatchGenericEvent() up to right before the section of code handling the bubble phase, and if you make the attribute listeners work more like they would via Node::setAttributeEventListener(), then all four of the above bugs should go away.

We can file bugs on any other classes getting this wrong. Maybe we should eventually have some helper code for EventTarget classes that are standalone and not DOM nodes, to make it easier to get this right.

&gt; +
&gt; +void Notification::dispatchErrorEvent()
&gt; +{  
&gt; +    RefPtr&lt;Event&gt; event = Event::create(eventNames().errorEvent, false, true);
&gt; +
&gt; +    if (m_onErrorListener) {
&gt; +        event-&gt;setTarget(this);
&gt; +        event-&gt;setCurrentTarget(this);
&gt; +        m_onErrorListener-&gt;handleEvent(event.get(), true);
&gt; +    }
&gt; +
&gt; +    ExceptionCode ec = 0;
&gt; +    dispatchEvent(event.release(), ec);
&gt; +    ASSERT(!ec);
&gt; +}
&gt; +
&gt; +void Notification::dispatchCloseEvent() 
&gt; +{   
&gt; +    RefPtr&lt;Event&gt; event = Event::create(eventNames().closeEvent, false, true);
&gt; +
&gt; +    if (m_onCloseListener) {
&gt; +        event-&gt;setTarget(this);
&gt; +        event-&gt;setCurrentTarget(this);
&gt; +        m_onCloseListener-&gt;handleEvent(event.get(), true);
&gt; +    }
&gt; +
&gt; +    ExceptionCode ec = 0;
&gt; +    dispatchEvent(event.release(), ec);
&gt; +    ASSERT(!ec);
&gt; +
&gt; +}

These two methods are buggy too, as cited above.

&gt; +bool Notification::dispatchEvent(PassRefPtr&lt;Event&gt; event, ExceptionCode&amp; ec)
&gt; +{
&gt; +    RegisteredEventListenerVector listenersCopy = m_eventListeners;
&gt; +    size_t size = listenersCopy.size();
&gt; +    for (size_t i = 0; i &lt; size; ++i) {
&gt; +        RegisteredEventListener&amp; r = *listenersCopy[i];
&gt; +        if (r.eventType() == event-&gt;type() &amp;&amp; !r.removed())
&gt; +            r.listener()-&gt;handleEvent(event.get());
&gt; +    }
&gt; +
&gt; +    return true;
&gt; +}

And this too - notice how it ignores whether the listeners have useCapture set.

&gt; +
&gt; +void Notification::display()
&gt; +{
&gt; +    dispatchDisplayEvent();
&gt; +}
&gt; +
&gt; +void Notification::error()
&gt; +{
&gt; +    dispatchErrorEvent();
&gt; +}
&gt; +
&gt; +void Notification::close()
&gt; +{
&gt; +    dispatchCloseEvent();
&gt; +}

These one-line wrappers don&apos;t seem to add much. Maybe there should be only one of display()/dispatchDisplayEvent() and the notification provider can call that.


I think NotificationDisplay or NotificationUI or something like that would be a better name than NotificationProvider, as discussed previously. Or maybe NotificationPresenter (since the job of this class from the point of view of the rest of the code) is to present notifications to the user.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133361</commentid>
    <comment_count>41</comment_count>
      <attachid>32341</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-07-20 21:43:56 -0700</bug_when>
    <thetext>Comment on attachment 32341
Notifications API, Tests and DumpRenderTree hooks

First of all, I suggest combining this with the other patch. Yes, it will make it overall a bit bigger, but it&apos;s a significant benefit to be able to land atomically with test cases. I don&apos;t see any problems with the code (well done!) but marking r- since this depends on the other patch, and since I suggest combining with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133362</commentid>
    <comment_count>42</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-07-20 21:45:00 -0700</bug_when>
    <thetext>BTW if you can address this dispatch and custom listener issues, I can review the next round quickly. Just let me know when it&apos;s ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134156</commentid>
    <comment_count>43</comment_count>
      <attachid>33345</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-07-23 10:54:25 -0700</bug_when>
    <thetext>Created attachment 33345
Notifications API, combined Core and Tests

New patch which addresses the feedback and combines the two pieces together.  V8 Bindings still pending in a separate patch.  One small addition to this patch allows the notification to inform its presenter when it&apos;s being destroyed, in order to detach it from future events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134158</commentid>
    <comment_count>44</comment_count>
      <attachid>33346</attachid>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-07-23 10:58:27 -0700</bug_when>
    <thetext>Created attachment 33346
Notifications API, combined Core and Tests

same patch as above without bogus svn:executable properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136071</commentid>
    <comment_count>45</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-07-30 17:20:52 -0700</bug_when>
    <thetext>Looking at this patch now. Thanks for revising.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137446</commentid>
    <comment_count>46</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-05 14:42:16 -0700</bug_when>
    <thetext>(In reply to comment #45)
&gt; Looking at this patch now. Thanks for revising.

Do we have an ETA on the review (or even partial review comments you can post)? We&apos;d like to land the patch this week if possible, so the earlier we can respond to comments the more likely this becomes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137925</commentid>
    <comment_count>47</comment_count>
      <attachid>33346</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-07 09:35:55 -0700</bug_when>
    <thetext>Comment on attachment 33346
Notifications API, combined Core and Tests

Seems like we need to separate out that *massive* command line into a helper script sooner rather than later.  Please consider filing a bug to do that.

\*.h&amp;quot; &amp;quot;$(WebKitOutputDir)\include\WebCore&amp;quot;&amp;#x0D;&amp;#x0A;xcopy /y /d &amp;quot;$(ProjectDir)..\notifications

Is it possible to break this up?  With 60 other patches in the queue, I simply don&apos;t have the stamina for this one.  Tempting me to r- it for size.

You&apos;ll have the best luck if you can engage an interested reviewer directly.  I&apos;m not your man, but maybe you know someone else who is interested in seeing this added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137930</commentid>
    <comment_count>48</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-07 09:45:24 -0700</bug_when>
    <thetext>(In reply to comment #47)
&gt; You&apos;ll have the best luck if you can engage an interested reviewer directly. 
&gt; I&apos;m not your man, but maybe you know someone else who is interested in seeing
&gt; this added.

Maciej is already looking at this. Agreed that in retrospect this should have been broken up. If we can&apos;t bring this to a rapid conclusion (ostensibly we are very close after several rounds of reviews) we may need to do this. Depends on maciej&apos;s upcoming review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137941</commentid>
    <comment_count>49</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2009-08-07 10:05:57 -0700</bug_when>
    <thetext>Please don&apos;t r- me for size!  The last set of patches *were* broken it up into pieces with all the test hooks separate from the main code but the review feedback was to combine them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138037</commentid>
    <comment_count>50</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-07 12:26:48 -0700</bug_when>
    <thetext>I&apos;m useless to you as a reviewer.  Please email your intended reviewers directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138923</commentid>
    <comment_count>51</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-08-11 02:11:34 -0700</bug_when>
    <thetext>I have reviewed files JavaScriptCore/ChangeLog through WebCore/WebCore.xcodeproj/project.pbxproj (inclusive). Continuing...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138924</commentid>
    <comment_count>52</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-08-11 02:13:54 -0700</bug_when>
    <thetext>Files through EmptyClients.h (inclusive) look fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138927</commentid>
    <comment_count>53</comment_count>
      <attachid>33346</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-08-11 02:19:11 -0700</bug_when>
    <thetext>Comment on attachment 33346
Notifications API, combined Core and Tests

Everything seems to be in order. The event handler logic in Notification.cpp in particular looks flawless this time. Kudos! And r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139078</commentid>
    <comment_count>54</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-11 13:23:25 -0700</bug_when>
    <thetext>Committed as r47056.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139093</commentid>
    <comment_count>55</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-11 14:18:17 -0700</bug_when>
    <thetext>The Windows buildbot is failing after this commit:
http://build.webkit.org/waterfall
I don&apos;t expect we need to roll this out, but someone needs to update the windows build system...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139113</commentid>
    <comment_count>56</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-11 14:49:33 -0700</bug_when>
    <thetext>(In reply to comment #55)
&gt; The Windows buildbot is failing after this commit:
&gt; http://build.webkit.org/waterfall
&gt; I don&apos;t expect we need to roll this out, but someone needs to update the
&gt; windows build system...

Working through build issues now.  I guess I should not mark as resolved until build goes green :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139351</commentid>
    <comment_count>57</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-12 09:20:35 -0700</bug_when>
    <thetext>Build green now. Marking resolved.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29871</attachid>
            <date>2009-04-28 17:30:46 -0700</date>
            <delta_ts>2009-05-06 16:04:21 -0700</delta_ts>
            <desc>Patch implementing proposed API for worker notifications</desc>
            <filename>NotificationsPatch.txt</filename>
            <type>text/plain</type>
            <size>55737</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQyOTc0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDktMDQtMjggIGpvaG5ueWcg
IDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisJCQorCQlBZGRzIEVOQUJMRV9OT1RJRklDQVRJT04gZmxhZyBmb3IgdGhlIGJ1aWxkIG9m
IGN1c3RvbSBKUyBjb2RlLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWc6CisKIDIwMDktMDQtMjggIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQ6IGZpeCBkaXN0Y2hlY2sgYnVpbGQsIGFkZCAoZXZlbiBt
b3JlKSBtaXNzaW5nIGZpbGVzIHRvIGxpc3QuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gNDI5
NzEpCisrKyBKYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZwkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBFTkFCTEVfREFUQUJBU0UgPSBF
TkFCTEVfREFUQUJBU0U7CiBFTkFCTEVfRE9NX1NUT1JBR0UgPSBFTkFCTEVfRE9NX1NUT1JBR0U7
CiBFTkFCTEVfR0VPTE9DQVRJT04gPSA7CiBFTkFCTEVfSUNPTkRBVEFCQVNFID0gRU5BQkxFX0lD
T05EQVRBQkFTRTsKK0VOQUJMRV9OT1RJRklDQVRJT05TID0gOwogRU5BQkxFX09GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUyA9IEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7CiBFTkFCTEVf
U1ZHID0gRU5BQkxFX1NWRzsKIEVOQUJMRV9TVkdfQU5JTUFUSU9OID0gRU5BQkxFX1NWR19BTklN
QVRJT047CkBAIC00Nyw0ICs0OCw0IEBAIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktFUlM7
CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xU
OwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NI
QU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfRE9NX1NUT1JBR0Up
ICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX09G
RkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFU
SU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5H
UykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5B
QkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktF
UlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQo
RU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxF
X0RBVEFCQVNFKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQo
RU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZG
TElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJ
T04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdT
KSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFC
TEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VS
UykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQyOTc0KQorKysg
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAwOS0w
NC0yOCAgam9obm55ZyAgPGpvaG5ueWdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworCQlUaGlzIGNoYW5nZSBhZGRzIGFuIChleHBlcmltZW50YWwp
IEhUTUwgbm90aWZpY2F0aW9uIEFQSSwgYmVpbmcgcHJvdG90eXBlZCBpbiBDaHJvbWl1bS4gIEl0
J3MgcHJvdGVjdGVkIGJ5IGNvbXBpbGUtdGltZSBmZWF0dXJlIGZsYWcgRU5BQkxFX05PVElGSUNB
VElPTlMuCisJCQorICAgICAgICBUZXN0OiBmYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9u
cy1hY2Nlc3Nvci1kaXNhYmxlZC5odG1sCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHQ6Om5vdGlmaWNhdGlvbnMpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zOiBBZGRlZC4KKyAgICAgICAgKiBub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmlkbDogQWRkZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QYXJhbWV0
ZXJzLmg6IEFkZGVkLgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJvdmlk
ZXIuaDogQWRkZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmNwcDog
QWRkZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmg6IEFkZGVkLgor
ICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5pZGw6IEFkZGVkLgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJD
b250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0Ojpub3RpZmljYXRpb25z
KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVz
c2FnaW5nUHJveHk6OmdldE5vdGlmaWNhdGlvblByb3ZpZGVyKToKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlck1lc3NhZ2luZ1Byb3h5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPYmplY3RQ
cm94eS5oOgorCiAyMDA5LTA0LTI4ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW5hbWUgLVtET01SYW5nZSBsaW5lQm94UmVjdHNdIHRvIC1bRE9NUmFu
Z2UgdGV4dFJlY3RzXSBhbmQgY2hhbmdlIGhvdyBpdApJbmRleDogV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2
aXNpb24gNDI5NzEpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJDb3JlKS9odG1sIFwKICAg
ICAkKFdlYkNvcmUpL2luc3BlY3RvciBcCiAgICAgJChXZWJDb3JlKS9sb2FkZXIvYXBwY2FjaGUg
XAorICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucyBcCiAgICAgJChXZWJDb3JlKS9wYWdlIFwK
ICAgICAkKFdlYkNvcmUpL3BsdWdpbnMgXAogICAgICQoV2ViQ29yZSkvc3RvcmFnZSBcCkBAIC0x
ODMsNiArMTg0LDggQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgTm9kZUl0ZXJhdG9yIFwKICAgICBO
b2RlTGlzdCBcCiAgICAgTm90YXRpb24gXAorICAgIE5vdGlmaWNhdGlvbiBcCisgICAgTm90aWZp
Y2F0aW9ucyBcCiAgICAgT3ZlcmZsb3dFdmVudCBcCiAgICAgUGx1Z2luIFwKICAgICBQbHVnaW5B
cnJheSBcCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDQyOTcxKQorKysgV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjMxOSw2ICsyMzE5LDI0IEBAIHdlYmNvcmVndGtfc291
cmNlcyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2VvbG9jYXRpb25TZXJ2aWNlR3RrLmgK
IGVuZGlmICMgRU5EIEVOQUJMRV9HRU9MT0NBVElPTgogCisjIC0tLS0KKyMgTm90aWZpY2F0aW9u
cyBzdXBwb3J0CisjIC0tLS0KK2lmIEVOQUJMRV9OT1RJRklDQVRJT05TCitGRUFUVVJFX0RFRklO
RVNfSkFWQVNDUklQVCArPSBFTkFCTEVfTk9USUZJQ0FUSU9OUz0xCisKK3dlYmNvcmVfY3BwZmxh
Z3MgKz0gXAorCS1ERU5BQkxFX05PVElGSUNBVElPTlM9MQorCit3ZWJjb3JlX3NvdXJjZXMgKz0g
XAorCVdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIFwKKwlXZWJDb3JlL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggXAorCVdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25zLmNwcCBcCisJV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuaCBc
CisJV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblByb3ZpZGVyLmggXAorCVdlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QYXJhbWV0ZXJzLmgKKworZW5kaWYgIyBFTkQg
RU5BQkxFX05PVElGSUNBVElPTlMKIAogIyAtLS0tCiAjIFNWRyBTdXBwb3J0CkluZGV4OiBXZWJD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9u
IDQyOTcxKQorKysgV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
Zwkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBFTkFCTEVfREFUQUJBU0UgPSBFTkFC
TEVfREFUQUJBU0U7CiBFTkFCTEVfRE9NX1NUT1JBR0UgPSBFTkFCTEVfRE9NX1NUT1JBR0U7CiBF
TkFCTEVfR0VPTE9DQVRJT04gPSA7CiBFTkFCTEVfSUNPTkRBVEFCQVNFID0gRU5BQkxFX0lDT05E
QVRBQkFTRTsKK0VOQUJMRV9OT1RJRklDQVRJT05TID0gOwogRU5BQkxFX09GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUyA9IEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7CiBFTkFCTEVfU1ZH
ID0gRU5BQkxFX1NWRzsKIEVOQUJMRV9TVkdfQU5JTUFUSU9OID0gRU5BQkxFX1NWR19BTklNQVRJ
T047CkBAIC00Nyw0ICs0OCw0IEBAIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktFUlM7CiBF
TkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwog
Ci1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5O
RUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQo
RU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX09GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9O
KSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykg
JChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxF
X1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMp
ICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5B
QkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RB
VEFCQVNFKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5B
QkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElO
RV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04p
ICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAk
KEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVf
U1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykg
JChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA0Mjk3MSkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2MTEyLDYgKzE2MTEyLDM0IEBA
CiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9
Im5vdGlmaWNhdGlvbnMiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
bm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb24uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb24u
aCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uUGFyYW1ldGVycy5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cbm90aWZpY2F0aW9uc1xOb3Rp
ZmljYXRpb25Qcm92aWRlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb25zLmNwcCINCisJCQkJ
Pg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNh
dGlvbnNcTm90aWZpY2F0aW9ucy5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+
DQogCQk8RmlsZQ0KIAkJCVJlbGF0aXZlUGF0aD0iLi5cY29uZmlnLmgiDQogCQkJPg0KSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHJldmlz
aW9uIDQyOTcxKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSwxMyBAQCB2b2lkIEpTV29ya2VyQ29udGV4
dDo6c2V0U2VsZihFeGVjU3RhdGUqCiAgICAgcHV0RGlyZWN0KElkZW50aWZpZXIoZXhlYywgInNl
bGYiKSwgdmFsdWUpOwogfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitKU1ZhbHVlUHRy
IEpTV29ya2VyQ29udGV4dDo6bm90aWZpY2F0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7
CisJcmV0dXJuIGpzMCgpOworfQorI2VuZGlmCisKIEpTVmFsdWVQdHIgSlNXb3JrZXJDb250ZXh0
Ojp4bWxIdHRwUmVxdWVzdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdl
dERPTUNvbnN0cnVjdG9yPEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcj4oZXhlYywgdGhpcyk7
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbnNDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0
aW9uc0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2NiBA
QAorLy8gQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNpbmNsdWRl
ICJ2OF9iaW5kaW5nLmgiCisjaW5jbHVkZSAidjhfY3VzdG9tLmgiCisjaW5jbHVkZSAidjhfcHJv
eHkuaCIKKworCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJOb3RpZmlj
YXRpb24uaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSAiV29ya2VyQ29u
dGV4dEV4ZWN1dGlvblByb3h5LmgiCisjaW5jbHVkZSAiVjhDdXN0b21FdmVudExpc3RlbmVyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVE9ETyhtYmVsc2hlKSAtIG1lcmdlIHRoZXNl
IHdpdGggWEhSJ3MgQ3JlYXRlSGlkZGVuWEhSRGVwZW5kZW5jeQorCisvLyBVc2UgYW4gYXJyYXkg
dG8gaG9sZCBkZXBlbmRlbnRzLiBJdCB3b3JrcyBsaWtlIGEgcmVmLWNvdW50ZWQgc2NoZW1lLgor
Ly8gQSB2YWx1ZSBjYW4gYmUgYWRkZWQgbW9yZSB0aGFuIG9uY2UgdG8gdGhlIHhociBvYmplY3Qu
CitzdGF0aWMgdm9pZCBDcmVhdGVIaWRkZW5EZXBlbmRlbmN5KHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiBvYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlKSB7CisgIEFTU0VSVChWOFByb3h5OjpHZXRET01XcmFwcGVyVHlwZShv
YmplY3QpID09IFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OKTsKKyAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gY2FjaGUgPQorICAgICAgb2JqZWN0LT5HZXRJbnRlcm5hbEZpZWxkKFY4Q3VzdG9tOjpr
Tm90aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5kZXgpOworICBpZiAoY2FjaGUtPklzTnVsbCgpIHx8
IGNhY2hlLT5Jc1VuZGVmaW5lZCgpKSB7CisgICAgY2FjaGUgPSB2ODo6QXJyYXk6Ok5ldygpOwor
ICAgIG9iamVjdC0+U2V0SW50ZXJuYWxGaWVsZChWOEN1c3RvbTo6a05vdGlmaWNhdGlvblJlcXVl
c3RDYWNoZUluZGV4LCBjYWNoZSk7CisgIH0KKworICB2ODo6TG9jYWw8djg6OkFycmF5PiBjYWNo
ZV9hcnJheSA9IHY4OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0KGNhY2hlKTsKKyAgY2FjaGVfYXJy
YXktPlNldCh2ODo6SW50ZWdlcjo6TmV3KGNhY2hlX2FycmF5LT5MZW5ndGgoKSksIHZhbHVlKTsK
K30KKworc3RhdGljIHZvaWQgUmVtb3ZlSGlkZGVuRGVwZW5kZW5jeSh2ODo6TG9jYWw8djg6Ok9i
amVjdD4gb2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSkgeworICBBU1NFUlQoVjhQcm94eTo6R2V0RE9NV3JhcHBlclR5
cGUob2JqZWN0KSA9PSBWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTik7CisgIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IGNhY2hlID0KKyAgICAgIG9iamVjdC0+R2V0SW50ZXJuYWxGaWVsZChWOEN1c3Rv
bTo6a05vdGlmaWNhdGlvblJlcXVlc3RDYWNoZUluZGV4KTsKKyAgQVNTRVJUKGNhY2hlLT5Jc0Fy
cmF5KCkpOworICB2ODo6TG9jYWw8djg6OkFycmF5PiBjYWNoZV9hcnJheSA9IHY4OjpMb2NhbDx2
ODo6QXJyYXk+OjpDYXN0KGNhY2hlKTsKKyAgZm9yIChpbnQgaSA9IGNhY2hlX2FycmF5LT5MZW5n
dGgoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gY2FjaGVk
ID0gY2FjaGVfYXJyYXktPkdldCh2ODo6SW50ZWdlcjo6TmV3KGkpKTsKKyAgICBpZiAoY2FjaGVk
LT5TdHJpY3RFcXVhbHModmFsdWUpKSB7CisgICAgICBjYWNoZV9hcnJheS0+RGVsZXRlKGkpOwor
ICAgICAgcmV0dXJuOworICAgIH0KKyAgfQorCisgIC8vIFdlIHNob3VsZCBvbmx5IGdldCBoZXJl
IGlmIHdlIHRyeSB0byByZW1vdmUgYW4gZXZlbnQgbGlzdGVuZXIgdGhhdCB3YXMKKyAgLy8gbmV2
ZXIgYWRkZWQuCit9CisKK0FDQ0VTU09SX0dFVFRFUihOb3RpZmljYXRpb25PbmRpc3BsYXkpIHsK
KyAgSU5DX1NUQVRTKEwiRE9NLk5vdGlmaWNhdGlvbi5vbmRpc3BsYXkuX2dldCIpOworICBOb3Rp
ZmljYXRpb24qIGltcCA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PE5vdGlmaWNhdGlvbj4oCisg
ICAgICBWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwgaW5mby5Ib2xkZXIoKSk7CisgIGlmIChp
bXAtPm9uZGlzcGxheSgpKSB7CisgICAgVjhFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRp
Y19jYXN0PFY4RXZlbnRMaXN0ZW5lcio+KGltcC0+b25kaXNwbGF5KCkpOworICAgIHY4OjpMb2Nh
bDx2ODo6T2JqZWN0PiB2OF9saXN0ZW5lciA9IGxpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgp
OworICAgIHJldHVybiB2OF9saXN0ZW5lcjsKKyAgfQorICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OworfQorCitBQ0NFU1NPUl9TRVRURVIoTm90aWZpY2F0aW9uT25kaXNwbGF5KSB7CisgIElOQ19T
VEFUUyhMIkRPTS5Ob3RpZmljYXRpb24ub25kaXNwbGF5Ll9zZXQiKTsKKyAgTm90aWZpY2F0aW9u
KiBpbXAgPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxOb3RpZmljYXRpb24+KAorICAgICAgVjhD
bGFzc0luZGV4OjpOT1RJRklDQVRJT04sIGluZm8uSG9sZGVyKCkpOworICBWOEV2ZW50TGlzdGVu
ZXIqIG9sZF9saXN0ZW5lciA9CisgICAgICBzdGF0aWNfY2FzdDxWOEV2ZW50TGlzdGVuZXIqPihp
bXAtPm9uZGlzcGxheSgpKTsKKyAgaWYgKHZhbHVlLT5Jc051bGwoKSkgeworICAgIGlmIChvbGRf
bGlzdGVuZXIpIHsKKyAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvbGRfdjhfbGlzdGVuZXIg
PSBvbGRfbGlzdGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICBSZW1vdmVIaWRkZW5E
ZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIG9sZF92OF9saXN0ZW5lcik7CisgICAgfQorCisgICAg
Ly8gQ2xlYXIgdGhlIGxpc3RlbmVyCisgICAgaW1wLT5zZXRPbmRpc3BsYXkoMCk7CisKKyAgfSBl
bHNlIHsKKyAgICBSZWZQdHI8VjhFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9CisgICAgICAgIHN0
YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihpbXAtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkt
PnNjcmlwdCgpLT5wcm94eSgpLT5GaW5kT3JDcmVhdGVFdmVudExpc3RlbmVyKAorICAgICAgICAg
ICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSwgZmFsc2UsIGZhbHNlKTsKKyAg
ICBpZiAobGlzdGVuZXIpIHsKKyAgICAgIGlmIChvbGRfbGlzdGVuZXIpIHsKKyAgICAgICAgdjg6
OkxvY2FsPHY4OjpPYmplY3Q+IG9sZF92OF9saXN0ZW5lciA9CisgICAgICAgICAgICBvbGRfbGlz
dGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgIFJlbW92ZUhpZGRlbkRlcGVuZGVu
Y3koaW5mby5Ib2xkZXIoKSwgb2xkX3Y4X2xpc3RlbmVyKTsKKyAgICAgIH0KKworICAgICAgaW1w
LT5zZXRPbmRpc3BsYXkobGlzdGVuZXIpOworICAgICAgQ3JlYXRlSGlkZGVuRGVwZW5kZW5jeShp
bmZvLkhvbGRlcigpLCB2YWx1ZSk7CisgICAgfQorICB9Cit9CisKK0FDQ0VTU09SX0dFVFRFUihO
b3RpZmljYXRpb25PbmVycm9yKSB7CisgIElOQ19TVEFUUyhMIkRPTS5Ob3RpZmljYXRpb24ub25l
cnJvci5fZ2V0Iik7CisgIE5vdGlmaWNhdGlvbiogaW1wID0gVjhQcm94eTo6VG9OYXRpdmVPYmpl
Y3Q8Tm90aWZpY2F0aW9uPigKKyAgICAgIFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBpbmZv
LkhvbGRlcigpKTsKKyAgaWYgKGltcC0+b25lcnJvcigpKSB7CisgICAgVjhFdmVudExpc3RlbmVy
KiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4RXZlbnRMaXN0ZW5lcio+KGltcC0+b25lcnJvcigp
KTsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gdjhfbGlzdGVuZXIgPSBsaXN0ZW5lci0+Z2V0
TGlzdGVuZXJPYmplY3QoKTsKKyAgICByZXR1cm4gdjhfbGlzdGVuZXI7CisgIH0KKyAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKK30KKworQUNDRVNTT1JfU0VUVEVSKE5vdGlmaWNhdGlvbk9uZXJy
b3IpIHsKKyAgSU5DX1NUQVRTKEwiRE9NLk5vdGlmaWNhdGlvbi5vbmVycm9yLl9zZXQiKTsKKyAg
Tm90aWZpY2F0aW9uKiBpbXAgPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxOb3RpZmljYXRpb24+
KAorICAgICAgVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT04sIGluZm8uSG9sZGVyKCkpOworICBW
OEV2ZW50TGlzdGVuZXIqIG9sZF9saXN0ZW5lciA9CisgICAgICBzdGF0aWNfY2FzdDxWOEV2ZW50
TGlzdGVuZXIqPihpbXAtPm9uZXJyb3IoKSk7CisgIGlmICh2YWx1ZS0+SXNOdWxsKCkpIHsKKyAg
ICBpZiAob2xkX2xpc3RlbmVyKSB7CisgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkX3Y4
X2xpc3RlbmVyID0gb2xkX2xpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgUmVt
b3ZlSGlkZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCBvbGRfdjhfbGlzdGVuZXIpOworICAg
IH0KKworICAgIC8vIENsZWFyIHRoZSBsaXN0ZW5lcgorICAgIGltcC0+c2V0T25lcnJvcigwKTsK
KworICB9IGVsc2UgeworICAgIFJlZlB0cjxWOEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0KKyAg
ICAgICAgc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGltcC0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKS0+c2NyaXB0KCktPnByb3h5KCktPkZpbmRPckNyZWF0ZUV2ZW50TGlzdGVuZXIoCisg
ICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpLCBmYWxzZSwgZmFs
c2UpOworICAgIGlmIChsaXN0ZW5lcikgeworICAgICAgaWYgKG9sZF9saXN0ZW5lcikgeworICAg
ICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkX3Y4X2xpc3RlbmVyID0KKyAgICAgICAgICAg
IG9sZF9saXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKKyAgICAgICAgUmVtb3ZlSGlkZGVu
RGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCBvbGRfdjhfbGlzdGVuZXIpOworICAgICAgfQorCisg
ICAgICBpbXAtPnNldE9uZXJyb3IobGlzdGVuZXIpOworICAgICAgQ3JlYXRlSGlkZGVuRGVwZW5k
ZW5jeShpbmZvLkhvbGRlcigpLCB2YWx1ZSk7CisgICAgfQorICB9Cit9CisKK0FDQ0VTU09SX0dF
VFRFUihOb3RpZmljYXRpb25PbmNsb3NlKSB7CisgIElOQ19TVEFUUyhMIkRPTS5Ob3RpZmljYXRp
b24ub25jbG9zZS5fZ2V0Iik7CisgIE5vdGlmaWNhdGlvbiogaW1wID0gVjhQcm94eTo6VG9OYXRp
dmVPYmplY3Q8Tm90aWZpY2F0aW9uPigKKyAgICAgIFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9O
LCBpbmZvLkhvbGRlcigpKTsKKyAgaWYgKGltcC0+b25jbG9zZSgpKSB7CisgICAgVjhFdmVudExp
c3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4RXZlbnRMaXN0ZW5lcio+KGltcC0+b25j
bG9zZSgpKTsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gdjhfbGlzdGVuZXIgPSBsaXN0ZW5l
ci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKKyAgICByZXR1cm4gdjhfbGlzdGVuZXI7CisgIH0KKyAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKworQUNDRVNTT1JfU0VUVEVSKE5vdGlmaWNhdGlv
bk9uY2xvc2UpIHsKKyAgSU5DX1NUQVRTKEwiRE9NLk5vdGlmaWNhdGlvbi5vbmVycm9yLl9zZXQi
KTsKKyAgTm90aWZpY2F0aW9uKiBpbXAgPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxOb3RpZmlj
YXRpb24+KAorICAgICAgVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT04sIGluZm8uSG9sZGVyKCkp
OworICBWOEV2ZW50TGlzdGVuZXIqIG9sZF9saXN0ZW5lciA9CisgICAgICBzdGF0aWNfY2FzdDxW
OEV2ZW50TGlzdGVuZXIqPihpbXAtPm9uY2xvc2UoKSk7CisgIGlmICh2YWx1ZS0+SXNOdWxsKCkp
IHsKKyAgICBpZiAob2xkX2xpc3RlbmVyKSB7CisgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4g
b2xkX3Y4X2xpc3RlbmVyID0gb2xkX2xpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAg
ICAgUmVtb3ZlSGlkZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCBvbGRfdjhfbGlzdGVuZXIp
OworICAgIH0KKworICAgIC8vIENsZWFyIHRoZSBsaXN0ZW5lcgorICAgIGltcC0+c2V0T25jbG9z
ZSgwKTsKKworICB9IGVsc2UgeworICAgIFJlZlB0cjxWOEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVy
ID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGltcC0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKS0+c2NyaXB0KCktPnByb3h5KCktPkZpbmRPckNyZWF0ZUV2ZW50TGlzdGVu
ZXIoCisgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpLCBmYWxz
ZSwgZmFsc2UpOworICAgIGlmIChsaXN0ZW5lcikgeworICAgICAgaWYgKG9sZF9saXN0ZW5lcikg
eworICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkX3Y4X2xpc3RlbmVyID0KKyAgICAg
ICAgICAgIG9sZF9saXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKKyAgICAgICAgUmVtb3Zl
SGlkZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCBvbGRfdjhfbGlzdGVuZXIpOworICAgICAg
fQorCisgICAgICBpbXAtPnNldE9uY2xvc2UobGlzdGVuZXIpOworICAgICAgQ3JlYXRlSGlkZGVu
RGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCB2YWx1ZSk7CisgICAgfQorICB9Cit9CisKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBDcmVhdGVIVE1MTm90aWZpY2F0aW9uKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpIHsKKyAgTm90aWZpY2F0aW9ucyogaW1wID0gVjhQcm94eTo6VG9OYXRpdmVPYmpl
Y3Q8Tm90aWZpY2F0aW9ucz4oCisgICAgICBWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTlMsIGFy
Z3MuSG9sZGVyKCkpOworICAKKyAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgU3RyaW5nIHVybCA9IFRv
V2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKKyAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbiA9IE5vdGlm
aWNhdGlvbjo6Y3JlYXRlKHVybCwgaW1wLT5jb250ZXh0KCksIGVjLCBpbXAtPnByb3ZpZGVyKCkp
OworCisgIHJldHVybiBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OlRvVjhPYmplY3QoVjhD
bGFzc0luZGV4OjpOT1RJRklDQVRJT04sIG4uZ2V0KCkpOworfQorCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gU2hvdyhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKSB7CisgIE5vdGlmaWNhdGlvbiog
aW1wID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0aW9uPigKKyAgICAgIFY4Q2xh
c3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBhcmdzLkhvbGRlcigpKTsKKyAgLy9hcmdzLkhvbGRlcigp
LT5TZXRJbnRlcm5hbEZpZWxkKFY4Q3VzdG9tOjprTm90aWZpY2F0aW9uVmlld0luZGV4LCBjYWNo
ZSk7CisgIGltcC0+c2hvdygpOworCisgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK0NB
TExCQUNLX0ZVTkNfREVDTChOb3RpZmljYXRpb25zQ3JlYXRlSFRNTE5vdGlmaWNhdGlvbikgewor
ICAgIElOQ19TVEFUUyhMIkRPTS5Ob3RpZmljYXRpb25zLkNyZWF0ZUhUTUxOb3RpZmljYXRpb24o
KSIpOworCisgICAgcmV0dXJuIENyZWF0ZUhUTUxOb3RpZmljYXRpb24oYXJncyk7Cit9CisKKwor
Q0FMTEJBQ0tfRlVOQ19ERUNMKE5vdGlmaWNhdGlvblNob3cpIHsKKyAgICBJTkNfU1RBVFMoTCJE
T00uTm90aWZpY2F0aW9uLlNob3coKSIpOworCisgICAgcmV0dXJuIFNob3coYXJncyk7Cit9CisK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBDYW5jZWwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykg
eworICBOb3RpZmljYXRpb24qIGltcCA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PE5vdGlmaWNh
dGlvbj4oCisgICAgICBWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwgYXJncy5Ib2xkZXIoKSk7
CisgIGltcC0+Y2FuY2VsKCk7CisKKyAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKworCitD
QUxMQkFDS19GVU5DX0RFQ0woTm90aWZpY2F0aW9uQ2FuY2VsKSB7CisgICAgSU5DX1NUQVRTKEwi
RE9NLk5vdGlmaWNhdGlvbi5DYW5jZWwoKSIpOworCisgICAgcmV0dXJuIENhbmNlbChhcmdzKTsK
K30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Tm90aWZpY2F0aW9uc0N1c3RvbS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFi
bGUKICAgKyAqCgpJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlv
bi5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBhcmFtZXRlcnMuaCIKKworI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRl
eHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlv
bihjb25zdCBTdHJpbmcmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcikKKyAgICA6IEFj
dGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKSwKKyAgICAgIG1fcHJvdmlkZXIocHJvdmlkZXIp
LAorICAgICAgbV9IVE1MKHRydWUpLAorICAgICAgbV9pZCgwKQoreworICAgIG1fbm90aWZpY2F0
aW9uVVJMID0gY29udGV4dC0+Y29tcGxldGVVUkwodXJsKTsKKyAgICBpZiAodXJsLmlzRW1wdHko
KSB8fCAhbV9ub3RpZmljYXRpb25VUkwuaXNWYWxpZCgpKSB7CisgICAgICBlYyA9IFNZTlRBWF9F
UlI7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVE9ETzogU2hvdWxkIG5vdGlmaWNh
dGlvbnMgYmUgYXZhaWxhYmxlIHRvIG5vbi13b3JrZXIgY29udGV4dHM/CisgICAgQVNTRVJUKGNv
bnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKK30KKworTm90aWZpY2F0aW9uOjpOb3RpZmljYXRp
b24oY29uc3QgTm90aWZpY2F0aW9uUGFyYW1ldGVycyYgZmllbGRzLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgTm90aWZpY2F0aW9uUHJvdmlkZXIq
IHByb3ZpZGVyKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpLAorICAgICAg
bV9wcm92aWRlcihwcm92aWRlciksCisgICAgICBtX0hUTUwoZmFsc2UpLAorICAgICAgbV9maWVs
ZHMoZmllbGRzKSwKKyAgICAgIG1faWQoMCkKK3sKKyAgICAvLyBUT0RPOiBTaG91bGQgbm90aWZp
Y2F0aW9ucyBiZSBhdmFpbGFibGUgdG8gbm9uLXdvcmtlciBjb250ZXh0cz8KKyAgICBBU1NFUlQo
Y29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOworfQorCitOb3RpZmljYXRpb246On5Ob3RpZmlj
YXRpb24oKSB7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkgeworICAgIGlmIChtX0hU
TUwpCisgICAgICBtX2lkID0gbV9wcm92aWRlci0+c2hvdyhtX25vdGlmaWNhdGlvblVSTCwgdGhp
cyk7CisgICAgZWxzZQorICAgICAgbV9pZCA9IG1fcHJvdmlkZXItPnNob3cobV9maWVsZHMudXJs
KCksIG1fZmllbGRzLnRpdGxlKCksIG1fZmllbGRzLmJvZHkoKSwgdGhpcyk7Cit9CisKK3ZvaWQg
Tm90aWZpY2F0aW9uOjpjYW5jZWwoKSB7CisgICAgbV9wcm92aWRlci0+Y2FuY2VsKG1faWQpOwor
fQorCit2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hEaXNwbGF5RXZlbnQoKSB7CisgICAgCisg
ICAgUmVmUHRyPEV2ZW50PiBldnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZl
bnQsIGZhbHNlLCB0cnVlKTsKKyAgICBpZiAobV9vbkRpc3BsYXlMaXN0ZW5lcikgeworICAgICAg
ICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50VGFyZ2V0KHRo
aXMpOworICAgICAgICBtX29uRGlzcGxheUxpc3RlbmVyLT5oYW5kbGVFdmVudChldnQuZ2V0KCks
IHRydWUpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNo
RXZlbnQoZXZ0LnJlbGVhc2UoKSwgZWMpOworICAgIEFTU0VSVCghZWMpOworfQorCit2b2lkIE5v
dGlmaWNhdGlvbjo6ZGlzcGF0Y2hFcnJvckV2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewor
ICAgIAorICAgIFJlZlB0cjxFdmVudD4gZXZ0ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZXJyb3JFdmVudCwgZmFsc2UsIHRydWUpOworICAgIGlmIChtX29uRXJyb3JMaXN0ZW5lcikgewor
ICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50VGFy
Z2V0KHRoaXMpOworICAgICAgICBtX29uRXJyb3JMaXN0ZW5lci0+aGFuZGxlRXZlbnQoZXZ0Lmdl
dCgpLCB0cnVlKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNw
YXRjaEV2ZW50KGV2dC5yZWxlYXNlKCksIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKK30KKwordm9p
ZCBOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xvc2VFdmVudChib29sIHhwbGljaXQpIHsKKyAgICAK
KyAgICBSZWZQdHI8RXZlbnQ+IGV2dCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsb3Nl
RXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAgICBpZiAobV9vbkNsb3NlTGlzdGVuZXIpIHsKKyAgICAg
ICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0
aGlzKTsKKyAgICAgICAgbV9vbkNsb3NlTGlzdGVuZXItPmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwg
dHJ1ZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hF
dmVudChldnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7Cit9CisKK3ZvaWQgTm90
aWZpY2F0aW9uOjpkaXNwbGF5KCkgeworICAgIGRpc3BhdGNoRGlzcGxheUV2ZW50KCk7Cit9CisK
K3ZvaWQgTm90aWZpY2F0aW9uOjplcnJvcihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgewor
ICAgIGRpc3BhdGNoRXJyb3JFdmVudChlcnJvck1lc3NhZ2UpOworfQorCit2b2lkIE5vdGlmaWNh
dGlvbjo6Y2xvc2UoYm9vbCB4cGxpY2l0KSB7CisgICAgZGlzcGF0Y2hDbG9zZUV2ZW50KHhwbGlj
aXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZu
ZGVmIE5vdGlmaWNhdGlvbl9oICAKKyNkZWZpbmUgTm90aWZpY2F0aW9uX2gKKworI2luY2x1ZGUg
IkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkF0b21pY1N0cmluZ0hhc2guaCIKKyNpbmNs
dWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJFdmVu
dFRhcmdldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRp
b25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisKKyNpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisgICAgY2xhc3MgV29ya2VyQ29udGV4dDsKKworICAgIGNsYXNzIE5vdGlmaWNhdGlvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3Qs
IHB1YmxpYyBFdmVudFRhcmdldCB7IAorICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRpb25Qcm92
aWRlciogcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24odXJsLCBj
b250ZXh0LCBlYywgcHJvdmlkZXIpKTsgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3Rp
ZmljYXRpb24+IGNyZWF0ZShjb25zdCBOb3RpZmljYXRpb25QYXJhbWV0ZXJzJiBmaWVsZHMsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmlj
YXRpb25Qcm92aWRlciogcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3RpZmljYXRp
b24oZmllbGRzLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKTsgfQorICAgICAgICAKKyAgICAgICAg
dmlydHVhbCB+Tm90aWZpY2F0aW9uKCk7CisKKyAgICAgICAgdm9pZCBzaG93KCk7CisgICAgICAg
IHZvaWQgY2FuY2VsKCk7CisgICAgCisgICAgICAgIGJvb2wgc3RpY2t5KCkgeyByZXR1cm4gbV9z
dGlja3k7IH0KKyAgICAgICAgdm9pZCBzZXRTdGlja3koYm9vbCBzKSB7IG1fc3RpY2t5ID0gczsg
fQorCisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uZGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1f
b25EaXNwbGF5TGlzdGVuZXIuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRPbmRpc3BsYXkoUGFz
c1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25EaXNwbGF5TGlzdGVu
ZXIgPSBldmVudExpc3RlbmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uZXJyb3IoKSBj
b25zdCB7IHJldHVybiBtX29uRXJyb3JMaXN0ZW5lci5nZXQoKTsgfQorICAgICAgICB2b2lkIHNl
dE9uZXJyb3IoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25F
cnJvckxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVudExpc3RlbmVyKiBv
bmNsb3NlKCkgY29uc3QgeyByZXR1cm4gbV9vbkNsb3NlTGlzdGVuZXIuZ2V0KCk7IH0KKyAgICAg
ICAgdm9pZCBzZXRPbmNsb3NlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5l
cikgeyBtX29uQ2xvc2VMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAKKyAgICAgICAg
dXNpbmcgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+OjpyZWY7CisgICAgICAgIHVzaW5nIFJlZkNv
dW50ZWQ8Tm90aWZpY2F0aW9uPjo6ZGVyZWY7CisgICAgCisgICAgICAgIC8vIENhbGxiYWNrIG1l
dGhvZHMgZm9yIHRoZSBwcm92aWRlcgorICAgICAgICB2b2lkIGRpc3BsYXkoKTsKKyAgICAgICAg
dm9pZCBlcnJvcihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAgICAgIHZvaWQgY2xv
c2UoYm9vbCB4cGxpY2l0KTsKKworICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAg
ICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3QgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNl
Q2FwdHVyZSkge30KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1
cmUpIHt9CisgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZl
bnQ+LCBFeGNlcHRpb25Db2RlJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgIAorICAgIHByaXZh
dGU6CisgICAgICAgIE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHVybCwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIE5vdGlmaWNhdGlvblByb3Zp
ZGVyKiBwcm92aWRlcik7CisgICAgICAgIE5vdGlmaWNhdGlvbihjb25zdCBOb3RpZmljYXRpb25Q
YXJhbWV0ZXJzJiBmaWVsZHMsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2Vw
dGlvbkNvZGUmIGVjLCBOb3RpZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIpOworCisgICAgICAg
IHZvaWQgZGlzcGF0Y2hEaXNwbGF5RXZlbnQoKTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaEVycm9y
RXZlbnQoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KGJv
b2wpOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBk
ZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgIAorICAgICAgICBib29sIG1fSFRNTDsK
KyAgICAgICAgS1VSTCBtX25vdGlmaWNhdGlvblVSTDsKKyAgICAgICAgTm90aWZpY2F0aW9uUGFy
YW1ldGVycyBtX2ZpZWxkczsKKworICAgICAgICBib29sIG1fc3RpY2t5OworCisgICAgICAgIFJl
ZlB0cjxFdmVudExpc3RlbmVyPiBtX29uRGlzcGxheUxpc3RlbmVyOworICAgICAgICBSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gbV9vbkVycm9yTGlzdGVuZXI7CisgICAgICAgIFJlZlB0cjxFdmVudExp
c3RlbmVyPiBtX29uQ2xvc2VMaXN0ZW5lcjsKKworICAgICAgICBOb3RpZmljYXRpb25Qcm92aWRl
ciogbV9wcm92aWRlcjsKKworICAgICAgICBpbnQgbV9pZDsKKyAgICB9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEVfTk9USUZJQ0FUSU9OUworCisjZW5kaWYg
Ly8gTm90aWZpY2F0aW9uc19oClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1
bGUgdGhyZWFkcyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1OT1RJ
RklDQVRJT05TCisgICAgXSBOb3RpZmljYXRpb24geworICAgICAgICBbQ3VzdG9tXSB2b2lkIHNo
b3coKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBjYW5jZWwoKTsKKworICAgICAgICBhdHRyaWJ1
dGUgYm9vbGVhbiBzdGlja3k7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25k
aXNwbGF5OworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOworICAgICAg
ICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNsb3NlOworICAgIH07CisKK30KClByb3BlcnR5
IGNoYW5nZXMgb246IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IFdlYkNvcmUvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRpb25QYXJh
bWV0ZXJzX2gKKyNkZWZpbmUgTm90aWZpY2F0aW9uUGFyYW1ldGVyc19oCisKKyNpZiBFTkFCTEVf
Tk9USUZJQ0FUSU9OUworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBOb3RpZmlj
YXRpb25QYXJhbWV0ZXJzIHsgCisgICAgcHVibGljOgorICAgICAgICBOb3RpZmljYXRpb25QYXJh
bWV0ZXJzKCkge30KKyAgICAgICAgTm90aWZpY2F0aW9uUGFyYW1ldGVycyhjb25zdCBTdHJpbmcm
IGljb25VcmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSkgOgorICAg
ICAgICAgICAgbV9pY29uKGljb25VcmwpLCBtX3RpdGxlKHRpdGxlKSwgbV9ib2R5KGJvZHkpIHt9
CisKKyAgICAgICAgU3RyaW5nIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1faWNvbjsgfQorICAgICAg
ICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9CisgICAgICAgIFN0cmlu
ZyBib2R5KCkgY29uc3QgeyByZXR1cm4gbV9ib2R5OyB9CisKKyAgICBwcml2YXRlOgorCisgICAg
ICAgIFN0cmluZyBtX2ljb247CisgICAgICAgIFN0cmluZyBtX3RpdGxlOworICAgICAgICBTdHJp
bmcgbV9ib2R5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFX05PVElGSUNBVElPTlMKKworI2VuZGlmIC8vIE5vdGlmaWNhdGlvblBhcmFtZXRlcnNfaAoK
UHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBh
cmFtZXRlcnMuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4
OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJvdmlkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJvdmlkZXIuaAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Qcm92aWRlci5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRpb25Qcm92aWRlcl9o
CisjZGVmaW5lIE5vdGlmaWNhdGlvblByb3ZpZGVyX2gKKworI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTdHJpbmc7CisgICAgY2xh
c3MgTm90aWZpY2F0aW9uOworCisgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJvdmlkZXIgeworICAg
IHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Tm90aWZpY2F0aW9uUHJvdmlkZXIoKSB7fQorCisg
ICAgICAgIHZpcnR1YWwgaW50IHNob3coY29uc3QgU3RyaW5nJiBVUkwsIE5vdGlmaWNhdGlvbiog
b2JqZWN0KSA9IDA7CisKKyAgICAgICAgdmlydHVhbCBpbnQgc2hvdyhjb25zdCBTdHJpbmcmIGlj
b25VcmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgTm90aWZpY2F0
aW9uKiBvYmplY3QpID0gMDsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKGludCBoYW5k
bGUpID0gMDsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2VuZGlmIC8vIE5vdGlmaWNhdGlvblByb3ZpZGVyX2gK
ClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Q
cm92aWRlci5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6
IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbnMuaCIKKworI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK05vdGlmaWNhdGlvbnM6Ok5vdGlmaWNhdGlvbnMoV29ya2VyQ29udGV4dCog
Y29udGV4dCwgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKSAKKyAgICA6IEFjdGl2ZURP
TU9iamVjdChjb250ZXh0LCB0aGlzKSwKKyAgICAgIG1fd29ya2VyQ29udGV4dChjb250ZXh0KSwK
KyAgICAgIG1fbm90aWZpY2F0aW9uUHJvdmlkZXIocHJvdmlkZXIpIHt9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25zLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQog
ICArICoKCkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYgTm90aWZpY2F0aW9uc19o
CisjZGVmaW5lIE5vdGlmaWNhdGlvbnNfaAorCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisj
aW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisKKyNpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBXb3JrZXJDb250ZXh0OworCisgICAgY2xhc3MgTm90
aWZpY2F0aW9ucyA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbnM+LCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0IHsgCisgICAgcHVibGljOgorICAgICAgICBOb3RpZmljYXRpb25zKFdvcmtl
ckNvbnRleHQqLCBOb3RpZmljYXRpb25Qcm92aWRlciopOworCisgICAgICAgIFBhc3NSZWZQdHI8
Tm90aWZpY2F0aW9uPiBjcmVhdGVIVE1MTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgVVJJKSB7
CisgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICAgICAgcmV0dXJuIE5vdGlm
aWNhdGlvbjo6Y3JlYXRlKEtVUkwoVVJJKSwgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBtX3dv
cmtlckNvbnRleHQsIGVjLCBtX25vdGlmaWNhdGlvblByb3ZpZGVyKTsKKyAgICAgICAgfQorICAg
ICAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlTm90aWZpY2F0aW9uKE5vdGlmaWNh
dGlvblBhcmFtZXRlcnMgbikgeworICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAg
ICAgICAgIHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0ZShuLCAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopIG1fd29ya2VyQ29udGV4dCwgZWMsIG1fbm90aWZpY2F0aW9uUHJvdmlkZXIpOworICAg
ICAgICB9CisKKyAgICAgICAgV29ya2VyQ29udGV4dCogY29udGV4dCgpIHsgcmV0dXJuIG1fd29y
a2VyQ29udGV4dDsgfQorCisgICAgICAgIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcigp
IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUHJvdmlkZXI7IH0KKworICAgIHByaXZhdGU6CisgICAg
ICAgIFdvcmtlckNvbnRleHQqIG1fd29ya2VyQ29udGV4dDsKKyAgICAgICAgTm90aWZpY2F0aW9u
UHJvdmlkZXIqIG1fbm90aWZpY2F0aW9uUHJvdmlkZXI7CisgICAgfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFX05PVElGSUNBVElPTlMKKworI2VuZGlmIC8v
IE5vdGlmaWNhdGlvbnNfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbnMuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICAr
ICoKCkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuaWRsCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuaWRsCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHRocmVhZHMgeworCisgICAgaW50ZXJm
YWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OUworICAgIF0gTm90aWZpY2F0
aW9ucyB7CisgICAgICAgW1JldHVybnNOZXddIFtDdXN0b21dIE5vdGlmaWNhdGlvbiBjcmVhdGVI
VE1MTm90aWZpY2F0aW9uKGluIERPTVN0cmluZyB1cmwpOworICAgICAgIC8vW1JldHVybnNOZXdd
IE5vdGlmaWNhdGlvbiBjcmVhdGVOb3RpZmljYXRpb24oaW4gU3RydWN0dXJlZE5vdGlmaWNhdGlv
biBuKTsKKyAgICB9OworCit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9ucy5pZGwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUK
ICAgKyAqCgpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkocmV2aXNpb24gNDI5NzEp
CisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDYgKzUxLDEwIEBACiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaCIKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgI2lu
Y2x1ZGUgIm5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV29ya2VyQ29udGV4dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWQqIHRocmVhZCkKQEAgLTYx
LDEyICs2NSwxNyBAQCBXb3JrZXJDb250ZXh0OjpXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmCiAg
ICAgLCBtX3RocmVhZCh0aHJlYWQpCiB7CiAgICAgc2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZSh1cmwpKTsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBtX25v
dGlmaWNhdGlvbnMgPSBuZXcgTm90aWZpY2F0aW9ucyh0aGlzLCBtX3RocmVhZC0+d29ya2VyT2Jq
ZWN0UHJveHkoKS0+Z2V0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKSk7CisjZW5kaWYKIH0KIAogV29y
a2VyQ29udGV4dDo6fldvcmtlckNvbnRleHQoKQogewogICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV90aHJlYWQtPnRocmVhZElEKCkpOwotCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
ICAKKyAgICBtX25vdGlmaWNhdGlvbnMuY2xlYXIoKTsKKyNlbmRpZgogICAgIG1fdGhyZWFkLT53
b3JrZXJPYmplY3RQcm94eSgpLT53b3JrZXJDb250ZXh0RGVzdHJveWVkKCk7CiB9CiAKSW5kZXg6
IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuaAkocmV2aXNpb24gNDI5NzEpCisrKyBXZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMCBAQAogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCisjaW5jbHVkZSAibm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25zLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU2NoZWR1
bGVkQWN0aW9uOwpAQCAtMTAzLDcgKzEwNywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIEV2ZW50TGlzdGVuZXJzTWFwJiBldmVudExpc3RlbmVycygpIHsgcmV0dXJuIG1fZXZlbnRM
aXN0ZW5lcnM7IH0KIAogICAgICAgICB2b2lkIGltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHVybHMsIGNvbnN0IFN0cmluZyYgY2FsbGVyVVJMLCBpbnQgY2FsbGVyTGluZSwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgICAgICAKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAg
ICAgICBOb3RpZmljYXRpb25zKiBub3RpZmljYXRpb25zKCkgeyByZXR1cm4gbV9ub3RpZmljYXRp
b25zLmdldCgpOyB9CisjZW5kaWYKKwogICAgICAgICB1c2luZyBSZWZDb3VudGVkPFdvcmtlckNv
bnRleHQ+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8V29ya2VyQ29udGV4dD46OmRl
cmVmOwogCkBAIC0xMjgsNiArMTM2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbm1lc3NhZ2VMaXN0ZW5lcjsKICAgICAgICAgRXZl
bnRMaXN0ZW5lcnNNYXAgbV9ldmVudExpc3RlbmVyczsKKworI2lmIEVOQUJMRV9OT1RJRklDQVRJ
T05TCisgICAgICAgIFJlZlB0cjxOb3RpZmljYXRpb25zPiBtX25vdGlmaWNhdGlvbnM7CisjZW5k
aWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckNvbnRleHQuaWRsCShyZXZpc2lvbiA0Mjk3MSkKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTEgQEAgbW9kdWxlIHRocmVh
ZHMgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVh
biB1c2VDYXB0dXJlKTsKICAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2
dCkKICAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisKKyNpZiBFTkFCTEVfTk9U
SUZJQ0FUSU9OUworICAgICAgICAvLyBOb3RpZmljYXRpb24gaW50ZXJmYWNlCisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tXSBOb3RpZmljYXRpb25zIG5vdGlmaWNhdGlvbnM7Cisj
ZW5kaWYKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5jcHAJKHJldmlzaW9uIDQyOTcxKQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIyLDYgKzIyMiwxMyBAQCB2b2lkIFdv
cmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvCiAgICAgICAgIG1fcXVldWVkRWFybHlU
YXNrcy5hcHBlbmQoTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUobWVzc2FnZSkpOwog
fQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitOb3RpZmljYXRpb25Qcm92aWRlciogV29y
a2VyTWVzc2FnaW5nUHJveHk6OmdldE5vdGlmaWNhdGlvblByb3ZpZGVyKCkgeworICAgIC8vIE5v
dGlmaWNhdGlvbiBQcm92aWRlciBtdXN0IGJlIHByb3ZpZGVkIGJ5IHRoZSBjb250YWluZXIuCisg
ICAgcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYKKwogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6
cG9zdFRhc2tUb1dvcmtlckNvbnRleHQoUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPiB0YXNrKQogewogICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dCh0YXNr
LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJNZXNzYWdpbmdQcm94eS5oCShyZXZpc2lvbiA0Mjk3MSkKKysrIFdlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0
aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgd29y
a2VyQ29udGV4dERlc3Ryb3llZCgpOwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAg
ICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uUHJvdmlkZXIqIGdldE5vdGlmaWNhdGlvblByb3ZpZGVy
KCk7CisjZW5kaWYKKwogICAgICAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJPYmplY3QoUGFzc1Jl
ZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7CiAgICAgICAgIHZvaWQgcG9zdFRh
c2tUb1dvcmtlckNvbnRleHQoUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
Pik7CiAgICAgICAgIHZvaWQgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQ
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSk7Cklu
ZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaAkocmV2aXNpb24gNDI5NzEpCisrKyBX
ZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NiArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU3RyaW5nOworICAg
IGNsYXNzIE5vdGlmaWNhdGlvblByb3ZpZGVyOwogCiAgICAgLy8gQSBwcm94eSB0byB0YWxrIHRv
IHRoZSB3b3JrZXIgb2JqZWN0LgogICAgIGNsYXNzIFdvcmtlck9iamVjdFByb3h5IHsKQEAgLTU1
LDYgKzU2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJl
cG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgPSAwOwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0RGVzdHJveWVkKCkgPSAwOworCisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCisgICAgICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uUHJvdmlkZXIq
IGdldE5vdGlmaWNhdGlvblByb3ZpZGVyKCkgPSAwOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNDI5NzQpCisrKyBXZWJLaXRUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw5IEBACisyMDA5LTA0LTI4ICBq
b2hubnlnICA8c2V0IEVNQUlMX0FERFJFU1MgZW52aXJvbm1lbnQgdmFyaWFibGU+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2J1aWxk
LXdlYmtpdDoKKwogMjAwOS0wNC0yOCAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEZpeCBsaW5rIHdhcm5pbmdzIGJ1aWxkaW5nIFRlc3ROZXRzY2FwZVBs
dWdpbiBvbiBXaW5kb3dzIGR1ZSB0byBtaXNtYXRjaGVkCkluZGV4OiBXZWJLaXRUb29scy9TY3Jp
cHRzL2J1aWxkLXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxk
LXdlYmtpdAkocmV2aXNpb24gNDI5NzEpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdl
YmtpdAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBteSAkZG9tU3RvcmFnZVN1cHBv
cnQgPSAxOwogbXkgJGdlb2xvY2F0aW9uU3VwcG9ydCA9IDA7CiBteSAkZ25vbWVLZXlyaW5nU3Vw
cG9ydCA9IDA7CiBteSAkaWNvbkRhdGFiYXNlU3VwcG9ydCA9IDE7CitteSAkbm90aWZpY2F0aW9u
c1N1cHBvcnQgPSAwOwogbXkgJG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQgPSAxOwogbXkg
JHN2Z1N1cHBvcnQgPSAxOwogbXkgJHN2Z0FuaW1hdGlvblN1cHBvcnQgPSAxOwpAQCAtODIsNiAr
ODMsNyBAQCBVc2FnZTogJHByb2dyYW1OYW1lIFtvcHRpb25zXSBbb3B0aW9ucyB0CiAgIC0tW25v
LV1nZW9sb2NhdGlvbiAgICAgICAgICAgICAgICBUb2dnbGUgR2VvbG9jYXRpb24gc3VwcG9ydCAo
ZGVmYXVsdDogJGdlb2xvY2F0aW9uU3VwcG9ydCkKICAgLS1bbm8tXWdub21la2V5cmluZyAgICAg
ICAgICAgICAgIFRvZ2dsZSBHTk9NRSBLZXlyaW5nIFN1cHBvcnQgKEdUSysgcG9ydCBvbmx5KSAo
ZGVmYXVsdDogJGdub21lS2V5cmluZ1N1cHBvcnQpCiAgIC0tW25vLV1pY29uLWRhdGFiYXNlICAg
ICAgICAgICAgICBUb2dnbGUgSWNvbiBkYXRhYmFzZSBzdXBwb3J0IChkZWZhdWx0OiAkaWNvbkRh
dGFiYXNlU3VwcG9ydCkKKyAgLS1bbm8tXW5vdGlmaWNhdGlvbnMgICAgICAgICAgICAgIFRvb2ds
ZSBOb3RpZmljYXRpb25zIHN1cHBvcnQgKGRlZmF1bHQ6ICRub3RpZmljYXRpb25zU3VwcG9ydCkK
ICAgLS1bbm8tXW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9ucyAgIFRvZ2dsZSBPZmZsaW5lIFdlYiBB
cHBsaWNhdGlvbiBTdXBwb3J0IChkZWZhdWx0OiAkb2ZmbGluZVdlYkFwcGxpY2F0aW9uU3VwcG9y
dCkKICAgLS1bbm8tXXN2ZyAgICAgICAgICAgICAgICAgICAgICAgIFRvZ2dsZSBTVkcgc3VwcG9y
dCAoZGVmYXVsdDogJHN2Z1N1cHBvcnQpCiAgIC0tW25vLV1zdmctYW5pbWF0aW9uICAgICAgICAg
ICAgICBUb2dnbGUgU1ZHIGFuaW1hdGlvbiBzdXBwb3J0IChkZWZhdWx0OiAkc3ZnQW5pbWF0aW9u
U3VwcG9ydCwgaW1wbGllcyBTVkcgU3VwcG9ydCkKQEAgLTEwOSw2ICsxMTEsNyBAQCBHZXRPcHRp
b25zKAogICAgICAgICAgICAnZ2VvbG9jYXRpb24hJyA9PiBcJGdlb2xvY2F0aW9uU3VwcG9ydCwK
ICAgICAgICAgICAgJ2dub21la2V5cmluZyEnID0+IFwkZ25vbWVLZXlyaW5nU3VwcG9ydCwKICAg
ICAgICAgICAgJ2ljb24tZGF0YWJhc2UhJyA9PiBcJGljb25EYXRhYmFzZVN1cHBvcnQsCisJCSAg
ICdub3RpZmljYXRpb25zIScgPT4gXCRub3RpZmljYXRpb25zU3VwcG9ydCwKICAgICAgICAgICAg
J29mZmxpbmUtd2ViLWFwcGxpY2F0aW9ucyEnID0+IFwkb2ZmbGluZVdlYkFwcGxpY2F0aW9uU3Vw
cG9ydCwKICAgICAgICAgICAgJ3N2ZyEnID0+IFwkc3ZnU3VwcG9ydCwKICAgICAgICAgICAgJ3N2
Zy1hbmltYXRpb24hJyA9PiBcJHN2Z0FuaW1hdGlvblN1cHBvcnQsCkBAIC0xNzYsNiArMTc5LDcg
QEAgaWYgKGlzR3RrKCkpIHsKICAgICBwdXNoIEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRnZW9s
b2NhdGlvblN1cHBvcnQsICJnZW9sb2NhdGlvbiIpOwogICAgIHB1c2ggQG9wdGlvbnMsIGF1dG90
b29sc0ZsYWcoJGdub21lS2V5cmluZ1N1cHBvcnQsICJnbm9tZWtleXJpbmciKTsKICAgICBwdXNo
IEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRpY29uRGF0YWJhc2VTdXBwb3J0LCAiaWNvbi1kYXRh
YmFzZSIpOworCXB1c2ggQG9wdGlvbnMsIGF1dG90b29sc0ZsYWcoJG5vdGlmaWNhdGlvbnNTdXBw
b3J0LCAibm90aWZpY2F0aW9ucyIpOwogICAgIHB1c2ggQG9wdGlvbnMsIGF1dG90b29sc0ZsYWco
JG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQsICJvZmZsaW5lLXdlYi1hcHBsaWNhdGlvbnMi
KTsKICAgICBwdXNoIEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRzdmdTdXBwb3J0LCAic3ZnIik7
CiAgICAgcHVzaCBAb3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkc3ZnQW5pbWF0aW9uU3VwcG9ydCwg
InN2Zy1hbmltYXRpb24iKTsKQEAgLTIwNiw2ICsyMTAsNyBAQCBpZiAoaXNBcHBsZU1hY1dlYktp
dCgpKSB7CiAgICAgcHVzaCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfRE9NX1NUT1JBR0UiLCAk
ZG9tU3RvcmFnZVN1cHBvcnQpOwogICAgIHB1c2ggQG9wdGlvbnMsIG9wdGlvbigiRU5BQkxFX0dF
T0xPQ0FUSU9OIiwgJGdlb2xvY2F0aW9uU3VwcG9ydCk7CiAgICAgcHVzaCBAb3B0aW9ucywgb3B0
aW9uKCJFTkFCTEVfSUNPTkRBVEFCQVNFIiwgJGljb25EYXRhYmFzZVN1cHBvcnQpOworCXB1c2gg
QG9wdGlvbnMsIG9wdGlvbigiRU5BQkxFX05PVElGSUNBVElPTlMiLCAkbm90aWZpY2F0aW9uc1N1
cHBvcnQpOwogICAgIHB1c2ggQG9wdGlvbnMsIG9wdGlvbigiRU5BQkxFX09GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUyIsICRvZmZsaW5lV2ViQXBwbGljYXRpb25TdXBwb3J0KTsKICAgICBwdXNoIEBv
cHRpb25zLCBvcHRpb24oIkVOQUJMRV9TVkciLCAkc3ZnU3VwcG9ydCk7CiAgICAgcHVzaCBAb3B0
aW9ucywgb3B0aW9uKCJFTkFCTEVfU1ZHX0FOSU1BVElPTiIsICRzdmdBbmltYXRpb25TdXBwb3J0
KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQyOTc0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMDQtMjggIGpvaG5ueWcgIDxzZXQg
RU1BSUxfQUREUkVTUyBlbnZpcm9ubWVudCB2YXJpYWJsZT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qvbm90aWZpY2F0aW9uczogQWRkZWQu
CisgICAgICAgICogZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtYWNjZXNzb3ItZGlz
YWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNh
dGlvbnMtYWNjZXNzb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L25vdGlm
aWNhdGlvbnMvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L25vdGlmaWNhdGlvbnMv
cmVzb3VyY2VzL3dvcmtlci1ub3RpZmljYXRpb25zLmpzOiBBZGRlZC4KKwogMjAwOS0wNC0yOCAg
QWRlbGUgUGV0ZXJzb24gIDxhZGVsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZp
Y2F0aW9ucy1hY2Nlc3Nvci1kaXNhYmxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWFjY2Vzc29yLWRpc2FibGVkLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0
aW9ucy1hY2Nlc3Nvci1kaXNhYmxlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBA
Cis8Ym9keT4KKzxwPlRlc3QgV29ya2VyIE5vdGlmaWNhdGlvbnMgYWNjZXNzLiBTaG91bGQgcHJp
bnQgYSBzZXJpZXMgb2YgUEFTUyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05FLjwvcD4KKzxk
aXYgaWQ9cmVzdWx0PjwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQorewor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2Fn
ZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3RyeSB7CisgICAgdmFyIHdvcmtlciA9IG5ldyBX
b3JrZXIoInJlc291cmNlcy93b3JrZXItbm90aWZpY2F0aW9ucy5qcyIpOworCisJd29ya2VyLm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworCQlsb2coZXZ0LmRhdGEpOworCQlpZiAoZXZ0LmRh
dGEgPT0gIkRPTkUiICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKwkJCWxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKwl9CisJCit9IGNhdGNoIChleCkgeworICAgIGxv
ZygiRkFJTDogdW5leHBlY3RlZCBleGNlcHRpb24gIiArIGV4KTsKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91
dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWFjY2Vzc29yLWRpc2FibGVk
Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtYWNjZXNzb3ItZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3Rp
ZmljYXRpb25zLWFjY2Vzc29yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWFjY2Vzc29yLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitUZXN0IFdvcmtlciBOb3RpZmljYXRpb25z
IGFjY2Vzcy4gU2hvdWxkIHByaW50IGEgc2VyaWVzIG9mIFBBU1MgbWVzc2FnZXMsIGZvbGxvd2Vk
IHdpdGggRE9ORS4KKworVGVzdCBzdGFydGVkLgorUEFTUzogbm90aWZpY2F0aW9ucyBvYmplY3Qg
ZXhpc3RzLgorUEFTUzogbm90aWZpY2F0aW9ucy5jcmVhdGVIVE1MTm90aWZpY2F0aW9ucyBkb2Vz
IG5vdCBleGlzdC4KK1BBU1M6IG5vdGlmaWNhdGlvbnMuY3JlYXRlTm90aWZpY2F0aW9ucyBkb2Vz
IG5vdCBleGlzdC4KK0RPTkUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFz
dC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtYWNjZXNzb3ItZXhwZWN0ZWQudHh0Cl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3Qvbm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvd29ya2VyLW5vdGlmaWNhdGlvbnMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL3Jlc291cmNlcy93b3JrZXIt
bm90aWZpY2F0aW9ucy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvbm90aWZp
Y2F0aW9ucy9yZXNvdXJjZXMvd29ya2VyLW5vdGlmaWNhdGlvbnMuanMJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTYgQEAKK3Bvc3RNZXNzYWdlKCJUZXN0IHN0YXJ0ZWQuIik7CisKKy8vIFRyeSB0
byBnZXQgdGhlIG5vdGlmaWNhdGlvbnMgb2JqZWN0IGZyb20gZ2xvYmFsIGNvbnRleHRzLgoraWYg
KG5vdGlmaWNhdGlvbnMgIT0gdW5kZWZpbmVkKSB7CisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IG5v
dGlmaWNhdGlvbnMgb2JqZWN0IGV4aXN0cy4iKTsKKwkKKwlpZiAoIW5vdGlmaWNhdGlvbnMuY3Jl
YXRlSFRNTE5vdGlmaWNhdGlvbnMpIHsKKwkJcG9zdE1lc3NhZ2UoIlBBU1M6IG5vdGlmaWNhdGlv
bnMuY3JlYXRlSFRNTE5vdGlmaWNhdGlvbnMgZG9lcyBub3QgZXhpc3QuIik7CisJfQorCQorCWlm
ICghbm90aWZpY2F0aW9ucy5jcmVhdGVOb3RpZmljYXRpb25zKSB7CisJCXBvc3RNZXNzYWdlKCJQ
QVNTOiBub3RpZmljYXRpb25zLmNyZWF0ZU5vdGlmaWNhdGlvbnMgZG9lcyBub3QgZXhpc3QuIik7
CisJfQorCQorCXBvc3RNZXNzYWdlKCJET05FIik7Cit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBM
YXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvcmVzb3VyY2VzL3dvcmtlci1ub3RpZmljYXRp
b25zLmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30072</attachid>
            <date>2009-05-06 16:04:21 -0700</date>
            <delta_ts>2009-05-20 17:13:26 -0700</delta_ts>
            <desc>Revised patch for Notifications</desc>
            <filename>NotificationPatch2.txt</filename>
            <type>text/plain</type>
            <size>55575</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQzMzIzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDktMDQtMjggIEpvaG4gR3Jl
Z2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkcyBFTkFCTEVfTk9USUZJQ0FUSU9OIGZsYWcgZm9yIHRoZSBi
dWlsZCBvZiBjdXN0b20gSlMgY29kZS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDA5LTA1LTA2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogSmF2YVNj
cmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcJKHJldmlzaW9uIDQzMzIzKQorKysgSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAgRU5B
QkxFX0RPTV9TVE9SQUdFID0gRU5BQkxFX0RPTV9TVE9SQUdFOwogRU5BQkxFX0dFT0xPQ0FUSU9O
ID0gOwogRU5BQkxFX0lDT05EQVRBQkFTRSA9IEVOQUJMRV9JQ09OREFUQUJBU0U7CiBFTkFCTEVf
SkFWQVNDUklQVF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSOworRU5BQkxF
X05PVElGSUNBVElPTlMgPSA7CiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TID0gRU5B
QkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUzsKIEVOQUJMRV9TVkcgPSBFTkFCTEVfU1ZHOwog
RU5BQkxFX1NWR19BTklNQVRJT04gPSBFTkFCTEVfU1ZHX0FOSU1BVElPTjsKQEAgLTQ4LDQgKzQ5
LDQgQEAgRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJMRV9YUEFUSCA9IEVO
QUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5F
UyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQo
RU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfR0VPTE9DQVRJ
T04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikg
JChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxF
X1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9P
QkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09C
SkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChF
TkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9E
RUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9HRU9M
T0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVH
R0VSKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNB
VElPTlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZH
X0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19G
T05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVO
QUJMRV9WSURFTykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YUEFU
SCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNDMzMjMpCisrKyBXZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDA5LTA0LTI4ICBKb2huIEdyZWdn
ICA8am9obm55Z0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYW4gKGV4cGVyaW1lbnRhbCkgSFRNTCBu
b3RpZmljYXRpb24gQVBJLCBiZWluZyBwcm90b3R5cGVkIGluIENocm9taXVtLiAgSXQncyBwcm90
ZWN0ZWQgYnkgY29tcGlsZS10aW1lIGZlYXR1cmUgZmxhZyBFTkFCTEVfTk9USUZJQ0FUSU9OUy4K
KyAgICAgICAgCisgICAgICAgIFRlc3Q6IGZhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25z
LWFjY2Vzc29yLWRpc2FibGVkLmh0bWwKKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6bm90aWZpY2F0aW9ucyk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uc0N1c3RvbS5jcHA6IEFkZGVk
LgorICAgICAgICAqIG5vdGlmaWNhdGlvbnM6IEFkZGVkLgorICAgICAgICAqIG5vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uaDogQWRkZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBhcmFtZXRl
cnMuaDogQWRkZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Qcm92aWRl
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuaDogQWRkZWQuCisg
ICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmlkbDogQWRkZWQuCisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6Om5vdGlmaWNhdGlvbnMp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5pZGw6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNz
YWdpbmdQcm94eTo6Z2V0Tm90aWZpY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9iamVjdFBy
b3h5Lmg6CisKIDIwMDktMDUtMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbgpJbmRleDogV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQkocmV2aXNpb24gNDMzMjMpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJDb3JlKS9o
dG1sIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3RvciBcCiAgICAgJChXZWJDb3JlKS9sb2FkZXIv
YXBwY2FjaGUgXAorICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucyBcCiAgICAgJChXZWJDb3Jl
KS9wYWdlIFwKICAgICAkKFdlYkNvcmUpL3BsdWdpbnMgXAogICAgICQoV2ViQ29yZSkvc3RvcmFn
ZSBcCkBAIC0xODMsNiArMTg0LDggQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgTm9kZUl0ZXJhdG9y
IFwKICAgICBOb2RlTGlzdCBcCiAgICAgTm90YXRpb24gXAorICAgIE5vdGlmaWNhdGlvbiBcCisg
ICAgTm90aWZpY2F0aW9ucyBcCiAgICAgT3ZlcmZsb3dFdmVudCBcCiAgICAgUGx1Z2luIFwKICAg
ICBQbHVnaW5BcnJheSBcCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDQzMzIzKQorKysgV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQCB3ZWJjb3JlX2Nw
cGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZSBcCiAJLUkk
KHNyY2RpcikvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZSBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9s
b2FkZXIvaWNvbiBcCisJLUkkKHNyY2RpcikvV2ViQ29yZS9ub3RpZmljYXRpb25zIFwKIAktSSQo
c3JjZGlyKS9XZWJDb3JlL3BhZ2UgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24gXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvcGxhdGZvcm0gXApAQCAtMjEzLDYgKzIxNCw4IEBA
IElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9odG1sL1RleHRNZXRyaWNzLmlkbCBcCiAJV2Vi
Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwgXAogCVdlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaWRsIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmlkbCBcCisJV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuaWRs
IFwKIAlXZWJDb3JlL3BhZ2UvQmFySW5mby5pZGwgXAogCVdlYkNvcmUvcGFnZS9Db25zb2xlLmlk
bCBcCiAJV2ViQ29yZS9wYWdlL0Nvb3JkaW5hdGVzLmlkbCBcCkBAIC0yMzM2LDYgKzIzMzksMjQg
QEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9HZW9sb2Nh
dGlvblNlcnZpY2VHdGsuaAogZW5kaWYgIyBFTkQgRU5BQkxFX0dFT0xPQ0FUSU9OCiAKKyMgLS0t
LQorIyBOb3RpZmljYXRpb25zIHN1cHBvcnQKKyMgLS0tLQoraWYgRU5BQkxFX05PVElGSUNBVElP
TlMKK0ZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9OT1RJRklDQVRJT05TPTEK
Kword2ViY29yZV9jcHBmbGFncyArPSBcCisJLURFTkFCTEVfTk9USUZJQ0FUSU9OUz0xCisKK3dl
YmNvcmVfc291cmNlcyArPSBcCisJV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5j
cHAgXAorCVdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBcCisJV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuY3BwIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9ucy5oIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJv
dmlkZXIuaCBcCisJV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBhcmFtZXRlcnMu
aAorCitlbmRpZiAjIEVORCBFTkFCTEVfTk9USUZJQ0FUSU9OUwogCiAjIC0tLS0KICMgU1ZHIFN1
cHBvcnQKQEAgLTMyMDEsNSArMzIyMiw0IEBAIENMRUFORklMRVMgKz0gXAogCWxpYldlYkNvcmVK
Uy5sYSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UubHV0LmggXAogCVdl
YkNvcmUvYmluZGluZ3MvanMvSlNSR0JDb2xvci5sdXQuaCBcCi0JV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckNvbnRleHRCYXNlLmx1dC5oCi0KKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyQ29udGV4dEJhc2UubHV0LmgNCkluZGV4OiBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDQzMzIzKQorKysgV2ViQ29yZS9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsNyBAQCBFTkFCTEVfRE9NX1NUT1JBR0UgPSBFTkFCTEVfRE9NX1NUT1JBR0U7CiBFTkFC
TEVfR0VPTE9DQVRJT04gPSA7CiBFTkFCTEVfSUNPTkRBVEFCQVNFID0gRU5BQkxFX0lDT05EQVRB
QkFTRTsKIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJUFRfREVC
VUdHRVI7CitFTkFCTEVfTk9USUZJQ0FUSU9OUyA9IDsKIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBM
SUNBVElPTlMgPSBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TOwogRU5BQkxFX1NWRyA9
IEVOQUJMRV9TVkc7CiBFTkFCTEVfU1ZHX0FOSU1BVElPTiA9IEVOQUJMRV9TVkdfQU5JTUFUSU9O
OwpAQCAtNDgsNCArNDksNCBAQCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5B
QkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAot
RkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVM
X01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVO
QUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NS
SVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxF
X1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVO
QUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVf
U1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChF
TkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNM
VCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NI
QU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfRE9NX1NUT1JBR0Up
ICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pB
VkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9O
KSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykg
JChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxF
X1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMp
ICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNDMzMjMpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjE0OCw2ICsxNjE0OCwzNCBA
QAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1l
PSJub3RpZmljYXRpb25zIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9u
LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIu
Llxub3RpZmljYXRpb25zXE5vdGlmaWNhdGlvblBhcmFtZXRlcnMuaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcTm90
aWZpY2F0aW9uUHJvdmlkZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9ucy5jcHAiDQorCQkJ
CT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxub3RpZmlj
YXRpb25zXE5vdGlmaWNhdGlvbnMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVy
Pg0KIAkJPEZpbGUNCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNvbmZpZy5oIg0KIAkJCT4NCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCShyZXZp
c2lvbiA0MzMyMykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksMTMgQEAgSlNWYWx1ZSBKU1dvcmtlckNv
bnRleHQ6OnhtbEh0dHBSZXF1ZXN0KAogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1hN
TEh0dHBSZXF1ZXN0Q29uc3RydWN0b3I+KGV4ZWMsIHRoaXMpOwogfQogCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCitKU1ZhbHVlUHRyIEpTV29ya2VyQ29udGV4dDo6bm90aWZpY2F0aW9ucyhF
eGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGpzMCgpOworfQorI2VuZGlmCisK
IEpTVmFsdWUgSlNXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBpZiAoIWFyZ3Muc2l6ZSgpKQpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNw
cAkocmV2aXNpb24gNDMzMjMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRF
eGVjdXRpb25Qcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw2ICsyMzgsMTQgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFdvcmtlckNvbnRleHRFeGVjdQogICAgICAgICAgICAgY2FzZSBW
OENsYXNzSW5kZXg6OldPUktFUk5BVklHQVRPUjoKICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxXb3JrZXJOYXZpZ2F0b3IqPihpbXBsKS0+cmVmKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgICAgICAgICBjYXNlIFY4Q2xhc3NJbmRl
eDo6Tk9USUZJQ0FUSU9OUzoKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxOb3RpZmljYXRp
b25zKj4oaW1wbCktPnJlZigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTjoKKyAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxOb3RpZmljYXRpb24qPihpbXBsKS0+cmVmKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisjZW5kaWYKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgQVNTRVJUKGZh
bHNlKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Tm90aWZpY2F0aW9uc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhOb3RpZmljYXRpb25zQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uc0N1c3RvbS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJ2OF9iaW5kaW5nLmgiCisjaW5jbHVkZSAidjhfY3Vz
dG9tLmgiCisjaW5jbHVkZSAidjhfcHJveHkuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5o
IgorI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgorI2luY2x1ZGUgIlY4
QmluZGluZy5oIgorI2luY2x1ZGUgIlY4Q3VzdG9tRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUg
IlY4VXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQUNDRVNTT1JfR0VUVEVS
KE5vdGlmaWNhdGlvbk9uZGlzcGxheSkKK3sKKyAgICBJTkNfU1RBVFMoTCJET00uTm90aWZpY2F0
aW9uLm9uZGlzcGxheS5fZ2V0Iik7CisgICAgTm90aWZpY2F0aW9uKiBub3RpZiA9IFY4UHJveHk6
OlRvTmF0aXZlT2JqZWN0PE5vdGlmaWNhdGlvbj4oVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT04s
IGluZm8uSG9sZGVyKCkpOworICAgIGlmIChub3RpZi0+b25kaXNwbGF5KCkpIHsKKyAgICAgICAg
VjhFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4RXZlbnRMaXN0ZW5lcio+
KG5vdGlmLT5vbmRpc3BsYXkoKSk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB2OExp
c3RlbmVyID0gbGlzdGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgIHJldHVybiB2
OExpc3RlbmVyOworICAgIH0KKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCitBQ0NF
U1NPUl9TRVRURVIoTm90aWZpY2F0aW9uT25kaXNwbGF5KSAKK3sKKyAgICBJTkNfU1RBVFMoTCJE
T00uTm90aWZpY2F0aW9uLm9uZGlzcGxheS5fc2V0Iik7CisgICAgTm90aWZpY2F0aW9uKiBub3Rp
ZiA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PE5vdGlmaWNhdGlvbj4oVjhDbGFzc0luZGV4OjpO
T1RJRklDQVRJT04sIGluZm8uSG9sZGVyKCkpOworICAgIFY4RXZlbnRMaXN0ZW5lciogb2xkTGlz
dGVuZXIgPSBzdGF0aWNfY2FzdDxWOEV2ZW50TGlzdGVuZXIqPihub3RpZi0+b25kaXNwbGF5KCkp
OworICAgIGlmICh2YWx1ZS0+SXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKG9sZExpc3RlbmVyKSB7
CisgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0ZW5lciA9IG9sZExp
c3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgICAgICAgcmVtb3ZlSGlkZGVuRGVw
ZW5kZW5jeShpbmZvLkhvbGRlcigpLCBvbGRWOExpc3RlbmVyLCBWOEN1c3RvbTo6a05vdGlmaWNh
dGlvblJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENsZWFyIHRo
ZSBsaXN0ZW5lcgorICAgICAgICBub3RpZi0+c2V0T25kaXNwbGF5KDApOworICAgIH0gZWxzZSB7
CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9CisgICAgICAgICAgICBz
dGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4obm90aWYtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSktPnNjcmlwdCgpLT5wcm94eSgpLT5maW5kT3JDcmVhdGVFdmVudExpc3RlbmVyKAorICAgICAg
ICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSksIGZhbHNlLCBmYWxz
ZSk7CisgICAgICAgIGlmIChsaXN0ZW5lcikgeworICAgICAgICAgICAgaWYgKG9sZExpc3RlbmVy
KSB7CisgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9sZFY4TGlzdGVuZXIg
PSBvbGRMaXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKKyAgICAgICAgICAgICAgICByZW1v
dmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9t
OjprTm90aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICAgICAgfQorICAgIAor
ICAgICAgICAgICAgbm90aWYtPnNldE9uZGlzcGxheShsaXN0ZW5lcik7CisgICAgICAgICAgICBj
cmVhdGVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIHZhbHVlLCBWOEN1c3RvbTo6a05v
dGlmaWNhdGlvblJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAgICAgfQorICAgIH0KK30KKworQUND
RVNTT1JfR0VUVEVSKE5vdGlmaWNhdGlvbk9uZXJyb3IpCit7CisgICAgSU5DX1NUQVRTKEwiRE9N
Lk5vdGlmaWNhdGlvbi5vbmVycm9yLl9nZXQiKTsKKyAgICBOb3RpZmljYXRpb24qIG5vdGlmID0g
VjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0aW9uPihWOENsYXNzSW5kZXg6Ok5PVElG
SUNBVElPTiwgaW5mby5Ib2xkZXIoKSk7CisgICAgaWYgKG5vdGlmLT5vbmVycm9yKCkpIHsKKyAg
ICAgICAgVjhFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4RXZlbnRMaXN0
ZW5lcio+KG5vdGlmLT5vbmVycm9yKCkpOworICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4g
djhMaXN0ZW5lciA9IGxpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgICByZXR1
cm4gdjhMaXN0ZW5lcjsKKyAgICB9CisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKwor
QUNDRVNTT1JfU0VUVEVSKE5vdGlmaWNhdGlvbk9uZXJyb3IpCit7CisgICAgSU5DX1NUQVRTKEwi
RE9NLk5vdGlmaWNhdGlvbi5vbmVycm9yLl9zZXQiKTsKKyAgICBOb3RpZmljYXRpb24qIG5vdGlm
ID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0aW9uPihWOENsYXNzSW5kZXg6Ok5P
VElGSUNBVElPTiwgaW5mby5Ib2xkZXIoKSk7CisgICAgVjhFdmVudExpc3RlbmVyKiBvbGRMaXN0
ZW5lciA9IHN0YXRpY19jYXN0PFY4RXZlbnRMaXN0ZW5lcio+KG5vdGlmLT5vbmVycm9yKCkpOwor
ICAgIGlmICh2YWx1ZS0+SXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKG9sZExpc3RlbmVyKSB7Cisg
ICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0ZW5lciA9IG9sZExpc3Rl
bmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgICAgICAgcmVtb3ZlSGlkZGVuRGVwZW5k
ZW5jeShpbmZvLkhvbGRlcigpLCBvbGRWOExpc3RlbmVyLCBWOEN1c3RvbTo6a05vdGlmaWNhdGlv
blJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENsZWFyIHRoZSBs
aXN0ZW5lcgorICAgICAgICBub3RpZi0+c2V0T25lcnJvcigwKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBSZWZQdHI8VjhFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9CisgICAgICAgICAgICBzdGF0
aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4obm90aWYtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkt
PnNjcmlwdCgpLT5wcm94eSgpLT5maW5kT3JDcmVhdGVFdmVudExpc3RlbmVyKAorICAgICAgICAg
ICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSksIGZhbHNlLCBmYWxzZSk7
CisgICAgICAgIGlmIChsaXN0ZW5lcikgeworICAgICAgICAgICAgaWYgKG9sZExpc3RlbmVyKSB7
CisgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9sZFY4TGlzdGVuZXIgPQor
ICAgICAgICAgICAgICAgICAgICBvbGRMaXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKKyAg
ICAgICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIG9sZFY4
TGlzdGVuZXIsIFY4Q3VzdG9tOjprTm90aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5kZXgpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBub3RpZi0+c2V0T25lcnJvcihsaXN0ZW5lcik7Cisg
ICAgICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIHZhbHVlLCBW
OEN1c3RvbTo6a05vdGlmaWNhdGlvblJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAgICAgfQorICAg
IH0KK30KKworQUNDRVNTT1JfR0VUVEVSKE5vdGlmaWNhdGlvbk9uY2xvc2UpIAoreworICAgIElO
Q19TVEFUUyhMIkRPTS5Ob3RpZmljYXRpb24ub25jbG9zZS5fZ2V0Iik7CisgICAgTm90aWZpY2F0
aW9uKiBub3RpZiA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PE5vdGlmaWNhdGlvbj4oVjhDbGFz
c0luZGV4OjpOT1RJRklDQVRJT04sIGluZm8uSG9sZGVyKCkpOworICAgIGlmIChub3RpZi0+b25j
bG9zZSgpKSB7CisgICAgICAgIFY4RXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2Fz
dDxWOEV2ZW50TGlzdGVuZXIqPihub3RpZi0+b25jbG9zZSgpKTsKKyAgICAgICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IHY4TGlzdGVuZXIgPSBsaXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsK
KyAgICAgICAgcmV0dXJuIHY4TGlzdGVuZXI7CisgICAgfQorICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7Cit9CisKK0FDQ0VTU09SX1NFVFRFUihOb3RpZmljYXRpb25PbmNsb3NlKQoreworICAg
IElOQ19TVEFUUyhMIkRPTS5Ob3RpZmljYXRpb24ub25jbG9zZS5fc2V0Iik7CisgICAgTm90aWZp
Y2F0aW9uKiBub3RpZiA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PE5vdGlmaWNhdGlvbj4oVjhD
bGFzc0luZGV4OjpOT1RJRklDQVRJT04sIGluZm8uSG9sZGVyKCkpOworICAgIFY4RXZlbnRMaXN0
ZW5lciogb2xkTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOEV2ZW50TGlzdGVuZXIqPihub3RpZi0+
b25jbG9zZSgpKTsKKyAgICBpZiAodmFsdWUtPklzTnVsbCgpKSB7CisgICAgICAgIGlmIChvbGRM
aXN0ZW5lcikgeworICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9sZFY4TGlzdGVu
ZXIgPSBvbGRMaXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKKyAgICAgICAgICAgIHJlbW92
ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgb2xkVjhMaXN0ZW5lciwgVjhDdXN0b206
OmtOb3RpZmljYXRpb25SZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBDbGVhciB0aGUgbGlzdGVuZXIKKyAgICAgICAgbm90aWYtPnNldE9uY2xvc2UoMCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgUmVmUHRyPFY4RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPQorICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KG5vdGlmLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpLT5zY3JpcHQoKS0+cHJveHkoKS0+ZmluZE9yQ3JlYXRlRXZlbnRMaXN0ZW5l
cigKKyAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpLCBm
YWxzZSwgZmFsc2UpOworICAgICAgICBpZiAobGlzdGVuZXIpIHsKKyAgICAgICAgICAgIGlmIChv
bGRMaXN0ZW5lcikgeworICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvbGRW
OExpc3RlbmVyID0KKyAgICAgICAgICAgICAgICAgICAgb2xkTGlzdGVuZXItPmdldExpc3RlbmVy
T2JqZWN0KCk7CisgICAgICAgICAgICAgICAgcmVtb3ZlSGlkZGVuRGVwZW5kZW5jeShpbmZvLkhv
bGRlcigpLCBvbGRWOExpc3RlbmVyLCBWOEN1c3RvbTo6a05vdGlmaWNhdGlvblJlcXVlc3RDYWNo
ZUluZGV4KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbm90aWYtPnNldE9uY2xvc2Uo
bGlzdGVuZXIpOworICAgICAgICAgICAgY3JlYXRlSGlkZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRl
cigpLCB2YWx1ZSwgVjhDdXN0b206OmtOb3RpZmljYXRpb25SZXF1ZXN0Q2FjaGVJbmRleCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChOb3RpZmljYXRpb25zQ3Jl
YXRlSFRNTE5vdGlmaWNhdGlvbikKK3sKKyAgICBJTkNfU1RBVFMoTCJET00uTm90aWZpY2F0aW9u
cy5DcmVhdGVIVE1MTm90aWZpY2F0aW9uKCkiKTsKKyAgICBOb3RpZmljYXRpb25zKiBub3RpZklu
dGVyZmFjZSA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PE5vdGlmaWNhdGlvbnM+KFY4Q2xhc3NJ
bmRleDo6Tk9USUZJQ0FUSU9OUywgYXJncy5Ib2xkZXIoKSk7CisgIAorICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7CisgICAgU3RyaW5nIHVybCA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKKyAgICBS
ZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZiA9IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKHVybCwgbm90
aWZJbnRlcmZhY2UtPmNvbnRleHQoKSwgZWMsIG5vdGlmSW50ZXJmYWNlLT5wcm92aWRlcigpKTsK
KworICAgIHJldHVybiBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OlRvVjhPYmplY3QoVjhD
bGFzc0luZGV4OjpOT1RJRklDQVRJT04sIG5vdGlmLmdldCgpKTsKK30KKworQ0FMTEJBQ0tfRlVO
Q19ERUNMKE5vdGlmaWNhdGlvbnNDcmVhdGVOb3RpZmljYXRpb24pCit7CisgICAgSU5DX1NUQVRT
KEwiRE9NLk5vdGlmaWNhdGlvbnMuQ3JlYXRlTm90aWZpY2F0aW9uKCkiKTsKKyAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woTm90aWZpY2F0aW9uU2hv
dykgCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLk5vdGlmaWNhdGlvbi5TaG93KCkiKTsKKyAgICBO
b3RpZmljYXRpb24qIG5vdGlmID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0aW9u
PihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwgYXJncy5Ib2xkZXIoKSk7CisgICAgbm90aWYt
PnNob3coKTsKKworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK0NBTExCQUNLX0ZV
TkNfREVDTChOb3RpZmljYXRpb25DYW5jZWwpIAoreworICAgIElOQ19TVEFUUyhMIkRPTS5Ob3Rp
ZmljYXRpb24uQ2FuY2VsKCkiKTsKKyAgICBOb3RpZmljYXRpb24qIG5vdGlmID0gVjhQcm94eTo6
VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0aW9uPihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwg
YXJncy5Ib2xkZXIoKSk7CisgICAgbm90aWYtPmNhbmNlbCgpOworCisgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisj
aW5jbHVkZSAiTm90aWZpY2F0aW9uUGFyYW1ldGVycy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0
IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25D
b2RlJiBlYywgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKQorICAgIDogQWN0aXZlRE9N
T2JqZWN0KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQorICAgICwg
bV9IVE1MKHRydWUpCisgICAgLCBtX2lkKDApCit7CisgICAgbV9ub3RpZmljYXRpb25VUkwgPSBj
b250ZXh0LT5jb21wbGV0ZVVSTCh1cmwpOworICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8ICFtX25v
dGlmaWNhdGlvblVSTC5pc1ZhbGlkKCkpIHsKKyAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAvLyBUT0RPOiBTaG91bGQgbm90aWZpY2F0aW9ucyBiZSBh
dmFpbGFibGUgdG8gbm9uLXdvcmtlciBjb250ZXh0cz8KKyAgICBBU1NFUlQoY29udGV4dC0+aXNX
b3JrZXJDb250ZXh0KCkpOworfQorCitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBO
b3RpZmljYXRpb25QYXJhbWV0ZXJzJiBmaWVsZHMsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIp
CisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1fcHJvdmlkZXIo
cHJvdmlkZXIpCisgICAgLCBtX0hUTUwoZmFsc2UpCisgICAgLCBtX2ZpZWxkcyhmaWVsZHMpCisg
ICAgLCBtX2lkKDApCit7CisgICAgLy8gVE9ETzogU2hvdWxkIG5vdGlmaWNhdGlvbnMgYmUgYXZh
aWxhYmxlIHRvIG5vbi13b3JrZXIgY29udGV4dHM/CisgICAgQVNTRVJUKGNvbnRleHQtPmlzV29y
a2VyQ29udGV4dCgpKTsKK30KKworTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKCkgCit7Cit9
CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkgCit7CisgICAgaWYgKG1fSFRNTCkKKyAgICAg
IG1faWQgPSBtX3Byb3ZpZGVyLT5zaG93KG1fbm90aWZpY2F0aW9uVVJMLCB0aGlzKTsKKyAgICBl
bHNlCisgICAgICBtX2lkID0gbV9wcm92aWRlci0+c2hvdyhtX2ZpZWxkcy51cmwoKSwgbV9maWVs
ZHMudGl0bGUoKSwgbV9maWVsZHMuYm9keSgpLCB0aGlzKTsKK30KKwordm9pZCBOb3RpZmljYXRp
b246OmNhbmNlbCgpIAoreworICAgIG1fcHJvdmlkZXItPmNhbmNlbChtX2lkKTsKK30KKwordm9p
ZCBOb3RpZmljYXRpb246OmRpc3BhdGNoRGlzcGxheUV2ZW50KCkgCit7ICAgCisgICAgUmVmUHRy
PEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFs
c2UsIHRydWUpOworICAgIGlmIChtX29uRGlzcGxheUxpc3RlbmVyKSB7CisgICAgICAgIGV2ZW50
LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMp
OworICAgICAgICBtX29uRGlzcGxheUxpc3RlbmVyLT5oYW5kbGVFdmVudChldmVudC5nZXQoKSwg
dHJ1ZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hF
dmVudChldmVudC5yZWxlYXNlKCksIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKK30KKwordm9pZCBO
b3RpZmljYXRpb246OmRpc3BhdGNoRXJyb3JFdmVudChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7
ICAKKyAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZXJyb3JFdmVudCwgZmFsc2UsIHRydWUpOworICAgIGlmIChtX29uRXJyb3JMaXN0ZW5lcikgewor
ICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldmVudC0+c2V0Q3VycmVu
dFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbkVycm9yTGlzdGVuZXItPmhhbmRsZUV2ZW50KGV2
ZW50LmdldCgpLCB0cnVlKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBkaXNwYXRjaEV2ZW50KGV2ZW50LnJlbGVhc2UoKSwgZWMpOworICAgIEFTU0VSVCghZWMpOwor
fQorCit2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KGJvb2wgeHBsaWNpdCkg
Cit7ICAgCisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmNsb3NlRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAgICBpZiAobV9vbkNsb3NlTGlzdGVuZXIp
IHsKKyAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZlbnQtPnNldEN1
cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fb25DbG9zZUxpc3RlbmVyLT5oYW5kbGVFdmVu
dChldmVudC5nZXQoKSwgdHJ1ZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgZGlzcGF0Y2hFdmVudChldmVudC5yZWxlYXNlKCksIGVjKTsKKyAgICBBU1NFUlQoIWVj
KTsKK30KKwordm9pZCBOb3RpZmljYXRpb246OmRpc3BsYXkoKQoreworICAgIGRpc3BhdGNoRGlz
cGxheUV2ZW50KCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjplcnJvcihjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSkKK3sKKyAgICBkaXNwYXRjaEVycm9yRXZlbnQoZXJyb3JNZXNzYWdlKTsK
K30KKwordm9pZCBOb3RpZmljYXRpb246OmNsb3NlKGJvb2wgeHBsaWNpdCkKK3sKKyAgICBkaXNw
YXRjaENsb3NlRXZlbnQoeHBsaWNpdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQpJbmRleDogV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5vdGlmaWNh
dGlvbl9oICAKKyNkZWZpbmUgTm90aWZpY2F0aW9uX2gKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgorI2luY2x1ZGUgIkF0b21pY1N0cmluZ0hhc2guaCIKKyNpbmNsdWRlICJFdmVudC5o
IgorI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25QYXJhbWV0ZXJz
LmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisK
KyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNs
YXNzIFdvcmtlckNvbnRleHQ7CisKKyAgICBjbGFzcyBOb3RpZmljYXRpb24gOiBwdWJsaWMgUmVm
Q291bnRlZDxOb3RpZmljYXRpb24+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZl
bnRUYXJnZXQgeyAKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlm
aWNhdGlvbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3Zp
ZGVyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKHVybCwgY29udGV4dCwgZWMs
IHByb3ZpZGVyKSk7IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBj
cmVhdGUoY29uc3QgTm90aWZpY2F0aW9uUGFyYW1ldGVycyYgZmllbGRzLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgTm90aWZpY2F0aW9uUHJvdmlk
ZXIqIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKGZpZWxkcywg
Y29udGV4dCwgZWMsIHByb3ZpZGVyKSk7IH0KKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgfk5v
dGlmaWNhdGlvbigpOworCisgICAgICAgIHZvaWQgc2hvdygpOworICAgICAgICB2b2lkIGNhbmNl
bCgpOworICAgIAorICAgICAgICBFdmVudExpc3RlbmVyKiBvbmRpc3BsYXkoKSBjb25zdCB7IHJl
dHVybiBtX29uRGlzcGxheUxpc3RlbmVyLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25kaXNw
bGF5KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uRGlzcGxh
eUxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVudExpc3RlbmVyKiBvbmVy
cm9yKCkgY29uc3QgeyByZXR1cm4gbV9vbkVycm9yTGlzdGVuZXIuZ2V0KCk7IH0KKyAgICAgICAg
dm9pZCBzZXRPbmVycm9yKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikg
eyBtX29uRXJyb3JMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0
ZW5lciogb25jbG9zZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25DbG9zZUxpc3RlbmVyLmdldCgpOyB9
CisgICAgICAgIHZvaWQgc2V0T25jbG9zZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50
TGlzdGVuZXIpIHsgbV9vbkNsb3NlTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9CisgICAgCisg
ICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPjo6cmVmOworICAgICAgICB1c2lu
ZyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj46OmRlcmVmOworICAgIAorICAgICAgICAvLyBDYWxs
YmFjayBtZXRob2RzIGZvciB0aGUgcHJvdmlkZXIKKyAgICAgICAgdm9pZCBkaXNwbGF5KCk7Cisg
ICAgICAgIHZvaWQgZXJyb3IoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworICAgICAgICB2
b2lkIGNsb3NlKGJvb2wgeHBsaWNpdCk7CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJm
YWNlCisgICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBi
b29sIHVzZUNhcHR1cmUpIHt9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1
c2VDYXB0dXJlKSB7fQorICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAKKyAg
ICBwcml2YXRlOgorICAgICAgICBOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRp
b25Qcm92aWRlciogcHJvdmlkZXIpOworICAgICAgICBOb3RpZmljYXRpb24oY29uc3QgTm90aWZp
Y2F0aW9uUGFyYW1ldGVycyYgZmllbGRzLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYywgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKTsKKwor
ICAgICAgICB2b2lkIGRpc3BhdGNoRGlzcGxheUV2ZW50KCk7CisgICAgICAgIHZvaWQgZGlzcGF0
Y2hFcnJvckV2ZW50KGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lkIGRpc3BhdGNoQ2xvc2VF
dmVudChib29sKTsKKworICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAg
dmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgICAgICB2aXJ0dWFs
IHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAKKyAgICAgICAgYm9vbCBt
X0hUTUw7CisgICAgICAgIEtVUkwgbV9ub3RpZmljYXRpb25VUkw7CisgICAgICAgIE5vdGlmaWNh
dGlvblBhcmFtZXRlcnMgbV9maWVsZHM7CisKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IG1fb25EaXNwbGF5TGlzdGVuZXI7CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29u
RXJyb3JMaXN0ZW5lcjsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25DbG9zZUxp
c3RlbmVyOworCisgICAgICAgIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBtX3Byb3ZpZGVyOworCisg
ICAgICAgIGludCBtX2lkOworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uc19o
CkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworbW9kdWxlIHRocmVhZHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAg
ICAgQ29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OUworICAgIF0gTm90aWZpY2F0aW9uIHsKKyAgICAg
ICAgW0N1c3RvbV0gdm9pZCBzaG93KCk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgY2FuY2VsKCk7
CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kaXNwbGF5OworICAgICAgICBh
dHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRM
aXN0ZW5lciBvbmNsb3NlOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE5vdGlmaWNhdGlvblBhcmFtZXRlcnNfaAorI2RlZmluZSBOb3Rp
ZmljYXRpb25QYXJhbWV0ZXJzX2gKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBOb3RpZmljYXRpb25QYXJhbWV0ZXJzIHsgCisg
ICAgcHVibGljOgorICAgICAgICBOb3RpZmljYXRpb25QYXJhbWV0ZXJzKCkge30KKyAgICAgICAg
Tm90aWZpY2F0aW9uUGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIGljb25VcmwsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSkgCisgICAgICAgICAgICA6IG1faWNvbihpY29u
VXJsKQorICAgICAgICAgICAgLCBtX3RpdGxlKHRpdGxlKQorICAgICAgICAgICAgLCBtX2JvZHko
Ym9keSkge30KKworICAgICAgICBTdHJpbmcgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9pY29uOyB9
CisgICAgICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KKyAgICAg
ICAgU3RyaW5nIGJvZHkoKSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIFN0cmluZyBtX2ljb247CisgICAgICAgIFN0cmluZyBtX3RpdGxlOworICAgICAg
ICBTdHJpbmcgbV9ib2R5OworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uUGFy
YW1ldGVyc19oCkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJvdmlk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJv
dmlkZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25Qcm92aWRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmlj
YXRpb25Qcm92aWRlcl9oCisjZGVmaW5lIE5vdGlmaWNhdGlvblByb3ZpZGVyX2gKKworI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBT
dHJpbmc7CisgICAgY2xhc3MgTm90aWZpY2F0aW9uOworCisgICAgY2xhc3MgTm90aWZpY2F0aW9u
UHJvdmlkZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Tm90aWZpY2F0aW9uUHJv
dmlkZXIoKSB7fQorCisgICAgICAgIHZpcnR1YWwgaW50IHNob3coY29uc3QgU3RyaW5nJiBVUkws
IE5vdGlmaWNhdGlvbiogb2JqZWN0KSA9IDA7CisKKyAgICAgICAgdmlydHVhbCBpbnQgc2hvdyhj
b25zdCBTdHJpbmcmIGljb25VcmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYg
Ym9keSwgTm90aWZpY2F0aW9uKiBvYmplY3QpID0gMDsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsKGludCBoYW5kbGUpID0gMDsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2VuZGlmIC8vIE5vdGlmaWNh
dGlvblByb3ZpZGVyX2gKSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5j
cHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbnMuaCIKKwor
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK05vdGlmaWNhdGlvbnM6Ok5vdGlmaWNhdGlvbnMoV29ya2VyQ29u
dGV4dCogY29udGV4dCwgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKSAKKyAgICA6IEFj
dGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQorICAgICwgbV93b3JrZXJDb250ZXh0KGNvbnRl
eHQpCisgICAgLCBtX25vdGlmaWNhdGlvblByb3ZpZGVyKHByb3ZpZGVyKSB7fQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKSW5kZXg6
IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE5vdGlmaWNhdGlvbnNfaAorI2RlZmluZSBOb3RpZmljYXRpb25zX2gKKwor
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFdv
cmtlckNvbnRleHQ7CisKKyAgICBjbGFzcyBOb3RpZmljYXRpb25zIDogcHVibGljIFJlZkNvdW50
ZWQ8Tm90aWZpY2F0aW9ucz4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeyAKKyAgICBwdWJsaWM6
CisgICAgICAgIE5vdGlmaWNhdGlvbnMoV29ya2VyQ29udGV4dCosIE5vdGlmaWNhdGlvblByb3Zp
ZGVyKik7CisKKyAgICAgICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZUhUTUxOb3Rp
ZmljYXRpb24oY29uc3QgU3RyaW5nJiBVUkkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWM7CisgICAgICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uOjpjcmVhdGUoS1VS
TChVUkkpLCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIG1fd29ya2VyQ29udGV4dCwgZWMsIG1f
bm90aWZpY2F0aW9uUHJvdmlkZXIpOworICAgICAgICB9CisgICAgICAgIFBhc3NSZWZQdHI8Tm90
aWZpY2F0aW9uPiBjcmVhdGVOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uUGFyYW1ldGVycyBwYXJh
bWV0ZXJzKQorICAgICAgICB7CisgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAg
ICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbjo6Y3JlYXRlKHBhcmFtZXRlcnMsIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KikgbV93b3JrZXJDb250ZXh0LCBlYywgbV9ub3RpZmljYXRpb25Qcm92aWRl
cik7CisgICAgICAgIH0KKworICAgICAgICBXb3JrZXJDb250ZXh0KiBjb250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV93b3JrZXJDb250ZXh0OyB9CisgICAgICAgIE5vdGlmaWNhdGlvblByb3ZpZGVy
KiBwcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUHJvdmlkZXI7IH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIFdvcmtlckNvbnRleHQqIG1fd29ya2VyQ29udGV4dDsKKyAg
ICAgICAgTm90aWZpY2F0aW9uUHJvdmlkZXIqIG1fbm90aWZpY2F0aW9uUHJvdmlkZXI7CisgICAg
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNB
VElPTlMpCisKKyNlbmRpZiAvLyBOb3RpZmljYXRpb25zX2gKSW5kZXg6IFdlYkNvcmUvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25zLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9ucy5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9ucy5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1
bGUgdGhyZWFkcyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1OT1RJ
RklDQVRJT05TCisgICAgXSBOb3RpZmljYXRpb25zIHsKKyAgICAgICBbUmV0dXJuc05ld10gW0N1
c3RvbV0gTm90aWZpY2F0aW9uIGNyZWF0ZUhUTUxOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIHVy
bCk7CisgICAgICAgW1JldHVybnNOZXddIFtDdXN0b21dIE5vdGlmaWNhdGlvbiBjcmVhdGVOb3Rp
ZmljYXRpb24oaW4gTm90aWZpY2F0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKTsKKyAgICB9Owor
Cit9CkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA0MzMyMykKKysr
IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
NiArNTEsMTAgQEAKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oIgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUg
Im5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogV29ya2VyQ29udGV4dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWQqIHRocmVhZCkKQEAgLTYwLDEyICs2
NCwxNyBAQCBXb3JrZXJDb250ZXh0OjpXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmCiAgICAgLCBt
X3RocmVhZCh0aHJlYWQpCiB7CiAgICAgc2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSh1cmwpKTsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBtX25vdGlmaWNh
dGlvbnMgPSBuZXcgTm90aWZpY2F0aW9ucyh0aGlzLCBtX3RocmVhZC0+d29ya2VyT2JqZWN0UHJv
eHkoKS0+Z2V0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKSk7CisjZW5kaWYKIH0KIAogV29ya2VyQ29u
dGV4dDo6fldvcmtlckNvbnRleHQoKQogewogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV90aHJlYWQtPnRocmVhZElEKCkpOwotCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpICAKKyAg
ICBtX25vdGlmaWNhdGlvbnMuY2xlYXIoKTsKKyNlbmRpZgogICAgIG1fdGhyZWFkLT53b3JrZXJP
YmplY3RQcm94eSgpLT53b3JrZXJDb250ZXh0RGVzdHJveWVkKCk7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnRleHQuaAkocmV2aXNpb24gNDMzMjMpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCisjaW5jbHVkZSAibm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmgi
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU2NoZWR1bGVkQWN0
aW9uOwpAQCAtMTEyLDYgKzExNiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
dm9pZCBkaXNwYXRjaE1lc3NhZ2UoY29uc3QgU3RyaW5nJik7CiAKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKKyAgICAgICAgTm90aWZpY2F0aW9ucyogbm90aWZpY2F0aW9ucygpIHsgcmV0dXJu
IG1fbm90aWZpY2F0aW9ucy5nZXQoKTsgfQorI2VuZGlmCisKICAgICAgICAgLy8gVGhlc2UgbWV0
aG9kcyBhcmUgdXNlZCBmb3IgR0MgbWFya2luZy4gU2VlIEpTV29ya2VyQ29udGV4dDo6bWFyaygp
IGluCiAgICAgICAgIC8vIEpTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAuCiAgICAgICAgIFdvcmtl
ck5hdmlnYXRvciogb3B0aW9uYWxOYXZpZ2F0b3IoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRv
ci5nZXQoKTsgfQpAQCAtMTQyLDYgKzE1MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25tZXNzYWdlTGlzdGVuZXI7CiAgICAgICAg
IEV2ZW50TGlzdGVuZXJzTWFwIG1fZXZlbnRMaXN0ZW5lcnM7CisKKyNpZiBFTkFCTEVfTk9USUZJ
Q0FUSU9OUworICAgICAgICBSZWZQdHI8Tm90aWZpY2F0aW9ucz4gbV9ub3RpZmljYXRpb25zOwor
I2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmlkbAkocmV2aXNpb24gNDMzMjMpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDEwIEBAIG1vZHVsZSB0
aHJlYWRzIHsKICAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKICAg
ICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CiAKKyNpZiBFTkFCTEVfTk9USUZJQ0FU
SU9OUworICAgICAgICAvLyBOb3RpZmljYXRpb24gaW50ZXJmYWNlCisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBbQ3VzdG9tXSBOb3RpZmljYXRpb25zIG5vdGlmaWNhdGlvbnM7CisjZW5kaWYK
IAogICAgICAgICAvLyBDb25zdHJ1Y3RvcnMKICAgICAgICAgYXR0cmlidXRlIE1lc3NhZ2VFdmVu
dENvbnN0cnVjdG9yIE1lc3NhZ2VFdmVudDsKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcAkocmV2aXNpb24gNDMzMjMpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNiArMjIyLDE0IEBA
IHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG8KICAgICAgICAgbV9xdWV1
ZWRFYXJseVRhc2tzLmFwcGVuZChNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s6OmNyZWF0ZShtZXNz
YWdlKSk7CiB9CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK05vdGlmaWNhdGlvblByb3Zp
ZGVyKiBXb3JrZXJNZXNzYWdpbmdQcm94eTo6Z2V0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKSAKK3sK
KyAgICAvLyBOb3RpZmljYXRpb24gUHJvdmlkZXIgbXVzdCBiZSBwcm92aWRlZCBieSB0aGUgY29u
dGFpbmVyLgorICAgIHJldHVybiBOVUxMOworfQorI2VuZGlmCisKIHZvaWQgV29ya2VyTWVzc2Fn
aW5nUHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKIHsKICAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckNv
bnRleHQodGFzaywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CkluZGV4OiBXZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dv
cmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAkocmV2aXNpb24gNDMzMjMpCisrKyBXZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiAr
NjUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0
UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KTsKICAgICAgICAgdmlydHVh
bCB2b2lkIHdvcmtlckNvbnRleHREZXN0cm95ZWQoKTsKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQorICAgICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBnZXROb3RpZmljYXRp
b25Qcm92aWRlcigpOworI2VuZGlmCisKICAgICAgICAgdm9pZCBwb3N0VGFza1RvV29ya2VyT2Jq
ZWN0KFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOwogICAgICAgICB2
b2lkIHBvc3RUYXNrVG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4pOwogICAgICAgICB2b2lkIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4
dChQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcm
IG1vZGUpOwpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgJKHJldmlzaW9uIDQz
MzIzKQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFN0
cmluZzsKKyAgICBjbGFzcyBOb3RpZmljYXRpb25Qcm92aWRlcjsKIAogICAgIC8vIEEgcHJveHkg
dG8gdGFsayB0byB0aGUgd29ya2VyIG9iamVjdC4KICAgICBjbGFzcyBXb3JrZXJPYmplY3RQcm94
eSB7CkBAIC01NSw2ICs1NiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpID0g
MDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyQ29udGV4dERlc3Ryb3llZCgpID0gMDsK
KworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlv
blByb3ZpZGVyKiBnZXROb3RpZmljYXRpb25Qcm92aWRlcigpID0gMDsKKyNlbmRpZgogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQzMzIzKQorKysg
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIw
MDktMDQtMjggIEpvaG4gR3JlZ2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRk
cyAtLW5vdGlmaWNhdGlvbnMgc3dpdGNoIHRvIHRoZSBidWlsZCBzY3JpcHQuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLXdl
YmtpdDoKKwogMjAwOS0wNS0wNiAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIEV4cGxpY2l0bHkgc2V0IFdlYktpdFBhaW50TmF0aXZlQ29udHJvbHMgdG8g
ZmFsc2UgdG8gYWxsb3cgV2luZG93cyByZXN1bHRzIHRvIG1hdGNoIE1hYy4KSW5kZXg6IFdlYktp
dFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Nj
cmlwdHMvYnVpbGQtd2Via2l0CShyZXZpc2lvbiA0MzMyMykKKysrIFdlYktpdFRvb2xzL1Njcmlw
dHMvYnVpbGQtd2Via2l0CSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIG15ICRnZW9s
b2NhdGlvblN1cHBvcnQgPSAwOwogbXkgJGdub21lS2V5cmluZ1N1cHBvcnQgPSAwOwogbXkgJGlj
b25EYXRhYmFzZVN1cHBvcnQgPSAxOwogbXkgJGphdmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQgPSAx
OworbXkgJG5vdGlmaWNhdGlvbnNTdXBwb3J0ID0gMDsKIG15ICRvZmZsaW5lV2ViQXBwbGljYXRp
b25TdXBwb3J0ID0gMTsKIG15ICRzdmdTdXBwb3J0ID0gMTsKIG15ICRzdmdBbmltYXRpb25TdXBw
b3J0ID0gMTsKQEAgLTg1LDYgKzg2LDcgQEAgVXNhZ2U6ICRwcm9ncmFtTmFtZSBbb3B0aW9uc10g
W29wdGlvbnMgdAogICAtLVtuby1dZ25vbWVrZXlyaW5nICAgICAgICAgICAgICAgVG9nZ2xlIEdO
T01FIEtleXJpbmcgU3VwcG9ydCAoR1RLKyBwb3J0IG9ubHkpIChkZWZhdWx0OiAkZ25vbWVLZXly
aW5nU3VwcG9ydCkKICAgLS1bbm8tXWljb24tZGF0YWJhc2UgICAgICAgICAgICAgIFRvZ2dsZSBJ
Y29uIGRhdGFiYXNlIHN1cHBvcnQgKGRlZmF1bHQ6ICRpY29uRGF0YWJhc2VTdXBwb3J0KQogICAt
LVtuby1damF2YXNjcmlwdC1kZWJ1Z2dlciAgICAgICAgVG9nZ2xlIEphdmFTY3JpcHQgRGVidWdn
ZXIvUHJvZmlsZXIgc3VwcG9ydCAoZGVmYXVsdDogJGphdmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQp
CisgIC0tW25vLV1ub3RpZmljYXRpb25zICAgICAgICAgICAgICBUb29nbGUgTm90aWZpY2F0aW9u
cyBzdXBwb3J0IChkZWZhdWx0OiAkbm90aWZpY2F0aW9uc1N1cHBvcnQpCiAgIC0tW25vLV1vZmZs
aW5lLXdlYi1hcHBsaWNhdGlvbnMgICBUb2dnbGUgT2ZmbGluZSBXZWIgQXBwbGljYXRpb24gU3Vw
cG9ydCAoZGVmYXVsdDogJG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQpCiAgIC0tW25vLV1z
dmcgICAgICAgICAgICAgICAgICAgICAgICBUb2dnbGUgU1ZHIHN1cHBvcnQgKGRlZmF1bHQ6ICRz
dmdTdXBwb3J0KQogICAtLVtuby1dc3ZnLWFuaW1hdGlvbiAgICAgICAgICAgICAgVG9nZ2xlIFNW
RyBhbmltYXRpb24gc3VwcG9ydCAoZGVmYXVsdDogJHN2Z0FuaW1hdGlvblN1cHBvcnQsIGltcGxp
ZXMgU1ZHIFN1cHBvcnQpCkBAIC0xMTMsNiArMTE1LDcgQEAgR2V0T3B0aW9ucygKICAgICAgICAg
ICAgJ2dub21la2V5cmluZyEnID0+IFwkZ25vbWVLZXlyaW5nU3VwcG9ydCwKICAgICAgICAgICAg
J2ljb24tZGF0YWJhc2UhJyA9PiBcJGljb25EYXRhYmFzZVN1cHBvcnQsCiAgICAgICAgICAgICdq
YXZhc2NyaXB0LWRlYnVnZ2VyIScgPT4gXCRqYXZhU2NyaXB0RGVidWdnZXJTdXBwb3J0LAorICAg
ICAgICAgICAnbm90aWZpY2F0aW9ucyEnID0+IFwkbm90aWZpY2F0aW9uc1N1cHBvcnQsCiAgICAg
ICAgICAgICdvZmZsaW5lLXdlYi1hcHBsaWNhdGlvbnMhJyA9PiBcJG9mZmxpbmVXZWJBcHBsaWNh
dGlvblN1cHBvcnQsCiAgICAgICAgICAgICdzdmchJyA9PiBcJHN2Z1N1cHBvcnQsCiAgICAgICAg
ICAgICdzdmctYW5pbWF0aW9uIScgPT4gXCRzdmdBbmltYXRpb25TdXBwb3J0LApAQCAtMTgxLDYg
KzE4NCw3IEBAIGlmIChpc0d0aygpKSB7CiAgICAgcHVzaCBAb3B0aW9ucywgYXV0b3Rvb2xzRmxh
ZygkZ25vbWVLZXlyaW5nU3VwcG9ydCwgImdub21la2V5cmluZyIpOwogICAgIHB1c2ggQG9wdGlv
bnMsIGF1dG90b29sc0ZsYWcoJGljb25EYXRhYmFzZVN1cHBvcnQsICJpY29uLWRhdGFiYXNlIik7
CiAgICAgcHVzaCBAb3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkamF2YVNjcmlwdERlYnVnZ2VyU3Vw
cG9ydCwgImphdmFzY3JpcHQtZGVidWdnZXIiKTsKKyAgICBwdXNoIEBvcHRpb25zLCBhdXRvdG9v
bHNGbGFnKCRub3RpZmljYXRpb25zU3VwcG9ydCwgIm5vdGlmaWNhdGlvbnMiKTsKICAgICBwdXNo
IEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRvZmZsaW5lV2ViQXBwbGljYXRpb25TdXBwb3J0LCAi
b2ZmbGluZS13ZWItYXBwbGljYXRpb25zIik7CiAgICAgcHVzaCBAb3B0aW9ucywgYXV0b3Rvb2xz
RmxhZygkc3ZnU3VwcG9ydCwgInN2ZyIpOwogICAgIHB1c2ggQG9wdGlvbnMsIGF1dG90b29sc0Zs
YWcoJHN2Z0FuaW1hdGlvblN1cHBvcnQsICJzdmctYW5pbWF0aW9uIik7CkBAIC0yMTIsNiArMjE2
LDcgQEAgaWYgKGlzQXBwbGVNYWNXZWJLaXQoKSkgewogICAgIHB1c2ggQG9wdGlvbnMsIG9wdGlv
bigiRU5BQkxFX0dFT0xPQ0FUSU9OIiwgJGdlb2xvY2F0aW9uU3VwcG9ydCk7CiAgICAgcHVzaCBA
b3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfSUNPTkRBVEFCQVNFIiwgJGljb25EYXRhYmFzZVN1cHBv
cnQpOwogICAgIHB1c2ggQG9wdGlvbnMsIG9wdGlvbigiRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdH
RVIiLCAkamF2YVNjcmlwdERlYnVnZ2VyU3VwcG9ydCk7CisgICAgcHVzaCBAb3B0aW9ucywgb3B0
aW9uKCJFTkFCTEVfTk9USUZJQ0FUSU9OUyIsICRub3RpZmljYXRpb25zU3VwcG9ydCk7CiAgICAg
cHVzaCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TIiwg
JG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQpOwogICAgIHB1c2ggQG9wdGlvbnMsIG9wdGlv
bigiRU5BQkxFX1NWRyIsICRzdmdTdXBwb3J0KTsKICAgICBwdXNoIEBvcHRpb25zLCBvcHRpb24o
IkVOQUJMRV9TVkdfQU5JTUFUSU9OIiwgJHN2Z0FuaW1hdGlvblN1cHBvcnQpOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNDMzMjMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAwOS0wNC0yOCAgSm9obiBHcmVnZyAgPGpvaG5ueWdAZ29vZ2xl
LmNvbT4KKworICAgICAgICBBZGRzIGJhc2ljIGxheW91dCB0ZXN0IHRvIGNvbmZpcm0gdGhlIG5v
dGlmaWNhdGlvbnMgaW50ZXJmYWNlIGlzIHZpc2libGUgZnJvbSB3b3JrZXIgc2NyaXB0LgorICAg
ICAgICAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L25vdGlmaWNhdGlvbnM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvbm90aWZpY2F0aW9ucy9u
b3RpZmljYXRpb25zLWFjY2Vzc29yLWRpc2FibGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWFjY2Vzc29yLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9ub3RpZmljYXRpb25zL3Jlc291cmNlczogQWRkZWQuCisgICAg
ICAgICogZmFzdC9ub3RpZmljYXRpb25zL3Jlc291cmNlcy93b3JrZXItbm90aWZpY2F0aW9ucy5q
czogQWRkZWQuCisKIDIwMDktMDUtMDYgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8u
bm9yb25oYUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgRGlzYWJsZSBtb3JlIG5ldyB0ZXN0
cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWFj
Y2Vzc29yLWRpc2FibGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ub3Rp
ZmljYXRpb25zL25vdGlmaWNhdGlvbnMtYWNjZXNzb3ItZGlzYWJsZWQuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWFjY2Vz
c29yLWRpc2FibGVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzxib2R5Pgor
PHA+VGVzdCBXb3JrZXIgTm90aWZpY2F0aW9ucyBhY2Nlc3MuIFNob3VsZCBwcmludCBhIHNlcmll
cyBvZiBQQVNTIG1lc3NhZ2VzLCBmb2xsb3dlZCB3aXRoIERPTkUuPC9wPgorPGRpdiBpZD1yZXN1
bHQ+PC9kaXY+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4i
OworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKK30KKwordHJ5IHsKKyAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigicmVz
b3VyY2VzL3dvcmtlci1ub3RpZmljYXRpb25zLmpzIik7CisKKyAgICB3b3JrZXIub25tZXNzYWdl
ID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGxvZyhldnQuZGF0YSk7CisgICAgICAgIGlmIChl
dnQuZGF0YSA9PSAiRE9ORSIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKyAgICAKK30g
Y2F0Y2ggKGV4KSB7CisgICAgbG9nKCJGQUlMOiB1bmV4cGVjdGVkIGV4Y2VwdGlvbiAiICsgZXgp
OworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtYWNjZXNzb3ItZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9u
b3RpZmljYXRpb25zLWFjY2Vzc29yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWFjY2Vzc29yLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitUZXN0IFdvcmtlciBOb3RpZmljYXRp
b25zIGFjY2Vzcy4gU2hvdWxkIHByaW50IGEgc2VyaWVzIG9mIFBBU1MgbWVzc2FnZXMsIGZvbGxv
d2VkIHdpdGggRE9ORS4KKworVGVzdCBzdGFydGVkLgorUEFTUzogbm90aWZpY2F0aW9ucyBvYmpl
Y3QgZXhpc3RzLgorUEFTUzogbm90aWZpY2F0aW9ucy5jcmVhdGVIVE1MTm90aWZpY2F0aW9ucyBk
b2VzIG5vdCBleGlzdC4KK1BBU1M6IG5vdGlmaWNhdGlvbnMuY3JlYXRlTm90aWZpY2F0aW9ucyBk
b2VzIG5vdCBleGlzdC4KK0RPTkUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRp
b25zL3Jlc291cmNlcy93b3JrZXItbm90aWZpY2F0aW9ucy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvcmVzb3VyY2VzL3dvcmtlci1ub3RpZmljYXRpb25z
LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL3Jlc291
cmNlcy93b3JrZXItbm90aWZpY2F0aW9ucy5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNiBA
QAorcG9zdE1lc3NhZ2UoIlRlc3Qgc3RhcnRlZC4iKTsKKworLy8gVHJ5IHRvIGdldCB0aGUgbm90
aWZpY2F0aW9ucyBvYmplY3QgZnJvbSBnbG9iYWwgY29udGV4dHMuCitpZiAobm90aWZpY2F0aW9u
cyAhPSB1bmRlZmluZWQpIHsKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzogbm90aWZpY2F0aW9ucyBv
YmplY3QgZXhpc3RzLiIpOworICAgIAorICAgIGlmICghbm90aWZpY2F0aW9ucy5jcmVhdGVIVE1M
Tm90aWZpY2F0aW9ucykgeworICAgICAgICBwb3N0TWVzc2FnZSgiUEFTUzogbm90aWZpY2F0aW9u
cy5jcmVhdGVIVE1MTm90aWZpY2F0aW9ucyBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICB9CisgICAg
CisgICAgaWYgKCFub3RpZmljYXRpb25zLmNyZWF0ZU5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAg
cG9zdE1lc3NhZ2UoIlBBU1M6IG5vdGlmaWNhdGlvbnMuY3JlYXRlTm90aWZpY2F0aW9ucyBkb2Vz
IG5vdCBleGlzdC4iKTsKKyAgICB9CisgICAgCisgICAgcG9zdE1lc3NhZ2UoIkRPTkUiKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30517</attachid>
            <date>2009-05-20 17:13:26 -0700</date>
            <delta_ts>2009-05-21 15:09:21 -0700</delta_ts>
            <desc>Notifications API for DOMWindow and WorkerContext</desc>
            <filename>WebKitPatch.diff</filename>
            <type>text/plain</type>
            <size>70467</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQzOTI1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDktMDUtMjAgIEpvaG4gR3Jl
Z2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkcyBFTkFCTEVfTk9USUZJQ0FUSU9OIGZsYWcgZm9yIHRoZSBi
dWlsZCBvZiBjdXN0b20gSlMgY29kZS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDA5LTA1LTE5ICBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gNDM5MjUp
CisrKyBKYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
Zwkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBFTkFCTEVfRE9NX1NUT1JBR0UgPSBF
TkFCTEVfRE9NX1NUT1JBR0U7CiBFTkFCTEVfR0VPTE9DQVRJT04gPSA7CiBFTkFCTEVfSUNPTkRB
VEFCQVNFID0gRU5BQkxFX0lDT05EQVRBQkFTRTsKIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VS
ID0gRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVI7CitFTkFCTEVfTk9USUZJQ0FUSU9OUyA9IDsK
IEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgPSBFTkFCTEVfT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TOwogRU5BQkxFX1NWRyA9IEVOQUJMRV9TVkc7CiBFTkFCTEVfU1ZHX0FOSU1BVElP
TiA9IEVOQUJMRV9TVkdfQU5JTUFUSU9OOwpAQCAtNDgsNCArNDksNCBAQCBFTkFCTEVfV09SS0VS
UyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxF
X1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVO
REVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQo
RU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9PRkZMSU5FX1dF
Ql9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChF
TkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5B
QkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdf
VVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVO
QUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8z
RF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFT
RSkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9J
Q09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX05PVElG
SUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZH
KSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxF
X1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJM
RV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA0MzkyNSkKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjEsNiArNDYxLDEwIEBACiAj
ZGVmaW5lIEVOQUJMRV9HRU9MT0NBVElPTiAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJM
RV9OT1RJRklDQVRJT05TKQorI2RlZmluZSBFTkFCTEVfTk9USUZJQ0FUSU9OUyAwCisjZW5kaWYK
KwogI2lmICFkZWZpbmVkKEVOQUJMRV9URVhUX0NBUkVUKQogI2RlZmluZSBFTkFCTEVfVEVYVF9D
QVJFVCAxCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA0MzkyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMDktMDUtMjAgIEpvaG4gR3JlZ2cgIDxq
b2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhbiAoZXhwZXJpbWVudGFsKSBIVE1MIGRlc2t0
b3AgQVBJLCBiZWluZyBwcm90b3R5cGVkIGluIENocm9taXVtLiAgSXQncyBwcm90ZWN0ZWQgYnkg
Y29tcGlsZS10aW1lIGZlYXR1cmUgZmxhZyBFTkFCTEVfTk9USUZJQ0FUSU9OUy4KKyAgICAgICAg
CisgICAgICAgIFRlc3Q6IGZhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWFjY2Vzc29y
LWRpc2FibGVkLmh0bWwKKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05V
bWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6bm90aWZpY2F0aW9ucyk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uc0N1c3RvbS5jcHA6IEFkZGVkLgorICAgICAg
ICAqIG5vdGlmaWNhdGlvbnM6IEFkZGVkLgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aDogQWRkZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsOiBBZGRl
ZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBhcmFtZXRlcnMuaDogQWRk
ZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Qcm92aWRlci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuaDogQWRkZWQuCisgICAgICAgICog
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmlkbDogQWRkZWQuCisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6Om5vdGlmaWNhdGlvbnMpOgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5pZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94
eTo6Z2V0Tm90aWZpY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVz
c2FnaW5nUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9iamVjdFByb3h5Lmg6CisK
IDIwMDktMDUtMjAgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQkocmV2aXNpb24gNDM5MjUpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJDb3Jl
KS9odG1sIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3RvciBcCiAgICAgJChXZWJDb3JlKS9sb2Fk
ZXIvYXBwY2FjaGUgXAorICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucyBcCiAgICAgJChXZWJD
b3JlKS9wYWdlIFwKICAgICAkKFdlYkNvcmUpL3BsdWdpbnMgXAogICAgICQoV2ViQ29yZSkvc3Rv
cmFnZSBcCkBAIC0xODMsNiArMTg0LDggQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgTm9kZUl0ZXJh
dG9yIFwKICAgICBOb2RlTGlzdCBcCiAgICAgTm90YXRpb24gXAorICAgIE5vdGlmaWNhdGlvbiBc
CisgICAgTm90aWZpY2F0aW9ucyBcCiAgICAgT3ZlcmZsb3dFdmVudCBcCiAgICAgUGx1Z2luIFwK
ICAgICBQbHVnaW5BcnJheSBcCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDQzOTI1KQorKysgV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQCB3ZWJjb3Jl
X2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZSBcCiAJ
LUkkKHNyY2RpcikvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZSBcCiAJLUkkKHNyY2RpcikvV2ViQ29y
ZS9sb2FkZXIvaWNvbiBcCisJLUkkKHNyY2RpcikvV2ViQ29yZS9ub3RpZmljYXRpb25zIFwKIAkt
SSQoc3JjZGlyKS9XZWJDb3JlL3BhZ2UgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24gXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvcGxhdGZvcm0gXApAQCAtMjE3LDYgKzIxOCw4
IEBAIElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9odG1sL1RleHRNZXRyaWNzLmlkbCBcCiAJ
V2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwgXAogCVdlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaWRsIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmlkbCBcCisJV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMu
aWRsIFwKIAlXZWJDb3JlL3BhZ2UvQmFySW5mby5pZGwgXAogCVdlYkNvcmUvcGFnZS9Db25zb2xl
LmlkbCBcCiAJV2ViQ29yZS9wYWdlL0Nvb3JkaW5hdGVzLmlkbCBcCkBAIC0yMzQ2LDYgKzIzNDks
MjQgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9HZW9s
b2NhdGlvblNlcnZpY2VHdGsuaAogZW5kaWYgIyBFTkQgRU5BQkxFX0dFT0xPQ0FUSU9OCiAKKyMg
LS0tLQorIyBOb3RpZmljYXRpb25zIHN1cHBvcnQKKyMgLS0tLQoraWYgRU5BQkxFX05PVElGSUNB
VElPTlMKK0ZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9OT1RJRklDQVRJT05T
PTEKKword2ViY29yZV9jcHBmbGFncyArPSBcCisJLURFTkFCTEVfTk9USUZJQ0FUSU9OUz0xCisK
K3dlYmNvcmVfc291cmNlcyArPSBcCisJV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5jcHAgXAorCVdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBcCisJV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuY3BwIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9ucy5oIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
UHJvdmlkZXIuaCBcCisJV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBhcmFtZXRl
cnMuaAorCitlbmRpZiAjIEVORCBFTkFCTEVfTk9USUZJQ0FUSU9OUwogCiAjIC0tLS0KICMgU1ZH
IFN1cHBvcnQKQEAgLTMyMTAsNCArMzIzMSwzIEBAIENMRUFORklMRVMgKz0gXAogCVdlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmx1dC5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUkdCQ29sb3IubHV0LmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0
QmFzZS5sdXQuaAotCkluZGV4OiBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcJKHJldmlzaW9uIDQzOTI1KQorKysgV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBA
QCBFTkFCTEVfRE9NX1NUT1JBR0UgPSBFTkFCTEVfRE9NX1NUT1JBR0U7CiBFTkFCTEVfR0VPTE9D
QVRJT04gPSA7CiBFTkFCTEVfSUNPTkRBVEFCQVNFID0gRU5BQkxFX0lDT05EQVRBQkFTRTsKIEVO
QUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVI7CitF
TkFCTEVfTk9USUZJQ0FUSU9OUyA9IDsKIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMg
PSBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TOwogRU5BQkxFX1NWRyA9IEVOQUJMRV9T
Vkc7CiBFTkFCTEVfU1ZHX0FOSU1BVElPTiA9IEVOQUJMRV9TVkdfQU5JTUFUSU9OOwpAQCAtNDgs
NCArNDksNCBAQCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRI
ID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9E
RUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9HRU9M
T0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVH
R0VSKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1NWRykgJChF
TkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdf
RE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJ
R05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV01M
KSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFU
VVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVT
U0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxF
X0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRf
REVCVUdHRVIpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJM
RV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVf
U1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0Up
ICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxF
X1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0MzkyNSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MDQsNiArNjA0LDE0IEBA
CiAJCTMxQzBGRjRDMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzBGRjQ2
MEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCAqLzsgfTsKIAkJ
MzFDMEZGNEQwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzBGRjQ3MEU0
Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQubW0gKi87IH07CiAJCTMx
QzBGRjRFMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnRJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDMEZG
NDgwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmgg
Ki87IH07CisJCTMzM0Y3MDUyMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25zLmlkbCBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzRjcwNEEw
RkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbnMuaWRsICovOyB9OworCQkzMzNGNzA1MzBG
QjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNGNzA0QjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90
aWZpY2F0aW9ucy5jcHAgKi87IH07CisJCTMzM0Y3MDU0MEZCNDlDQTIwMDhFMTJBNiAvKiBOb3Rp
ZmljYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMzNGNzA0QzBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9ucy5oICovOyB9OworCQkz
MzNGNzA1NTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uUGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzRjcwNEQwRkI0OUNB
MjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKKwkJMzMzRjcwNTYw
RkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzM0Y3MDRFMEZCNDlDQTIwMDhFMTJBNiAvKiBO
b3RpZmljYXRpb24uaWRsICovOyB9OworCQkzMzNGNzA1NzBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90
aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi87IH07CisJCTMz
M0Y3MDU4MEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzRjcwNTAwRkI0OUNBMjAwOEUxMkE2
IC8qIE5vdGlmaWNhdGlvbi5jcHAgKi87IH07CisJCTMzM0Y3MDU5MEZCNDlDQTIwMDhFMTJBNiAv
KiBOb3RpZmljYXRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzMzRjcwNTEwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvblBy
b3ZpZGVyLmggKi87IH07CiAJCTM3MUY0RjQwMEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjRGM0Uw
RDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzcxRjRGNDEwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnRE
YXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
MUY0RjNGMEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5jcHAgKi87IH07CiAJCTM3MUY0RkZD
MEQyNUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjRGRkEwRDI1RTdGMzAwRUNFMEQ1IC8q
IFNlZ21lbnRlZEZvbnREYXRhLmggKi87IH07CkBAIC01NTMzLDYgKzU1NDEsMTQgQEAKIAkJMzFD
MEZGNDYwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFDMEZGNDcwRTRDRUZERDAwN0Q2RkU1IC8q
IERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzFDMEZGNDgwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5z
aXRpb25FdmVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERP
TVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMzM0Y3MDRBMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25zLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBOb3RpZmljYXRpb25zLmlkbDsgcGF0aCA9IG5vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzM0Y3
MDRCMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5vdGlmaWNhdGlvbnMuY3BwOyBwYXRoID0gbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMz
RjcwNEMwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0aW9ucy5oOyBwYXRoID0gbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzM0Y3MDREMEZC
NDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvblBhcmFtZXRlcnMuaDsgcGF0aCA9IG5vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMzNGNzA0RTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBOb3RpZmljYXRpb24uaWRsOyBwYXRoID0gbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA0
RjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5oOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMzRjcwNTAwRkI0OUNBMjAw
OEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBOb3RpZmljYXRpb24uY3BwOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA1MTBGQjQ5Q0EyMDA4
RTEyQTYgLyogTm90aWZpY2F0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTm90aWZpY2F0aW9uUHJvdmlkZXIuaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRjRG
M0UwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZvbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUY0
RjNGMEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGb250RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTM3MUY0RkZBMEQyNUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWdtZW50ZWRGb250RGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQxNyw2ICs5NDMzLDcgQEAKIAkJCQk5M0VFQzFFQzA5
QzI4Nzc3MDBDNTE1RDEgLyogaHRtbCAqLywKIAkJCQkxQzgxQjk0RDBFOTczMkQ5MDAyNjZFMDcg
LyogaW5zcGVjdG9yICovLAogCQkJCUJDQjE2QkZCMDk3OUMzODcwMDQ2Nzc0MSAvKiBsb2FkZXIg
Ki8sCisJCQkJMzMzRjcwM0QwRkI0OUMxNjAwOEUxMkE2IC8qIG5vdGlmaWNhdGlvbnMgKi8sCiAJ
CQkJNjVCRjAyMTgwOTc0ODA2MzAwQzQzMTk2IC8qIHBhZ2UgKi8sCiAJCQkJQkNGMUE1QkEwOTc4
MzIwOTAwNjFBMTIzIC8qIHBsYXRmb3JtICovLAogCQkJCTVEQ0Y4MzY5MEQ1OTE1NzgwMDk1M0JD
NiAvKiBwbHVnaW5zICovLApAQCAtOTg4NSw2ICs5OTAyLDIxIEBACiAJCQluYW1lID0gYW5pbWF0
aW9uOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMzMzRjcwM0QwRkI0OUMx
NjAwOEUxMkE2IC8qIG5vdGlmaWNhdGlvbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCTMzM0Y3MDRBMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRp
b25zLmlkbCAqLywKKwkJCQkzMzNGNzA0QjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9u
cy5jcHAgKi8sCisJCQkJMzMzRjcwNEMwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbnMu
aCAqLywKKwkJCQkzMzNGNzA0RDBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uUGFyYW1l
dGVycy5oICovLAorCQkJCTMzM0Y3MDRFMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24u
aWRsICovLAorCQkJCTMzM0Y3MDRGMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaCAq
LywKKwkJCQkzMzNGNzA1MDBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmNwcCAqLywK
KwkJCQkzMzNGNzA1MTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uUHJvdmlkZXIuaCAq
LywKKwkJCSk7CisJCQluYW1lID0gbm90aWZpY2F0aW9uczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCTQ0OTE5NTkwMEZCRTE3NUIwMEQ5RjgyNCAvKiBFeHBvcnRzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAJKHJldmlz
aW9uIDQzOTI1KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4IEBACiAjaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5j
bHVkZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9ucy5oIgogI2luY2x1
ZGUgIlY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJWOFdvcmtlckNv
bnRleHRPYmplY3RFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyLmgiCkBAIC0yNTIs
NiArMjU0LDE0IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXb3JrZXJDb250ZXh0RXhlY3UKICAg
ICAgICAgICAgIGNhc2UgVjhDbGFzc0luZGV4OjpXT1JLRVJOQVZJR0FUT1I6CiAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8V29ya2VyTmF2aWdhdG9yKj4oaW1wbCktPnJlZigpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICAgICAg
Y2FzZSBWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTlM6CisgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8Tm90aWZpY2F0aW9ucyo+KGltcGwpLT5yZWYoKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT046CisgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uKj4oaW1wbCktPnJlZigpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgIEFTU0VSVChmYWxzZSk7CiAgICAgICAgICAgICB9CkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA0Mzky
NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjQ4LDQgKzY0OCwxMyBAQCBDQUxMQkFDS19GVU5DX0RFQ0woRE9N
V2luZG93Q2xlYXJJbnRlcnZhCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAorI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQorQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd05vdGlmaWNh
dGlvbnMpCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLkRPTVdpbmRvdy5ub3RpZmljYXRpb25zLl9n
ZXQiKTsKKyAgICBET01XaW5kb3cqIGltcCA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PERPTVdp
bmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGluZm8uSG9sZGVyKCkpOworICAgIHJldHVy
biBWOFByb3h5OjpUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OUywgaW1wLT5u
b3RpZmljYXRpb25zKCkpOworfQorI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uc0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQorCisjaW5jbHVkZSAidjhfYmluZGluZy5oIgorI2luY2x1ZGUgInY4X2N1
c3RvbS5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9ucy5o
IgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHkuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEN1c3Rv
bUV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0FDQ0VTU09SX0dFVFRFUihOb3RpZmljYXRpb25PbmRpc3BsYXkpCit7Cisg
ICAgSU5DX1NUQVRTKEwiRE9NLk5vdGlmaWNhdGlvbi5vbmRpc3BsYXkuX2dldCIpOworICAgIE5v
dGlmaWNhdGlvbiogbm90aWYgPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxOb3RpZmljYXRpb24+
KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBpbmZvLkhvbGRlcigpKTsKKyAgICBpZiAobm90
aWYtPm9uZGlzcGxheSgpKSB7CisgICAgICAgIFY4RXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBz
dGF0aWNfY2FzdDxWOEV2ZW50TGlzdGVuZXIqPihub3RpZi0+b25kaXNwbGF5KCkpOworICAgICAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gdjhMaXN0ZW5lciA9IGxpc3RlbmVyLT5nZXRMaXN0ZW5l
ck9iamVjdCgpOworICAgICAgICByZXR1cm4gdjhMaXN0ZW5lcjsKKyAgICB9CisgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKK30KKworQUNDRVNTT1JfU0VUVEVSKE5vdGlmaWNhdGlvbk9uZGlz
cGxheSkgCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLk5vdGlmaWNhdGlvbi5vbmRpc3BsYXkuX3Nl
dCIpOworICAgIE5vdGlmaWNhdGlvbiogbm90aWYgPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxO
b3RpZmljYXRpb24+KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBpbmZvLkhvbGRlcigpKTsK
KyAgICBWOEV2ZW50TGlzdGVuZXIqIG9sZExpc3RlbmVyID0gc3RhdGljX2Nhc3Q8VjhFdmVudExp
c3RlbmVyKj4obm90aWYtPm9uZGlzcGxheSgpKTsKKyAgICBpZiAodmFsdWUtPklzTnVsbCgpKSB7
CisgICAgICAgIGlmIChvbGRMaXN0ZW5lcikgeworICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IG9sZFY4TGlzdGVuZXIgPSBvbGRMaXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsK
KyAgICAgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgb2xkVjhM
aXN0ZW5lciwgVjhDdXN0b206OmtOb3RpZmljYXRpb25SZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBDbGVhciB0aGUgbGlzdGVuZXIKKyAgICAgICAgbm90aWYtPnNl
dE9uZGlzcGxheSgwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gbGlzdGVuZXI7CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBu
b3RpZi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAgICAgICAgaWYgKGNvbnRleHQt
PmlzV29ya2VyQ29udGV4dCgpKQorICAgICAgICAgICAgICAgIGxpc3RlbmVyID0gc3RhdGljX2Nh
c3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpLT5zY3JpcHQoKS0+cHJveHkoKS0+ZmluZE9yQ3Jl
YXRlRXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpLCBmYWxz
ZSwgZmFsc2UpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxpc3RlbmVyID0g
VjhQcm94eTo6cmV0cmlldmUoY29udGV4dCktPkZpbmRPckNyZWF0ZVY4RXZlbnRMaXN0ZW5lcih2
ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpLCBmYWxzZSk7CisKKyAgICAgICAgaWYg
KGxpc3RlbmVyKSB7CisgICAgICAgICAgICBpZiAob2xkTGlzdGVuZXIpIHsKKyAgICAgICAgICAg
ICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0ZW5lciA9IG9sZExpc3RlbmVyLT5n
ZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgICAgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVu
Y3koaW5mby5Ib2xkZXIoKSwgb2xkVjhMaXN0ZW5lciwgVjhDdXN0b206OmtOb3RpZmljYXRpb25S
ZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICBub3Rp
Zi0+c2V0T25kaXNwbGF5KGxpc3RlbmVyKTsKKyAgICAgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVu
ZGVuY3koaW5mby5Ib2xkZXIoKSwgdmFsdWUsIFY4Q3VzdG9tOjprTm90aWZpY2F0aW9uUmVxdWVz
dENhY2hlSW5kZXgpOworICAgICAgICB9CisgICAgfQorfQorCitBQ0NFU1NPUl9HRVRURVIoTm90
aWZpY2F0aW9uT25lcnJvcikKK3sKKyAgICBJTkNfU1RBVFMoTCJET00uTm90aWZpY2F0aW9uLm9u
ZXJyb3IuX2dldCIpOworICAgIE5vdGlmaWNhdGlvbiogbm90aWYgPSBWOFByb3h5OjpUb05hdGl2
ZU9iamVjdDxOb3RpZmljYXRpb24+KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBpbmZvLkhv
bGRlcigpKTsKKyAgICBpZiAobm90aWYtPm9uZXJyb3IoKSkgeworICAgICAgICBWOEV2ZW50TGlz
dGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8VjhFdmVudExpc3RlbmVyKj4obm90aWYtPm9u
ZXJyb3IoKSk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB2OExpc3RlbmVyID0gbGlz
dGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgIHJldHVybiB2OExpc3RlbmVyOwor
ICAgIH0KKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCitBQ0NFU1NPUl9TRVRURVIo
Tm90aWZpY2F0aW9uT25lcnJvcikKK3sKKyAgICBJTkNfU1RBVFMoTCJET00uTm90aWZpY2F0aW9u
Lm9uZXJyb3IuX3NldCIpOworICAgIE5vdGlmaWNhdGlvbiogbm90aWYgPSBWOFByb3h5OjpUb05h
dGl2ZU9iamVjdDxOb3RpZmljYXRpb24+KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBpbmZv
LkhvbGRlcigpKTsKKyAgICBWOEV2ZW50TGlzdGVuZXIqIG9sZExpc3RlbmVyID0gc3RhdGljX2Nh
c3Q8VjhFdmVudExpc3RlbmVyKj4obm90aWYtPm9uZXJyb3IoKSk7CisgICAgaWYgKHZhbHVlLT5J
c051bGwoKSkgeworICAgICAgICBpZiAob2xkTGlzdGVuZXIpIHsKKyAgICAgICAgICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBvbGRWOExpc3RlbmVyID0gb2xkTGlzdGVuZXItPmdldExpc3RlbmVy
T2JqZWN0KCk7CisgICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVy
KCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjprTm90aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5k
ZXgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2xlYXIgdGhlIGxpc3RlbmVyCisgICAgICAg
IG5vdGlmLT5zZXRPbmVycm9yKDApOworICAgIH0gZWxzZSB7CisgICAgICAgIFJlZlB0cjxFdmVu
dExpc3RlbmVyPiBsaXN0ZW5lcjsKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCA9IG5vdGlmLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgICAgICAgICBpZiAo
Y29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpCisgICAgICAgICAgICAgICAgbGlzdGVuZXIgPSBz
dGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oY29udGV4dCktPnNjcmlwdCgpLT5wcm94eSgpLT5m
aW5kT3JDcmVhdGVFdmVudExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1
ZSksIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGlz
dGVuZXIgPSBWOFByb3h5OjpyZXRyaWV2ZShjb250ZXh0KS0+RmluZE9yQ3JlYXRlVjhFdmVudExp
c3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSksIGZhbHNlKTsKKyAgICAg
ICAgaWYgKGxpc3RlbmVyKSB7CisgICAgICAgICAgICBpZiAob2xkTGlzdGVuZXIpIHsKKyAgICAg
ICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0ZW5lciA9CisgICAgICAg
ICAgICAgICAgICAgIG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgICAg
ICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgb2xkVjhMaXN0ZW5l
ciwgVjhDdXN0b206OmtOb3RpZmljYXRpb25SZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIG5vdGlmLT5zZXRPbmVycm9yKGxpc3RlbmVyKTsKKyAgICAgICAg
ICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgdmFsdWUsIFY4Q3VzdG9t
OjprTm90aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICB9CisgICAgfQorfQor
CitBQ0NFU1NPUl9HRVRURVIoTm90aWZpY2F0aW9uT25jbG9zZSkgCit7CisgICAgSU5DX1NUQVRT
KEwiRE9NLk5vdGlmaWNhdGlvbi5vbmNsb3NlLl9nZXQiKTsKKyAgICBOb3RpZmljYXRpb24qIG5v
dGlmID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0aW9uPihWOENsYXNzSW5kZXg6
Ok5PVElGSUNBVElPTiwgaW5mby5Ib2xkZXIoKSk7CisgICAgaWYgKG5vdGlmLT5vbmNsb3NlKCkp
IHsKKyAgICAgICAgVjhFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4RXZl
bnRMaXN0ZW5lcio+KG5vdGlmLT5vbmNsb3NlKCkpOworICAgICAgICB2ODo6TG9jYWw8djg6Ok9i
amVjdD4gdjhMaXN0ZW5lciA9IGxpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAg
ICByZXR1cm4gdjhMaXN0ZW5lcjsKKyAgICB9CisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
K30KKworQUNDRVNTT1JfU0VUVEVSKE5vdGlmaWNhdGlvbk9uY2xvc2UpCit7CisgICAgSU5DX1NU
QVRTKEwiRE9NLk5vdGlmaWNhdGlvbi5vbmVycm9yLl9zZXQiKTsKKyAgICBOb3RpZmljYXRpb24q
IG5vdGlmID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0aW9uPihWOENsYXNzSW5k
ZXg6Ok5PVElGSUNBVElPTiwgaW5mby5Ib2xkZXIoKSk7CisgICAgVjhFdmVudExpc3RlbmVyKiBv
bGRMaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4RXZlbnRMaXN0ZW5lcio+KG5vdGlmLT5vbmNsb3Nl
KCkpOworICAgIGlmICh2YWx1ZS0+SXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKG9sZExpc3RlbmVy
KSB7CisgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0ZW5lciA9IG9s
ZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgICAgICAgcmVtb3ZlSGlkZGVu
RGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCBvbGRWOExpc3RlbmVyLCBWOEN1c3RvbTo6a05vdGlm
aWNhdGlvblJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENsZWFy
IHRoZSBsaXN0ZW5lcgorICAgICAgICBub3RpZi0+c2V0T25jbG9zZSgwKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXI7CisgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBub3RpZi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKQorICAgICAg
ICAgICAgICAgIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQp
LT5zY3JpcHQoKS0+cHJveHkoKS0+ZmluZE9yQ3JlYXRlRXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8
djg6Ok9iamVjdD46OkNhc3QodmFsdWUpLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGxpc3RlbmVyID0gVjhQcm94eTo6cmV0cmlldmUoY29udGV4dCkt
PkZpbmRPckNyZWF0ZVY4RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3Qo
dmFsdWUpLCBmYWxzZSk7CisgICAgICAgIGlmIChsaXN0ZW5lcikgeworICAgICAgICAgICAgaWYg
KG9sZExpc3RlbmVyKSB7CisgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9s
ZFY4TGlzdGVuZXIgPQorICAgICAgICAgICAgICAgICAgICBvbGRMaXN0ZW5lci0+Z2V0TGlzdGVu
ZXJPYmplY3QoKTsKKyAgICAgICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8u
SG9sZGVyKCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjprTm90aWZpY2F0aW9uUmVxdWVzdENh
Y2hlSW5kZXgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBub3RpZi0+c2V0T25jbG9z
ZShsaXN0ZW5lcik7CisgICAgICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9s
ZGVyKCksIHZhbHVlLCBWOEN1c3RvbTo6a05vdGlmaWNhdGlvblJlcXVlc3RDYWNoZUluZGV4KTsK
KyAgICAgICAgfQorICAgIH0KK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKE5vdGlmaWNhdGlvbnND
cmVhdGVIVE1MTm90aWZpY2F0aW9uKQoreworICAgIElOQ19TVEFUUyhMIkRPTS5Ob3RpZmljYXRp
b25zLkNyZWF0ZUhUTUxOb3RpZmljYXRpb24oKSIpOworICAgIE5vdGlmaWNhdGlvbnMqIG5vdGlm
SW50ZXJmYWNlID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0aW9ucz4oVjhDbGFz
c0luZGV4OjpOT1RJRklDQVRJT05TLCBhcmdzLkhvbGRlcigpKTsKKyAgCisgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgU3RyaW5nIHVybCA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsK
KyAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZiA9IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKHVy
bCwgbm90aWZJbnRlcmZhY2UtPmNvbnRleHQoKSwgZWMsIG5vdGlmSW50ZXJmYWNlLT5wcm92aWRl
cigpKTsKKworICAgIGlmIChlYykgeworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7Cisg
ICAgfQorCisgICAgcmV0dXJuIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6VG9WOE9iamVj
dChWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwgbm90aWYuZ2V0KCkpOworfQorCitDQUxMQkFD
S19GVU5DX0RFQ0woTm90aWZpY2F0aW9uc0NyZWF0ZU5vdGlmaWNhdGlvbikKK3sKKyAgICBJTkNf
U1RBVFMoTCJET00uTm90aWZpY2F0aW9ucy5DcmVhdGVOb3RpZmljYXRpb24oKSIpOworICAgIE5v
dGlmaWNhdGlvbnMqIG5vdGlmSW50ZXJmYWNlID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8Tm90
aWZpY2F0aW9ucz4oVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT05TLCBhcmdzLkhvbGRlcigpKTsK
KyAgICAKKyAgICBOb3RpZmljYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnModG9XZWJDb3JlU3Ry
aW5nKGFyZ3NbMF0pLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1sxXSksIHRvV2ViQ29yZVN0cmluZyhh
cmdzWzJdKSk7CisgICAgCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPE5v
dGlmaWNhdGlvbj4gbm90aWYgPSBOb3RpZmljYXRpb246OmNyZWF0ZShwYXJhbWV0ZXJzLCBub3Rp
ZkludGVyZmFjZS0+Y29udGV4dCgpLCBlYywgbm90aWZJbnRlcmZhY2UtPnByb3ZpZGVyKCkpOwor
CisgICAgaWYgKGVjKSB7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKKyAgICB9CisK
KyAgICByZXR1cm4gV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpUb1Y4T2JqZWN0KFY4Q2xh
c3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBub3RpZi5nZXQoKSk7Cit9CisKK0NBTExCQUNLX0ZVTkNf
REVDTChOb3RpZmljYXRpb25TaG93KSAKK3sKKyAgICBJTkNfU1RBVFMoTCJET00uTm90aWZpY2F0
aW9uLlNob3coKSIpOworICAgIE5vdGlmaWNhdGlvbiogbm90aWYgPSBWOFByb3h5OjpUb05hdGl2
ZU9iamVjdDxOb3RpZmljYXRpb24+KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBhcmdzLkhv
bGRlcigpKTsKKyAgICBub3RpZi0+c2hvdygpOworCisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKE5vdGlmaWNhdGlvbkNhbmNlbCkgCit7CisgICAg
SU5DX1NUQVRTKEwiRE9NLk5vdGlmaWNhdGlvbi5DYW5jZWwoKSIpOworICAgIE5vdGlmaWNhdGlv
biogbm90aWYgPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxOb3RpZmljYXRpb24+KFY4Q2xhc3NJ
bmRleDo6Tk9USUZJQ0FUSU9OLCBhcmdzLkhvbGRlcigpKTsKKyAgICBub3RpZi0+Y2FuY2VsKCk7
CisKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCShy
ZXZpc2lvbiA0MzkyNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDE1IEBAIEFDQ0VTU09S
X1NFVFRFUihXb3JrZXJDb250ZXh0T25tZXNzYWdlKQogICAgIH0KIH0KIAorI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQorQUNDRVNTT1JfR0VUVEVSKFdvcmtlckNvbnRleHROb3RpZmljYXRpb25z
KQoreworICAgIElOQ19TVEFUUyhMIkRPTS5Xb3JrZXJDb250ZXh0Lm5vdGlmaWNhdGlvbnMuX2dl
dCIpOworICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOFByb3h5OjpUb05hdGl2
ZU9iamVjdDxXb3JrZXJDb250ZXh0PihWOENsYXNzSW5kZXg6OldPUktFUkNPTlRFWFQsIGluZm8u
SG9sZGVyKCkpOworICAgIHJldHVybiBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OlRvVjhP
YmplY3QoVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT05TLCB3b3JrZXJDb250ZXh0LT5ub3RpZmlj
YXRpb25zKCkpOworfQorI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQorCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gU2V0VGltZW91dE9ySW50ZXJ2YWwoY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncywgYm9vbCBzaW5nbGVTaG90KQogewogICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRl
eHQgPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxXb3JrZXJDb250ZXh0PihWOENsYXNzSW5kZXg6
OldPUktFUkNPTlRFWFQsIGFyZ3MuSG9sZGVyKCkpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJ
KHJldmlzaW9uIDQzOTI1KQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEzMyw2ICsxMzMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBl
eGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUqLCBjb25zdCBTdHJpbmcmKSB7IH0KICNlbmRpZgog
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgdmlydHVhbCBOb3RpZmljYXRpb25Qcm92
aWRlciogbm90aWZpY2F0aW9uUHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CisjZW5kaWYK
KwogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVD
aG9vc2VyPikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0
IE5vZGUqKSB7IH0KSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQorCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uUGFyYW1ldGVycy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYg
dXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywg
Tm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNv
bnRleHQsIHRoaXMpCisgICAgLCBtX0hUTUwodHJ1ZSkKKyAgICAsIG1fcHJvdmlkZXIocHJvdmlk
ZXIpCisgICAgLCBtX2lkKDApCit7CisgICAgbV9ub3RpZmljYXRpb25VUkwgPSBjb250ZXh0LT5j
b21wbGV0ZVVSTCh1cmwpOworICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8ICFtX25vdGlmaWNhdGlv
blVSTC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorfQorCitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBOb3RpZmlj
YXRpb25QYXJhbWV0ZXJzJiBmaWVsZHMsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIpCisgICAg
OiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1fSFRNTChmYWxzZSkKKyAg
ICAsIG1fZmllbGRzKGZpZWxkcykKKyAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCisgICAgLCBt
X2lkKDApCit7CisgICAgS1VSTCBpY29uID0gY29udGV4dC0+Y29tcGxldGVVUkwoZmllbGRzLmlj
b24oKSk7CisgICAgaWYgKCFpY29uLmlzRW1wdHkoKSAmJiAhaWNvbi5pc1ZhbGlkKCkpIHsKKyAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCitOb3Rp
ZmljYXRpb246On5Ob3RpZmljYXRpb24oKSAKK3sKK30KKwordm9pZCBOb3RpZmljYXRpb246OnNo
b3coKSAKK3sKKyAgICBpZiAobV9IVE1MKQorICAgICAgICBtX2lkID0gbV9wcm92aWRlci0+c2hv
dyhtX25vdGlmaWNhdGlvblVSTCwgdGhpcyk7CisgICAgZWxzZQorICAgICAgICBtX2lkID0gbV9w
cm92aWRlci0+c2hvdyhtX2ZpZWxkcy5pY29uKCksIG1fZmllbGRzLnRpdGxlKCksIG1fZmllbGRz
LmJvZHkoKSwgdGhpcyk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpjYW5jZWwoKSAKK3sKKyAg
ICBtX3Byb3ZpZGVyLT5jYW5jZWwobV9pZCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaXNw
YXRjaERpc3BsYXlFdmVudCgpIAoreyAgIAorICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAgICBpZiAo
bV9vbkRpc3BsYXlMaXN0ZW5lcikgeworICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwor
ICAgICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbkRpc3Bs
YXlMaXN0ZW5lci0+aGFuZGxlRXZlbnQoZXZlbnQuZ2V0KCksIHRydWUpOworICAgIH0KKworICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQucmVsZWFzZSgp
LCBlYyk7CisgICAgQVNTRVJUKCFlYyk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRj
aEVycm9yRXZlbnQoY29uc3QgU3RyaW5nJi8qIG1lc3NhZ2UgKi8pCit7ICAKKyAgICBSZWZQdHI8
RXZlbnQ+IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFs
c2UsIHRydWUpOworICAgIGlmIChtX29uRXJyb3JMaXN0ZW5lcikgeworICAgICAgICBldmVudC0+
c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsK
KyAgICAgICAgbV9vbkVycm9yTGlzdGVuZXItPmhhbmRsZUV2ZW50KGV2ZW50LmdldCgpLCB0cnVl
KTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50
KGV2ZW50LnJlbGVhc2UoKSwgZWMpOworICAgIEFTU0VSVCghZWMpOworfQorCit2b2lkIE5vdGlm
aWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KGJvb2wgLyogeHBsaWNpdCAqLykgCit7ICAgCisg
ICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsb3Nl
RXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAgICBpZiAobV9vbkNsb3NlTGlzdGVuZXIpIHsKKyAgICAg
ICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJn
ZXQodGhpcyk7CisgICAgICAgIG1fb25DbG9zZUxpc3RlbmVyLT5oYW5kbGVFdmVudChldmVudC5n
ZXQoKSwgdHJ1ZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlz
cGF0Y2hFdmVudChldmVudC5yZWxlYXNlKCksIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKK30KKwor
dm9pZCBOb3RpZmljYXRpb246OmRpc3BsYXkoKQoreworICAgIGRpc3BhdGNoRGlzcGxheUV2ZW50
KCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjplcnJvcihjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkKK3sKKyAgICBkaXNwYXRjaEVycm9yRXZlbnQoZXJyb3JNZXNzYWdlKTsKK30KKwordm9p
ZCBOb3RpZmljYXRpb246OmNsb3NlKGJvb2wgeHBsaWNpdCkKK3sKKyAgICBkaXNwYXRjaENsb3Nl
RXZlbnQoeHBsaWNpdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShOT1RJRklDQVRJT05TKQpJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5vdGlmaWNhdGlvbl9oICAK
KyNkZWZpbmUgTm90aWZpY2F0aW9uX2gKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgor
I2luY2x1ZGUgIkF0b21pY1N0cmluZ0hhc2guaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1
ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0
aW9uUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5j
bHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFdvcmtl
ckNvbnRleHQ7CisKKyAgICBjbGFzcyBOb3RpZmljYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxO
b3RpZmljYXRpb24+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXQg
eyAKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYywgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKHVybCwgY29udGV4dCwgZWMsIHByb3ZpZGVy
KSk7IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29u
c3QgTm90aWZpY2F0aW9uUGFyYW1ldGVycyYgZmllbGRzLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3Zp
ZGVyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKGZpZWxkcywgY29udGV4dCwg
ZWMsIHByb3ZpZGVyKSk7IH0KKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlv
bigpOworCisgICAgICAgIHZvaWQgc2hvdygpOworICAgICAgICB2b2lkIGNhbmNlbCgpOworICAg
IAorICAgICAgICBFdmVudExpc3RlbmVyKiBvbmRpc3BsYXkoKSBjb25zdCB7IHJldHVybiBtX29u
RGlzcGxheUxpc3RlbmVyLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25kaXNwbGF5KFBhc3NS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uRGlzcGxheUxpc3RlbmVy
ID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVudExpc3RlbmVyKiBvbmVycm9yKCkgY29u
c3QgeyByZXR1cm4gbV9vbkVycm9yTGlzdGVuZXIuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRP
bmVycm9yKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uRXJy
b3JMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25j
bG9zZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25DbG9zZUxpc3RlbmVyLmdldCgpOyB9CisgICAgICAg
IHZvaWQgc2V0T25jbG9zZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIp
IHsgbV9vbkNsb3NlTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9CisgICAgCisgICAgICAgIHVz
aW5nIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPjo6cmVmOworICAgICAgICB1c2luZyBSZWZDb3Vu
dGVkPE5vdGlmaWNhdGlvbj46OmRlcmVmOworICAgIAorICAgICAgICAvLyBDYWxsYmFjayBtZXRo
b2RzIGZvciB0aGUgcHJvdmlkZXIKKyAgICAgICAgdm9pZCBkaXNwbGF5KCk7CisgICAgICAgIHZv
aWQgZXJyb3IoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworICAgICAgICB2b2lkIGNsb3Nl
KGJvb2wgeHBsaWNpdCk7CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAg
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wpIHt9CisgICAgICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYsIEV2ZW50
TGlzdGVuZXIqLCBib29sKSB7fQorICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
ICAKKyAgICBwcml2YXRlOgorICAgICAgICBOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB1cmws
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3Rp
ZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIpOworICAgICAgICBOb3RpZmljYXRpb24oY29uc3Qg
Tm90aWZpY2F0aW9uUGFyYW1ldGVycyYgZmllbGRzLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVy
KTsKKworICAgICAgICB2b2lkIGRpc3BhdGNoRGlzcGxheUV2ZW50KCk7CisgICAgICAgIHZvaWQg
ZGlzcGF0Y2hFcnJvckV2ZW50KGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lkIGRpc3BhdGNo
Q2xvc2VFdmVudChib29sKTsKKworICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgICAgICB2
aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAKKyAgICAgICAg
Ym9vbCBtX0hUTUw7CisgICAgICAgIEtVUkwgbV9ub3RpZmljYXRpb25VUkw7CisgICAgICAgIE5v
dGlmaWNhdGlvblBhcmFtZXRlcnMgbV9maWVsZHM7CisKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IG1fb25EaXNwbGF5TGlzdGVuZXI7CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVy
PiBtX29uRXJyb3JMaXN0ZW5lcjsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25D
bG9zZUxpc3RlbmVyOworCisgICAgICAgIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBtX3Byb3ZpZGVy
OworCisgICAgICAgIGludCBtX2lkOworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0
aW9uc19oCkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHRocmVhZHMgeworCisgICAgaW50ZXJmYWNlIFsK
KyAgICAgICAgQ29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OUworICAgIF0gTm90aWZpY2F0aW9uIHsK
KyAgICAgICAgW0N1c3RvbV0gdm9pZCBzaG93KCk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgY2Fu
Y2VsKCk7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kaXNwbGF5OworICAg
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOworICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbmNsb3NlOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5vdGlmaWNhdGlvblBhcmFtZXRlcnNfaAorI2RlZmlu
ZSBOb3RpZmljYXRpb25QYXJhbWV0ZXJzX2gKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBOb3RpZmljYXRpb25QYXJhbWV0ZXJz
IHsgCisgICAgcHVibGljOgorICAgICAgICBOb3RpZmljYXRpb25QYXJhbWV0ZXJzKCkge30KKyAg
ICAgICAgTm90aWZpY2F0aW9uUGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIGljb25VcmwsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSkgCisgICAgICAgICAgICA6IG1faWNv
bihpY29uVXJsKQorICAgICAgICAgICAgLCBtX3RpdGxlKHRpdGxlKQorICAgICAgICAgICAgLCBt
X2JvZHkoYm9keSkge30KKworICAgICAgICBTdHJpbmcgaWNvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aWNvbjsgfQorICAgICAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9
CisgICAgICAgIFN0cmluZyBib2R5KCkgY29uc3QgeyByZXR1cm4gbV9ib2R5OyB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBTdHJpbmcgbV9pY29uOworICAgICAgICBTdHJpbmcgbV90aXRsZTsK
KyAgICAgICAgU3RyaW5nIG1fYm9keTsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2VuZGlmIC8vIE5vdGlmaWNh
dGlvblBhcmFtZXRlcnNfaApJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
blByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvblByb3ZpZGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uUHJvdmlkZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
Tm90aWZpY2F0aW9uUHJvdmlkZXJfaAorI2RlZmluZSBOb3RpZmljYXRpb25Qcm92aWRlcl9oCisK
KyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAg
Y2xhc3MgU3RyaW5nOworICAgIGNsYXNzIE5vdGlmaWNhdGlvbjsKKworICAgIGNsYXNzIE5vdGlm
aWNhdGlvblByb3ZpZGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfk5vdGlmaWNh
dGlvblByb3ZpZGVyKCkge30KKworICAgICAgICB2aXJ0dWFsIGludCBzaG93KGNvbnN0IFN0cmlu
ZyYgVVJMLCBOb3RpZmljYXRpb24qIG9iamVjdCkgPSAwOworCisgICAgICAgIHZpcnR1YWwgaW50
IHNob3coY29uc3QgU3RyaW5nJiBpY29uVXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBT
dHJpbmcmIGJvZHksIE5vdGlmaWNhdGlvbiogb2JqZWN0KSA9IDA7CisKKyAgICAgICAgdmlydHVh
bCB2b2lkIGNhbmNlbChpbnQgaGFuZGxlKSA9IDA7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBO
b3RpZmljYXRpb25Qcm92aWRlcl9oCkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb25z
LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOb3RpZmljYXRpb25zOjpOb3RpZmljYXRpb25zKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92
aWRlcikgCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQorICAgICwgbV9ub3RpZmljYXRpb25Qcm92aWRl
cihwcm92aWRlcikge30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKE5PVElGSUNBVElPTlMpCkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25z
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRpb25zX2gKKyNk
ZWZpbmUgTm90aWZpY2F0aW9uc19oCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKKyNpbmNs
dWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCisgICAgY2xh
c3MgTm90aWZpY2F0aW9ucyA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbnM+LCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0IHsgCisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxOb3RpZmljYXRpb25zPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
Tm90aWZpY2F0aW9ucyhjb250ZXh0LCBwcm92aWRlcikpOyB9CisgICAgICAgIAorICAgICAgICBQ
YXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlSFRNTE5vdGlmaWNhdGlvbihjb25zdCBTdHJp
bmcmIFVSSSwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBOb3RpZmljYXRpb246OmNyZWF0ZShLVVJMKFVSSSksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgZWMsIG1fbm90aWZpY2F0aW9uUHJvdmlkZXIpOworICAgICAgICB9CisgICAgICAgIFBhc3NS
ZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uUGFyYW1l
dGVycyBwYXJhbWV0ZXJzLCBFeGNlcHRpb25Db2RlJiBlYykKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIE5vdGlmaWNhdGlvbjo6Y3JlYXRlKHBhcmFtZXRlcnMsIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgZWMsIG1fbm90aWZpY2F0aW9uUHJvdmlkZXIpOworICAgICAgICB9CisKKyAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQorICAgICAgICBOb3RpZmljYXRpb25Qcm92aWRlciog
cHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlvblByb3ZpZGVyOyB9CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBOb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBOb3RpZmljYXRpb25Qcm92aWRlciopOworCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICAgICAgTm90aWZpY2F0aW9uUHJvdmlk
ZXIqIG1fbm90aWZpY2F0aW9uUHJvdmlkZXI7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBOb3Rp
ZmljYXRpb25zX2gKSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5pZGwJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5pZGwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBpbnRl
cmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1OT1RJRklDQVRJT05TCisgICAgXSBOb3RpZmlj
YXRpb25zIHsKKyAgICAgICBbUmV0dXJuc05ld10gW0N1c3RvbV0gTm90aWZpY2F0aW9uIGNyZWF0
ZUhUTUxOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIHVybCk7CisgICAgICAgW1JldHVybnNOZXdd
IFtDdXN0b21dIE5vdGlmaWNhdGlvbiBjcmVhdGVOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIGlj
b25VcmwsIGluIERPTVN0cmluZyB0aXRsZSwgaW4gRE9NU3RyaW5nIGJvZHkpOworICAgIH07CisK
K30KSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiA0MzkyNSkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTEsNiArMzkxLDEzIEBAIGJvb2wgQ2hyb21lOjpzZXRD
dXJzb3IoUGxhdGZvcm1DdXJzb3JIYW4KICAgICByZXR1cm4gbV9jbGllbnQtPnNldEN1cnNvcihj
dXJzb3IpOwogfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitOb3RpZmljYXRpb25Qcm92
aWRlciogQ2hyb21lOjpub3RpZmljYXRpb25Qcm92aWRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fY2xpZW50LT5ub3RpZmljYXRpb25Qcm92aWRlcigpOworfQorI2VuZGlmCisKIC8vIC0tLS0t
LS0tCiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
Q2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5oCShyZXZpc2lvbiA0
MzkyNSkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiAr
NDQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFz
cyBQYWdlOwogICAgIGNsYXNzIFN0cmluZzsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAg
ICBjbGFzcyBOb3RpZmljYXRpb25Qcm92aWRlcjsKKyNlbmRpZgogCiAgICAgc3RydWN0IEZyYW1l
TG9hZFJlcXVlc3Q7CiAgICAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwpAQCAtMTI4LDYgKzEzMSwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZm9jdXNOU1ZpZXcoTlNWaWV3
Kik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICBOb3RpZmlj
YXRpb25Qcm92aWRlciogbm90aWZpY2F0aW9uUHJvdmlkZXIoKSBjb25zdDsgCisjZW5kaWYKKwog
ICAgIHByaXZhdGU6CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAgICAgQ2hyb21lQ2xpZW50
KiBtX2NsaWVudDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDQzOTI1KQorKysgV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgR3JhcGhpY3NMYXllcjsKICNlbmRpZgog
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJvdmlk
ZXI7CisjZW5kaWYKKwogICAgIGNsYXNzIENocm9tZUNsaWVudCB7CiAgICAgcHVibGljOgogICAg
ICAgICB2aXJ0dWFsIHZvaWQgY2hyb21lRGVzdHJveWVkKCkgPSAwOwpAQCAtMTQxLDYgKzE0NSwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkYXNoYm9hcmRS
ZWdpb25zQ2hhbmdlZCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAg
ICAgICAgdmlydHVhbCBOb3RpZmljYXRpb25Qcm92aWRlciogbm90aWZpY2F0aW9uUHJvdmlkZXIo
KSBjb25zdCA9IDA7CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVWaXNp
dGVkTGlua3MoKTsKIAogICAgICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjdXN0b21IaWdobGlnaHRS
ZWN0KE5vZGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgbGlu
ZVJlY3QpOwpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDQzOTI1KQorKysgV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDEwIEBACiAjaW5j
bHVkZSAiRE9NQXBwbGljYXRpb25DYWNoZS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKKyNpbmNsdWRlICJOb3RpZmljYXRpb25zLmgiCisjZW5kaWYKKwogdXNpbmcgc3Rk
OjptaW47CiB1c2luZyBzdGQ6Om1heDsKIApAQCAtNDQwLDYgKzQ0NCwxMCBAQCB2b2lkIERPTVdp
bmRvdzo6Y2xlYXIoKQogICAgICAgICBtX2FwcGxpY2F0aW9uQ2FjaGUtPmRpc2Nvbm5lY3RGcmFt
ZSgpOwogICAgIG1fYXBwbGljYXRpb25DYWNoZSA9IDA7CiAjZW5kaWYKKworI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQorICAgIG1fbm90aWZpY2F0aW9ucyA9IDA7CisjZW5kaWYKIH0KIAogU2Ny
ZWVuKiBET01XaW5kb3c6OnNjcmVlbigpIGNvbnN0CkBAIC01NzUsNiArNTgzLDI2IEBAIFN0b3Jh
Z2UqIERPTVdpbmRvdzo6bG9jYWxTdG9yYWdlKCkgY29uc3QKIH0KICNlbmRpZgogCisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCitOb3RpZmljYXRpb25zKiBET01XaW5kb3c6Om5vdGlmaWNhdGlv
bnMoKSBjb25zdAoreworICAgIGlmIChtX25vdGlmaWNhdGlvbnMpCisgICAgICAgIHJldHVybiBt
X25vdGlmaWNhdGlvbnMuZ2V0KCk7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5k
b2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiAwOworICAgIAor
ICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBtX25vdGlmaWNhdGlvbnMgPSBOb3RpZmljYXRpb25zOjpjcmVh
dGUoZG9jdW1lbnQsIHBhZ2UtPmNocm9tZSgpLT5ub3RpZmljYXRpb25Qcm92aWRlcigpKTsgICAg
CisgICAgICAKKyAgICByZXR1cm4gbV9ub3RpZmljYXRpb25zLmdldCgpOworfQorI2VuZGlmCisK
IHZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3Nh
Z2VQb3J0KiBtZXNzYWdlUG9ydCwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRv
dyogc291cmNlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIW1fZnJhbWUpCkluZGV4
OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5oCShyZXZpc2lvbiA0MzkyNSkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgTWVzc2FnZVBvcnQ7CiAgICAgY2xhc3MgTmF2aWdhdG9yOwogICAgIGNsYXNzIE5vZGU7
CisgICAgY2xhc3MgTm90aWZpY2F0aW9uczsKICAgICBjbGFzcyBQb3N0TWVzc2FnZVRpbWVyOwog
ICAgIGNsYXNzIFNjaGVkdWxlZEFjdGlvbjsKICAgICBjbGFzcyBTY3JlZW47CkBAIC0yMDAsNiAr
MjAxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRE9NQXBwbGljYXRpb25DYWNo
ZSogYXBwbGljYXRpb25DYWNoZSgpIGNvbnN0OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKKyAgICAgICAgTm90aWZpY2F0aW9ucyogbm90aWZpY2F0aW9ucygpIGNvbnN0Owor
I2VuZGlmCisKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IE1lc3NhZ2VQb3J0KiwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291
cmNlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2VUaW1lckZpcmVk
KFBvc3RNZXNzYWdlVGltZXIqKTsKIApAQCAtMzU5LDYgKzM2NCw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogICAgICAgICBtdXRh
YmxlIFJlZlB0cjxET01BcHBsaWNhdGlvbkNhY2hlPiBtX2FwcGxpY2F0aW9uQ2FjaGU7CiAjZW5k
aWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8Tm90
aWZpY2F0aW9ucz4gbV9ub3RpZmljYXRpb25zOworI2VuZGlmCiAKICAgICAgICAgUmVnaXN0ZXJl
ZEV2ZW50TGlzdGVuZXJWZWN0b3IgbV9ldmVudExpc3RlbmVyczsKICAgICB9OwpJbmRleDogV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5pZGwJKHJldmlzaW9uIDQzOTI1KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsOSBAQCBtb2R1bGUgd2luZG93IHsKICAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0b3JhZ2Ugc2Vzc2lvblN0b3JhZ2U7CiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBTdG9yYWdlIGxvY2FsU3RvcmFnZTsKICNlbmRpZgorI2lmIGRlZmlu
ZWQoRU5BQkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tXSBOb3RpZmljYXRpb25zIG5vdGlmaWNhdGlvbnM7
CisjZW5kaWYKIAogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW1JlcGxhY2VhYmxlXSBDb25z
b2xlIGNvbnNvbGU7CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gNDM5MjUpCisrKyBXZWJDb3JlL3BhZ2UvUGFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICNpZiBFTkFCTEUoV01MKQogICAgIGNsYXNzIFdNTFBhZ2VTdGF0ZTsKICNlbmRpZgorI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorICAgIGNsYXNzIE5vdGlmaWNhdGlvblByb3ZpZGVyOworI2Vu
ZGlmCiAKICAgICBlbnVtIEZpbmREaXJlY3Rpb24geyBGaW5kRGlyZWN0aW9uRm9yd2FyZCwgRmlu
ZERpcmVjdGlvbkJhY2t3YXJkIH07CiAKQEAgLTI1OCw2ICsyNjEsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2lmIEVOQUJMRShXTUwpCiAgICAgICAgIE93blB0cjxXTUxQYWdlU3RhdGU+IG1f
d21sUGFnZVN0YXRlOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICAg
ICAgTm90aWZpY2F0aW9uUHJvdmlkZXIqIG1fbm90aWZpY2F0aW9uUHJvdmlkZXI7CisjZW5kaWYK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuY3BwCShyZXZpc2lvbiA0MzkyNSkKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsMTAgQEAKICNpbmNsdWRlICJYTUxI
dHRwUmVxdWVzdEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbnMuaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdvcmtlckNvbnRleHQ6OldvcmtlckNvbnRleHQoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkKiB0aHJl
YWQpCkBAIC02NSw3ICs2OSw5IEBAIFdvcmtlckNvbnRleHQ6OldvcmtlckNvbnRleHQoY29uc3Qg
S1VSTCYKIFdvcmtlckNvbnRleHQ6On5Xb3JrZXJDb250ZXh0KCkKIHsKICAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fdGhyZWFkLT50aHJlYWRJRCgpKTsKLQorI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKSAgCisgICAgbV9ub3RpZmljYXRpb25zLmNsZWFyKCk7CisjZW5kaWYKICAgICBt
X3RocmVhZC0+d29ya2VyT2JqZWN0UHJveHkoKS0+d29ya2VyQ29udGV4dERlc3Ryb3llZCgpOwog
fQogCkBAIC0yODAsNiArMjg2LDE1IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0
cyhjb25zdCAKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK05vdGlmaWNh
dGlvbnMqIFdvcmtlckNvbnRleHQ6Om5vdGlmaWNhdGlvbnMoKSBjb25zdAoreworICAgIGlmICgh
bV9ub3RpZmljYXRpb25zKQorICAgICAgICBtX25vdGlmaWNhdGlvbnMgPSBOb3RpZmljYXRpb25z
OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3RocmVhZC0+d29ya2VyT2JqZWN0
UHJveHkoKS0+Z2V0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKSk7CisgICAgcmV0dXJuIG1fbm90aWZp
Y2F0aW9ucy5nZXQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoV09SS0VSUykKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAkocmV2
aXNpb24gNDM5MjUpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNs
YXNzIE5vdGlmaWNhdGlvbnM7CiAgICAgY2xhc3MgU2NoZWR1bGVkQWN0aW9uOwogICAgIGNsYXNz
IFdvcmtlckxvY2F0aW9uOwogICAgIGNsYXNzIFdvcmtlck5hdmlnYXRvcjsKQEAgLTExMiw2ICsx
MTMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNz
YWdlKGNvbnN0IFN0cmluZyYpOwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgICAg
IE5vdGlmaWNhdGlvbnMqIG5vdGlmaWNhdGlvbnMoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgICAg
IC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgZm9yIEdDIG1hcmtpbmcuIFNlZSBKU1dvcmtlckNv
bnRleHQ6Om1hcmsoKSBpbgogICAgICAgICAvLyBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwLgog
ICAgICAgICBXb3JrZXJOYXZpZ2F0b3IqIG9wdGlvbmFsTmF2aWdhdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9uYXZpZ2F0b3IuZ2V0KCk7IH0KQEAgLTE0Miw2ICsxNDcsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ubWVzc2FnZUxpc3Rl
bmVyOwogICAgICAgICBFdmVudExpc3RlbmVyc01hcCBtX2V2ZW50TGlzdGVuZXJzOworCisjaWYg
RU5BQkxFX05PVElGSUNBVElPTlMKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8Tm90aWZpY2F0aW9u
cz4gbV9ub3RpZmljYXRpb25zOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkocmV2aXNpb24gNDM5MjUpCisr
KyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTc1
LDYgKzc1LDEwIEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2
ZW50KGluIEV2ZW50IGV2dCkKICAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CiAK
KyNpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUworICAgICAgICAvLyBOb3RpZmljYXRpb24gaW50ZXJm
YWNlCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb3RpZmljYXRpb25zIG5vdGlmaWNhdGlv
bnM7CisjZW5kaWYKIAogICAgICAgICAvLyBDb25zdHJ1Y3RvcnMKICAgICAgICAgYXR0cmlidXRl
IE1lc3NhZ2VFdmVudENvbnN0cnVjdG9yIE1lc3NhZ2VFdmVudDsKSW5kZXg6IFdlYkNvcmUvd29y
a2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAkocmV2aXNpb24gNDM5MjUpCisrKyBXZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIs
NiArMjIyLDE0IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG8KICAg
ICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmFwcGVuZChNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s6
OmNyZWF0ZShtZXNzYWdlKSk7CiB9CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK05vdGlm
aWNhdGlvblByb3ZpZGVyKiBXb3JrZXJNZXNzYWdpbmdQcm94eTo6Z2V0Tm90aWZpY2F0aW9uUHJv
dmlkZXIoKSAKK3sKKyAgICAvLyBOb3RpZmljYXRpb24gUHJvdmlkZXIgbXVzdCBiZSBwcm92aWRl
ZCBieSB0aGUgY29udGFpbmVyLgorICAgIHJldHVybiBOVUxMOworfQorI2VuZGlmCisKIHZvaWQg
V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKIHsKICAgICBwb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckNvbnRleHQodGFzaywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cklu
ZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAkocmV2aXNpb24gNDM5MjUp
CisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtNjUsNiArNjUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHdvcmtlckNvbnRleHREZXN0cm95ZWQoKTsKIAorI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQorICAgICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBn
ZXROb3RpZmljYXRpb25Qcm92aWRlcigpOworI2VuZGlmCisKICAgICAgICAgdm9pZCBwb3N0VGFz
a1RvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4p
OwogICAgICAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOwogICAgICAgICB2b2lkIHBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBj
b25zdCBTdHJpbmcmIG1vZGUpOwpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgJ
KHJldmlzaW9uIDQzOTI1KQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgIGNsYXNzIFN0cmluZzsKKyAgICBjbGFzcyBOb3RpZmljYXRpb25Qcm92aWRlcjsKIAogICAg
IC8vIEEgcHJveHkgdG8gdGFsayB0byB0aGUgd29ya2VyIG9iamVjdC4KICAgICBjbGFzcyBXb3Jr
ZXJPYmplY3RQcm94eSB7CkBAIC01NSw2ICs1NiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5n
QWN0aXZpdHkpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyQ29udGV4dERlc3Ry
b3llZCgpID0gMDsKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICB2aXJ0dWFs
IE5vdGlmaWNhdGlvblByb3ZpZGVyKiBnZXROb3RpZmljYXRpb25Qcm92aWRlcigpID0gMDsKKyNl
bmRpZgogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYktpdFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDQzOTI1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTEgQEAKKzIwMDktMDUtMjAgIEpvaG4gR3JlZ2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisK
KyAgICAgICAgQWRkcyAtLW5vdGlmaWNhdGlvbnMgc3dpdGNoIHRvIHRoZSBidWlsZCBzY3JpcHQu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3Jp
cHRzL2J1aWxkLXdlYmtpdDoKKwogMjAwOS0wNS0xNCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRo
ZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2Fy
bHNzb24uCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAkocmV2aXNpb24gNDM5MjUpCisr
KyBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAkod29ya2luZyBjb3B5KQpAQCAtNTAs
NiArNTAsNyBAQCBteSAkZ2VvbG9jYXRpb25TdXBwb3J0ID0gMDsKIG15ICRnbm9tZUtleXJpbmdT
dXBwb3J0ID0gMDsKIG15ICRpY29uRGF0YWJhc2VTdXBwb3J0ID0gMTsKIG15ICRqYXZhU2NyaXB0
RGVidWdnZXJTdXBwb3J0ID0gMTsKK215ICRub3RpZmljYXRpb25zU3VwcG9ydCA9IDA7CiBteSAk
b2ZmbGluZVdlYkFwcGxpY2F0aW9uU3VwcG9ydCA9IDE7CiBteSAkc3ZnU3VwcG9ydCA9IDE7CiBt
eSAkc3ZnQW5pbWF0aW9uU3VwcG9ydCA9IDE7CkBAIC04NSw2ICs4Niw3IEBAIFVzYWdlOiAkcHJv
Z3JhbU5hbWUgW29wdGlvbnNdIFtvcHRpb25zIHQKICAgLS1bbm8tXWdub21la2V5cmluZyAgICAg
ICAgICAgICAgIFRvZ2dsZSBHTk9NRSBLZXlyaW5nIFN1cHBvcnQgKEdUSysgcG9ydCBvbmx5KSAo
ZGVmYXVsdDogJGdub21lS2V5cmluZ1N1cHBvcnQpCiAgIC0tW25vLV1pY29uLWRhdGFiYXNlICAg
ICAgICAgICAgICBUb2dnbGUgSWNvbiBkYXRhYmFzZSBzdXBwb3J0IChkZWZhdWx0OiAkaWNvbkRh
dGFiYXNlU3VwcG9ydCkKICAgLS1bbm8tXWphdmFzY3JpcHQtZGVidWdnZXIgICAgICAgIFRvZ2ds
ZSBKYXZhU2NyaXB0IERlYnVnZ2VyL1Byb2ZpbGVyIHN1cHBvcnQgKGRlZmF1bHQ6ICRqYXZhU2Ny
aXB0RGVidWdnZXJTdXBwb3J0KQorICAtLVtuby1dbm90aWZpY2F0aW9ucyAgICAgICAgICAgICAg
VG9vZ2xlIE5vdGlmaWNhdGlvbnMgc3VwcG9ydCAoZGVmYXVsdDogJG5vdGlmaWNhdGlvbnNTdXBw
b3J0KQogICAtLVtuby1db2ZmbGluZS13ZWItYXBwbGljYXRpb25zICAgVG9nZ2xlIE9mZmxpbmUg
V2ViIEFwcGxpY2F0aW9uIFN1cHBvcnQgKGRlZmF1bHQ6ICRvZmZsaW5lV2ViQXBwbGljYXRpb25T
dXBwb3J0KQogICAtLVtuby1dc3ZnICAgICAgICAgICAgICAgICAgICAgICAgVG9nZ2xlIFNWRyBz
dXBwb3J0IChkZWZhdWx0OiAkc3ZnU3VwcG9ydCkKICAgLS1bbm8tXXN2Zy1hbmltYXRpb24gICAg
ICAgICAgICAgIFRvZ2dsZSBTVkcgYW5pbWF0aW9uIHN1cHBvcnQgKGRlZmF1bHQ6ICRzdmdBbmlt
YXRpb25TdXBwb3J0LCBpbXBsaWVzIFNWRyBTdXBwb3J0KQpAQCAtMTEzLDYgKzExNSw3IEBAIEdl
dE9wdGlvbnMoCiAgICAgICAgICAgICdnbm9tZWtleXJpbmchJyA9PiBcJGdub21lS2V5cmluZ1N1
cHBvcnQsCiAgICAgICAgICAgICdpY29uLWRhdGFiYXNlIScgPT4gXCRpY29uRGF0YWJhc2VTdXBw
b3J0LAogICAgICAgICAgICAnamF2YXNjcmlwdC1kZWJ1Z2dlciEnID0+IFwkamF2YVNjcmlwdERl
YnVnZ2VyU3VwcG9ydCwKKyAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMhJyA9PiBcJG5vdGlmaWNh
dGlvbnNTdXBwb3J0LAogICAgICAgICAgICAnb2ZmbGluZS13ZWItYXBwbGljYXRpb25zIScgPT4g
XCRvZmZsaW5lV2ViQXBwbGljYXRpb25TdXBwb3J0LAogICAgICAgICAgICAnc3ZnIScgPT4gXCRz
dmdTdXBwb3J0LAogICAgICAgICAgICAnc3ZnLWFuaW1hdGlvbiEnID0+IFwkc3ZnQW5pbWF0aW9u
U3VwcG9ydCwKQEAgLTE4MSw2ICsxODQsNyBAQCBpZiAoaXNHdGsoKSkgewogICAgIHB1c2ggQG9w
dGlvbnMsIGF1dG90b29sc0ZsYWcoJGdub21lS2V5cmluZ1N1cHBvcnQsICJnbm9tZWtleXJpbmci
KTsKICAgICBwdXNoIEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRpY29uRGF0YWJhc2VTdXBwb3J0
LCAiaWNvbi1kYXRhYmFzZSIpOwogICAgIHB1c2ggQG9wdGlvbnMsIGF1dG90b29sc0ZsYWcoJGph
dmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQsICJqYXZhc2NyaXB0LWRlYnVnZ2VyIik7CisgICAgcHVz
aCBAb3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkbm90aWZpY2F0aW9uc1N1cHBvcnQsICJub3RpZmlj
YXRpb25zIik7CiAgICAgcHVzaCBAb3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkb2ZmbGluZVdlYkFw
cGxpY2F0aW9uU3VwcG9ydCwgIm9mZmxpbmUtd2ViLWFwcGxpY2F0aW9ucyIpOwogICAgIHB1c2gg
QG9wdGlvbnMsIGF1dG90b29sc0ZsYWcoJHN2Z1N1cHBvcnQsICJzdmciKTsKICAgICBwdXNoIEBv
cHRpb25zLCBhdXRvdG9vbHNGbGFnKCRzdmdBbmltYXRpb25TdXBwb3J0LCAic3ZnLWFuaW1hdGlv
biIpOwpAQCAtMjEyLDYgKzIxNiw3IEBAIGlmIChpc0FwcGxlTWFjV2ViS2l0KCkpIHsKICAgICBw
dXNoIEBvcHRpb25zLCBvcHRpb24oIkVOQUJMRV9HRU9MT0NBVElPTiIsICRnZW9sb2NhdGlvblN1
cHBvcnQpOwogICAgIHB1c2ggQG9wdGlvbnMsIG9wdGlvbigiRU5BQkxFX0lDT05EQVRBQkFTRSIs
ICRpY29uRGF0YWJhc2VTdXBwb3J0KTsKICAgICBwdXNoIEBvcHRpb25zLCBvcHRpb24oIkVOQUJM
RV9KQVZBU0NSSVBUX0RFQlVHR0VSIiwgJGphdmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQpOworICAg
IHB1c2ggQG9wdGlvbnMsIG9wdGlvbigiRU5BQkxFX05PVElGSUNBVElPTlMiLCAkbm90aWZpY2F0
aW9uc1N1cHBvcnQpOwogICAgIHB1c2ggQG9wdGlvbnMsIG9wdGlvbigiRU5BQkxFX09GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUyIsICRvZmZsaW5lV2ViQXBwbGljYXRpb25TdXBwb3J0KTsKICAgICBw
dXNoIEBvcHRpb25zLCBvcHRpb24oIkVOQUJMRV9TVkciLCAkc3ZnU3VwcG9ydCk7CiAgICAgcHVz
aCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfU1ZHX0FOSU1BVElPTiIsICRzdmdBbmltYXRpb25T
dXBwb3J0KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQzOTI1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDUtMjAgIEpvaG4gR3Jl
Z2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkcyBiYXNpYyBsYXlvdXQgdGVz
dCB0byBjb25maXJtIHRoZSBub3RpZmljYXRpb25zIGludGVyZmFjZSBpcyB2aXNpYmxlIGZyb20g
d29ya2VyIHNjcmlwdC4KKyAgICAgICAgCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZmFzdC9ub3RpZmljYXRpb25zOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1hY2Nlc3Nvci1kaXNhYmxlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1hY2Nlc3Nv
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvbm90aWZpY2F0aW9ucy9yZXNv
dXJjZXM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvbm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvd29y
a2VyLW5vdGlmaWNhdGlvbnMuanM6IEFkZGVkLgorCiAyMDA5LTA1LTIwICBIb2xnZXIgSGFucyBQ
ZXRlciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9u
b3RpZmljYXRpb25zLWFjY2Vzc29yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1hY2Nlc3Nvci1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZp
Y2F0aW9ucy1hY2Nlc3Nvci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBA
QAorVGVzdCBXb3JrZXIgTm90aWZpY2F0aW9ucyBhY2Nlc3MuIFNob3VsZCBwcmludCBhIHNlcmll
cyBvZiBQQVNTIG1lc3NhZ2VzLCBmb2xsb3dlZCB3aXRoIERPTkUuCisKK1Rlc3Qgc3RhcnRlZC4K
K1BBU1M6IG5vdGlmaWNhdGlvbnMgb2JqZWN0IGV4aXN0cy4KK1BBU1M6IG5vdGlmaWNhdGlvbnMu
Y3JlYXRlSFRNTE5vdGlmaWNhdGlvbnMgZG9lcyBub3QgZXhpc3QuCitQQVNTOiBub3RpZmljYXRp
b25zLmNyZWF0ZU5vdGlmaWNhdGlvbnMgZG9lcyBub3QgZXhpc3QuCitET05FCisKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWFjY2Vzc29yLmh0bWwt
ZGlzYWJsZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25v
dGlmaWNhdGlvbnMtYWNjZXNzb3IuaHRtbC1kaXNhYmxlZAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWFjY2Vzc29yLmh0bWwtZGlz
YWJsZWQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzxib2R5PgorPHA+VGVzdCBXb3Jr
ZXIgTm90aWZpY2F0aW9ucyBhY2Nlc3MuIFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQQVNTIG1l
c3NhZ2VzLCBmb2xsb3dlZCB3aXRoIERPTkUuPC9wPgorPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Cis8
c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
K30KKwordHJ5IHsKKyAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigicmVzb3VyY2VzL3dvcmtl
ci1ub3RpZmljYXRpb25zLmpzIik7CisKKyAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24o
ZXZ0KSB7CisgICAgICAgIGxvZyhldnQuZGF0YSk7CisgICAgICAgIGlmIChldnQuZGF0YSA9PSAi
RE9ORSIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKyAgICAKK30gY2F0Y2ggKGV4KSB7
CisgICAgbG9nKCJGQUlMOiB1bmV4cGVjdGVkIGV4Y2VwdGlvbiAiICsgZXgpOworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9ub3RpZmljYXRpb25zL3Jlc291cmNlcy93b3JrZXItbm90aWZpY2F0aW9ucy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvcmVzb3VyY2VzL3dvcmtl
ci1ub3RpZmljYXRpb25zLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ub3Rp
ZmljYXRpb25zL3Jlc291cmNlcy93b3JrZXItbm90aWZpY2F0aW9ucy5qcwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNiBAQAorcG9zdE1lc3NhZ2UoIlRlc3Qgc3RhcnRlZC4iKTsKKworLy8gVHJ5
IHRvIGdldCB0aGUgbm90aWZpY2F0aW9ucyBvYmplY3QgZnJvbSBnbG9iYWwgY29udGV4dHMuCitp
ZiAobm90aWZpY2F0aW9ucyAhPSB1bmRlZmluZWQpIHsKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzog
bm90aWZpY2F0aW9ucyBvYmplY3QgZXhpc3RzLiIpOworICAgIAorICAgIGlmICghbm90aWZpY2F0
aW9ucy5jcmVhdGVIVE1MTm90aWZpY2F0aW9ucykgeworICAgICAgICBwb3N0TWVzc2FnZSgiUEFT
Uzogbm90aWZpY2F0aW9ucy5jcmVhdGVIVE1MTm90aWZpY2F0aW9ucyBkb2VzIG5vdCBleGlzdC4i
KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFub3RpZmljYXRpb25zLmNyZWF0ZU5vdGlmaWNhdGlv
bnMpIHsKKyAgICAgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IG5vdGlmaWNhdGlvbnMuY3JlYXRlTm90
aWZpY2F0aW9ucyBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICB9CisgICAgCisgICAgcG9zdE1lc3Nh
Z2UoIkRPTkUiKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30562</attachid>
            <date>2009-05-21 15:09:21 -0700</date>
            <delta_ts>2009-05-27 23:56:04 -0700</delta_ts>
            <desc>Notifications Patch</desc>
            <filename>WebKitPatchAgain.diff</filename>
            <type>text/plain</type>
            <size>68701</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQzOTI1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDktMDUtMjAgIEpvaG4gR3Jl
Z2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkcyBFTkFCTEVfTk9USUZJQ0FUSU9OIGZsYWcgZm9yIHRoZSBi
dWlsZCBvZiBjdXN0b20gSlMgY29kZS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDA5LTA1LTE5ICBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gNDM5MjUp
CisrKyBKYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
Zwkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBFTkFCTEVfRE9NX1NUT1JBR0UgPSBF
TkFCTEVfRE9NX1NUT1JBR0U7CiBFTkFCTEVfR0VPTE9DQVRJT04gPSA7CiBFTkFCTEVfSUNPTkRB
VEFCQVNFID0gRU5BQkxFX0lDT05EQVRBQkFTRTsKIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VS
ID0gRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVI7CitFTkFCTEVfTk9USUZJQ0FUSU9OUyA9IDsK
IEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgPSBFTkFCTEVfT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TOwogRU5BQkxFX1NWRyA9IEVOQUJMRV9TVkc7CiBFTkFCTEVfU1ZHX0FOSU1BVElP
TiA9IEVOQUJMRV9TVkdfQU5JTUFUSU9OOwpAQCAtNDgsNCArNDksNCBAQCBFTkFCTEVfV09SS0VS
UyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxF
X1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVO
REVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQo
RU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9PRkZMSU5FX1dF
Ql9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChF
TkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5B
QkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdf
VVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVO
QUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8z
RF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFT
RSkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9J
Q09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX05PVElG
SUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZH
KSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxF
X1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJM
RV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA0MzkyNSkKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjEsNiArNDYxLDEwIEBACiAj
ZGVmaW5lIEVOQUJMRV9HRU9MT0NBVElPTiAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJM
RV9OT1RJRklDQVRJT05TKQorI2RlZmluZSBFTkFCTEVfTk9USUZJQ0FUSU9OUyAwCisjZW5kaWYK
KwogI2lmICFkZWZpbmVkKEVOQUJMRV9URVhUX0NBUkVUKQogI2RlZmluZSBFTkFCTEVfVEVYVF9D
QVJFVCAxCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA0MzkyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMDktMDUtMjAgIEpvaG4gR3JlZ2cgIDxq
b2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhbiAoZXhwZXJpbWVudGFsKSBIVE1MIG5vdGlm
aWNhdGlvbiBBUEksIGJlaW5nIHByb3RvdHlwZWQgaW4gQ2hyb21pdW0uICBJdCdzIHByb3RlY3Rl
ZCBieSBjb21waWxlLXRpbWUgZmVhdHVyZSBmbGFnIEVOQUJMRV9OT1RJRklDQVRJT05TLgorICAg
ICAgICAKKyAgICAgICAgVGVzdDogZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtYWNj
ZXNzb3ItZGlzYWJsZWQuaHRtbAorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWc6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0Ojpub3RpZmljYXRpb25zKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25zQ3VzdG9tLmNwcDogQWRkZWQuCisg
ICAgICAgICogbm90aWZpY2F0aW9uczogQWRkZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGw6
IEFkZGVkLgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGFyYW1ldGVycy5o
OiBBZGRlZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblByb3ZpZGVyLmg6
IEFkZGVkLgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5jcHA6IEFkZGVk
LgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6bm90aWZpY2F0aW9ucyk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2lu
Z1Byb3h5OjpnZXROb3RpZmljYXRpb25Qcm92aWRlcik6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJNZXNzYWdpbmdQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT2JqZWN0UHJveHku
aDoKKwogMjAwOS0wNS0yMCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxm
aXNoLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBX
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCShyZXZpc2lvbiA0MzkyNSkKKysrIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdl
YkNvcmUpL2h0bWwgXAogICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yIFwKICAgICAkKFdlYkNvcmUp
L2xvYWRlci9hcHBjYWNoZSBcCisgICAgJChXZWJDb3JlKS9ub3RpZmljYXRpb25zIFwKICAgICAk
KFdlYkNvcmUpL3BhZ2UgXAogICAgICQoV2ViQ29yZSkvcGx1Z2lucyBcCiAgICAgJChXZWJDb3Jl
KS9zdG9yYWdlIFwKQEAgLTE4Myw2ICsxODQsOCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBOb2Rl
SXRlcmF0b3IgXAogICAgIE5vZGVMaXN0IFwKICAgICBOb3RhdGlvbiBcCisgICAgTm90aWZpY2F0
aW9uIFwKKyAgICBOb3RpZmljYXRpb25zIFwKICAgICBPdmVyZmxvd0V2ZW50IFwKICAgICBQbHVn
aW4gXAogICAgIFBsdWdpbkFycmF5IFwKSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNDM5MjUpCisrKyBX
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBAIHdl
YmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
IFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlIFwKIAktSSQoc3JjZGlyKS9X
ZWJDb3JlL2xvYWRlci9pY29uIFwKKwktSSQoc3JjZGlyKS9XZWJDb3JlL25vdGlmaWNhdGlvbnMg
XAogCS1JJChzcmNkaXIpL1dlYkNvcmUvcGFnZSBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbiBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9wbGF0Zm9ybSBcCkBAIC0yMTcsNiAr
MjE4LDggQEAgSURMX0JJTkRJTkdTICs9IFwKIAlXZWJDb3JlL2h0bWwvVGV4dE1ldHJpY3MuaWRs
IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCBcCiAJV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5pZGwgXAorCVdlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaWRsIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9ucy5pZGwgXAogCVdlYkNvcmUvcGFnZS9CYXJJbmZvLmlkbCBcCiAJV2ViQ29yZS9wYWdlL0Nv
bnNvbGUuaWRsIFwKIAlXZWJDb3JlL3BhZ2UvQ29vcmRpbmF0ZXMuaWRsIFwKQEAgLTIzNDYsNiAr
MjM0OSwyNCBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0dlb2xvY2F0aW9uU2VydmljZUd0ay5oCiBlbmRpZiAjIEVORCBFTkFCTEVfR0VPTE9DQVRJT04K
IAorIyAtLS0tCisjIE5vdGlmaWNhdGlvbnMgc3VwcG9ydAorIyAtLS0tCitpZiBFTkFCTEVfTk9U
SUZJQ0FUSU9OUworRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX05PVElGSUNB
VElPTlM9MQorCit3ZWJjb3JlX2NwcGZsYWdzICs9IFwKKwktREVOQUJMRV9OT1RJRklDQVRJT05T
PTEKKword2ViY29yZV9zb3VyY2VzICs9IFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmNwcCBcCisJV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIFwKKwlX
ZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5jcHAgXAorCVdlYkNvcmUvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25zLmggXAorCVdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25Qcm92aWRlci5oIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGFy
YW1ldGVycy5oCisKK2VuZGlmICMgRU5EIEVOQUJMRV9OT1RJRklDQVRJT05TCiAKICMgLS0tLQog
IyBTVkcgU3VwcG9ydApAQCAtMzIxMCw0ICszMjMxLDMgQEAgQ0xFQU5GSUxFUyArPSBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UubHV0LmggXAogCVdlYkNvcmUvYmluZGlu
Z3MvanMvSlNSR0JDb2xvci5sdXQuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNv
bnRleHRCYXNlLmx1dC5oCi0KSW5kZXg6IFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gNDM5MjUpCisrKyBXZWJDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICsz
NCw3IEBAIEVOQUJMRV9ET01fU1RPUkFHRSA9IEVOQUJMRV9ET01fU1RPUkFHRTsKIEVOQUJMRV9H
RU9MT0NBVElPTiA9IDsKIEVOQUJMRV9JQ09OREFUQUJBU0UgPSBFTkFCTEVfSUNPTkRBVEFCQVNF
OwogRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIgPSBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UjsKK0VOQUJMRV9OT1RJRklDQVRJT05TID0gOwogRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FU
SU9OUyA9IEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7CiBFTkFCTEVfU1ZHID0gRU5B
QkxFX1NWRzsKIEVOQUJMRV9TVkdfQU5JTUFUSU9OID0gRU5BQkxFX1NWR19BTklNQVRJT047CkBA
IC00OCw0ICs0OSw0IEBAIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktFUlM7CiBFTkFCTEVf
WFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFU
VVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVT
U0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxF
X0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRf
REVCVUdHRVIpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZH
KSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxF
X1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJM
RV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsK
K0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5F
TF9NRVNTQUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChF
TkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVND
UklQVF9ERUJVR0dFUikgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9X
RUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQo
RU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVO
QUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZH
X1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChF
TkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDQzOTI1KQorKysgV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTYwNCw2ICs2MDQs
MTQgQEAKIAkJMzFDMEZGNEMwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25F
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFD
MEZGNDYwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oICovOyB9
OwogCQkzMUMwRkY0RDBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDMEZG
NDcwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5tbSAqLzsgfTsK
IAkJMzFDMEZGNEUwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudElu
dGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MUMwRkY0ODBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50ZXJu
YWwuaCAqLzsgfTsKKwkJMzMzRjcwNTIwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbnMu
aWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNG
NzA0QTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9ucy5pZGwgKi87IH07CisJCTMzM0Y3
MDUzMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzM0Y3MDRCMEZCNDlDQTIwMDhFMTJBNiAv
KiBOb3RpZmljYXRpb25zLmNwcCAqLzsgfTsKKwkJMzMzRjcwNTQwRkI0OUNBMjAwOEUxMkE2IC8q
IE5vdGlmaWNhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMzM0Y3MDRDMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25zLmggKi87IH07
CisJCTMzM0Y3MDU1MEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25QYXJhbWV0ZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNGNzA0RDBG
QjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uUGFyYW1ldGVycy5oICovOyB9OworCQkzMzNG
NzA1NjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmlkbCBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzRjcwNEUwRkI0OUNBMjAwOEUxMkE2
IC8qIE5vdGlmaWNhdGlvbi5pZGwgKi87IH07CisJCTMzM0Y3MDU3MEZCNDlDQTIwMDhFMTJBNiAv
KiBOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMzM0Y3MDRGMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaCAqLzsgfTsK
KwkJMzMzRjcwNTgwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNGNzA1MDBGQjQ5Q0EyMDA4
RTEyQTYgLyogTm90aWZpY2F0aW9uLmNwcCAqLzsgfTsKKwkJMzMzRjcwNTkwRkI0OUNBMjAwOEUx
MkE2IC8qIE5vdGlmaWNhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNGNzA1MTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0
aW9uUHJvdmlkZXIuaCAqLzsgfTsKIAkJMzcxRjRGNDAwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnRE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFG
NEYzRTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFGNEY0MTBEMjVCOUFGMDBFQ0UwRDUgLyog
Rm9udERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzcxRjRGM0YwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmNwcCAqLzsgfTsKIAkJMzcx
RjRGRkMwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFGNEZGQTBEMjVFN0YzMDBFQ0Uw
RDUgLyogU2VnbWVudGVkRm9udERhdGEuaCAqLzsgfTsKQEAgLTU1MzMsNiArNTU0MSwxNCBAQAog
CQkzMUMwRkY0NjBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdlYktpdFRyYW5zaXRpb25FdmVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUMwRkY0NzBFNENFRkREMDA3RDZG
RTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMUMwRkY0ODBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0
VHJhbnNpdGlvbkV2ZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzMzRjcwNEEwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbnMuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE5vdGlmaWNhdGlvbnMuaWRsOyBwYXRoID0gbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzMzRjcwNEIwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbnMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTm90aWZpY2F0aW9ucy5jcHA7IHBhdGggPSBub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMzNGNzA0QzBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBOb3RpZmljYXRpb25zLmg7IHBhdGggPSBub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMzRjcw
NEQwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvblBhcmFtZXRlcnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0aW9uUGFyYW1ldGVycy5oOyBwYXRoID0g
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMzM0Y3MDRFMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5pZGw7IHBhdGggPSBub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMz
M0Y3MDRGMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0aW9uLmg7IHBhdGggPSBub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA1MDBGQjQ5
Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5jcHA7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzM0Y3MDUxMEZCNDlD
QTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBOb3RpZmljYXRpb25Qcm92aWRlci5oOyBwYXRoID0gbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
NzFGNEYzRTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRm9udERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzcxRjRGM0YwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzcxRjRGRkEwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlZ21lbnRlZEZvbnREYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDE3LDYgKzk0MzMsNyBAQAogCQkJCTkzRUVD
MUVDMDlDMjg3NzcwMEM1MTVEMSAvKiBodG1sICovLAogCQkJCTFDODFCOTREMEU5NzMyRDkwMDI2
NkUwNyAvKiBpbnNwZWN0b3IgKi8sCiAJCQkJQkNCMTZCRkIwOTc5QzM4NzAwNDY3NzQxIC8qIGxv
YWRlciAqLywKKwkJCQkzMzNGNzAzRDBGQjQ5QzE2MDA4RTEyQTYgLyogbm90aWZpY2F0aW9ucyAq
LywKIAkJCQk2NUJGMDIxODA5NzQ4MDYzMDBDNDMxOTYgLyogcGFnZSAqLywKIAkJCQlCQ0YxQTVC
QTA5NzgzMjA5MDA2MUExMjMgLyogcGxhdGZvcm0gKi8sCiAJCQkJNURDRjgzNjkwRDU5MTU3ODAw
OTUzQkM2IC8qIHBsdWdpbnMgKi8sCkBAIC05ODg1LDYgKzk5MDIsMjEgQEAKIAkJCW5hbWUgPSBh
bmltYXRpb247CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQkzMzNGNzAzRDBG
QjQ5QzE2MDA4RTEyQTYgLyogbm90aWZpY2F0aW9ucyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJMzMzRjcwNEEwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlm
aWNhdGlvbnMuaWRsICovLAorCQkJCTMzM0Y3MDRCMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmlj
YXRpb25zLmNwcCAqLywKKwkJCQkzMzNGNzA0QzBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0
aW9ucy5oICovLAorCQkJCTMzM0Y3MDREMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25Q
YXJhbWV0ZXJzLmggKi8sCisJCQkJMzMzRjcwNEUwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNh
dGlvbi5pZGwgKi8sCisJCQkJMzMzRjcwNEYwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlv
bi5oICovLAorCQkJCTMzM0Y3MDUwMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uY3Bw
ICovLAorCQkJCTMzM0Y3MDUxMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25Qcm92aWRl
ci5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBub3RpZmljYXRpb25zOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDQ5MTk1OTAwRkJFMTc1QjAwRDlGODI0IC8qIEV4cG9ydHMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAko
cmV2aXNpb24gNDM5MjUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAKICNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIK
KyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25zLmgiCiAj
aW5jbHVkZSAiVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlY4V29y
a2VyQ29udGV4dE9iamVjdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXb3JrZXIuaCIKQEAg
LTI1Miw2ICsyNTQsMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdvcmtlckNvbnRleHRFeGVj
dQogICAgICAgICAgICAgY2FzZSBWOENsYXNzSW5kZXg6OldPUktFUk5BVklHQVRPUjoKICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxXb3JrZXJOYXZpZ2F0b3IqPihpbXBsKS0+cmVmKCk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgICAg
ICAgICBjYXNlIFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OUzoKKyAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxOb3RpZmljYXRpb25zKj4oaW1wbCktPnJlZigpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTjoKKyAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxOb3RpZmljYXRpb24qPihpbXBsKS0+cmVmKCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKGZhbHNlKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9u
IDQzOTI1KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDgsNCArNjQ4LDEzIEBAIENBTExCQUNLX0ZVTkNfREVD
TChET01XaW5kb3dDbGVhckludGVydmEKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQog
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitBQ0NFU1NPUl9HRVRURVIoRE9NV2luZG93Tm90
aWZpY2F0aW9ucykKK3sKKyAgICBJTkNfU1RBVFMoTCJET00uRE9NV2luZG93Lm5vdGlmaWNhdGlv
bnMuX2dldCIpOworICAgIERPTVdpbmRvdyogaW1wID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8
RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5mby5Ib2xkZXIoKSk7CisgICAg
cmV0dXJuIFY4UHJveHk6OlRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT05TLCBp
bXAtPm5vdGlmaWNhdGlvbnMoKSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMp
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Tm90aWZpY2F0aW9uc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25zQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uc0N1c3RvbS5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJ2OF9iaW5kaW5nLmgiCisjaW5jbHVkZSAi
djhfY3VzdG9tLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJOb3RpZmljYXRp
b25zLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eS5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4
Q3VzdG9tRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworQUNDRVNTT1JfR0VUVEVSKE5vdGlmaWNhdGlvbk9uZGlzcGxheSkK
K3sKKyAgICBJTkNfU1RBVFMoTCJET00uTm90aWZpY2F0aW9uLm9uZGlzcGxheS5fZ2V0Iik7Cisg
ICAgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxO
b3RpZmljYXRpb24+KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBpbmZvLkhvbGRlcigpKTsK
KyAgICByZXR1cm4gVjhQcm94eTo6RXZlbnRMaXN0ZW5lclRvVjhPYmplY3Qobm90aWZpY2F0aW9u
LT5vbmRpc3BsYXkoKSk7Cit9CisKK0FDQ0VTU09SX1NFVFRFUihOb3RpZmljYXRpb25PbmRpc3Bs
YXkpIAoreworICAgIElOQ19TVEFUUyhMIkRPTS5Ob3RpZmljYXRpb24ub25kaXNwbGF5Ll9zZXQi
KTsKKyAgICBOb3RpZmljYXRpb24qIG5vdGlmID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8Tm90
aWZpY2F0aW9uPihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwgaW5mby5Ib2xkZXIoKSk7Cisg
ICAgVjhFdmVudExpc3RlbmVyKiBvbGRMaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4RXZlbnRMaXN0
ZW5lcio+KG5vdGlmLT5vbmRpc3BsYXkoKSk7CisgICAgaWYgKHZhbHVlLT5Jc051bGwoKSkgewor
ICAgICAgICBpZiAob2xkTGlzdGVuZXIpIHsKKyAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBvbGRWOExpc3RlbmVyID0gb2xkTGlzdGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7Cisg
ICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIG9sZFY4TGlz
dGVuZXIsIFY4Q3VzdG9tOjprTm90aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5kZXgpOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gQ2xlYXIgdGhlIGxpc3RlbmVyCisgICAgICAgIG5vdGlmLT5zZXRP
bmRpc3BsYXkoMCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGxpc3RlbmVyOworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gbm90
aWYtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICAgICAgaWYgKGNvbnRleHQtPmlzV29y
a2VyQ29udGV4dCgpKQorICAgICAgICAgICAgbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxXb3JrZXJD
b250ZXh0Kj4oY29udGV4dCktPnNjcmlwdCgpLT5wcm94eSgpLT5maW5kT3JDcmVhdGVFdmVudExp
c3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSksIGZhbHNlLCBmYWxzZSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxpc3RlbmVyID0gVjhQcm94eTo6cmV0cmlldmUo
Y29udGV4dCktPkZpbmRPckNyZWF0ZVY4RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVj
dD46OkNhc3QodmFsdWUpLCBmYWxzZSk7CisKKyAgICAgICAgaWYgKGxpc3RlbmVyKSB7CisgICAg
ICAgICAgICBpZiAob2xkTGlzdGVuZXIpIHsKKyAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6
Ok9iamVjdD4gb2xkVjhMaXN0ZW5lciA9IG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgp
OworICAgICAgICAgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwg
b2xkVjhMaXN0ZW5lciwgVjhDdXN0b206OmtOb3RpZmljYXRpb25SZXF1ZXN0Q2FjaGVJbmRleCk7
CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICBub3RpZi0+c2V0T25kaXNwbGF5KGxp
c3RlbmVyKTsKKyAgICAgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIo
KSwgdmFsdWUsIFY4Q3VzdG9tOjprTm90aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5kZXgpOworICAg
ICAgICB9CisgICAgfQorfQorCitBQ0NFU1NPUl9HRVRURVIoTm90aWZpY2F0aW9uT25lcnJvcikK
K3sKKyAgICBJTkNfU1RBVFMoTCJET00uTm90aWZpY2F0aW9uLm9uZXJyb3IuX2dldCIpOworICAg
IE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8Tm90
aWZpY2F0aW9uPihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwgaW5mby5Ib2xkZXIoKSk7Cisg
ICAgcmV0dXJuIFY4UHJveHk6OkV2ZW50TGlzdGVuZXJUb1Y4T2JqZWN0KG5vdGlmaWNhdGlvbi0+
b25lcnJvcigpKTsKK30KKworQUNDRVNTT1JfU0VUVEVSKE5vdGlmaWNhdGlvbk9uZXJyb3IpCit7
CisgICAgSU5DX1NUQVRTKEwiRE9NLk5vdGlmaWNhdGlvbi5vbmVycm9yLl9zZXQiKTsKKyAgICBO
b3RpZmljYXRpb24qIG5vdGlmID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0aW9u
PihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwgaW5mby5Ib2xkZXIoKSk7CisgICAgVjhFdmVu
dExpc3RlbmVyKiBvbGRMaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4RXZlbnRMaXN0ZW5lcio+KG5v
dGlmLT5vbmVycm9yKCkpOworICAgIGlmICh2YWx1ZS0+SXNOdWxsKCkpIHsKKyAgICAgICAgaWYg
KG9sZExpc3RlbmVyKSB7CisgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhM
aXN0ZW5lciA9IG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgICAgICAg
cmVtb3ZlSGlkZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCBvbGRWOExpc3RlbmVyLCBWOEN1
c3RvbTo6a05vdGlmaWNhdGlvblJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIENsZWFyIHRoZSBsaXN0ZW5lcgorICAgICAgICBub3RpZi0+c2V0T25lcnJvcigwKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXI7Cisg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBub3RpZi0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOworICAgICAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkp
CisgICAgICAgICAgICBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihjb250
ZXh0KS0+c2NyaXB0KCktPnByb3h5KCktPmZpbmRPckNyZWF0ZUV2ZW50TGlzdGVuZXIodjg6Okxv
Y2FsPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbGlzdGVuZXIgPSBWOFByb3h5OjpyZXRyaWV2ZShjb250ZXh0KS0+Rmlu
ZE9yQ3JlYXRlVjhFdmVudExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1
ZSksIGZhbHNlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChsaXN0ZW5lcikgeworICAgICAgICAg
ICAgaWYgKG9sZExpc3RlbmVyKSB7CisgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IG9sZFY4TGlzdGVuZXIgPSBvbGRMaXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKKyAg
ICAgICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIG9sZFY4
TGlzdGVuZXIsIFY4Q3VzdG9tOjprTm90aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5kZXgpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBub3RpZi0+c2V0T25lcnJvcihsaXN0ZW5lcik7Cisg
ICAgICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIHZhbHVlLCBW
OEN1c3RvbTo6a05vdGlmaWNhdGlvblJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAgICAgfQorICAg
IH0KK30KKworQUNDRVNTT1JfR0VUVEVSKE5vdGlmaWNhdGlvbk9uY2xvc2UpIAoreworICAgIElO
Q19TVEFUUyhMIkRPTS5Ob3RpZmljYXRpb24ub25jbG9zZS5fZ2V0Iik7CisgICAgTm90aWZpY2F0
aW9uKiBub3RpZmljYXRpb24gPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxOb3RpZmljYXRpb24+
KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4g
VjhQcm94eTo6RXZlbnRMaXN0ZW5lclRvVjhPYmplY3Qobm90aWZpY2F0aW9uLT5vbmNsb3NlKCkp
OworfQorCitBQ0NFU1NPUl9TRVRURVIoTm90aWZpY2F0aW9uT25jbG9zZSkKK3sKKyAgICBJTkNf
U1RBVFMoTCJET00uTm90aWZpY2F0aW9uLm9uZXJyb3IuX3NldCIpOworICAgIE5vdGlmaWNhdGlv
biogbm90aWYgPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxOb3RpZmljYXRpb24+KFY4Q2xhc3NJ
bmRleDo6Tk9USUZJQ0FUSU9OLCBpbmZvLkhvbGRlcigpKTsKKyAgICBWOEV2ZW50TGlzdGVuZXIq
IG9sZExpc3RlbmVyID0gc3RhdGljX2Nhc3Q8VjhFdmVudExpc3RlbmVyKj4obm90aWYtPm9uY2xv
c2UoKSk7CisgICAgaWYgKHZhbHVlLT5Jc051bGwoKSkgeworICAgICAgICBpZiAob2xkTGlzdGVu
ZXIpIHsKKyAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvbGRWOExpc3RlbmVyID0g
b2xkTGlzdGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgICAgICByZW1vdmVIaWRk
ZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjprTm90
aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2xl
YXIgdGhlIGxpc3RlbmVyCisgICAgICAgIG5vdGlmLT5zZXRPbmNsb3NlKDApOworICAgIH0gZWxz
ZSB7CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcjsKKyAgICAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IG5vdGlmLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CisgICAgICAgIGlmIChjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkKKyAgICAgICAg
ICAgIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpLT5zY3Jp
cHQoKS0+cHJveHkoKS0+ZmluZE9yQ3JlYXRlRXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9i
amVjdD46OkNhc3QodmFsdWUpLCBmYWxzZSwgZmFsc2UpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBsaXN0ZW5lciA9IFY4UHJveHk6OnJldHJpZXZlKGNvbnRleHQpLT5GaW5kT3JDcmVhdGVW
OEV2ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSwgZmFsc2Up
OworICAgICAgICAKKyAgICAgICAgaWYgKGxpc3RlbmVyKSB7CisgICAgICAgICAgICBpZiAob2xk
TGlzdGVuZXIpIHsKKyAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhM
aXN0ZW5lciA9IG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgICAgICAg
ICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgb2xkVjhMaXN0ZW5lciwg
VjhDdXN0b206OmtOb3RpZmljYXRpb25SZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIG5vdGlmLT5zZXRPbmNsb3NlKGxpc3RlbmVyKTsKKyAgICAgICAgICAg
IGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgdmFsdWUsIFY4Q3VzdG9tOjpr
Tm90aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICB9CisgICAgfQorfQorCitD
QUxMQkFDS19GVU5DX0RFQ0woTm90aWZpY2F0aW9uc0NyZWF0ZUhUTUxOb3RpZmljYXRpb24pCit7
CisgICAgSU5DX1NUQVRTKEwiRE9NLk5vdGlmaWNhdGlvbnMuQ3JlYXRlSFRNTE5vdGlmaWNhdGlv
bigpIik7CisgICAgTm90aWZpY2F0aW9ucyogbm90aWZJbnRlcmZhY2UgPSBWOFByb3h5OjpUb05h
dGl2ZU9iamVjdDxOb3RpZmljYXRpb25zPihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTlMsIGFy
Z3MuSG9sZGVyKCkpOworICAKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTdHJpbmcg
dXJsID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOworICAgIFJlZlB0cjxOb3RpZmljYXRpb24+
IG5vdGlmID0gTm90aWZpY2F0aW9uOjpjcmVhdGUodXJsLCBub3RpZkludGVyZmFjZS0+Y29udGV4
dCgpLCBlYywgbm90aWZJbnRlcmZhY2UtPnByb3ZpZGVyKCkpOworCisgICAgaWYgKGVjKQorICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7CisKKyAgICByZXR1cm4gV29ya2VyQ29udGV4dEV4
ZWN1dGlvblByb3h5OjpUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBub3Rp
Zi5nZXQoKSk7Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChOb3RpZmljYXRpb25zQ3JlYXRlTm90
aWZpY2F0aW9uKQoreworICAgIElOQ19TVEFUUyhMIkRPTS5Ob3RpZmljYXRpb25zLkNyZWF0ZU5v
dGlmaWNhdGlvbigpIik7CisgICAgTm90aWZpY2F0aW9ucyogbm90aWZJbnRlcmZhY2UgPSBWOFBy
b3h5OjpUb05hdGl2ZU9iamVjdDxOb3RpZmljYXRpb25zPihWOENsYXNzSW5kZXg6Ok5PVElGSUNB
VElPTlMsIGFyZ3MuSG9sZGVyKCkpOworICAgIAorICAgIE5vdGlmaWNhdGlvblBhcmFtZXRlcnMg
cGFyYW1ldGVycyh0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIHRvV2ViQ29yZVN0cmluZyhhcmdz
WzFdKSwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMl0pKTsKKyAgICAKKyAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZiA9IE5vdGlmaWNhdGlvbjo6
Y3JlYXRlKHBhcmFtZXRlcnMsIG5vdGlmSW50ZXJmYWNlLT5jb250ZXh0KCksIGVjLCBub3RpZklu
dGVyZmFjZS0+cHJvdmlkZXIoKSk7CisKKyAgICBpZiAoZWMpIAorICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcihlYyk7CisKKyAgICByZXR1cm4gV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpU
b1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBub3RpZi5nZXQoKSk7Cit9CisK
K0NBTExCQUNLX0ZVTkNfREVDTChOb3RpZmljYXRpb25TaG93KSAKK3sKKyAgICBJTkNfU1RBVFMo
TCJET00uTm90aWZpY2F0aW9uLlNob3coKSIpOworICAgIE5vdGlmaWNhdGlvbiogbm90aWYgPSBW
OFByb3h5OjpUb05hdGl2ZU9iamVjdDxOb3RpZmljYXRpb24+KFY4Q2xhc3NJbmRleDo6Tk9USUZJ
Q0FUSU9OLCBhcmdzLkhvbGRlcigpKTsKKyAgICBub3RpZi0+c2hvdygpOworCisgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKE5vdGlmaWNhdGlvbkNh
bmNlbCkgCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLk5vdGlmaWNhdGlvbi5DYW5jZWwoKSIpOwor
ICAgIE5vdGlmaWNhdGlvbiogbm90aWYgPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxOb3RpZmlj
YXRpb24+KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBhcmdzLkhvbGRlcigpKTsKKyAgICBu
b3RpZi0+Y2FuY2VsKCk7CisKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCit9ICAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRl
eHRDdXN0b20uY3BwCShyZXZpc2lvbiA0MzkyNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkx
LDE1IEBAIEFDQ0VTU09SX1NFVFRFUihXb3JrZXJDb250ZXh0T25tZXNzYWdlKQogICAgIH0KIH0K
IAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorQUNDRVNTT1JfR0VUVEVSKFdvcmtlckNvbnRl
eHROb3RpZmljYXRpb25zKQoreworICAgIElOQ19TVEFUUyhMIkRPTS5Xb3JrZXJDb250ZXh0Lm5v
dGlmaWNhdGlvbnMuX2dldCIpOworICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBW
OFByb3h5OjpUb05hdGl2ZU9iamVjdDxXb3JrZXJDb250ZXh0PihWOENsYXNzSW5kZXg6OldPUktF
UkNPTlRFWFQsIGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiBXb3JrZXJDb250ZXh0RXhlY3V0
aW9uUHJveHk6OlRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT05TLCB3b3JrZXJD
b250ZXh0LT5ub3RpZmljYXRpb25zKCkpOworfQorI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJ
T05TKQorCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2V0VGltZW91dE9ySW50ZXJ2YWwoY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbGVTaG90KQogewogICAgIFdvcmtlckNvbnRl
eHQqIHdvcmtlckNvbnRleHQgPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxXb3JrZXJDb250ZXh0
PihWOENsYXNzSW5kZXg6OldPUktFUkNPTlRFWFQsIGFyZ3MuSG9sZGVyKCkpOwpJbmRleDogV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDQzOTI1KQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUqLCBjb25zdCBTdHJpbmcm
KSB7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgdmlydHVhbCBO
b3RpZmljYXRpb25Qcm92aWRlciogbm90aWZpY2F0aW9uUHJvdmlkZXIoKSBjb25zdCB7IHJldHVy
biAwOyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQ
YXNzUmVmUHRyPEZpbGVDaG9vc2VyPikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRl
RGlkQ2hhbmdlKGNvbnN0IE5vZGUqKSB7IH0KSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJOb3RpZmljYXRp
b24uaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25QYXJhbWV0ZXJzLmgiCisKKyNpbmNsdWRlICJE
b2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250
ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTm90aWZpY2F0aW9uOjpOb3RpZmljYXRp
b24oY29uc3QgU3RyaW5nJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4
Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIpCisgICAgOiBB
Y3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1fSFRNTCh0cnVlKQorICAgICwg
bV9wcm92aWRlcihwcm92aWRlcikJCisgICAgLCBtX2lkKDApCit7CisgICAgbV9ub3RpZmljYXRp
b25VUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTCh1cmwpOworICAgIGlmICh1cmwuaXNFbXB0eSgp
IHx8ICFtX25vdGlmaWNhdGlvblVSTC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCitOb3RpZmljYXRpb246Ok5vdGlmaWNh
dGlvbihjb25zdCBOb3RpZmljYXRpb25QYXJhbWV0ZXJzJiBmaWVsZHMsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRpb25Qcm92aWRl
ciogcHJvdmlkZXIpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAs
IG1fSFRNTChmYWxzZSkKKyAgICAsIG1fZmllbGRzKGZpZWxkcykKKyAgICAsIG1fcHJvdmlkZXIo
cHJvdmlkZXIpCisgICAgLCBtX2lkKDApCit7CisgICAgS1VSTCBpY29uID0gY29udGV4dC0+Y29t
cGxldGVVUkwoZmllbGRzLmljb24oKSk7CisgICAgaWYgKCFpY29uLmlzRW1wdHkoKSAmJiAhaWNv
bi5pc1ZhbGlkKCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47
CisgICAgfQorfQorCitOb3RpZmljYXRpb246On5Ob3RpZmljYXRpb24oKSAKK3sKK30KKwordm9p
ZCBOb3RpZmljYXRpb246OnNob3coKSAKK3sKKyAgICBpZiAobV9IVE1MKQorICAgICAgICBtX2lk
ID0gbV9wcm92aWRlci0+c2hvdyhtX25vdGlmaWNhdGlvblVSTCwgdGhpcyk7CisgICAgZWxzZQor
ICAgICAgICBtX2lkID0gbV9wcm92aWRlci0+c2hvdyhtX2ZpZWxkcy5pY29uKCksIG1fZmllbGRz
LnRpdGxlKCksIG1fZmllbGRzLmJvZHkoKSwgdGhpcyk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9u
OjpjYW5jZWwoKSAKK3sKKyAgICBtX3Byb3ZpZGVyLT5jYW5jZWwobV9pZCk7Cit9CisKK3ZvaWQg
Tm90aWZpY2F0aW9uOjpkaXNwYXRjaERpc3BsYXlFdmVudCgpIAoreyAgIAorICAgIFJlZlB0cjxF
dmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNl
LCB0cnVlKTsKKyAgICBpZiAobV9vbkRpc3BsYXlMaXN0ZW5lcikgeworICAgICAgICBldmVudC0+
c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsK
KyAgICAgICAgbV9vbkRpc3BsYXlMaXN0ZW5lci0+aGFuZGxlRXZlbnQoZXZlbnQuZ2V0KCksIHRy
dWUpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZl
bnQoZXZlbnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7Cit9CisKK3ZvaWQgTm90
aWZpY2F0aW9uOjpkaXNwYXRjaEVycm9yRXZlbnQoKQoreyAgCisgICAgUmVmUHRyPEV2ZW50PiBl
dmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCB0cnVl
KTsKKyAgICBpZiAobV9vbkVycm9yTGlzdGVuZXIpIHsKKyAgICAgICAgZXZlbnQtPnNldFRhcmdl
dCh0aGlzKTsKKyAgICAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAg
IG1fb25FcnJvckxpc3RlbmVyLT5oYW5kbGVFdmVudChldmVudC5nZXQoKSwgdHJ1ZSk7CisgICAg
fQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hFdmVudChldmVudC5y
ZWxlYXNlKCksIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKK30KKwordm9pZCBOb3RpZmljYXRpb246
OmRpc3BhdGNoQ2xvc2VFdmVudCgpIAoreyAgIAorICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgdHJ1ZSk7CisgICAg
aWYgKG1fb25DbG9zZUxpc3RlbmVyKSB7CisgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7
CisgICAgICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29uQ2xv
c2VMaXN0ZW5lci0+aGFuZGxlRXZlbnQoZXZlbnQuZ2V0KCksIHRydWUpOworICAgIH0KKworICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQucmVsZWFzZSgp
LCBlYyk7CisgICAgQVNTRVJUKCFlYyk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaXNwbGF5
KCkKK3sKKyAgICBkaXNwYXRjaERpc3BsYXlFdmVudCgpOworfQorCit2b2lkIE5vdGlmaWNhdGlv
bjo6ZXJyb3IoKQoreworICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOworfQorCit2b2lkIE5vdGlm
aWNhdGlvbjo6Y2xvc2UoKQoreworICAgIGRpc3BhdGNoQ2xvc2VFdmVudCgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKSW5k
ZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBOb3RpZmljYXRpb25faCAgCisjZGVmaW5lIE5vdGlmaWNhdGlvbl9oCisK
KyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJBdG9taWNTdHJpbmdIYXNo
LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5j
bHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByb3ZpZGVyLmgiCisjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBXb3JrZXJDb250ZXh0OworCisgICAgY2xhc3MgTm90
aWZpY2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPiwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0IHsgCisgICAgcHVibGljOgorICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIE5vdGlm
aWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYobmV3IE5vdGlmaWNh
dGlvbih1cmwsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpOyB9CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IE5vdGlmaWNhdGlvblBhcmFtZXRlcnMm
IGZpZWxkcywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYg
ZWMsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYobmV3
IE5vdGlmaWNhdGlvbihmaWVsZHMsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpOyB9CisgICAgICAg
IAorICAgICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb24oKTsKKworICAgICAgICB2b2lkIHNob3co
KTsKKyAgICAgICAgdm9pZCBjYW5jZWwoKTsKKyAgICAKKyAgICAgICAgRXZlbnRMaXN0ZW5lciog
b25kaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9vbkRpc3BsYXlMaXN0ZW5lci5nZXQoKTsgfQor
ICAgICAgICB2b2lkIHNldE9uZGlzcGxheShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50
TGlzdGVuZXIpIHsgbV9vbkRpc3BsYXlMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAg
ICAgRXZlbnRMaXN0ZW5lciogb25lcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fb25FcnJvckxpc3Rl
bmVyLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25lcnJvcihQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbkVycm9yTGlzdGVuZXIgPSBldmVudExpc3RlbmVy
OyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uY2xvc2UoKSBjb25zdCB7IHJldHVybiBtX29u
Q2xvc2VMaXN0ZW5lci5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldE9uY2xvc2UoUGFzc1JlZlB0
cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25DbG9zZUxpc3RlbmVyID0gZXZl
bnRMaXN0ZW5lcjsgfQorICAgIAorICAgICAgICB1c2luZyBSZWZDb3VudGVkPE5vdGlmaWNhdGlv
bj46OnJlZjsKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+OjpkZXJlZjsK
KyAgICAKKyAgICAgICAgLy8gQ2FsbGJhY2sgbWV0aG9kcyBmb3IgdGhlIHByb3ZpZGVyIHdoZW4g
ZXZlbnRzIG9jY3VyIHJlZ2FyZGluZyB0aGUgbm90aWZpY2F0aW9uLgorICAgICAgICB2b2lkIGRp
c3BsYXkoKTsKKyAgICAgICAgdm9pZCBlcnJvcigpOworICAgICAgICB2b2lkIGNsb3NlKCk7CisK
KyAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAgICAgIHZpcnR1YWwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgICAgIHZp
cnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYsIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wpIHt9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYsIEV2ZW50TGlzdGVuZXIqLCBib29sKSB7
fQorICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Piwg
RXhjZXB0aW9uQ29kZSYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAKKyAgICBwcml2YXRlOgor
ICAgICAgICBOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRpb25Qcm92aWRlciog
cHJvdmlkZXIpOworICAgICAgICBOb3RpZmljYXRpb24oY29uc3QgTm90aWZpY2F0aW9uUGFyYW1l
dGVycyYgZmllbGRzLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25D
b2RlJiBlYywgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKTsKKworICAgICAgICB2b2lk
IGRpc3BhdGNoRGlzcGxheUV2ZW50KCk7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50
KCk7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CisKKyAgICAgICAgLy8gRXZl
bnRUYXJnZXQgaW50ZXJmYWNlCisgICAgICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgp
IHsgcmVmKCk7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRl
cmVmKCk7IH0KKyAgCisgICAgICAgIGJvb2wgbV9IVE1MOworICAgICAgICBLVVJMIG1fbm90aWZp
Y2F0aW9uVVJMOworICAgICAgICBOb3RpZmljYXRpb25QYXJhbWV0ZXJzIG1fZmllbGRzOworCisg
ICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29uRGlzcGxheUxpc3RlbmVyOworICAgICAg
ICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbkVycm9yTGlzdGVuZXI7CisgICAgICAgIFJlZlB0
cjxFdmVudExpc3RlbmVyPiBtX29uQ2xvc2VMaXN0ZW5lcjsKKworICAgICAgICBOb3RpZmljYXRp
b25Qcm92aWRlciogbV9wcm92aWRlcjsKKworICAgICAgICBpbnQgbV9pZDsKKyAgICB9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
KworI2VuZGlmIC8vIE5vdGlmaWNhdGlvbnNfaApJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSB0aHJlYWRz
IHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU5PVElGSUNBVElPTlMK
KyAgICBdIE5vdGlmaWNhdGlvbiB7CisgICAgICAgIFtDdXN0b21dIHZvaWQgc2hvdygpOworICAg
ICAgICBbQ3VzdG9tXSB2b2lkIGNhbmNlbCgpOworCisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9uZGlzcGxheTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJv
cjsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jbG9zZTsKKyAgICB9OworCit9
CkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGFyYW1ldGVycy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QYXJhbWV0ZXJz
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGFy
YW1ldGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRp
b25QYXJhbWV0ZXJzX2gKKyNkZWZpbmUgTm90aWZpY2F0aW9uUGFyYW1ldGVyc19oCisKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3Mg
Tm90aWZpY2F0aW9uUGFyYW1ldGVycyB7IAorICAgIHB1YmxpYzoKKyAgICAgICAgTm90aWZpY2F0
aW9uUGFyYW1ldGVycygpIHt9CisgICAgICAgIE5vdGlmaWNhdGlvblBhcmFtZXRlcnMoY29uc3Qg
U3RyaW5nJiBpY29uVXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHkp
IAorICAgICAgICAgICAgOiBtX2ljb24oaWNvblVybCkKKyAgICAgICAgICAgICwgbV90aXRsZSh0
aXRsZSkKKyAgICAgICAgICAgICwgbV9ib2R5KGJvZHkpIHt9CisKKyAgICAgICAgU3RyaW5nIGlj
b24oKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KKyAgICAgICAgU3RyaW5nIHRpdGxlKCkgY29u
c3QgeyByZXR1cm4gbV90aXRsZTsgfQorICAgICAgICBTdHJpbmcgYm9keSgpIGNvbnN0IHsgcmV0
dXJuIG1fYm9keTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgU3RyaW5nIG1faWNvbjsKKyAg
ICAgICAgU3RyaW5nIG1fdGl0bGU7CisgICAgICAgIFN0cmluZyBtX2JvZHk7CisgICAgfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMp
CisKKyNlbmRpZiAvLyBOb3RpZmljYXRpb25QYXJhbWV0ZXJzX2gKSW5kZXg6IFdlYkNvcmUvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Qcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Qcm92aWRlci5oCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblByb3ZpZGVyLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIE5vdGlmaWNhdGlvblByb3ZpZGVyX2gKKyNkZWZpbmUgTm90
aWZpY2F0aW9uUHJvdmlkZXJfaAorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFN0cmluZzsKKyAgICBjbGFzcyBOb3RpZmljYXRp
b247CisKKyAgICBjbGFzcyBOb3RpZmljYXRpb25Qcm92aWRlciB7CisgICAgcHVibGljOgorICAg
ICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25Qcm92aWRlcigpIHt9CisKKyAgICAgICAgdmlydHVh
bCBpbnQgc2hvdyhjb25zdCBTdHJpbmcmIFVSTCwgTm90aWZpY2F0aW9uKiBvYmplY3QpID0gMDsK
KworICAgICAgICB2aXJ0dWFsIGludCBzaG93KGNvbnN0IFN0cmluZyYgaWNvblVybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBOb3RpZmljYXRpb24qIG9iamVjdCkg
PSAwOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoaW50IGhhbmRsZSkgPSAwOworICAg
IH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklD
QVRJT05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uUHJvdmlkZXJfaApJbmRleDogV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorCisj
aW5jbHVkZSAiTm90aWZpY2F0aW9ucy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJXb3JrZXJDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTm90aWZpY2F0
aW9uczo6Tm90aWZpY2F0aW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBOb3Rp
ZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIpIAorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRl
eHQsIHRoaXMpCisgICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKKyAgICAs
IG1fbm90aWZpY2F0aW9uUHJvdmlkZXIocHJvdmlkZXIpIHt9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQpJbmRleDogV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9ucy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgTm90aWZpY2F0aW9uc19oCisjZGVmaW5lIE5vdGlmaWNhdGlvbnNfaAorCisjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKKworICAgIGNsYXNzIE5vdGlmaWNhdGlvbnMgOiBwdWJsaWMgUmVmQ291bnRl
ZDxOb3RpZmljYXRpb25zPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7IAorICAgIHB1YmxpYzoK
KyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9ucz4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcikg
eyByZXR1cm4gYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbnMoY29udGV4dCwgcHJvdmlkZXIpKTsg
fQorICAgICAgICAKKyAgICAgICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZUhUTUxO
b3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBVUkksIEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uOjpjcmVhdGUoS1VSTChVUkkpLCBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGVjLCBtX25vdGlmaWNhdGlvblByb3ZpZGVyKTsKKyAg
ICAgICAgfQorICAgICAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlTm90aWZpY2F0
aW9uKE5vdGlmaWNhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVycywgRXhjZXB0aW9uQ29kZSYgZWMp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0ZShwYXJh
bWV0ZXJzLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGVjLCBtX25vdGlmaWNhdGlvblByb3Zp
ZGVyKTsKKyAgICAgICAgfQorCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KKyAgICAgICAg
Tm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmlj
YXRpb25Qcm92aWRlcjsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgTm90aWZpY2F0aW9ucyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTm90aWZpY2F0aW9uUHJvdmlkZXIqKTsKKworICAgICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAg
ICAgIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBtX25vdGlmaWNhdGlvblByb3ZpZGVyOworICAgIH07
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJ
T05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uc19oCkluZGV4OiBXZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9ucy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbnMuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbnMuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxl
IHRocmVhZHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9Tk9USUZJ
Q0FUSU9OUworICAgIF0gTm90aWZpY2F0aW9ucyB7CisgICAgICAgIFtSZXR1cm5zTmV3XSBbQ3Vz
dG9tXSBOb3RpZmljYXRpb24gY3JlYXRlSFRNTE5vdGlmaWNhdGlvbihpbiBET01TdHJpbmcgdXJs
KTsKKyAgICAgICAgW1JldHVybnNOZXddIFtDdXN0b21dIE5vdGlmaWNhdGlvbiBjcmVhdGVOb3Rp
ZmljYXRpb24oaW4gRE9NU3RyaW5nIGljb25VcmwsIGluIERPTVN0cmluZyB0aXRsZSwgaW4gRE9N
U3RyaW5nIGJvZHkpOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiA0MzkyNSkK
KysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTEsNiArMzkx
LDEzIEBAIGJvb2wgQ2hyb21lOjpzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JIYW4KICAgICByZXR1
cm4gbV9jbGllbnQtPnNldEN1cnNvcihjdXJzb3IpOwogfQogCisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCitOb3RpZmljYXRpb25Qcm92aWRlciogQ2hyb21lOjpub3RpZmljYXRpb25Qcm92aWRl
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LT5ub3RpZmljYXRpb25Qcm92aWRlcigp
OworfQorI2VuZGlmCisKIC8vIC0tLS0tLS0tCiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBP
UlQpCkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
YWdlL0Nocm9tZS5oCShyZXZpc2lvbiA0MzkyNSkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBQYWdlOwogICAgIGNsYXNzIFN0cmluZzsKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBjbGFzcyBOb3RpZmljYXRpb25Qcm92aWRlcjsKKyNl
bmRpZgogCiAgICAgc3RydWN0IEZyYW1lTG9hZFJlcXVlc3Q7CiAgICAgc3RydWN0IFdpbmRvd0Zl
YXR1cmVzOwpAQCAtMTI4LDYgKzEzMSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgZm9jdXNOU1ZpZXcoTlNWaWV3Kik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQorICAgICAgICBOb3RpZmljYXRpb25Qcm92aWRlciogbm90aWZpY2F0aW9uUHJvdmlk
ZXIoKSBjb25zdDsgCisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFBhZ2UqIG1fcGFn
ZTsKICAgICAgICAgQ2hyb21lQ2xpZW50KiBtX2NsaWVudDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJ
KHJldmlzaW9uIDQzOTI1KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MCw2ICs2MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
R3JhcGhpY3NMYXllcjsKICNlbmRpZgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAg
Y2xhc3MgTm90aWZpY2F0aW9uUHJvdmlkZXI7CisjZW5kaWYKKwogICAgIGNsYXNzIENocm9tZUNs
aWVudCB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hyb21lRGVzdHJveWVk
KCkgPSAwOwpAQCAtMTQxLDYgKzE0NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkYXNoYm9hcmRSZWdpb25zQ2hhbmdlZCgpOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICAgICAgdmlydHVhbCBOb3RpZmljYXRpb25Qcm92aWRl
ciogbm90aWZpY2F0aW9uUHJvdmlkZXIoKSBjb25zdCA9IDA7CisjZW5kaWYKKwogICAgICAgICB2
aXJ0dWFsIHZvaWQgcG9wdWxhdGVWaXNpdGVkTGlua3MoKTsKIAogICAgICAgICB2aXJ0dWFsIEZs
b2F0UmVjdCBjdXN0b21IaWdobGlnaHRSZWN0KE5vZGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGNvbnN0IEZsb2F0UmVjdCYgbGluZVJlY3QpOwpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlz
aW9uIDQzOTI1KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgwLDYgKzgwLDEwIEBACiAjaW5jbHVkZSAiRE9NQXBwbGljYXRpb25DYWNoZS5oIgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyNpbmNsdWRlICJOb3RpZmljYXRpb25z
LmgiCisjZW5kaWYKKwogdXNpbmcgc3RkOjptaW47CiB1c2luZyBzdGQ6Om1heDsKIApAQCAtNDQw
LDYgKzQ0NCwxMCBAQCB2b2lkIERPTVdpbmRvdzo6Y2xlYXIoKQogICAgICAgICBtX2FwcGxpY2F0
aW9uQ2FjaGUtPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fYXBwbGljYXRpb25DYWNoZSA9IDA7
CiAjZW5kaWYKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIG1fbm90aWZpY2F0aW9u
cyA9IDA7CisjZW5kaWYKIH0KIAogU2NyZWVuKiBET01XaW5kb3c6OnNjcmVlbigpIGNvbnN0CkBA
IC01NzUsNiArNTgzLDI2IEBAIFN0b3JhZ2UqIERPTVdpbmRvdzo6bG9jYWxTdG9yYWdlKCkgY29u
c3QKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitOb3RpZmljYXRpb25z
KiBET01XaW5kb3c6Om5vdGlmaWNhdGlvbnMoKSBjb25zdAoreworICAgIGlmIChtX25vdGlmaWNh
dGlvbnMpCisgICAgICAgIHJldHVybiBtX25vdGlmaWNhdGlvbnMuZ2V0KCk7CisKKyAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisg
ICAgICAgIHJldHVybiAwOworICAgIAorICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgp
OworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBtX25vdGlmaWNhdGlv
bnMgPSBOb3RpZmljYXRpb25zOjpjcmVhdGUoZG9jdW1lbnQsIHBhZ2UtPmNocm9tZSgpLT5ub3Rp
ZmljYXRpb25Qcm92aWRlcigpKTsgICAgCisgICAgICAKKyAgICByZXR1cm4gbV9ub3RpZmljYXRp
b25zLmdldCgpOworfQorI2VuZGlmCisKIHZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCwgY29uc3QgU3RyaW5n
JiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBpZiAoIW1fZnJhbWUpCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiA0MzkyNSkKKysrIFdl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTWVzc2FnZVBvcnQ7CiAgICAgY2xhc3MgTmF2
aWdhdG9yOwogICAgIGNsYXNzIE5vZGU7CisgICAgY2xhc3MgTm90aWZpY2F0aW9uczsKICAgICBj
bGFzcyBQb3N0TWVzc2FnZVRpbWVyOwogICAgIGNsYXNzIFNjaGVkdWxlZEFjdGlvbjsKICAgICBj
bGFzcyBTY3JlZW47CkBAIC0yMDAsNiArMjAxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgRE9NQXBwbGljYXRpb25DYWNoZSogYXBwbGljYXRpb25DYWNoZSgpIGNvbnN0OwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICAgICAgTm90aWZpY2F0aW9ucyog
bm90aWZpY2F0aW9ucygpIGNvbnN0OworI2VuZGlmCisKICAgICAgICAgdm9pZCBwb3N0TWVzc2Fn
ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiwgY29uc3QgU3RyaW5nJiB0YXJn
ZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZv
aWQgcG9zdE1lc3NhZ2VUaW1lckZpcmVkKFBvc3RNZXNzYWdlVGltZXIqKTsKIApAQCAtMzU5LDYg
KzM2NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TKQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxET01BcHBsaWNhdGlvbkNhY2hlPiBt
X2FwcGxpY2F0aW9uQ2FjaGU7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAg
ICAgICAgbXV0YWJsZSBSZWZQdHI8Tm90aWZpY2F0aW9ucz4gbV9ub3RpZmljYXRpb25zOworI2Vu
ZGlmCiAKICAgICAgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXJWZWN0b3IgbV9ldmVudExpc3Rl
bmVyczsKICAgICB9OwpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDQzOTI1KQorKysgV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsOSBA
QCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0b3JhZ2Ugc2Vz
c2lvblN0b3JhZ2U7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdG9yYWdlIGxvY2FsU3Rv
cmFnZTsKICNlbmRpZgorI2lmIGRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJM
RV9OT1RJRklDQVRJT05TCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tXSBOb3Rp
ZmljYXRpb25zIG5vdGlmaWNhdGlvbnM7CisjZW5kaWYKIAogICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGUgW1JlcGxhY2VhYmxlXSBDb25zb2xlIGNvbnNvbGU7CiAKSW5kZXg6IFdlYkNvcmUvcGFn
ZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gNDM5
MjUpCisrKyBXZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoV01MKQogICAgIGNsYXNzIFdNTFBh
Z2VTdGF0ZTsKICNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIGNsYXNzIE5v
dGlmaWNhdGlvblByb3ZpZGVyOworI2VuZGlmCiAKICAgICBlbnVtIEZpbmREaXJlY3Rpb24geyBG
aW5kRGlyZWN0aW9uRm9yd2FyZCwgRmluZERpcmVjdGlvbkJhY2t3YXJkIH07CiAKQEAgLTI1OCw2
ICsyNjEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShXTUwpCiAgICAgICAg
IE93blB0cjxXTUxQYWdlU3RhdGU+IG1fd21sUGFnZVN0YXRlOwogI2VuZGlmCisKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKKyAgICAgICAgTm90aWZpY2F0aW9uUHJvdmlkZXIqIG1fbm90aWZp
Y2F0aW9uUHJvdmlkZXI7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA0MzkyNSkKKysrIFdl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiAr
NTEsMTAgQEAKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIk5v
dGlmaWNhdGlvbnMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdvcmtlckNv
bnRleHQ6OldvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgV29ya2VyVGhyZWFkKiB0aHJlYWQpCkBAIC02NSw3ICs2OSw5IEBAIFdvcmtlckNvbnRl
eHQ6OldvcmtlckNvbnRleHQoY29uc3QgS1VSTCYKIFdvcmtlckNvbnRleHQ6On5Xb3JrZXJDb250
ZXh0KCkKIHsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhyZWFkLT50aHJlYWRJ
RCgpKTsKLQorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSAgCisgICAgbV9ub3RpZmljYXRpb25z
LmNsZWFyKCk7CisjZW5kaWYKICAgICBtX3RocmVhZC0+d29ya2VyT2JqZWN0UHJveHkoKS0+d29y
a2VyQ29udGV4dERlc3Ryb3llZCgpOwogfQogCkBAIC0yODAsNiArMjg2LDE1IEBAIHZvaWQgV29y
a2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyhjb25zdCAKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKK05vdGlmaWNhdGlvbnMqIFdvcmtlckNvbnRleHQ6Om5vdGlmaWNhdGlv
bnMoKSBjb25zdAoreworICAgIGlmICghbV9ub3RpZmljYXRpb25zKQorICAgICAgICBtX25vdGlm
aWNhdGlvbnMgPSBOb3RpZmljYXRpb25zOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBtX3RocmVhZC0+Z2V0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKSk7CisgICAgcmV0dXJuIG1fbm90
aWZpY2F0aW9ucy5nZXQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAko
cmV2aXNpb24gNDM5MjUpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAg
IGNsYXNzIE5vdGlmaWNhdGlvbnM7CiAgICAgY2xhc3MgU2NoZWR1bGVkQWN0aW9uOwogICAgIGNs
YXNzIFdvcmtlckxvY2F0aW9uOwogICAgIGNsYXNzIFdvcmtlck5hdmlnYXRvcjsKQEAgLTExMiw2
ICsxMTMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgZGlzcGF0Y2hN
ZXNzYWdlKGNvbnN0IFN0cmluZyYpOwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAg
ICAgIE5vdGlmaWNhdGlvbnMqIG5vdGlmaWNhdGlvbnMoKSBjb25zdDsKKyNlbmRpZgorCiAgICAg
ICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgZm9yIEdDIG1hcmtpbmcuIFNlZSBKU1dvcmtl
ckNvbnRleHQ6Om1hcmsoKSBpbgogICAgICAgICAvLyBKU1dvcmtlckNvbnRleHRDdXN0b20uY3Bw
LgogICAgICAgICBXb3JrZXJOYXZpZ2F0b3IqIG9wdGlvbmFsTmF2aWdhdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9uYXZpZ2F0b3IuZ2V0KCk7IH0KQEAgLTE0Miw2ICsxNDcsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ubWVzc2FnZUxp
c3RlbmVyOwogICAgICAgICBFdmVudExpc3RlbmVyc01hcCBtX2V2ZW50TGlzdGVuZXJzOworCisj
aWYgRU5BQkxFX05PVElGSUNBVElPTlMKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8Tm90aWZpY2F0
aW9ucz4gbV9ub3RpZmljYXRpb25zOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkocmV2aXNpb24gNDM5MjUp
CisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTc1LDYgKzc1LDEwIEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICAgICAgYm9vbGVhbiBkaXNwYXRj
aEV2ZW50KGluIEV2ZW50IGV2dCkKICAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7
CiAKKyNpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUworICAgICAgICAvLyBOb3RpZmljYXRpb24gaW50
ZXJmYWNlCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb3RpZmljYXRpb25zIG5vdGlmaWNh
dGlvbnM7CisjZW5kaWYKIAogICAgICAgICAvLyBDb25zdHJ1Y3RvcnMKICAgICAgICAgYXR0cmli
dXRlIE1lc3NhZ2VFdmVudENvbnN0cnVjdG9yIE1lc3NhZ2VFdmVudDsKSW5kZXg6IFdlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmgJKHJldmlzaW9uIDQzOTI1KQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIE5vdGlmaWNhdGlvblByb3ZpZGVyOwog
ICAgIGNsYXNzIFN0cmluZzsKICAgICBjbGFzcyBXb3JrZXJDb250ZXh0OwogICAgIGNsYXNzIFdv
cmtlck9iamVjdFByb3h5OwpAQCAtNTQsNiArNTUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkgeyByZXR1cm4gbV9ydW5Mb29wOyB9CiAg
ICAgICAgIFdvcmtlck9iamVjdFByb3h5KiB3b3JrZXJPYmplY3RQcm94eSgpIGNvbnN0IHsgcmV0
dXJuIG1fd29ya2VyT2JqZWN0UHJveHk7IH0KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQor
ICAgICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBnZXROb3RpZmljYXRpb25Qcm92
aWRlcigpIHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUHJvdmlkZXI7IH0KKyAgICAgICAgdmlydHVh
bCB2b2lkIHNldE5vdGlmaWNhdGlvblByb3ZpZGVyKE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92
aWRlcikgeyBtX25vdGlmaWNhdGlvblByb3ZpZGVyID0gcHJvdmlkZXI7IH0KKyNlbmRpZgorCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgV29ya2VyVGhyZWFkKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJPYmplY3RQcm94
eSopOwogCkBAIC02OCw2ICs3NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE11
dGV4IG1fdGhyZWFkQ3JlYXRpb25NdXRleDsKIAogICAgICAgICBPd25QdHI8V29ya2VyVGhyZWFk
U3RhcnR1cERhdGE+IG1fc3RhcnR1cERhdGE7CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
KyAgICAgICAgTm90aWZpY2F0aW9uUHJvdmlkZXIqIG1fbm90aWZpY2F0aW9uUHJvdmlkZXI7Cisj
ZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJLaXRUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA0MzkyNSkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDExIEBACisyMDA5LTA1LTIwICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29nbGUuY29tPgor
CisgICAgICAgIEFkZHMgLS1ub3RpZmljYXRpb25zIHN3aXRjaCB0byB0aGUgYnVpbGQgc2NyaXB0
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2Ny
aXB0cy9idWlsZC13ZWJraXQ6CisKIDIwMDktMDUtMTQgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0
aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENh
cmxzc29uLgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHJldmlzaW9uIDQzOTI1KQor
KysgV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDYgKzUwLDcgQEAgbXkgJGdlb2xvY2F0aW9uU3VwcG9ydCA9IDA7CiBteSAkZ25vbWVLZXlyaW5n
U3VwcG9ydCA9IDA7CiBteSAkaWNvbkRhdGFiYXNlU3VwcG9ydCA9IDE7CiBteSAkamF2YVNjcmlw
dERlYnVnZ2VyU3VwcG9ydCA9IDE7CitteSAkbm90aWZpY2F0aW9uc1N1cHBvcnQgPSAwOwogbXkg
JG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQgPSAxOwogbXkgJHN2Z1N1cHBvcnQgPSAxOwog
bXkgJHN2Z0FuaW1hdGlvblN1cHBvcnQgPSAxOwpAQCAtODUsNiArODYsNyBAQCBVc2FnZTogJHBy
b2dyYW1OYW1lIFtvcHRpb25zXSBbb3B0aW9ucyB0CiAgIC0tW25vLV1nbm9tZWtleXJpbmcgICAg
ICAgICAgICAgICBUb2dnbGUgR05PTUUgS2V5cmluZyBTdXBwb3J0IChHVEsrIHBvcnQgb25seSkg
KGRlZmF1bHQ6ICRnbm9tZUtleXJpbmdTdXBwb3J0KQogICAtLVtuby1daWNvbi1kYXRhYmFzZSAg
ICAgICAgICAgICAgVG9nZ2xlIEljb24gZGF0YWJhc2Ugc3VwcG9ydCAoZGVmYXVsdDogJGljb25E
YXRhYmFzZVN1cHBvcnQpCiAgIC0tW25vLV1qYXZhc2NyaXB0LWRlYnVnZ2VyICAgICAgICBUb2dn
bGUgSmF2YVNjcmlwdCBEZWJ1Z2dlci9Qcm9maWxlciBzdXBwb3J0IChkZWZhdWx0OiAkamF2YVNj
cmlwdERlYnVnZ2VyU3VwcG9ydCkKKyAgLS1bbm8tXW5vdGlmaWNhdGlvbnMgICAgICAgICAgICAg
IFRvb2dsZSBOb3RpZmljYXRpb25zIHN1cHBvcnQgKGRlZmF1bHQ6ICRub3RpZmljYXRpb25zU3Vw
cG9ydCkKICAgLS1bbm8tXW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9ucyAgIFRvZ2dsZSBPZmZsaW5l
IFdlYiBBcHBsaWNhdGlvbiBTdXBwb3J0IChkZWZhdWx0OiAkb2ZmbGluZVdlYkFwcGxpY2F0aW9u
U3VwcG9ydCkKICAgLS1bbm8tXXN2ZyAgICAgICAgICAgICAgICAgICAgICAgIFRvZ2dsZSBTVkcg
c3VwcG9ydCAoZGVmYXVsdDogJHN2Z1N1cHBvcnQpCiAgIC0tW25vLV1zdmctYW5pbWF0aW9uICAg
ICAgICAgICAgICBUb2dnbGUgU1ZHIGFuaW1hdGlvbiBzdXBwb3J0IChkZWZhdWx0OiAkc3ZnQW5p
bWF0aW9uU3VwcG9ydCwgaW1wbGllcyBTVkcgU3VwcG9ydCkKQEAgLTExMyw2ICsxMTUsNyBAQCBH
ZXRPcHRpb25zKAogICAgICAgICAgICAnZ25vbWVrZXlyaW5nIScgPT4gXCRnbm9tZUtleXJpbmdT
dXBwb3J0LAogICAgICAgICAgICAnaWNvbi1kYXRhYmFzZSEnID0+IFwkaWNvbkRhdGFiYXNlU3Vw
cG9ydCwKICAgICAgICAgICAgJ2phdmFzY3JpcHQtZGVidWdnZXIhJyA9PiBcJGphdmFTY3JpcHRE
ZWJ1Z2dlclN1cHBvcnQsCisgICAgICAgICAgICdub3RpZmljYXRpb25zIScgPT4gXCRub3RpZmlj
YXRpb25zU3VwcG9ydCwKICAgICAgICAgICAgJ29mZmxpbmUtd2ViLWFwcGxpY2F0aW9ucyEnID0+
IFwkb2ZmbGluZVdlYkFwcGxpY2F0aW9uU3VwcG9ydCwKICAgICAgICAgICAgJ3N2ZyEnID0+IFwk
c3ZnU3VwcG9ydCwKICAgICAgICAgICAgJ3N2Zy1hbmltYXRpb24hJyA9PiBcJHN2Z0FuaW1hdGlv
blN1cHBvcnQsCkBAIC0xODEsNiArMTg0LDcgQEAgaWYgKGlzR3RrKCkpIHsKICAgICBwdXNoIEBv
cHRpb25zLCBhdXRvdG9vbHNGbGFnKCRnbm9tZUtleXJpbmdTdXBwb3J0LCAiZ25vbWVrZXlyaW5n
Iik7CiAgICAgcHVzaCBAb3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkaWNvbkRhdGFiYXNlU3VwcG9y
dCwgImljb24tZGF0YWJhc2UiKTsKICAgICBwdXNoIEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRq
YXZhU2NyaXB0RGVidWdnZXJTdXBwb3J0LCAiamF2YXNjcmlwdC1kZWJ1Z2dlciIpOworICAgIHB1
c2ggQG9wdGlvbnMsIGF1dG90b29sc0ZsYWcoJG5vdGlmaWNhdGlvbnNTdXBwb3J0LCAibm90aWZp
Y2F0aW9ucyIpOwogICAgIHB1c2ggQG9wdGlvbnMsIGF1dG90b29sc0ZsYWcoJG9mZmxpbmVXZWJB
cHBsaWNhdGlvblN1cHBvcnQsICJvZmZsaW5lLXdlYi1hcHBsaWNhdGlvbnMiKTsKICAgICBwdXNo
IEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRzdmdTdXBwb3J0LCAic3ZnIik7CiAgICAgcHVzaCBA
b3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkc3ZnQW5pbWF0aW9uU3VwcG9ydCwgInN2Zy1hbmltYXRp
b24iKTsKQEAgLTIxMiw2ICsyMTYsNyBAQCBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7CiAgICAg
cHVzaCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfR0VPTE9DQVRJT04iLCAkZ2VvbG9jYXRpb25T
dXBwb3J0KTsKICAgICBwdXNoIEBvcHRpb25zLCBvcHRpb24oIkVOQUJMRV9JQ09OREFUQUJBU0Ui
LCAkaWNvbkRhdGFiYXNlU3VwcG9ydCk7CiAgICAgcHVzaCBAb3B0aW9ucywgb3B0aW9uKCJFTkFC
TEVfSkFWQVNDUklQVF9ERUJVR0dFUiIsICRqYXZhU2NyaXB0RGVidWdnZXJTdXBwb3J0KTsKKyAg
ICBwdXNoIEBvcHRpb25zLCBvcHRpb24oIkVOQUJMRV9OT1RJRklDQVRJT05TIiwgJG5vdGlmaWNh
dGlvbnNTdXBwb3J0KTsKICAgICBwdXNoIEBvcHRpb25zLCBvcHRpb24oIkVOQUJMRV9PRkZMSU5F
X1dFQl9BUFBMSUNBVElPTlMiLCAkb2ZmbGluZVdlYkFwcGxpY2F0aW9uU3VwcG9ydCk7CiAgICAg
cHVzaCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfU1ZHIiwgJHN2Z1N1cHBvcnQpOwogICAgIHB1
c2ggQG9wdGlvbnMsIG9wdGlvbigiRU5BQkxFX1NWR19BTklNQVRJT04iLCAkc3ZnQW5pbWF0aW9u
U3VwcG9ydCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0MzkyNSkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA5LTA1LTIwICBKb2huIEdy
ZWdnICA8am9obm55Z0Bnb29nbGUuY29tPgorCisgICAgICAgIEFkZHMgYmFzaWMgbGF5b3V0IHRl
c3QgdG8gY29uZmlybSB0aGUgbm90aWZpY2F0aW9ucyBpbnRlcmZhY2UgaXMgdmlzaWJsZSBmcm9t
IHdvcmtlciBzY3JpcHQuCisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGZhc3Qvbm90aWZpY2F0aW9uczogQWRkZWQuCisgICAgICAgICog
ZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtYWNjZXNzb3IuaHRtbC1kaXNhYmxlZDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtYWNjZXNz
b3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L25vdGlmaWNhdGlvbnMvcmVz
b3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L25vdGlmaWNhdGlvbnMvcmVzb3VyY2VzL3dv
cmtlci1ub3RpZmljYXRpb25zLmpzOiBBZGRlZC4KKwogMjAwOS0wNS0yMCAgSG9sZ2VyIEhhbnMg
UGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMv
bm90aWZpY2F0aW9ucy1hY2Nlc3Nvci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtYWNjZXNzb3ItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlm
aWNhdGlvbnMtYWNjZXNzb3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgg
QEAKK1Rlc3QgV29ya2VyIE5vdGlmaWNhdGlvbnMgYWNjZXNzLiBTaG91bGQgcHJpbnQgYSBzZXJp
ZXMgb2YgUEFTUyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05FLgorCitUZXN0IHN0YXJ0ZWQu
CitQQVNTOiBub3RpZmljYXRpb25zIG9iamVjdCBleGlzdHMuCitQQVNTOiBub3RpZmljYXRpb25z
LmNyZWF0ZUhUTUxOb3RpZmljYXRpb25zIGRvZXMgbm90IGV4aXN0LgorUEFTUzogbm90aWZpY2F0
aW9ucy5jcmVhdGVOb3RpZmljYXRpb25zIGRvZXMgbm90IGV4aXN0LgorRE9ORQorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1hY2Nlc3Nvci5odG1s
LWRpc2FibGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9u
b3RpZmljYXRpb25zLWFjY2Vzc29yLmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1hY2Nlc3Nvci5odG1sLWRp
c2FibGVkCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACis8Ym9keT4KKzxwPlRlc3QgV29y
a2VyIE5vdGlmaWNhdGlvbnMgYWNjZXNzLiBTaG91bGQgcHJpbnQgYSBzZXJpZXMgb2YgUEFTUyBt
ZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05FLjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2Pgor
PHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Cit9CisKK3RyeSB7CisgICAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoInJlc291cmNlcy93b3Jr
ZXItbm90aWZpY2F0aW9ucy5qcyIpOworCisgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9u
KGV2dCkgeworICAgICAgICBsb2coZXZ0LmRhdGEpOworICAgICAgICBpZiAoZXZ0LmRhdGEgPT0g
IkRPTkUiICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisgICAgCit9IGNhdGNoIChleCkg
eworICAgIGxvZygiRkFJTDogdW5leHBlY3RlZCBleGNlcHRpb24gIiArIGV4KTsKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3Qvbm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvd29ya2VyLW5vdGlmaWNhdGlvbnMuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL3Jlc291cmNlcy93b3Jr
ZXItbm90aWZpY2F0aW9ucy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvbm90
aWZpY2F0aW9ucy9yZXNvdXJjZXMvd29ya2VyLW5vdGlmaWNhdGlvbnMuanMJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTYgQEAKK3Bvc3RNZXNzYWdlKCJUZXN0IHN0YXJ0ZWQuIik7CisKKy8vIFRy
eSB0byBnZXQgdGhlIG5vdGlmaWNhdGlvbnMgb2JqZWN0IGZyb20gZ2xvYmFsIGNvbnRleHRzLgor
aWYgKG5vdGlmaWNhdGlvbnMgIT0gdW5kZWZpbmVkKSB7CisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6
IG5vdGlmaWNhdGlvbnMgb2JqZWN0IGV4aXN0cy4iKTsKKyAgICAKKyAgICBpZiAoIW5vdGlmaWNh
dGlvbnMuY3JlYXRlSFRNTE5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgcG9zdE1lc3NhZ2UoIlBB
U1M6IG5vdGlmaWNhdGlvbnMuY3JlYXRlSFRNTE5vdGlmaWNhdGlvbnMgZG9lcyBub3QgZXhpc3Qu
Iik7CisgICAgfQorICAgIAorICAgIGlmICghbm90aWZpY2F0aW9ucy5jcmVhdGVOb3RpZmljYXRp
b25zKSB7CisgICAgICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBub3RpZmljYXRpb25zLmNyZWF0ZU5v
dGlmaWNhdGlvbnMgZG9lcyBub3QgZXhpc3QuIik7CisgICAgfQorICAgIAorICAgIHBvc3RNZXNz
YWdlKCJET05FIik7Cit9Cg==
</data>
<flag name="review"
          id="15449"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30728</attachid>
            <date>2009-05-27 23:53:44 -0700</date>
            <delta_ts>2009-07-06 18:10:29 -0700</delta_ts>
            <desc>Notifications API with Permissions API</desc>
            <filename>WebKitPatchWithPermissions.diff</filename>
            <type>text/plain</type>
            <size>71446</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ0MTg4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDktMDUtMjAgIEpvaG4gR3Jl
Z2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkcyBFTkFCTEVfTk9USUZJQ0FUSU9OIGZsYWcgZm9yIHRoZSBi
dWlsZCBvZiBjdXN0b20gSlMgY29kZS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDA5LTA1LTI3ICBGcmlkcmljaCBTdHJiYSAgPGZyaWRy
aWNoLnN0cmJhQGJsdWV3aW4uY2g+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3Jv
bmhhLgpJbmRleDogSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDQ0MTg4KQorKysgSmF2YVNjcmlwdENvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDcgQEAgRU5BQkxFX0RPTV9TVE9SQUdFID0gRU5BQkxFX0RPTV9TVE9SQUdFOwog
RU5BQkxFX0dFT0xPQ0FUSU9OID0gOwogRU5BQkxFX0lDT05EQVRBQkFTRSA9IEVOQUJMRV9JQ09O
REFUQUJBU0U7CiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZBU0NSSVBU
X0RFQlVHR0VSOworRU5BQkxFX05PVElGSUNBVElPTlMgPSA7CiBFTkFCTEVfT0ZGTElORV9XRUJf
QVBQTElDQVRJT05TID0gRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUzsKIEVOQUJMRV9T
VkcgPSBFTkFCTEVfU1ZHOwogRU5BQkxFX1NWR19BTklNQVRJT04gPSBFTkFCTEVfU1ZHX0FOSU1B
VElPTjsKQEAgLTQ4LDQgKzQ5LDQgQEAgRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsK
IEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7
CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hB
Tk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFW
QVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVO
QUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkg
JChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5B
QkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8p
ICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxF
X1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJM
RV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RPTV9TVE9S
QUdFKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJM
RV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9P
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1B
VElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElO
R1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVO
QUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JL
RVJTKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaAkocmV2aXNpb24gNDQxODgpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAko
d29ya2luZyBjb3B5KQpAQCAtNDU2LDYgKzQ1NiwxMCBAQAogI2RlZmluZSBFTkFCTEVfR0VPTE9D
QVRJT04gMAogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykKKyNk
ZWZpbmUgRU5BQkxFX05PVElGSUNBVElPTlMgMAorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFC
TEVfVEVYVF9DQVJFVCkKICNkZWZpbmUgRU5BQkxFX1RFWFRfQ0FSRVQgMQogI2VuZGlmCkluZGV4
OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gNDQxODgpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM2IEBACisyMDA5LTA1LTIwICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hh
bmdlIGFkZHMgYW4gKGV4cGVyaW1lbnRhbCkgSFRNTCBub3RpZmljYXRpb24gQVBJLCBiZWluZyBw
cm90b3R5cGVkIGluIENocm9taXVtLiAgSXQncyBwcm90ZWN0ZWQgYnkgY29tcGlsZS10aW1lIGZl
YXR1cmUgZmxhZyBFTkFCTEVfTk9USUZJQ0FUSU9OUy4KKyAgICAgICAgCisgICAgICAgIFRlc3Q6
IGZhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWFjY2Vzc29yLWRpc2FibGVkLmh0bWwK
KworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29y
a2VyQ29udGV4dDo6bm90aWZpY2F0aW9ucyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Tm90aWZpY2F0aW9uc0N1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAqIG5vdGlmaWNhdGlv
bnM6IEFkZGVkLgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDogQWRk
ZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDogQWRkZWQuCisgICAg
ICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBu
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBhcmFtZXRlcnMuaDogQWRkZWQuCisgICAgICAgICog
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBu
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbnMuaDogQWRkZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25zLmlkbDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckNvbnRleHQ6Om5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyQ29udGV4dC5pZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6Z2V0Tm90aWZpY2F0
aW9uUHJvdmlkZXIpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaDoK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9iamVjdFByb3h5Lmg6CisKIDIwMDktMDUtMjcgIEZy
aWRyaWNoIFN0cmJhICA8ZnJpZHJpY2guc3RyYmFAYmx1ZXdpbi5jaD4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEuCkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA0
NDE4OCkKKysrIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYkNvcmUpL2h0bWwgXAogICAgICQoV2Vi
Q29yZSkvaW5zcGVjdG9yIFwKICAgICAkKFdlYkNvcmUpL2xvYWRlci9hcHBjYWNoZSBcCisgICAg
JChXZWJDb3JlKS9ub3RpZmljYXRpb25zIFwKICAgICAkKFdlYkNvcmUpL3BhZ2UgXAogICAgICQo
V2ViQ29yZSkvcGx1Z2lucyBcCiAgICAgJChXZWJDb3JlKS9zdG9yYWdlIFwKQEAgLTE4Myw2ICsx
ODQsOCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBOb2RlSXRlcmF0b3IgXAogICAgIE5vZGVMaXN0
IFwKICAgICBOb3RhdGlvbiBcCisgICAgTm90aWZpY2F0aW9uIFwKKyAgICBOb3RpZmljYXRpb25z
IFwKICAgICBPdmVyZmxvd0V2ZW50IFwKICAgICBQbHVnaW4gXAogICAgIFBsdWdpbkFycmF5IFwK
SW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkocmV2aXNpb24gNDQxODgpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBAIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1J
JChzcmNkaXIpL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlIFwKIAktSSQoc3JjZGlyKS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlIFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL2xvYWRlci9pY29uIFwKKwkt
SSQoc3JjZGlyKS9XZWJDb3JlL25vdGlmaWNhdGlvbnMgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUv
cGFnZSBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbiBcCiAJLUkkKHNyY2Rp
cikvV2ViQ29yZS9wbGF0Zm9ybSBcCkBAIC0yMjUsNiArMjI2LDggQEAgSURMX0JJTkRJTkdTICs9
IFwKIAlXZWJDb3JlL2h0bWwvVm9pZENhbGxiYWNrLmlkbCBcCiAJV2ViQ29yZS9pbnNwZWN0b3Iv
SmF2YVNjcmlwdENhbGxGcmFtZS5pZGwgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuaWRsIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCBc
CisJV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuaWRsIFwKIAlXZWJDb3JlL3Bh
Z2UvQmFySW5mby5pZGwgXAogCVdlYkNvcmUvcGFnZS9Db25zb2xlLmlkbCBcCiAJV2ViQ29yZS9w
YWdlL0Nvb3JkaW5hdGVzLmlkbCBcCkBAIC0yMzYxLDYgKzIzNjQsMjQgQEAgd2ViY29yZWd0a19z
b3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9HZW9sb2NhdGlvblNlcnZpY2VHdGsu
aAogZW5kaWYgIyBFTkQgRU5BQkxFX0dFT0xPQ0FUSU9OCiAKKyMgLS0tLQorIyBOb3RpZmljYXRp
b25zIHN1cHBvcnQKKyMgLS0tLQoraWYgRU5BQkxFX05PVElGSUNBVElPTlMKK0ZFQVRVUkVfREVG
SU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9OT1RJRklDQVRJT05TPTEKKword2ViY29yZV9jcHBm
bGFncyArPSBcCisJLURFTkFCTEVfTk9USUZJQ0FUSU9OUz0xCisKK3dlYmNvcmVfc291cmNlcyAr
PSBcCisJV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgXAorCVdlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBcCisJV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbnMuY3BwIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5o
IFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBcCisJV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBhcmFtZXRlcnMuaAorCitlbmRpZiAjIEVO
RCBFTkFCTEVfTk9USUZJQ0FUSU9OUwogCiAjIC0tLS0KICMgU1ZHIFN1cHBvcnQKQEAgLTMyMzYs
NCArMzI1NywzIEBAIENMRUFORklMRVMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmx1dC5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTUkdCQ29sb3IubHV0Lmgg
XAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5sdXQuaAotCkluZGV4
OiBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJl
dmlzaW9uIDQ0MTg4KQorKysgV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBFTkFCTEVfRE9NX1NUT1JB
R0UgPSBFTkFCTEVfRE9NX1NUT1JBR0U7CiBFTkFCTEVfR0VPTE9DQVRJT04gPSA7CiBFTkFCTEVf
SUNPTkRBVEFCQVNFID0gRU5BQkxFX0lDT05EQVRBQkFTRTsKIEVOQUJMRV9KQVZBU0NSSVBUX0RF
QlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVI7CitFTkFCTEVfTk9USUZJQ0FUSU9O
UyA9IDsKIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgPSBFTkFCTEVfT0ZGTElORV9X
RUJfQVBQTElDQVRJT05TOwogRU5BQkxFX1NWRyA9IEVOQUJMRV9TVkc7CiBFTkFCTEVfU1ZHX0FO
SU1BVElPTiA9IEVOQUJMRV9TVkdfQU5JTUFUSU9OOwpAQCAtNDgsNCArNDksNCBAQCBFTkFCTEVf
V09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwog
RU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVf
M0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJB
U0UpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVf
SUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9PRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElP
TikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1Mp
ICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJM
RV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJT
KSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVO
QUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9E
QVRBQkFTRSkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxF
X05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFC
TEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQo
RU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJM
RV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAk
KEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9Y
U0xUKTsKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiA0NDE4OCkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MDgsNiArNjA4LDE0IEBACiAJCTMxQzBGRjRDMEU0Q0VG
REQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzBGRjQ2MEU0Q0VGREQwMDdENkZFNSAv
KiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCAqLzsgfTsKIAkJMzFDMEZGNEQwRTRDRUZERDAw
N0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzBGRjQ3MEU0Q0VGREQwMDdENkZFNSAvKiBE
T01XZWJLaXRUcmFuc2l0aW9uRXZlbnQubW0gKi87IH07CiAJCTMxQzBGRjRFMEU0Q0VGREQwMDdE
NkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDMEZGNDgwRTRDRUZERDAwN0Q2RkU1
IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmggKi87IH07CisJCTMzM0Y3MDUy
MEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25zLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzRjcwNEEwRkI0OUNBMjAwOEUxMkE2IC8q
IE5vdGlmaWNhdGlvbnMuaWRsICovOyB9OworCQkzMzNGNzA1MzBGQjQ5Q0EyMDA4RTEyQTYgLyog
Tm90aWZpY2F0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMzNGNzA0QjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9ucy5jcHAgKi87
IH07CisJCTMzM0Y3MDU0MEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNGNzA0QzBGQjQ5Q0Ey
MDA4RTEyQTYgLyogTm90aWZpY2F0aW9ucy5oICovOyB9OworCQkzMzNGNzA1NTBGQjQ5Q0EyMDA4
RTEyQTYgLyogTm90aWZpY2F0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzRjcwNEQwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlm
aWNhdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKKwkJMzMzRjcwNTYwRkI0OUNBMjAwOEUxMkE2IC8q
IE5vdGlmaWNhdGlvbi5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMzM0Y3MDRFMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaWRsICov
OyB9OworCQkzMzNGNzA1NzBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNGNzA0RjBGQjQ5Q0Ey
MDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi87IH07CisJCTMzM0Y3MDU4MEZCNDlDQTIwMDhF
MTJBNiAvKiBOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzMzRjcwNTAwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5j
cHAgKi87IH07CisJCTMzM0Y3MDU5MEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25Qcm92
aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMz
RjcwNTEwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvblByb3ZpZGVyLmggKi87IH07CiAJ
CTM3MUY0RjQwMEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjRGM0UwRDI1QjlBRjAwRUNFMEQ1IC8q
IEZvbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMzcxRjRGNDEwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUY0RjNGMEQyNUI5QUYwMEVD
RTBENSAvKiBGb250RGF0YS5jcHAgKi87IH07CiAJCTM3MUY0RkZDMEQyNUU3RjMwMEVDRTBENSAv
KiBTZWdtZW50ZWRGb250RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzcxRjRGRkEwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRh
LmggKi87IH07CkBAIC01NTQ0LDYgKzU1NTIsMTQgQEAKIAkJMzFDMEZGNDYwRTRDRUZERDAwN0Q2
RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzFDMEZGNDcwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRp
b25FdmVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVdl
YktpdFRyYW5zaXRpb25FdmVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFD
MEZGNDgwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdlYktpdFRyYW5zaXRpb25F
dmVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzM0Y3MDRBMEZC
NDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBOb3RpZmljYXRpb25zLmlkbDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzM0Y3MDRCMEZCNDlDQTIwMDhFMTJB
NiAvKiBOb3RpZmljYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IE5vdGlmaWNhdGlvbnMuY3BwOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMzRjcwNEMwRkI0OUNBMjAwOEUx
MkE2IC8qIE5vdGlmaWNhdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Tm90aWZpY2F0aW9ucy5oOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzM0Y3MDREMEZCNDlDQTIwMDhFMTJBNiAvKiBO
b3RpZmljYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IE5vdGlmaWNhdGlvblBhcmFtZXRlcnMuaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA0RTBG
QjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBOb3RpZmljYXRpb24uaWRsOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYg
LyogTm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlm
aWNhdGlvbi5oOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMzRjcwNTAwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNh
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOb3RpZmljYXRp
b24uY3BwOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA1MTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0
aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0
aW9uUHJvdmlkZXIuaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRjRGM0UwRDI1QjlBRjAwRUNFMEQ1
IC8qIEZvbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnREYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUY0RjNGMEQyNUI5QUYwMEVDRTBE
NSAvKiBGb250RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
b250RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUY0RkZBMEQyNUU3
RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTZWdtZW50ZWRGb250RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtOTQzMSw2ICs5NDQ3LDcgQEAKIAkJCQk5M0VFQzFFQzA5QzI4Nzc3MDBDNTE1RDEgLyog
aHRtbCAqLywKIAkJCQkxQzgxQjk0RDBFOTczMkQ5MDAyNjZFMDcgLyogaW5zcGVjdG9yICovLAog
CQkJCUJDQjE2QkZCMDk3OUMzODcwMDQ2Nzc0MSAvKiBsb2FkZXIgKi8sCisJCQkJMzMzRjcwM0Qw
RkI0OUMxNjAwOEUxMkE2IC8qIG5vdGlmaWNhdGlvbnMgKi8sCiAJCQkJNjVCRjAyMTgwOTc0ODA2
MzAwQzQzMTk2IC8qIHBhZ2UgKi8sCiAJCQkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIzIC8qIHBs
YXRmb3JtICovLAogCQkJCTVEQ0Y4MzY5MEQ1OTE1NzgwMDk1M0JDNiAvKiBwbHVnaW5zICovLApA
QCAtOTg5OSw2ICs5OTE2LDIxIEBACiAJCQluYW1lID0gYW5pbWF0aW9uOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMzMzRjcwM0QwRkI0OUMxNjAwOEUxMkE2IC8qIG5vdGlm
aWNhdGlvbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTMzM0Y3MDRBMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25zLmlkbCAqLywKKwkJCQkz
MzNGNzA0QjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9ucy5jcHAgKi8sCisJCQkJMzMz
RjcwNEMwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbnMuaCAqLywKKwkJCQkzMzNGNzA0
RDBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uUGFyYW1ldGVycy5oICovLAorCQkJCTMz
M0Y3MDRFMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaWRsICovLAorCQkJCTMzM0Y3
MDRGMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaCAqLywKKwkJCQkzMzNGNzA1MDBG
QjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmNwcCAqLywKKwkJCQkzMzNGNzA1MTBGQjQ5
Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uUHJvdmlkZXIuaCAqLywKKwkJCSk7CisJCQluYW1l
ID0gbm90aWZpY2F0aW9uczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQ0
OTE5NTkwMEZCRTE3NUIwMEQ5RjgyNCAvKiBFeHBvcnRzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29u
dGV4dEV4ZWN1dGlvblByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAJKHJldmlzaW9uIDQ0MTg4KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw2ICszOCw4IEBACiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9u
LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9ucy5oIgogI2luY2x1ZGUgIlY4V29ya2VyQ29udGV4
dEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJWOFdvcmtlckNvbnRleHRPYmplY3RFdmVudExp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyLmgiCkBAIC0yNDIsNiArMjQ0LDE0IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBXb3JrZXJDb250ZXh0RXhlY3UKICAgICAgICAgICAgIGNhc2UgVjhD
bGFzc0luZGV4OjpXT1JLRVJOQVZJR0FUT1I6CiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
V29ya2VyTmF2aWdhdG9yKj4oaW1wbCktPnJlZigpOwogICAgICAgICAgICAgICAgIGJyZWFrOwor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICAgICAgY2FzZSBWOENsYXNzSW5kZXg6
Ok5PVElGSUNBVElPTlM6CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9u
cyo+KGltcGwpLT5yZWYoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT046CisgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8Tm90aWZpY2F0aW9uKj4oaW1wbCktPnJlZigpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
I2VuZGlmCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIEFTU0VSVChmYWxz
ZSk7CiAgICAgICAgICAgICB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERP
TVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA0NDE4OCkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODU5LDYgKzg1OSwxNSBAQCBDQUxMQkFDS19GVU5DX0RFQ0woRE9NV2luZG93Q2xlYXJJbnRlcnZh
CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQorQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd05vdGlmaWNhdGlvbnMpCit7CisgICAgSU5D
X1NUQVRTKEwiRE9NLkRPTVdpbmRvdy5ub3RpZmljYXRpb25zLl9nZXQiKTsKKyAgICBET01XaW5k
b3cqIGltcCA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4
OjpET01XSU5ET1csIGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiBWOFByb3h5OjpUb1Y4T2Jq
ZWN0KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OUywgaW1wLT5ub3RpZmljYXRpb25zKCkpOwor
fQorI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQorCiBOQU1FRF9BQ0NFU1NfQ0hFQ0so
RE9NV2luZG93KQogewogICAgIEFTU0VSVChWOENsYXNzSW5kZXg6OkZyb21JbnQoZGF0YS0+SW50
MzJWYWx1ZSgpKSA9PSBWOENsYXNzSW5kZXg6OkRPTVdJTkRPVyk7CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uc0N1c3RvbS5jcHAJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbnND
dXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorCisjaW5jbHVkZSAidjhfYmluZGluZy5o
IgorI2luY2x1ZGUgInY4X2N1c3RvbS5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKworI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVk
ZSAiTm90aWZpY2F0aW9ucy5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRl
ICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIK
KyNpbmNsdWRlICJWOEN1c3RvbUV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJWOEN1c3RvbVZv
aWRDYWxsYmFjay5oIgorI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworQUNDRVNTT1JfR0VUVEVSKE5vdGlmaWNhdGlvbk9uZGlzcGxheSkKK3sKKyAgICBJ
TkNfU1RBVFMoTCJET00uTm90aWZpY2F0aW9uLm9uZGlzcGxheS5fZ2V0Iik7CisgICAgTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24gPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxOb3RpZmljYXRp
b24+KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1
cm4gVjhQcm94eTo6RXZlbnRMaXN0ZW5lclRvVjhPYmplY3Qobm90aWZpY2F0aW9uLT5vbmRpc3Bs
YXkoKSk7Cit9CisKK0FDQ0VTU09SX1NFVFRFUihOb3RpZmljYXRpb25PbmRpc3BsYXkpIAorewor
ICAgIElOQ19TVEFUUyhMIkRPTS5Ob3RpZmljYXRpb24ub25kaXNwbGF5Ll9zZXQiKTsKKyAgICBO
b3RpZmljYXRpb24qIG5vdGlmID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0aW9u
PihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwgaW5mby5Ib2xkZXIoKSk7CisgICAgVjhFdmVu
dExpc3RlbmVyKiBvbGRMaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4RXZlbnRMaXN0ZW5lcio+KG5v
dGlmLT5vbmRpc3BsYXkoKSk7CisgICAgaWYgKHZhbHVlLT5Jc051bGwoKSkgeworICAgICAgICBp
ZiAob2xkTGlzdGVuZXIpIHsKKyAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvbGRW
OExpc3RlbmVyID0gb2xkTGlzdGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgICAg
ICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIG9sZFY4TGlzdGVuZXIsIFY4
Q3VzdG9tOjprTm90aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gQ2xlYXIgdGhlIGxpc3RlbmVyCisgICAgICAgIG5vdGlmLT5zZXRPbmRpc3BsYXko
MCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVy
OworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gbm90aWYtPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICAgICAgaWYgKGNvbnRleHQtPmlzV29ya2VyQ29udGV4
dCgpKQorICAgICAgICAgICAgbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4o
Y29udGV4dCktPnNjcmlwdCgpLT5wcm94eSgpLT5maW5kT3JDcmVhdGVFdmVudExpc3RlbmVyKHY4
OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSksIGZhbHNlLCBmYWxzZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGxpc3RlbmVyID0gVjhQcm94eTo6cmV0cmlldmUoY29udGV4dCkt
PkZpbmRPckNyZWF0ZVY4RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3Qo
dmFsdWUpLCBmYWxzZSk7CisKKyAgICAgICAgaWYgKGxpc3RlbmVyKSB7CisgICAgICAgICAgICBp
ZiAob2xkTGlzdGVuZXIpIHsKKyAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4g
b2xkVjhMaXN0ZW5lciA9IG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAg
ICAgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgb2xkVjhMaXN0
ZW5lciwgVjhDdXN0b206OmtOb3RpZmljYXRpb25SZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgICAg
ICAgICB9CisgICAgCisgICAgICAgICAgICBub3RpZi0+c2V0T25kaXNwbGF5KGxpc3RlbmVyKTsK
KyAgICAgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgdmFsdWUs
IFY4Q3VzdG9tOjprTm90aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICB9Cisg
ICAgfQorfQorCitBQ0NFU1NPUl9HRVRURVIoTm90aWZpY2F0aW9uT25lcnJvcikKK3sKKyAgICBJ
TkNfU1RBVFMoTCJET00uTm90aWZpY2F0aW9uLm9uZXJyb3IuX2dldCIpOworICAgIE5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0aW9u
PihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwgaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJu
IFY4UHJveHk6OkV2ZW50TGlzdGVuZXJUb1Y4T2JqZWN0KG5vdGlmaWNhdGlvbi0+b25lcnJvcigp
KTsKK30KKworQUNDRVNTT1JfU0VUVEVSKE5vdGlmaWNhdGlvbk9uZXJyb3IpCit7CisgICAgSU5D
X1NUQVRTKEwiRE9NLk5vdGlmaWNhdGlvbi5vbmVycm9yLl9zZXQiKTsKKyAgICBOb3RpZmljYXRp
b24qIG5vdGlmID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0aW9uPihWOENsYXNz
SW5kZXg6Ok5PVElGSUNBVElPTiwgaW5mby5Ib2xkZXIoKSk7CisgICAgVjhFdmVudExpc3RlbmVy
KiBvbGRMaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4RXZlbnRMaXN0ZW5lcio+KG5vdGlmLT5vbmVy
cm9yKCkpOworICAgIGlmICh2YWx1ZS0+SXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKG9sZExpc3Rl
bmVyKSB7CisgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0ZW5lciA9
IG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgICAgICAgcmVtb3ZlSGlk
ZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCBvbGRWOExpc3RlbmVyLCBWOEN1c3RvbTo6a05v
dGlmaWNhdGlvblJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENs
ZWFyIHRoZSBsaXN0ZW5lcgorICAgICAgICBub3RpZi0+c2V0T25lcnJvcigwKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXI7CisgICAgICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBub3RpZi0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOworICAgICAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpCisgICAgICAg
ICAgICBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0KS0+c2Ny
aXB0KCktPnByb3h5KCktPmZpbmRPckNyZWF0ZUV2ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpP
YmplY3Q+OjpDYXN0KHZhbHVlKSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbGlzdGVuZXIgPSBWOFByb3h5OjpyZXRyaWV2ZShjb250ZXh0KS0+RmluZE9yQ3JlYXRl
VjhFdmVudExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSksIGZhbHNl
KTsKKyAgICAgICAgCisgICAgICAgIGlmIChsaXN0ZW5lcikgeworICAgICAgICAgICAgaWYgKG9s
ZExpc3RlbmVyKSB7CisgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9sZFY4
TGlzdGVuZXIgPSBvbGRMaXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKKyAgICAgICAgICAg
ICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIG9sZFY4TGlzdGVuZXIs
IFY4Q3VzdG9tOjprTm90aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBub3RpZi0+c2V0T25lcnJvcihsaXN0ZW5lcik7CisgICAgICAgICAg
ICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIHZhbHVlLCBWOEN1c3RvbTo6
a05vdGlmaWNhdGlvblJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
QUNDRVNTT1JfR0VUVEVSKE5vdGlmaWNhdGlvbk9uY2xvc2UpIAoreworICAgIElOQ19TVEFUUyhM
IkRPTS5Ob3RpZmljYXRpb24ub25jbG9zZS5fZ2V0Iik7CisgICAgTm90aWZpY2F0aW9uKiBub3Rp
ZmljYXRpb24gPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxOb3RpZmljYXRpb24+KFY4Q2xhc3NJ
bmRleDo6Tk9USUZJQ0FUSU9OLCBpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gVjhQcm94eTo6
RXZlbnRMaXN0ZW5lclRvVjhPYmplY3Qobm90aWZpY2F0aW9uLT5vbmNsb3NlKCkpOworfQorCitB
Q0NFU1NPUl9TRVRURVIoTm90aWZpY2F0aW9uT25jbG9zZSkKK3sKKyAgICBJTkNfU1RBVFMoTCJE
T00uTm90aWZpY2F0aW9uLm9uZXJyb3IuX3NldCIpOworICAgIE5vdGlmaWNhdGlvbiogbm90aWYg
PSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxOb3RpZmljYXRpb24+KFY4Q2xhc3NJbmRleDo6Tk9U
SUZJQ0FUSU9OLCBpbmZvLkhvbGRlcigpKTsKKyAgICBWOEV2ZW50TGlzdGVuZXIqIG9sZExpc3Rl
bmVyID0gc3RhdGljX2Nhc3Q8VjhFdmVudExpc3RlbmVyKj4obm90aWYtPm9uY2xvc2UoKSk7Cisg
ICAgaWYgKHZhbHVlLT5Jc051bGwoKSkgeworICAgICAgICBpZiAob2xkTGlzdGVuZXIpIHsKKyAg
ICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvbGRWOExpc3RlbmVyID0gb2xkTGlzdGVu
ZXItPmdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRl
bmN5KGluZm8uSG9sZGVyKCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjprTm90aWZpY2F0aW9u
UmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2xlYXIgdGhlIGxp
c3RlbmVyCisgICAgICAgIG5vdGlmLT5zZXRPbmNsb3NlKDApOworICAgIH0gZWxzZSB7CisgICAg
ICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcjsKKyAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCA9IG5vdGlmLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Cisg
ICAgICAgIGlmIChjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkKKyAgICAgICAgICAgIGxpc3Rl
bmVyID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpLT5zY3JpcHQoKS0+cHJv
eHkoKS0+ZmluZE9yQ3JlYXRlRXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNh
c3QodmFsdWUpLCBmYWxzZSwgZmFsc2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsaXN0
ZW5lciA9IFY4UHJveHk6OnJldHJpZXZlKGNvbnRleHQpLT5GaW5kT3JDcmVhdGVWOEV2ZW50TGlz
dGVuZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSwgZmFsc2UpOworICAgICAg
ICAKKyAgICAgICAgaWYgKGxpc3RlbmVyKSB7CisgICAgICAgICAgICBpZiAob2xkTGlzdGVuZXIp
IHsKKyAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0ZW5lciA9
IG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgICAgICAgICAgIHJlbW92
ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgb2xkVjhMaXN0ZW5lciwgVjhDdXN0b206
OmtOb3RpZmljYXRpb25SZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIG5vdGlmLT5zZXRPbmNsb3NlKGxpc3RlbmVyKTsKKyAgICAgICAgICAgIGNyZWF0ZUhp
ZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgdmFsdWUsIFY4Q3VzdG9tOjprTm90aWZpY2F0
aW9uUmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICB9CisgICAgfQorfQorCitDQUxMQkFDS19G
VU5DX0RFQ0woTm90aWZpY2F0aW9uc0NyZWF0ZUhUTUxOb3RpZmljYXRpb24pCit7CisgICAgSU5D
X1NUQVRTKEwiRE9NLk5vdGlmaWNhdGlvbnMuQ3JlYXRlSFRNTE5vdGlmaWNhdGlvbigpIik7Cisg
ICAgTm90aWZpY2F0aW9ucyogbm90aWZJbnRlcmZhY2UgPSBWOFByb3h5OjpUb05hdGl2ZU9iamVj
dDxOb3RpZmljYXRpb25zPihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTlMsIGFyZ3MuSG9sZGVy
KCkpOworICAKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTdHJpbmcgdXJsID0gdG9X
ZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOworICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmID0g
Tm90aWZpY2F0aW9uOjpjcmVhdGUodXJsLCBub3RpZkludGVyZmFjZS0+Y29udGV4dCgpLCBlYywg
bm90aWZJbnRlcmZhY2UtPnByb3ZpZGVyKCkpOworCisgICAgaWYgKGVjKQorICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihlYyk7CisKKyAgICByZXR1cm4gV29ya2VyQ29udGV4dEV4ZWN1dGlvblBy
b3h5OjpUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBub3RpZi5nZXQoKSk7
Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChOb3RpZmljYXRpb25zQ3JlYXRlTm90aWZpY2F0aW9u
KQoreworICAgIElOQ19TVEFUUyhMIkRPTS5Ob3RpZmljYXRpb25zLkNyZWF0ZU5vdGlmaWNhdGlv
bigpIik7CisgICAgTm90aWZpY2F0aW9ucyogbm90aWZJbnRlcmZhY2UgPSBWOFByb3h5OjpUb05h
dGl2ZU9iamVjdDxOb3RpZmljYXRpb25zPihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTlMsIGFy
Z3MuSG9sZGVyKCkpOworICAgIAorICAgIE5vdGlmaWNhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVy
cyh0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIHRvV2ViQ29yZVN0cmluZyhhcmdzWzFdKSwgdG9X
ZWJDb3JlU3RyaW5nKGFyZ3NbMl0pKTsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZiA9IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKHBh
cmFtZXRlcnMsIG5vdGlmSW50ZXJmYWNlLT5jb250ZXh0KCksIGVjLCBub3RpZkludGVyZmFjZS0+
cHJvdmlkZXIoKSk7CisKKyAgICBpZiAoZWMpIAorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihl
Yyk7CisKKyAgICByZXR1cm4gV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpUb1Y4T2JqZWN0
KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBub3RpZi5nZXQoKSk7Cit9CisKK0NBTExCQUNL
X0ZVTkNfREVDTChOb3RpZmljYXRpb25zQ2hlY2tQZXJtaXNzaW9uKQoreworICAgIElOQ19TVEFU
UyhMIkRPTS5Ob3RpZmljYXRpb25zLkNoZWNrUGVybWlzc2lvbigpIik7CisgICAgTm90aWZpY2F0
aW9ucyogbm90aWZJbnRlcmZhY2UgPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxOb3RpZmljYXRp
b25zPihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTlMsIGFyZ3MuSG9sZGVyKCkpOworICAgIGlu
dCBwZXJtaXNzaW9uID0gbm90aWZJbnRlcmZhY2UtPmNoZWNrUGVybWlzc2lvbigpOworICAgIAor
ICAgIHJldHVybiB2ODo6SW50ZWdlcjo6TmV3KHBlcm1pc3Npb24pOworfQorCitDQUxMQkFDS19G
VU5DX0RFQ0woTm90aWZpY2F0aW9uc1JlcXVlc3RQZXJtaXNzaW9uKQoreworICAgIElOQ19TVEFU
UyhMIkRPTS5Ob3RpZmljYXRpb25zLlJlcXVlc3RQZXJtaXNzaW9uKCkiKTsKKyAgICBOb3RpZmlj
YXRpb25zKiBub3RpZkludGVyZmFjZSA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PE5vdGlmaWNh
dGlvbnM+KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OUywgYXJncy5Ib2xkZXIoKSk7CisgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IG5vdGlmSW50ZXJmYWNlLT5jb250ZXh0
KCk7CisKKyAgICAvLyByZXF1ZXN0aW5nIHBlcm1pc3Npb24gaXMgb25seSB2YWxpZCBmcm9tIGEg
cGFnZSBjb250ZXh0LgorICAgIGlmIChjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoTk9UX1NVUFBPUlRFRF9FUlIpOworICAgICAKKyAgICBSZWZQ
dHI8VjhDdXN0b21Wb2lkQ2FsbGJhY2s+IGNhbGxiYWNrOworICAgIGlmIChhcmdzLkxlbmd0aCgp
ID4gMCkgeworICAgICAgICBpZiAoIWFyZ3NbMF0tPklzT2JqZWN0KCkpIHsKKyAgICAgICAgICAg
IFY4UHJveHk6OlRocm93RXJyb3IoVjhQcm94eTo6VFlQRV9FUlJPUiwgIkNhbGxiYWNrIG11c3Qg
YmUgb2YgdmFsaWQgdHlwZS4iKTsKKyAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CisgICAgICAgIH0KKyAgICAgICAgY2FsbGJhY2sgPSBWOEN1c3RvbVZvaWRDYWxsYmFjazo6Y3Jl
YXRlKGFyZ3NbMF0sIFY4UHJveHk6OnJldHJpZXZlRnJhbWUoKSk7CisgICAgfQorCisgICAgbm90
aWZJbnRlcmZhY2UtPnJlcXVlc3RQZXJtaXNzaW9uKGNhbGxiYWNrLnJlbGVhc2UoKSk7CisgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKE5vdGlmaWNh
dGlvblNob3cpIAoreworICAgIElOQ19TVEFUUyhMIkRPTS5Ob3RpZmljYXRpb24uU2hvdygpIik7
CisgICAgTm90aWZpY2F0aW9uKiBub3RpZiA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PE5vdGlm
aWNhdGlvbj4oVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT04sIGFyZ3MuSG9sZGVyKCkpOworICAg
IG5vdGlmLT5zaG93KCk7CisKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCitDQUxM
QkFDS19GVU5DX0RFQ0woTm90aWZpY2F0aW9uQ2FuY2VsKSAKK3sKKyAgICBJTkNfU1RBVFMoTCJE
T00uTm90aWZpY2F0aW9uLkNhbmNlbCgpIik7CisgICAgTm90aWZpY2F0aW9uKiBub3RpZiA9IFY4
UHJveHk6OlRvTmF0aXZlT2JqZWN0PE5vdGlmaWNhdGlvbj4oVjhDbGFzc0luZGV4OjpOT1RJRklD
QVRJT04sIGFyZ3MuSG9sZGVyKCkpOworICAgIG5vdGlmLT5jYW5jZWwoKTsKKworICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDQ0MTg4
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsMTUgQEAgQUNDRVNTT1JfU0VUVEVSKFdvcmtl
ckNvbnRleHRPbm1lc3NhZ2UpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
CitBQ0NFU1NPUl9HRVRURVIoV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMpCit7CisgICAgSU5D
X1NUQVRTKEwiRE9NLldvcmtlckNvbnRleHQubm90aWZpY2F0aW9ucy5fZ2V0Iik7CisgICAgV29y
a2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PFdvcmtl
ckNvbnRleHQ+KFY4Q2xhc3NJbmRleDo6V09SS0VSQ09OVEVYVCwgaW5mby5Ib2xkZXIoKSk7Cisg
ICAgcmV0dXJuIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6VG9WOE9iamVjdChWOENsYXNz
SW5kZXg6Ok5PVElGSUNBVElPTlMsIHdvcmtlckNvbnRleHQtPm5vdGlmaWNhdGlvbnMoKSk7Cit9
CisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCisKIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBTZXRUaW1lb3V0T3JJbnRlcnZhbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sIHNp
bmdsZVNob3QpCiB7CiAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4UHJveHk6
OlRvTmF0aXZlT2JqZWN0PFdvcmtlckNvbnRleHQ+KFY4Q2xhc3NJbmRleDo6V09SS0VSQ09OVEVY
VCwgYXJncy5Ib2xkZXIoKSk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gNDQx
ODgpCisrKyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTMzLDYgKzEzMywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGV4Y2VlZGVkRGF0YWJh
c2VRdW90YShGcmFtZSosIGNvbnN0IFN0cmluZyYpIHsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKKyAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBub3RpZmlj
YXRpb25Qcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCiAgICAgdmlydHVh
bCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSB7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgTm9kZSopIHsgfQpJ
bmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlv
blBhcmFtZXRlcnMuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHVybCwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIE5vdGlmaWNhdGlv
blByb3ZpZGVyKiBwcm92aWRlcikKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlz
KQorICAgICwgbV9IVE1MKHRydWUpCisgICAgLCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQorICAgICwg
bV9pZCgwKQoreworICAgIGlmIChtX3Byb3ZpZGVyLT5jaGVja1Blcm1pc3Npb24oY29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKSkgIT0gTm90aWZpY2F0aW9uUHJvdmlkZXI6OlBFUk1JU1NJT05fQUxM
T1dFRCkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1fbm90aWZpY2F0aW9uVVJMID0gY29udGV4dC0+Y29tcGxldGVVUkwodXJsKTsK
KyAgICBpZiAodXJsLmlzRW1wdHkoKSB8fCAhbV9ub3RpZmljYXRpb25VUkwuaXNWYWxpZCgpKSB7
CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwor
Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgTm90aWZpY2F0aW9uUGFyYW1ldGVycyYg
ZmllbGRzLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBl
YywgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKQorICAgIDogQWN0aXZlRE9NT2JqZWN0
KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX0hUTUwoZmFsc2UpCisgICAgLCBtX2ZpZWxkcyhmaWVs
ZHMpCisgICAgLCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQorICAgICwgbV9pZCgwKQoreworICAgIGlm
IChtX3Byb3ZpZGVyLT5jaGVja1Blcm1pc3Npb24oY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSkg
IT0gTm90aWZpY2F0aW9uUHJvdmlkZXI6OlBFUk1JU1NJT05fQUxMT1dFRCkgeworICAgICAgICBl
YyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEtVUkwgaWNv
biA9IGNvbnRleHQtPmNvbXBsZXRlVVJMKGZpZWxkcy5pY29uKCkpOworICAgIGlmICghaWNvbi5p
c0VtcHR5KCkgJiYgIWljb24uaXNWYWxpZCgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9u
KCkgCit7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkgCit7CisgICAgaWYgKG1fSFRN
TCkKKyAgICAgICAgbV9pZCA9IG1fcHJvdmlkZXItPnNob3cobV9ub3RpZmljYXRpb25VUkwsIHRo
aXMpOworICAgIGVsc2UKKyAgICAgICAgbV9pZCA9IG1fcHJvdmlkZXItPnNob3cobV9maWVsZHMu
aWNvbigpLCBtX2ZpZWxkcy50aXRsZSgpLCBtX2ZpZWxkcy5ib2R5KCksIHRoaXMpOworfQorCit2
b2lkIE5vdGlmaWNhdGlvbjo6Y2FuY2VsKCkgCit7CisgICAgbV9wcm92aWRlci0+Y2FuY2VsKG1f
aWQpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hEaXNwbGF5RXZlbnQoKSAKK3sg
ICAKKyAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
bG9hZEV2ZW50LCBmYWxzZSwgdHJ1ZSk7CisgICAgaWYgKG1fb25EaXNwbGF5TGlzdGVuZXIpIHsK
KyAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZlbnQtPnNldEN1cnJl
bnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fb25EaXNwbGF5TGlzdGVuZXItPmhhbmRsZUV2ZW50
KGV2ZW50LmdldCgpLCB0cnVlKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LnJlbGVhc2UoKSwgZWMpOworICAgIEFTU0VSVCghZWMp
OworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkKK3sgIAorICAg
IFJlZlB0cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2
ZW50LCBmYWxzZSwgdHJ1ZSk7CisgICAgaWYgKG1fb25FcnJvckxpc3RlbmVyKSB7CisgICAgICAg
IGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0
KHRoaXMpOworICAgICAgICBtX29uRXJyb3JMaXN0ZW5lci0+aGFuZGxlRXZlbnQoZXZlbnQuZ2V0
KCksIHRydWUpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3Bh
dGNoRXZlbnQoZXZlbnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7Cit9CisKK3Zv
aWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQoKSAKK3sgICAKKyAgICBSZWZQdHI8
RXZlbnQ+IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgZmFs
c2UsIHRydWUpOworICAgIGlmIChtX29uQ2xvc2VMaXN0ZW5lcikgeworICAgICAgICBldmVudC0+
c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsK
KyAgICAgICAgbV9vbkNsb3NlTGlzdGVuZXItPmhhbmRsZUV2ZW50KGV2ZW50LmdldCgpLCB0cnVl
KTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50
KGV2ZW50LnJlbGVhc2UoKSwgZWMpOworICAgIEFTU0VSVCghZWMpOworfQorCit2b2lkIE5vdGlm
aWNhdGlvbjo6ZGlzcGxheSgpCit7CisgICAgZGlzcGF0Y2hEaXNwbGF5RXZlbnQoKTsKK30KKwor
dm9pZCBOb3RpZmljYXRpb246OmVycm9yKCkKK3sKKyAgICBkaXNwYXRjaEVycm9yRXZlbnQoKTsK
K30KKwordm9pZCBOb3RpZmljYXRpb246OmNsb3NlKCkKK3sKKyAgICBkaXNwYXRjaENsb3NlRXZl
bnQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5P
VElGSUNBVElPTlMpCkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTm90aWZpY2F0aW9uX2ggIAorI2RlZmluZSBO
b3RpZmljYXRpb25faAorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAi
QXRvbWljU3RyaW5nSGFzaC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRM
aXN0ZW5lci5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25Qcm92aWRl
ci5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQorbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgV29ya2VyQ29udGV4dDsK
KworICAgIGNsYXNzIE5vdGlmaWNhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlv
bj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCB7IAorICAgIHB1
YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlv
bkNvZGUmIGVjLCBOb3RpZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0
UmVmKG5ldyBOb3RpZmljYXRpb24odXJsLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKTsgfQorICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBOb3RpZmlj
YXRpb25QYXJhbWV0ZXJzJiBmaWVsZHMsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24oZmllbGRzLCBjb250ZXh0LCBlYywgcHJvdmlk
ZXIpKTsgfQorICAgICAgICAKKyAgICAgICAgdmlydHVhbCB+Tm90aWZpY2F0aW9uKCk7CisKKyAg
ICAgICAgdm9pZCBzaG93KCk7CisgICAgICAgIHZvaWQgY2FuY2VsKCk7CisgICAgCisgICAgICAg
IEV2ZW50TGlzdGVuZXIqIG9uZGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fb25EaXNwbGF5TGlz
dGVuZXIuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRPbmRpc3BsYXkoUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25EaXNwbGF5TGlzdGVuZXIgPSBldmVudExp
c3RlbmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uZXJyb3IoKSBjb25zdCB7IHJldHVy
biBtX29uRXJyb3JMaXN0ZW5lci5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldE9uZXJyb3IoUGFz
c1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25FcnJvckxpc3RlbmVy
ID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVudExpc3RlbmVyKiBvbmNsb3NlKCkgY29u
c3QgeyByZXR1cm4gbV9vbkNsb3NlTGlzdGVuZXIuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRP
bmNsb3NlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uQ2xv
c2VMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAKKyAgICAgICAgdXNpbmcgUmVmQ291
bnRlZDxOb3RpZmljYXRpb24+OjpyZWY7CisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8Tm90aWZp
Y2F0aW9uPjo6ZGVyZWY7CisgICAgCisgICAgICAgIC8vIENhbGxiYWNrIG1ldGhvZHMgZm9yIHRo
ZSBwcm92aWRlciB3aGVuIGV2ZW50cyBvY2N1ciByZWdhcmRpbmcgdGhlIG5vdGlmaWNhdGlvbi4K
KyAgICAgICAgdm9pZCBkaXNwbGF5KCk7CisgICAgICAgIHZvaWQgZXJyb3IoKTsKKyAgICAgICAg
dm9pZCBjbG9zZSgpOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sKSB7fQorICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmLCBFdmVudExp
c3RlbmVyKiwgYm9vbCkge30KKyAgICAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAg
CisgICAgcHJpdmF0ZToKKyAgICAgICAgTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgTm90aWZp
Y2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKTsKKyAgICAgICAgTm90aWZpY2F0aW9uKGNvbnN0IE5v
dGlmaWNhdGlvblBhcmFtZXRlcnMmIGZpZWxkcywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcik7
CisKKyAgICAgICAgdm9pZCBkaXNwYXRjaERpc3BsYXlFdmVudCgpOworICAgICAgICB2b2lkIGRp
c3BhdGNoRXJyb3JFdmVudCgpOworICAgICAgICB2b2lkIGRpc3BhdGNoQ2xvc2VFdmVudCgpOwor
CisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgIAorICAgICAgICBib29sIG1fSFRNTDsKKyAgICAg
ICAgS1VSTCBtX25vdGlmaWNhdGlvblVSTDsKKyAgICAgICAgTm90aWZpY2F0aW9uUGFyYW1ldGVy
cyBtX2ZpZWxkczsKKworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbkRpc3BsYXlM
aXN0ZW5lcjsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25FcnJvckxpc3RlbmVy
OworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbkNsb3NlTGlzdGVuZXI7CisKKyAg
ICAgICAgTm90aWZpY2F0aW9uUHJvdmlkZXIqIG1fcHJvdmlkZXI7CisKKyAgICAgICAgaW50IG1f
aWQ7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KE5PVElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBOb3RpZmljYXRpb25zX2gKSW5kZXg6IFdlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
Cittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25h
bD1OT1RJRklDQVRJT05TCisgICAgXSBOb3RpZmljYXRpb24geworICAgICAgICBbQ3VzdG9tXSB2
b2lkIHNob3coKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBjYW5jZWwoKTsKKworICAgICAgICBh
dHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRpc3BsYXk7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVu
dExpc3RlbmVyIG9uZXJyb3I7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2xv
c2U7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
blBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgTm90aWZpY2F0aW9uUGFyYW1ldGVyc19oCisjZGVmaW5lIE5vdGlmaWNhdGlvblBhcmFt
ZXRlcnNfaAorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworICAgIGNsYXNzIE5vdGlmaWNhdGlvblBhcmFtZXRlcnMgeyAKKyAgICBwdWJsaWM6Cisg
ICAgICAgIE5vdGlmaWNhdGlvblBhcmFtZXRlcnMoKSB7fQorICAgICAgICBOb3RpZmljYXRpb25Q
YXJhbWV0ZXJzKGNvbnN0IFN0cmluZyYgaWNvblVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29u
c3QgU3RyaW5nJiBib2R5KSAKKyAgICAgICAgICAgIDogbV9pY29uKGljb25VcmwpCisgICAgICAg
ICAgICAsIG1fdGl0bGUodGl0bGUpCisgICAgICAgICAgICAsIG1fYm9keShib2R5KSB7fQorCisg
ICAgICAgIFN0cmluZyBpY29uKCkgY29uc3QgeyByZXR1cm4gbV9pY29uOyB9CisgICAgICAgIFN0
cmluZyB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KKyAgICAgICAgU3RyaW5nIGJv
ZHkoKSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFN0
cmluZyBtX2ljb247CisgICAgICAgIFN0cmluZyBtX3RpdGxlOworICAgICAgICBTdHJpbmcgbV9i
b2R5OworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShOT1RJRklDQVRJT05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uUGFyYW1ldGVyc19oCklu
ZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJvdmlkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJvdmlkZXIuaAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Qcm92aWRlci5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRpb25Qcm92aWRl
cl9oCisjZGVmaW5lIE5vdGlmaWNhdGlvblByb3ZpZGVyX2gKKworI2luY2x1ZGUgIlBhc3NSZWZQ
dHIuaCIKKyNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKKworI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBOb3RpZmljYXRpb247Cisg
ICAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CisgICAgY2xhc3MgU3RyaW5nOworICAgIAorICAgIGNs
YXNzIE5vdGlmaWNhdGlvblByb3ZpZGVyIHsKKworICAgIHB1YmxpYzoKKyAgICAgICAgZW51bSBQ
ZXJtaXNzaW9uIHsgCisgICAgICAgICAgICBQRVJNSVNTSU9OX0FMTE9XRUQsCisgICAgICAgICAg
ICBQRVJNSVNTSU9OX05PVF9BTExPV0VELAorICAgICAgICAgICAgUEVSTUlTU0lPTl9ERU5JRUQK
KyAgICAgICAgfTsKKworICAgICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25Qcm92aWRlcigpIHt9
CisKKyAgICAgICAgdmlydHVhbCBpbnQgc2hvdyhjb25zdCBTdHJpbmcmIFVSTCwgTm90aWZpY2F0
aW9uKiBvYmplY3QpID0gMDsKKworICAgICAgICB2aXJ0dWFsIGludCBzaG93KGNvbnN0IFN0cmlu
ZyYgaWNvblVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBOb3Rp
ZmljYXRpb24qIG9iamVjdCkgPSAwOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoaW50
IGhhbmRsZSkgPSAwOworCisgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihT
ZWN1cml0eU9yaWdpbiogb3JpZ2luLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2sp
ID0gMDsKKworICAgICAgICB2aXJ0dWFsIFBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4pID0gMDsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2VuZGlmIC8vIE5vdGlmaWNh
dGlvblByb3ZpZGVyX2gKSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5j
cHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbnMuaCIKKwor
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiUGVybWlzc2lvbkNhbGxiYWNrLmgiCisj
aW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05vdGlm
aWNhdGlvbnM6Ok5vdGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Tm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKSAKKyAgICA6IEFjdGl2ZURPTU9iamVjdChj
b250ZXh0LCB0aGlzKQorICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCisg
ICAgLCBtX25vdGlmaWNhdGlvblByb3ZpZGVyKHByb3ZpZGVyKSB7fQorCisKK2ludCBOb3RpZmlj
YXRpb25zOjpjaGVja1Blcm1pc3Npb24oKSAKK3sKKyAgICByZXR1cm4gbV9ub3RpZmljYXRpb25Q
cm92aWRlci0+Y2hlY2tQZXJtaXNzaW9uKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJp
dHlPcmlnaW4oKSk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uczo6cmVxdWVzdFBlcm1pc3Npb24o
UGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKQoreworICAgIG1fbm90aWZpY2F0aW9u
UHJvdmlkZXItPnJlcXVlc3RQZXJtaXNzaW9uKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2Vj
dXJpdHlPcmlnaW4oKSwgY2FsbGJhY2spOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5vdGlm
aWNhdGlvbnNfaAorI2RlZmluZSBOb3RpZmljYXRpb25zX2gKKworI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbi5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CisKKyAgICBjbGFzcyBOb3RpZmljYXRpb25zIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZp
Y2F0aW9ucz4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeyAKKyAgICBwdWJsaWM6CisgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbnM+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb25zKGNvbnRleHQsIHByb3ZpZGVyKSk7IH0KKyAgICAg
ICAgCisgICAgICAgIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVIVE1MTm90aWZpY2F0
aW9uKGNvbnN0IFN0cmluZyYgVVJJLCBFeGNlcHRpb25Db2RlJiBlYykKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbjo6Y3JlYXRlKEtVUkwoVVJJKSwgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBlYywgbV9ub3RpZmljYXRpb25Qcm92aWRlcik7CisgICAgICAgIH0K
KyAgICAgICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZU5vdGlmaWNhdGlvbihOb3Rp
ZmljYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uOjpjcmVhdGUocGFyYW1ldGVycywg
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBlYywgbV9ub3RpZmljYXRpb25Qcm92aWRlcik7Cisg
ICAgICAgIH0KKworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KCkgY29u
c3QgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9CisgICAgICAgIE5vdGlmaWNh
dGlvblByb3ZpZGVyKiBwcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUHJv
dmlkZXI7IH0KKworICAgICAgICBpbnQgY2hlY2tQZXJtaXNzaW9uKCk7CisgICAgICAgIHZvaWQg
cmVxdWVzdFBlcm1pc3Npb24oUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKTsKKwor
ICAgIHByaXZhdGU6CisgICAgICAgIE5vdGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIE5vdGlmaWNhdGlvblByb3ZpZGVyKik7CisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgICAgICBOb3RpZmljYXRpb25Qcm92
aWRlciogbV9ub3RpZmljYXRpb25Qcm92aWRlcjsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2VuZGlmIC8vIE5v
dGlmaWNhdGlvbnNfaApJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmlk
bAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmlk
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSB0aHJlYWRzIHsKKworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU5PVElGSUNBVElPTlMKKyAgICBdIE5vdGlm
aWNhdGlvbnMgeworICAgICAgIFtSZXR1cm5zTmV3XSBbQ3VzdG9tXSBOb3RpZmljYXRpb24gY3Jl
YXRlSFRNTE5vdGlmaWNhdGlvbihpbiBET01TdHJpbmcgdXJsKTsKKyAgICAgICBbUmV0dXJuc05l
d10gW0N1c3RvbV0gTm90aWZpY2F0aW9uIGNyZWF0ZU5vdGlmaWNhdGlvbihpbiBET01TdHJpbmcg
aWNvblVybCwgaW4gRE9NU3RyaW5nIHRpdGxlLCBpbiBET01TdHJpbmcgYm9keSk7CisKKyAgICAg
ICBbQ3VzdG9tXSBpbnQgY2hlY2tQZXJtaXNzaW9uKCk7CisgICAgICAgW0N1c3RvbV0gdm9pZCBy
ZXF1ZXN0UGVybWlzc2lvbihpbiBWb2lkQ2FsbGJhY2sgY2FsbGJhY2spOworICAgIH07CisKK30K
SW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwCShyZXZpc2lvbiA0NDE4OCkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOTEsNiArMzkxLDEzIEBAIGJvb2wgQ2hyb21lOjpzZXRDdXJz
b3IoUGxhdGZvcm1DdXJzb3JIYW4KICAgICByZXR1cm4gbV9jbGllbnQtPnNldEN1cnNvcihjdXJz
b3IpOwogfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitOb3RpZmljYXRpb25Qcm92aWRl
ciogQ2hyb21lOjpub3RpZmljYXRpb25Qcm92aWRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Y2xpZW50LT5ub3RpZmljYXRpb25Qcm92aWRlcigpOworfQorI2VuZGlmCisKIC8vIC0tLS0tLS0t
CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hy
b21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5oCShyZXZpc2lvbiA0NDE4
OCkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBQ
YWdlOwogICAgIGNsYXNzIFN0cmluZzsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBj
bGFzcyBOb3RpZmljYXRpb25Qcm92aWRlcjsKKyNlbmRpZgogCiAgICAgc3RydWN0IEZyYW1lTG9h
ZFJlcXVlc3Q7CiAgICAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwpAQCAtMTI4LDYgKzEzMSwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZm9jdXNOU1ZpZXcoTlNWaWV3Kik7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICBOb3RpZmljYXRp
b25Qcm92aWRlciogbm90aWZpY2F0aW9uUHJvdmlkZXIoKSBjb25zdDsgCisjZW5kaWYKKwogICAg
IHByaXZhdGU6CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAgICAgQ2hyb21lQ2xpZW50KiBt
X2NsaWVudDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDQ0MTg4KQorKysgV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2MiwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgR3JhcGhpY3NMYXllcjsKICNlbmRpZgogCisj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJvdmlkZXI7
CisjZW5kaWYKKwogICAgIGNsYXNzIENocm9tZUNsaWVudCB7CiAgICAgcHVibGljOgogICAgICAg
ICB2aXJ0dWFsIHZvaWQgY2hyb21lRGVzdHJveWVkKCkgPSAwOwpAQCAtMTQzLDYgKzE0NywxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkYXNoYm9hcmRSZWdp
b25zQ2hhbmdlZCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICAg
ICAgdmlydHVhbCBOb3RpZmljYXRpb25Qcm92aWRlciogbm90aWZpY2F0aW9uUHJvdmlkZXIoKSBj
b25zdCA9IDA7CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVWaXNpdGVk
TGlua3MoKTsKIAogICAgICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjdXN0b21IaWdobGlnaHRSZWN0
KE5vZGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgbGluZVJl
Y3QpOwpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDQ0MTg4KQorKysgV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDEwIEBACiAjaW5jbHVk
ZSAiRE9NQXBwbGljYXRpb25DYWNoZS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKKyNpbmNsdWRlICJOb3RpZmljYXRpb25zLmgiCisjZW5kaWYKKwogdXNpbmcgc3RkOjpt
aW47CiB1c2luZyBzdGQ6Om1heDsKIApAQCAtNDQwLDYgKzQ0NCwxMCBAQCB2b2lkIERPTVdpbmRv
dzo6Y2xlYXIoKQogICAgICAgICBtX2FwcGxpY2F0aW9uQ2FjaGUtPmRpc2Nvbm5lY3RGcmFtZSgp
OwogICAgIG1fYXBwbGljYXRpb25DYWNoZSA9IDA7CiAjZW5kaWYKKworI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKQorICAgIG1fbm90aWZpY2F0aW9ucyA9IDA7CisjZW5kaWYKIH0KIAogU2NyZWVu
KiBET01XaW5kb3c6OnNjcmVlbigpIGNvbnN0CkBAIC01NzUsNiArNTgzLDI4IEBAIFN0b3JhZ2Uq
IERPTVdpbmRvdzo6bG9jYWxTdG9yYWdlKCkgY29uc3QKIH0KICNlbmRpZgogCisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCitOb3RpZmljYXRpb25zKiBET01XaW5kb3c6Om5vdGlmaWNhdGlvbnMo
KSBjb25zdAoreworICAgIGlmIChtX25vdGlmaWNhdGlvbnMpCisgICAgICAgIHJldHVybiBtX25v
dGlmaWNhdGlvbnMuZ2V0KCk7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1
bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAg
IFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBOb3RpZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIgPSBwYWdlLT5j
aHJvbWUoKS0+bm90aWZpY2F0aW9uUHJvdmlkZXIoKTsKKyAgICBpZiAocHJvdmlkZXIpIAorICAg
ICAgICBtX25vdGlmaWNhdGlvbnMgPSBOb3RpZmljYXRpb25zOjpjcmVhdGUoZG9jdW1lbnQsIHBy
b3ZpZGVyKTsgICAgCisgICAgICAKKyAgICByZXR1cm4gbV9ub3RpZmljYXRpb25zLmdldCgpOwor
fQorI2VuZGlmCisKIHZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmln
aW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIW1f
ZnJhbWUpCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiA0NDE4OCkKKysrIFdlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgTWVzc2FnZVBvcnQ7CiAgICAgY2xhc3MgTmF2aWdhdG9yOwogICAg
IGNsYXNzIE5vZGU7CisgICAgY2xhc3MgTm90aWZpY2F0aW9uczsKICAgICBjbGFzcyBQb3N0TWVz
c2FnZVRpbWVyOwogICAgIGNsYXNzIFNjaGVkdWxlZEFjdGlvbjsKICAgICBjbGFzcyBTY3JlZW47
CkBAIC0yMDAsNiArMjAxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRE9NQXBw
bGljYXRpb25DYWNoZSogYXBwbGljYXRpb25DYWNoZSgpIGNvbnN0OwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICAgICAgTm90aWZpY2F0aW9ucyogbm90aWZpY2F0aW9u
cygpIGNvbnN0OworI2VuZGlmCisKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERP
TVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgcG9zdE1lc3Nh
Z2VUaW1lckZpcmVkKFBvc3RNZXNzYWdlVGltZXIqKTsKIApAQCAtMzU5LDYgKzM2NCw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQog
ICAgICAgICBtdXRhYmxlIFJlZlB0cjxET01BcHBsaWNhdGlvbkNhY2hlPiBtX2FwcGxpY2F0aW9u
Q2FjaGU7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICAgICAgbXV0YWJs
ZSBSZWZQdHI8Tm90aWZpY2F0aW9ucz4gbV9ub3RpZmljYXRpb25zOworI2VuZGlmCiAKICAgICAg
ICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXJWZWN0b3IgbV9ldmVudExpc3RlbmVyczsKICAgICB9
OwpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDQ0MTg4KQorKysgV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsOSBAQCBtb2R1bGUgd2lu
ZG93IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0b3JhZ2Ugc2Vzc2lvblN0b3JhZ2U7
CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdG9yYWdlIGxvY2FsU3RvcmFnZTsKICNlbmRp
ZgorI2lmIGRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklDQVRJ
T05TCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tXSBOb3RpZmljYXRpb25zIG5v
dGlmaWNhdGlvbnM7CisjZW5kaWYKIAogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW1JlcGxh
Y2VhYmxlXSBDb25zb2xlIGNvbnNvbGU7CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gNDQxODgpCisrKyBXZWJD
b3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoV01MKQogICAgIGNsYXNzIFdNTFBhZ2VTdGF0ZTsKICNl
bmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIGNsYXNzIE5vdGlmaWNhdGlvblBy
b3ZpZGVyOworI2VuZGlmCiAKICAgICBlbnVtIEZpbmREaXJlY3Rpb24geyBGaW5kRGlyZWN0aW9u
Rm9yd2FyZCwgRmluZERpcmVjdGlvbkJhY2t3YXJkIH07CiAKQEAgLTI1OCw2ICsyNjEsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShXTUwpCiAgICAgICAgIE93blB0cjxXTUxQ
YWdlU3RhdGU+IG1fd21sUGFnZVN0YXRlOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKKyAgICAgICAgTm90aWZpY2F0aW9uUHJvdmlkZXIqIG1fbm90aWZpY2F0aW9uUHJvdmlk
ZXI7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA0NDE4OCkKKysrIFdlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsMTAgQEAKICNp
bmNsdWRlICJYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbnMu
aCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdvcmtlckNvbnRleHQ6Oldvcmtl
ckNvbnRleHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV29ya2Vy
VGhyZWFkKiB0aHJlYWQpCkBAIC02NSw3ICs2OSw5IEBAIFdvcmtlckNvbnRleHQ6OldvcmtlckNv
bnRleHQoY29uc3QgS1VSTCYKIFdvcmtlckNvbnRleHQ6On5Xb3JrZXJDb250ZXh0KCkKIHsKICAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhyZWFkLT50aHJlYWRJRCgpKTsKLQorI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKSAgCisgICAgbV9ub3RpZmljYXRpb25zLmNsZWFyKCk7Cisj
ZW5kaWYKICAgICBtX3RocmVhZC0+d29ya2VyT2JqZWN0UHJveHkoKS0+d29ya2VyQ29udGV4dERl
c3Ryb3llZCgpOwogfQogCkBAIC0yODAsNiArMjg2LDE1IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6
aW1wb3J0U2NyaXB0cyhjb25zdCAKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKK05vdGlmaWNhdGlvbnMqIFdvcmtlckNvbnRleHQ6Om5vdGlmaWNhdGlvbnMoKSBjb25zdAor
eworICAgIGlmICghbV9ub3RpZmljYXRpb25zKQorICAgICAgICBtX25vdGlmaWNhdGlvbnMgPSBO
b3RpZmljYXRpb25zOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3RocmVhZC0+
Z2V0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKSk7CisgICAgcmV0dXJuIG1fbm90aWZpY2F0aW9ucy5n
ZXQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoV09SS0VSUykKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAkocmV2aXNpb24gNDQx
ODgpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw2ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIE5vdGlm
aWNhdGlvbnM7CiAgICAgY2xhc3MgU2NoZWR1bGVkQWN0aW9uOwogICAgIGNsYXNzIFdvcmtlckxv
Y2F0aW9uOwogICAgIGNsYXNzIFdvcmtlck5hdmlnYXRvcjsKQEAgLTExMiw2ICsxMTMsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKGNvbnN0
IFN0cmluZyYpOwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgICAgIE5vdGlmaWNh
dGlvbnMqIG5vdGlmaWNhdGlvbnMoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgICAgIC8vIFRoZXNl
IG1ldGhvZHMgYXJlIHVzZWQgZm9yIEdDIG1hcmtpbmcuIFNlZSBKU1dvcmtlckNvbnRleHQ6Om1h
cmsoKSBpbgogICAgICAgICAvLyBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwLgogICAgICAgICBX
b3JrZXJOYXZpZ2F0b3IqIG9wdGlvbmFsTmF2aWdhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9uYXZp
Z2F0b3IuZ2V0KCk7IH0KQEAgLTE0Miw2ICsxNDcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ubWVzc2FnZUxpc3RlbmVyOwogICAg
ICAgICBFdmVudExpc3RlbmVyc01hcCBtX2V2ZW50TGlzdGVuZXJzOworCisjaWYgRU5BQkxFX05P
VElGSUNBVElPTlMKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8Tm90aWZpY2F0aW9ucz4gbV9ub3Rp
ZmljYXRpb25zOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkocmV2aXNpb24gNDQxODgpCisrKyBXZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDEw
IEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2
ZW50IGV2dCkKICAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CiAKKyNpZiBFTkFC
TEVfTk9USUZJQ0FUSU9OUworICAgICAgICAvLyBOb3RpZmljYXRpb24gaW50ZXJmYWNlCisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb3RpZmljYXRpb25zIG5vdGlmaWNhdGlvbnM7CisjZW5k
aWYKIAogICAgICAgICAvLyBDb25zdHJ1Y3RvcnMKICAgICAgICAgYXR0cmlidXRlIE1lc3NhZ2VF
dmVudENvbnN0cnVjdG9yIE1lc3NhZ2VFdmVudDsKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgJ
KHJldmlzaW9uIDQ0MTg4KQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBLVVJMOworICAgIGNsYXNzIE5vdGlmaWNhdGlvblByb3ZpZGVyOwogICAgIGNsYXNzIFN0
cmluZzsKICAgICBjbGFzcyBXb3JrZXJDb250ZXh0OwogICAgIGNsYXNzIFdvcmtlck9iamVjdFBy
b3h5OwpAQCAtNTQsNiArNTUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXb3Jr
ZXJSdW5Mb29wJiBydW5Mb29wKCkgeyByZXR1cm4gbV9ydW5Mb29wOyB9CiAgICAgICAgIFdvcmtl
ck9iamVjdFByb3h5KiB3b3JrZXJPYmplY3RQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2Vy
T2JqZWN0UHJveHk7IH0KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICB2aXJ0
dWFsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBnZXROb3RpZmljYXRpb25Qcm92aWRlcigpIHsgcmV0
dXJuIG1fbm90aWZpY2F0aW9uUHJvdmlkZXI7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHNldE5v
dGlmaWNhdGlvblByb3ZpZGVyKE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcikgeyBtX25v
dGlmaWNhdGlvblByb3ZpZGVyID0gcHJvdmlkZXI7IH0KKyNlbmRpZgorCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgV29ya2VyVGhyZWFkKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJPYmplY3RQcm94eSopOwogCkBAIC02
OCw2ICs3NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE11dGV4IG1fdGhyZWFk
Q3JlYXRpb25NdXRleDsKIAogICAgICAgICBPd25QdHI8V29ya2VyVGhyZWFkU3RhcnR1cERhdGE+
IG1fc3RhcnR1cERhdGE7CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICAgICAgTm90
aWZpY2F0aW9uUHJvdmlkZXIqIG1fbm90aWZpY2F0aW9uUHJvdmlkZXI7CisjZW5kaWYKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NDE4OCkKKysr
IFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExIEBACisy
MDA5LTA1LTIwICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29nbGUuY29tPgorCisgICAgICAgIEFk
ZHMgLS1ub3RpZmljYXRpb25zIHN3aXRjaCB0byB0aGUgYnVpbGQgc2NyaXB0LgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13
ZWJraXQ6CisKIDIwMDktMDUtMjcgIEZyaWRyaWNoIFN0cmJhICA8ZnJpZHJpY2guc3RyYmFAYmx1
ZXdpbi5jaD4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4KSW5kZXg6
IFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CShyZXZpc2lvbiA0NDE4OCkKKysrIFdlYktpdFRvb2xz
L1NjcmlwdHMvYnVpbGQtd2Via2l0CSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIG15
ICRnZW9sb2NhdGlvblN1cHBvcnQgPSAwOwogbXkgJGdub21lS2V5cmluZ1N1cHBvcnQgPSAwOwog
bXkgJGljb25EYXRhYmFzZVN1cHBvcnQgPSAxOwogbXkgJGphdmFTY3JpcHREZWJ1Z2dlclN1cHBv
cnQgPSAxOworbXkgJG5vdGlmaWNhdGlvbnNTdXBwb3J0ID0gMDsKIG15ICRvZmZsaW5lV2ViQXBw
bGljYXRpb25TdXBwb3J0ID0gMTsKIG15ICRzdmdTdXBwb3J0ID0gMTsKIG15ICRzdmdBbmltYXRp
b25TdXBwb3J0ID0gMTsKQEAgLTg3LDYgKzg4LDcgQEAgVXNhZ2U6ICRwcm9ncmFtTmFtZSBbb3B0
aW9uc10gW29wdGlvbnMgdAogICAtLVtuby1dZ25vbWVrZXlyaW5nICAgICAgICAgICAgICAgVG9n
Z2xlIEdOT01FIEtleXJpbmcgU3VwcG9ydCAoR1RLKyBwb3J0IG9ubHkpIChkZWZhdWx0OiAkZ25v
bWVLZXlyaW5nU3VwcG9ydCkKICAgLS1bbm8tXWljb24tZGF0YWJhc2UgICAgICAgICAgICAgIFRv
Z2dsZSBJY29uIGRhdGFiYXNlIHN1cHBvcnQgKGRlZmF1bHQ6ICRpY29uRGF0YWJhc2VTdXBwb3J0
KQogICAtLVtuby1damF2YXNjcmlwdC1kZWJ1Z2dlciAgICAgICAgVG9nZ2xlIEphdmFTY3JpcHQg
RGVidWdnZXIvUHJvZmlsZXIgc3VwcG9ydCAoZGVmYXVsdDogJGphdmFTY3JpcHREZWJ1Z2dlclN1
cHBvcnQpCisgIC0tW25vLV1ub3RpZmljYXRpb25zICAgICAgICAgICAgICBUb29nbGUgTm90aWZp
Y2F0aW9ucyBzdXBwb3J0IChkZWZhdWx0OiAkbm90aWZpY2F0aW9uc1N1cHBvcnQpCiAgIC0tW25v
LV1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbnMgICBUb2dnbGUgT2ZmbGluZSBXZWIgQXBwbGljYXRp
b24gU3VwcG9ydCAoZGVmYXVsdDogJG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQpCiAgIC0t
W25vLV1zdmcgICAgICAgICAgICAgICAgICAgICAgICBUb2dnbGUgU1ZHIHN1cHBvcnQgKGRlZmF1
bHQ6ICRzdmdTdXBwb3J0KQogICAtLVtuby1dc3ZnLWFuaW1hdGlvbiAgICAgICAgICAgICAgVG9n
Z2xlIFNWRyBhbmltYXRpb24gc3VwcG9ydCAoZGVmYXVsdDogJHN2Z0FuaW1hdGlvblN1cHBvcnQs
IGltcGxpZXMgU1ZHIFN1cHBvcnQpCkBAIC0xMTUsNiArMTE3LDcgQEAgR2V0T3B0aW9ucygKICAg
ICAgICAgICAgJ2dub21la2V5cmluZyEnID0+IFwkZ25vbWVLZXlyaW5nU3VwcG9ydCwKICAgICAg
ICAgICAgJ2ljb24tZGF0YWJhc2UhJyA9PiBcJGljb25EYXRhYmFzZVN1cHBvcnQsCiAgICAgICAg
ICAgICdqYXZhc2NyaXB0LWRlYnVnZ2VyIScgPT4gXCRqYXZhU2NyaXB0RGVidWdnZXJTdXBwb3J0
LAorICAgICAgICAgICAnbm90aWZpY2F0aW9ucyEnID0+IFwkbm90aWZpY2F0aW9uc1N1cHBvcnQs
CiAgICAgICAgICAgICdvZmZsaW5lLXdlYi1hcHBsaWNhdGlvbnMhJyA9PiBcJG9mZmxpbmVXZWJB
cHBsaWNhdGlvblN1cHBvcnQsCiAgICAgICAgICAgICdzdmchJyA9PiBcJHN2Z1N1cHBvcnQsCiAg
ICAgICAgICAgICdzdmctYW5pbWF0aW9uIScgPT4gXCRzdmdBbmltYXRpb25TdXBwb3J0LApAQCAt
MTg0LDYgKzE4Nyw3IEBAIGlmIChpc0d0aygpKSB7CiAgICAgcHVzaCBAb3B0aW9ucywgYXV0b3Rv
b2xzRmxhZygkZ25vbWVLZXlyaW5nU3VwcG9ydCwgImdub21la2V5cmluZyIpOwogICAgIHB1c2gg
QG9wdGlvbnMsIGF1dG90b29sc0ZsYWcoJGljb25EYXRhYmFzZVN1cHBvcnQsICJpY29uLWRhdGFi
YXNlIik7CiAgICAgcHVzaCBAb3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkamF2YVNjcmlwdERlYnVn
Z2VyU3VwcG9ydCwgImphdmFzY3JpcHQtZGVidWdnZXIiKTsKKyAgICBwdXNoIEBvcHRpb25zLCBh
dXRvdG9vbHNGbGFnKCRub3RpZmljYXRpb25zU3VwcG9ydCwgIm5vdGlmaWNhdGlvbnMiKTsKICAg
ICBwdXNoIEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRvZmZsaW5lV2ViQXBwbGljYXRpb25TdXBw
b3J0LCAib2ZmbGluZS13ZWItYXBwbGljYXRpb25zIik7CiAgICAgcHVzaCBAb3B0aW9ucywgYXV0
b3Rvb2xzRmxhZygkc3ZnU3VwcG9ydCwgInN2ZyIpOwogICAgIHB1c2ggQG9wdGlvbnMsIGF1dG90
b29sc0ZsYWcoJHN2Z0FuaW1hdGlvblN1cHBvcnQsICJzdmctYW5pbWF0aW9uIik7CkBAIC0yMTYs
NiArMjIwLDcgQEAgaWYgKGlzQXBwbGVNYWNXZWJLaXQoKSkgewogICAgIHB1c2ggQG9wdGlvbnMs
IG9wdGlvbigiRU5BQkxFX0dFT0xPQ0FUSU9OIiwgJGdlb2xvY2F0aW9uU3VwcG9ydCk7CiAgICAg
cHVzaCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfSUNPTkRBVEFCQVNFIiwgJGljb25EYXRhYmFz
ZVN1cHBvcnQpOwogICAgIHB1c2ggQG9wdGlvbnMsIG9wdGlvbigiRU5BQkxFX0pBVkFTQ1JJUFRf
REVCVUdHRVIiLCAkamF2YVNjcmlwdERlYnVnZ2VyU3VwcG9ydCk7CisgICAgcHVzaCBAb3B0aW9u
cywgb3B0aW9uKCJFTkFCTEVfTk9USUZJQ0FUSU9OUyIsICRub3RpZmljYXRpb25zU3VwcG9ydCk7
CiAgICAgcHVzaCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJ
T05TIiwgJG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQpOwogICAgIHB1c2ggQG9wdGlvbnMs
IG9wdGlvbigiRU5BQkxFX1NWRyIsICRzdmdTdXBwb3J0KTsKICAgICBwdXNoIEBvcHRpb25zLCBv
cHRpb24oIkVOQUJMRV9TVkdfQU5JTUFUSU9OIiwgJHN2Z0FuaW1hdGlvblN1cHBvcnQpOwpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNDQxODgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0wNS0yMCAgSm9obiBHcmVnZyAgPGpvaG5ueWdA
Z29vZ2xlLmNvbT4KKworICAgICAgICBBZGRzIGJhc2ljIGxheW91dCB0ZXN0IHRvIGNvbmZpcm0g
dGhlIG5vdGlmaWNhdGlvbnMgaW50ZXJmYWNlIGlzIHZpc2libGUgZnJvbSB3b3JrZXIgc2NyaXB0
LgorICAgICAgICAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBmYXN0L25vdGlmaWNhdGlvbnM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvbm90aWZpY2F0
aW9ucy9ub3RpZmljYXRpb25zLWFjY2Vzc29yLmh0bWwtZGlzYWJsZWQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWFjY2Vzc29yLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ub3RpZmljYXRpb25zL3Jlc291cmNlczogQWRkZWQu
CisgICAgICAgICogZmFzdC9ub3RpZmljYXRpb25zL3Jlc291cmNlcy93b3JrZXItbm90aWZpY2F0
aW9ucy5qczogQWRkZWQuCisKIDIwMDktMDUtMjcgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1
c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgRGlzYWJsaW5nIG5ldyB0
ZXN0cyB0byBtYWtlIHRoZSBib3QgZ3JlZW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L25vdGlm
aWNhdGlvbnMvbm90aWZpY2F0aW9ucy1hY2Nlc3Nvci1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtYWNjZXNzb3It
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRp
b25zL25vdGlmaWNhdGlvbnMtYWNjZXNzb3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDggQEAKK1Rlc3QgV29ya2VyIE5vdGlmaWNhdGlvbnMgYWNjZXNzLiBTaG91bGQgcHJp
bnQgYSBzZXJpZXMgb2YgUEFTUyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05FLgorCitUZXN0
IHN0YXJ0ZWQuCitQQVNTOiBub3RpZmljYXRpb25zIG9iamVjdCBleGlzdHMuCitQQVNTOiBub3Rp
ZmljYXRpb25zLmNyZWF0ZUhUTUxOb3RpZmljYXRpb25zIGRvZXMgbm90IGV4aXN0LgorUEFTUzog
bm90aWZpY2F0aW9ucy5jcmVhdGVOb3RpZmljYXRpb25zIGRvZXMgbm90IGV4aXN0LgorRE9ORQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1hY2Nl
c3Nvci5odG1sLWRpc2FibGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvbm90aWZp
Y2F0aW9ucy9ub3RpZmljYXRpb25zLWFjY2Vzc29yLmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1hY2Nlc3Nv
ci5odG1sLWRpc2FibGVkCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACis8Ym9keT4KKzxw
PlRlc3QgV29ya2VyIE5vdGlmaWNhdGlvbnMgYWNjZXNzLiBTaG91bGQgcHJpbnQgYSBzZXJpZXMg
b2YgUEFTUyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05FLjwvcD4KKzxkaXYgaWQ9cmVzdWx0
PjwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsK
K30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Cit9CisKK3RyeSB7CisgICAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoInJlc291
cmNlcy93b3JrZXItbm90aWZpY2F0aW9ucy5qcyIpOworCisgICAgd29ya2VyLm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICBsb2coZXZ0LmRhdGEpOworICAgICAgICBpZiAoZXZ0
LmRhdGEgPT0gIkRPTkUiICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisgICAgCit9IGNh
dGNoIChleCkgeworICAgIGxvZygiRkFJTDogdW5leHBlY3RlZCBleGNlcHRpb24gIiArIGV4KTsK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvd29ya2VyLW5vdGlmaWNhdGlv
bnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL3Jlc291
cmNlcy93b3JrZXItbm90aWZpY2F0aW9ucy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3Qvbm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvd29ya2VyLW5vdGlmaWNhdGlvbnMuanMJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKK3Bvc3RNZXNzYWdlKCJUZXN0IHN0YXJ0ZWQuIik7
CisKKy8vIFRyeSB0byBnZXQgdGhlIG5vdGlmaWNhdGlvbnMgb2JqZWN0IGZyb20gZ2xvYmFsIGNv
bnRleHRzLgoraWYgKG5vdGlmaWNhdGlvbnMgIT0gdW5kZWZpbmVkKSB7CisgICAgcG9zdE1lc3Nh
Z2UoIlBBU1M6IG5vdGlmaWNhdGlvbnMgb2JqZWN0IGV4aXN0cy4iKTsKKyAgICAKKyAgICBpZiAo
IW5vdGlmaWNhdGlvbnMuY3JlYXRlSFRNTE5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgcG9zdE1l
c3NhZ2UoIlBBU1M6IG5vdGlmaWNhdGlvbnMuY3JlYXRlSFRNTE5vdGlmaWNhdGlvbnMgZG9lcyBu
b3QgZXhpc3QuIik7CisgICAgfQorICAgIAorICAgIGlmICghbm90aWZpY2F0aW9ucy5jcmVhdGVO
b3RpZmljYXRpb25zKSB7CisgICAgICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBub3RpZmljYXRpb25z
LmNyZWF0ZU5vdGlmaWNhdGlvbnMgZG9lcyBub3QgZXhpc3QuIik7CisgICAgfQorICAgIAorICAg
IHBvc3RNZXNzYWdlKCJET05FIik7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31655</attachid>
            <date>2009-06-22 10:58:12 -0700</date>
            <delta_ts>2009-06-22 15:45:47 -0700</delta_ts>
            <desc>Notifications API, WebCore only</desc>
            <filename>latstWebKit_noV8.diff</filename>
            <type>text/plain</type>
            <size>46669</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA0NDYxNikKKysrIEphdmFTY3JpcHRDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2
ICszNSw3IEBAIEVOQUJMRV9GSUxURVJTID0gOwogRU5BQkxFX0dFT0xPQ0FUSU9OID0gOwogRU5B
QkxFX0lDT05EQVRBQkFTRSA9IEVOQUJMRV9JQ09OREFUQUJBU0U7CiBFTkFCTEVfSkFWQVNDUklQ
VF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSOworRU5BQkxFX05PVElGSUNB
VElPTlMgPSA7CiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TID0gRU5BQkxFX09GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUzsKIEVOQUJMRV9TVkcgPSBFTkFCTEVfU1ZHOwogRU5BQkxFX1NW
R19BTklNQVRJT04gPSBFTkFCTEVfU1ZHX0FOSU1BVElPTjsKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9y
bS5oCShyZXZpc2lvbiA0NDYxNikKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OTUsNiArNDk1LDEwIEBACiAjZGVmaW5lIEVOQUJMRV9HRU9MT0NB
VElPTiAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJT05TKQorI2Rl
ZmluZSBFTkFCTEVfTk9USUZJQ0FUSU9OUyAwCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJM
RV9URVhUX0NBUkVUKQogI2RlZmluZSBFTkFCTEVfVEVYVF9DQVJFVCAxCiAjZW5kaWYKSW5kZXg6
IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDQ0NjE2KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIFZQQVRIID0gXAogICAgICQo
V2ViQ29yZSkvaHRtbCBcCiAgICAgJChXZWJDb3JlKS9pbnNwZWN0b3IgXAogICAgICQoV2ViQ29y
ZSkvbG9hZGVyL2FwcGNhY2hlIFwKKyAgICAkKFdlYkNvcmUpL25vdGlmaWNhdGlvbnMgXAogICAg
ICQoV2ViQ29yZSkvcGFnZSBcCiAgICAgJChXZWJDb3JlKS9wbHVnaW5zIFwKICAgICAkKFdlYkNv
cmUpL3N0b3JhZ2UgXApAQCAtMTgzLDYgKzE4NCw4IEBAIERPTV9DTEFTU0VTID0gXAogICAgIE5v
ZGVJdGVyYXRvciBcCiAgICAgTm9kZUxpc3QgXAogICAgIE5vdGF0aW9uIFwKKyAgICBOb3RpZmlj
YXRpb24gXAorICAgIE5vdGlmaWNhdGlvbnMgXAogICAgIE92ZXJmbG93RXZlbnQgXAogICAgIFBs
dWdpbiBcCiAgICAgUGx1Z2luQXJyYXkgXApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA0NDYxNikKKysr
IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAg
d2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUgXAogCS1JJChzcmNkaXIp
L1dlYkNvcmUvbG9hZGVyL2ljb24gXAorCS1JJChzcmNkaXIpL1dlYkNvcmUvbm90aWZpY2F0aW9u
cyBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9wYWdlIFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uIFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL3BsYXRmb3JtIFwKQEAgLTIyNSw2
ICsyMjYsOCBAQCBJRExfQklORElOR1MgKz0gXAogCVdlYkNvcmUvaHRtbC9Wb2lkQ2FsbGJhY2su
aWRsIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCBcCiAJV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5pZGwgXAorCVdlYkNvcmUvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9ucy5pZGwgXAogCVdlYkNvcmUvcGFnZS9CYXJJbmZvLmlkbCBcCiAJV2ViQ29yZS9wYWdl
L0NvbnNvbGUuaWRsIFwKIAlXZWJDb3JlL3BhZ2UvQ29vcmRpbmF0ZXMuaWRsIFwKQEAgLTIzODks
NiArMjM5MiwyNCBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0v
Z3RrL0dlb2xvY2F0aW9uU2VydmljZUd0ay5oCiBlbmRpZiAjIEVORCBFTkFCTEVfR0VPTE9DQVRJ
T04KIAorIyAtLS0tCisjIE5vdGlmaWNhdGlvbnMgc3VwcG9ydAorIyAtLS0tCitpZiBFTkFCTEVf
Tk9USUZJQ0FUSU9OUworRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX05PVElG
SUNBVElPTlM9MQorCit3ZWJjb3JlX2NwcGZsYWdzICs9IFwKKwktREVOQUJMRV9OT1RJRklDQVRJ
T05TPTEKKword2ViY29yZV9zb3VyY2VzICs9IFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmNwcCBcCisJV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIFwK
KwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5jcHAgXAorCVdlYkNvcmUvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmggXAorCVdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25Qcm92aWRlci5oIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
UGFyYW1ldGVycy5oCisKK2VuZGlmICMgRU5EIEVOQUJMRV9OT1RJRklDQVRJT05TCiAKICMgLS0t
LQogIyBTVkcgU3VwcG9ydApAQCAtMzI0Miw0ICszMjYzLDMgQEAgQ0xFQU5GSUxFUyArPSBcCiAJ
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UubHV0LmggXAogCVdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNSR0JDb2xvci5sdXQuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckNvbnRleHRCYXNlLmx1dC5oCi0KSW5kZXg6IFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gNDQ2MTYpCisrKyBXZWJDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2
ICszNSw3IEBAIEVOQUJMRV9GSUxURVJTID0gOwogRU5BQkxFX0dFT0xPQ0FUSU9OID0gOwogRU5B
QkxFX0lDT05EQVRBQkFTRSA9IEVOQUJMRV9JQ09OREFUQUJBU0U7CiBFTkFCTEVfSkFWQVNDUklQ
VF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSOworRU5BQkxFX05PVElGSUNB
VElPTlMgPSA7CiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TID0gRU5BQkxFX09GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUzsKIEVOQUJMRV9TVkcgPSBFTkFCTEVfU1ZHOwogRU5BQkxFX1NW
R19BTklNQVRJT04gPSBFTkFCTEVfU1ZHX0FOSU1BVElPTjsKSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0NDYxNikKKysrIFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MTMs
NiArNjEzLDE0IEBACiAJCTMxQzBGRjRDMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFu
c2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxQzBGRjQ2MEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQu
aCAqLzsgfTsKIAkJMzFDMEZGNEQwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRp
b25FdmVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxQzBGRjQ3MEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQubW0g
Ki87IH07CiAJCTMxQzBGRjRFMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9u
RXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzFDMEZGNDgwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVu
dEludGVybmFsLmggKi87IH07CisJCTMzM0Y3MDUyMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmlj
YXRpb25zLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzMzRjcwNEEwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbnMuaWRsICovOyB9Owor
CQkzMzNGNzA1MzBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9ucy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNGNzA0QjBGQjQ5Q0EyMDA4
RTEyQTYgLyogTm90aWZpY2F0aW9ucy5jcHAgKi87IH07CisJCTMzM0Y3MDU0MEZCNDlDQTIwMDhF
MTJBNiAvKiBOb3RpZmljYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMzNGNzA0QzBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9ucy5o
ICovOyB9OworCQkzMzNGNzA1NTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uUGFyYW1l
dGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMz
RjcwNEQwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsK
KwkJMzMzRjcwNTYwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5pZGwgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzM0Y3MDRFMEZCNDlDQTIw
MDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaWRsICovOyB9OworCQkzMzNGNzA1NzBGQjQ5Q0EyMDA4
RTEyQTYgLyogTm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmgg
Ki87IH07CisJCTMzM0Y3MDU4MEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzRjcwNTAwRkI0
OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5jcHAgKi87IH07CisJCTMzM0Y3MDU5MEZCNDlD
QTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzRjcwNTEwRkI0OUNBMjAwOEUxMkE2IC8qIE5v
dGlmaWNhdGlvblByb3ZpZGVyLmggKi87IH07CiAJCTM3MUY0RjQwMEQyNUI5QUYwMEVDRTBENSAv
KiBGb250RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzcxRjRGM0UwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzcxRjRGNDEwRDI1QjlBRjAwRUNF
MEQ1IC8qIEZvbnREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDM3MUY0RjNGMEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5jcHAgKi87IH07
CiAJCTM3MUY0RkZDMEQyNUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjRGRkEwRDI1RTdG
MzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggKi87IH07CkBAIC01NTAzLDYgKzU1MTEs
MTQgQEAKIAkJMzFDMEZGNDYwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25F
dmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XZWJLaXRUcmFuc2l0
aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFDMEZGNDcwRTRDRUZE
RDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFDMEZGNDgwRTRDRUZERDAwN0Q2RkU1IC8qIERP
TVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMzM0Y3MDRBMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRp
b25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOb3RpZmljYXRpb25zLmlkbDsgcGF0aCA9
IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMzM0Y3MDRCMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25zLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5vdGlmaWNhdGlvbnMuY3BwOyBwYXRo
ID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzMzRjcwNEMwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0aW9ucy5oOyBwYXRoID0gbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMzM0Y3MDREMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25QYXJhbWV0ZXJzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvblBhcmFtZXRlcnMuaDsg
cGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA0RTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0
aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOb3RpZmljYXRpb24uaWRsOyBwYXRoID0g
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5oOyBwYXRoID0gbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMzRjcw
NTAwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBOb3RpZmljYXRpb24uY3BwOyBwYXRoID0gbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA1
MTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0aW9uUHJvdmlkZXIuaDsgcGF0aCA9IG5vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzcxRjRGM0UwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTM3MUY0RjNGMEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTM3MUY0RkZBMEQyNUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250
RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWdtZW50ZWRGb250RGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTMzOSw2ICs5MzU1LDcgQEAKIAkJ
CQk5M0VFQzFFQzA5QzI4Nzc3MDBDNTE1RDEgLyogaHRtbCAqLywKIAkJCQkxQzgxQjk0RDBFOTcz
MkQ5MDAyNjZFMDcgLyogaW5zcGVjdG9yICovLAogCQkJCUJDQjE2QkZCMDk3OUMzODcwMDQ2Nzc0
MSAvKiBsb2FkZXIgKi8sCisJCQkJMzMzRjcwM0QwRkI0OUMxNjAwOEUxMkE2IC8qIG5vdGlmaWNh
dGlvbnMgKi8sCiAJCQkJNjVCRjAyMTgwOTc0ODA2MzAwQzQzMTk2IC8qIHBhZ2UgKi8sCiAJCQkJ
QkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIzIC8qIHBsYXRmb3JtICovLAogCQkJCTVEQ0Y4MzY5MEQ1
OTE1NzgwMDk1M0JDNiAvKiBwbHVnaW5zICovLApAQCAtOTgwOCw2ICs5ODI1LDIxIEBACiAJCQlu
YW1lID0gYW5pbWF0aW9uOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMzMz
RjcwM0QwRkI0OUMxNjAwOEUxMkE2IC8qIG5vdGlmaWNhdGlvbnMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTMzM0Y3MDRBMEZCNDlDQTIwMDhFMTJBNiAv
KiBOb3RpZmljYXRpb25zLmlkbCAqLywKKwkJCQkzMzNGNzA0QjBGQjQ5Q0EyMDA4RTEyQTYgLyog
Tm90aWZpY2F0aW9ucy5jcHAgKi8sCisJCQkJMzMzRjcwNEMwRkI0OUNBMjAwOEUxMkE2IC8qIE5v
dGlmaWNhdGlvbnMuaCAqLywKKwkJCQkzMzNGNzA0RDBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZp
Y2F0aW9uUGFyYW1ldGVycy5oICovLAorCQkJCTMzM0Y3MDRFMEZCNDlDQTIwMDhFMTJBNiAvKiBO
b3RpZmljYXRpb24uaWRsICovLAorCQkJCTMzM0Y3MDRGMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3Rp
ZmljYXRpb24uaCAqLywKKwkJCQkzMzNGNzA1MDBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0
aW9uLmNwcCAqLywKKwkJCQkzMzNGNzA1MTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9u
UHJvdmlkZXIuaCAqLywKKwkJCSk7CisJCQluYW1lID0gbm90aWZpY2F0aW9uczsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQ0OTE5NTkwMEZCRTE3NUIwMEQ5RjgyNCAvKiBF
eHBvcnRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA0NDYxNikKKysrIFdlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lKiwgY29uc3QgU3Ry
aW5nJikgeyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHZpcnR1
YWwgTm90aWZpY2F0aW9uUHJvdmlkZXIqIG5vdGlmaWNhdGlvblByb3ZpZGVyKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQorI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1l
KiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGZvcm1T
dGF0ZURpZENoYW5nZShjb25zdCBOb2RlKikgeyB9CkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorCisjaW5jbHVkZSAiTm90aWZp
Y2F0aW9uLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGFyYW1ldGVycy5oIgorCisjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiV29ya2Vy
Q29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05vdGlmaWNhdGlvbjo6Tm90aWZp
Y2F0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYywgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKQorICAg
IDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX0hUTUwodHJ1ZSkKKyAg
ICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCisgICAgLCBtX2lkKDApCit7CisgICAgaWYgKG1fcHJv
dmlkZXItPmNoZWNrUGVybWlzc2lvbihjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpKSAhPSBOb3Rp
ZmljYXRpb25Qcm92aWRlcjo6UEVSTUlTU0lPTl9BTExPV0VEKSB7CisgICAgICAgIGVjID0gU0VD
VVJJVFlfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9ub3RpZmljYXRpb25V
UkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTCh1cmwpOworICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8
ICFtX25vdGlmaWNhdGlvblVSTC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OworICAgICAgICByZXR1cm47CisgICAgfQorfQorCitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlv
bihjb25zdCBOb3RpZmljYXRpb25QYXJhbWV0ZXJzJiBmaWVsZHMsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRpb25Qcm92aWRlciog
cHJvdmlkZXIpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1f
SFRNTChmYWxzZSkKKyAgICAsIG1fZmllbGRzKGZpZWxkcykKKyAgICAsIG1fcHJvdmlkZXIocHJv
dmlkZXIpCisgICAgLCBtX2lkKDApCit7CisgICAgaWYgKG1fcHJvdmlkZXItPmNoZWNrUGVybWlz
c2lvbihjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpKSAhPSBOb3RpZmljYXRpb25Qcm92aWRlcjo6
UEVSTUlTU0lPTl9BTExPV0VEKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgS1VSTCBpY29uID0gY29udGV4dC0+Y29tcGxldGVVUkwo
ZmllbGRzLmljb24oKSk7CisgICAgaWYgKCFpY29uLmlzRW1wdHkoKSAmJiAhaWNvbi5pc1ZhbGlk
KCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
fQorCitOb3RpZmljYXRpb246On5Ob3RpZmljYXRpb24oKSAKK3sKK30KKwordm9pZCBOb3RpZmlj
YXRpb246OnNob3coKSAKK3sKKyAgICBpZiAobV9IVE1MKQorICAgICAgICBtX2lkID0gbV9wcm92
aWRlci0+c2hvdyhtX25vdGlmaWNhdGlvblVSTCwgdGhpcyk7CisgICAgZWxzZQorICAgICAgICBt
X2lkID0gbV9wcm92aWRlci0+c2hvdyhtX2ZpZWxkcy5pY29uKCksIG1fZmllbGRzLnRpdGxlKCks
IG1fZmllbGRzLmJvZHkoKSwgdGhpcyk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpjYW5jZWwo
KSAKK3sKKyAgICBtX3Byb3ZpZGVyLT5jYW5jZWwobV9pZCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0
aW9uOjpkaXNwYXRjaERpc3BsYXlFdmVudCgpIAoreyAgIAorICAgIFJlZlB0cjxFdmVudD4gZXZl
bnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCB0cnVlKTsK
KyAgICBpZiAobV9vbkRpc3BsYXlMaXN0ZW5lcikgeworICAgICAgICBldmVudC0+c2V0VGFyZ2V0
KHRoaXMpOworICAgICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAg
bV9vbkRpc3BsYXlMaXN0ZW5lci0+aGFuZGxlRXZlbnQoZXZlbnQuZ2V0KCksIHRydWUpOworICAg
IH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQu
cmVsZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9u
OjpkaXNwYXRjaEVycm9yRXZlbnQoKQoreyAgCisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAgICBp
ZiAobV9vbkVycm9yTGlzdGVuZXIpIHsKKyAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsK
KyAgICAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fb25FcnJv
ckxpc3RlbmVyLT5oYW5kbGVFdmVudChldmVudC5nZXQoKSwgdHJ1ZSk7CisgICAgfQorCisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hFdmVudChldmVudC5yZWxlYXNlKCks
IGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKK30KKwordm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNo
Q2xvc2VFdmVudCgpIAoreyAgIAorICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgdHJ1ZSk7CisgICAgaWYgKG1fb25D
bG9zZUxpc3RlbmVyKSB7CisgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAg
IGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29uQ2xvc2VMaXN0ZW5l
ci0+aGFuZGxlRXZlbnQoZXZlbnQuZ2V0KCksIHRydWUpOworICAgIH0KKworICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQucmVsZWFzZSgpLCBlYyk7Cisg
ICAgQVNTRVJUKCFlYyk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaXNwbGF5KCkKK3sKKyAg
ICBkaXNwYXRjaERpc3BsYXlFdmVudCgpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6ZXJyb3Io
KQoreworICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6
Y2xvc2UoKQoreworICAgIGRpc3BhdGNoQ2xvc2VFdmVudCgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKSW5kZXg6IFdlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBOb3RpZmljYXRpb25faCAgCisjZGVmaW5lIE5vdGlmaWNhdGlvbl9oCisKKyNpbmNsdWRl
ICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJBdG9taWNTdHJpbmdIYXNoLmgiCisjaW5j
bHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRXZl
bnRUYXJnZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByb3ZpZGVyLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0
aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyAgICBjbGFzcyBXb3JrZXJDb250ZXh0OworCisgICAgY2xhc3MgTm90aWZpY2F0aW9u
IDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVj
dCwgcHVibGljIEV2ZW50VGFyZ2V0IHsgCisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIE5vdGlmaWNhdGlvblBy
b3ZpZGVyKiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbih1cmws
IGNvbnRleHQsIGVjLCBwcm92aWRlcikpOyB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5v
dGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IE5vdGlmaWNhdGlvblBhcmFtZXRlcnMmIGZpZWxkcywg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIE5vdGlm
aWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYobmV3IE5vdGlmaWNh
dGlvbihmaWVsZHMsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpOyB9CisgICAgICAgIAorICAgICAg
ICB2aXJ0dWFsIH5Ob3RpZmljYXRpb24oKTsKKworICAgICAgICB2b2lkIHNob3coKTsKKyAgICAg
ICAgdm9pZCBjYW5jZWwoKTsKKyAgICAKKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25kaXNwbGF5
KCkgY29uc3QgeyByZXR1cm4gbV9vbkRpc3BsYXlMaXN0ZW5lci5nZXQoKTsgfQorICAgICAgICB2
b2lkIHNldE9uZGlzcGxheShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIp
IHsgbV9vbkRpc3BsYXlMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRM
aXN0ZW5lciogb25lcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fb25FcnJvckxpc3RlbmVyLmdldCgp
OyB9CisgICAgICAgIHZvaWQgc2V0T25lcnJvcihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2
ZW50TGlzdGVuZXIpIHsgbV9vbkVycm9yTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9CisgICAg
ICAgIEV2ZW50TGlzdGVuZXIqIG9uY2xvc2UoKSBjb25zdCB7IHJldHVybiBtX29uQ2xvc2VMaXN0
ZW5lci5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldE9uY2xvc2UoUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25DbG9zZUxpc3RlbmVyID0gZXZlbnRMaXN0ZW5l
cjsgfQorICAgIAorICAgICAgICB1c2luZyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj46OnJlZjsK
KyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+OjpkZXJlZjsKKyAgICAKKyAg
ICAgICAgLy8gQ2FsbGJhY2sgbWV0aG9kcyBmb3IgdGhlIHByb3ZpZGVyIHdoZW4gZXZlbnRzIG9j
Y3VyIHJlZ2FyZGluZyB0aGUgbm90aWZpY2F0aW9uLgorICAgICAgICB2b2lkIGRpc3BsYXkoKTsK
KyAgICAgICAgdm9pZCBlcnJvcigpOworICAgICAgICB2b2lkIGNsb3NlKCk7CisKKyAgICAgICAg
Ly8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURP
TU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYsIFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4sIGJvb2wpIHt9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYsIEV2ZW50TGlzdGVuZXIqLCBib29sKSB7fQorICAgICAg
ICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9u
Q29kZSYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBO
b3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIp
OworICAgICAgICBOb3RpZmljYXRpb24oY29uc3QgTm90aWZpY2F0aW9uUGFyYW1ldGVycyYgZmll
bGRzLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywg
Tm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKTsKKworICAgICAgICB2b2lkIGRpc3BhdGNo
RGlzcGxheUV2ZW50KCk7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAg
ICAgIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQg
aW50ZXJmYWNlCisgICAgICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7
IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0K
KyAgCisgICAgICAgIGJvb2wgbV9IVE1MOworICAgICAgICBLVVJMIG1fbm90aWZpY2F0aW9uVVJM
OworICAgICAgICBOb3RpZmljYXRpb25QYXJhbWV0ZXJzIG1fZmllbGRzOworCisgICAgICAgIFJl
ZlB0cjxFdmVudExpc3RlbmVyPiBtX29uRGlzcGxheUxpc3RlbmVyOworICAgICAgICBSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gbV9vbkVycm9yTGlzdGVuZXI7CisgICAgICAgIFJlZlB0cjxFdmVudExp
c3RlbmVyPiBtX29uQ2xvc2VMaXN0ZW5lcjsKKworICAgICAgICBOb3RpZmljYXRpb25Qcm92aWRl
ciogbV9wcm92aWRlcjsKKworICAgICAgICBpbnQgbV9pZDsKKyAgICB9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2VuZGlm
IC8vIE5vdGlmaWNhdGlvbnNfaApJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSB0aHJlYWRzIHsKKworICAg
IGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU5PVElGSUNBVElPTlMKKyAgICBdIE5v
dGlmaWNhdGlvbiB7CisgICAgICAgIFtDdXN0b21dIHZvaWQgc2hvdygpOworICAgICAgICBbQ3Vz
dG9tXSB2b2lkIGNhbmNlbCgpOworCisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
ZGlzcGxheTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKKyAgICAg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jbG9zZTsKKyAgICB9OworCit9CkluZGV4OiBX
ZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGFyYW1ldGVycy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRpb25QYXJhbWV0
ZXJzX2gKKyNkZWZpbmUgTm90aWZpY2F0aW9uUGFyYW1ldGVyc19oCisKKyNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgTm90aWZpY2F0
aW9uUGFyYW1ldGVycyB7IAorICAgIHB1YmxpYzoKKyAgICAgICAgTm90aWZpY2F0aW9uUGFyYW1l
dGVycygpIHt9CisgICAgICAgIE5vdGlmaWNhdGlvblBhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBp
Y29uVXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHkpIAorICAgICAg
ICAgICAgOiBtX2ljb24oaWNvblVybCkKKyAgICAgICAgICAgICwgbV90aXRsZSh0aXRsZSkKKyAg
ICAgICAgICAgICwgbV9ib2R5KGJvZHkpIHt9CisKKyAgICAgICAgU3RyaW5nIGljb24oKSBjb25z
dCB7IHJldHVybiBtX2ljb247IH0KKyAgICAgICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1
cm4gbV90aXRsZTsgfQorICAgICAgICBTdHJpbmcgYm9keSgpIGNvbnN0IHsgcmV0dXJuIG1fYm9k
eTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgU3RyaW5nIG1faWNvbjsKKyAgICAgICAgU3Ry
aW5nIG1fdGl0bGU7CisgICAgICAgIFN0cmluZyBtX2JvZHk7CisgICAgfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNlbmRp
ZiAvLyBOb3RpZmljYXRpb25QYXJhbWV0ZXJzX2gKSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25Qcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25Qcm92aWRlci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvblByb3ZpZGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE5vdGlmaWNhdGlvblByb3ZpZGVyX2gKKyNkZWZpbmUgTm90aWZpY2F0aW9u
UHJvdmlkZXJfaAorCisjaW5jbHVkZSAiUGFzc1JlZlB0ci5oIgorI2luY2x1ZGUgIlZvaWRDYWxs
YmFjay5oIgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworICAgIGNsYXNzIE5vdGlmaWNhdGlvbjsKKyAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
KyAgICBjbGFzcyBTdHJpbmc7CisgICAgCisgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJvdmlkZXIg
eworCisgICAgcHVibGljOgorICAgICAgICBlbnVtIFBlcm1pc3Npb24geyAKKyAgICAgICAgICAg
IFBFUk1JU1NJT05fQUxMT1dFRCwKKyAgICAgICAgICAgIFBFUk1JU1NJT05fTk9UX0FMTE9XRUQs
CisgICAgICAgICAgICBQRVJNSVNTSU9OX0RFTklFRAorICAgICAgICB9OworCisgICAgICAgIHZp
cnR1YWwgfk5vdGlmaWNhdGlvblByb3ZpZGVyKCkge30KKworICAgICAgICB2aXJ0dWFsIGludCBz
aG93KGNvbnN0IFN0cmluZyYgVVJMLCBOb3RpZmljYXRpb24qIG9iamVjdCkgPSAwOworCisgICAg
ICAgIHZpcnR1YWwgaW50IHNob3coY29uc3QgU3RyaW5nJiBpY29uVXJsLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIE5vdGlmaWNhdGlvbiogb2JqZWN0KSA9IDA7CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbChpbnQgaGFuZGxlKSA9IDA7CisKKyAgICAgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIFBh
c3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykgPSAwOworCisgICAgICAgIHZpcnR1YWwg
UGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikgPSAwOwor
ICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJ
RklDQVRJT05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uUHJvdmlkZXJfaApJbmRleDogV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQor
CisjaW5jbHVkZSAiTm90aWZpY2F0aW9ucy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworTm90aWZpY2F0aW9uczo6Tm90aWZpY2F0aW9ucyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIp
IAorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKKyAgICAsIG1fbm90aWZpY2F0aW9uUHJvdmlkZXIocHJv
dmlkZXIpIHt9CisKKworaW50IE5vdGlmaWNhdGlvbnM6OmNoZWNrUGVybWlzc2lvbigpIAorewor
ICAgIHJldHVybiBtX25vdGlmaWNhdGlvblByb3ZpZGVyLT5jaGVja1Blcm1pc3Npb24obV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpKTsKK30KKwordm9pZCBOb3RpZmlj
YXRpb25zOjpyZXF1ZXN0UGVybWlzc2lvbihQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJh
Y2spCit7CisgICAgbV9ub3RpZmljYXRpb25Qcm92aWRlci0+cmVxdWVzdFBlcm1pc3Npb24obV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBjYWxsYmFjayk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05T
KQpJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5oCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgTm90aWZpY2F0aW9uc19oCisjZGVmaW5lIE5vdGlmaWNhdGlv
bnNfaAorCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFk
LmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisK
KyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAg
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworICAgIGNsYXNzIE5vdGlmaWNhdGlvbnMg
OiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb25zPiwgcHVibGljIEFjdGl2ZURPTU9iamVj
dCB7IAorICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9u
cz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNhdGlvblBy
b3ZpZGVyKiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbnMoY29u
dGV4dCwgcHJvdmlkZXIpKTsgfQorICAgICAgICAKKyAgICAgICAgUGFzc1JlZlB0cjxOb3RpZmlj
YXRpb24+IGNyZWF0ZUhUTUxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBVUkksIEV4Y2VwdGlv
bkNvZGUmIGVjKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uOjpj
cmVhdGUoS1VSTChVUkkpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGVjLCBtX25vdGlmaWNh
dGlvblByb3ZpZGVyKTsKKyAgICAgICAgfQorICAgICAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlv
bj4gY3JlYXRlTm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVycywg
RXhjZXB0aW9uQ29kZSYgZWMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBOb3RpZmlj
YXRpb246OmNyZWF0ZShwYXJhbWV0ZXJzLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGVjLCBt
X25vdGlmaWNhdGlvblByb3ZpZGVyKTsKKyAgICAgICAgfQorCisgICAgICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7IH0KKyAgICAgICAgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9ub3RpZmljYXRpb25Qcm92aWRlcjsgfQorCisgICAgICAgIGludCBjaGVja1Bl
cm1pc3Npb24oKTsKKyAgICAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihQYXNzUmVmUHRyPFZv
aWRDYWxsYmFjaz4gY2FsbGJhY2spOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgTm90aWZpY2F0
aW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTm90aWZpY2F0aW9uUHJvdmlkZXIqKTsKKwor
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CisgICAgICAgIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBtX25vdGlmaWNhdGlvblByb3ZpZGVyOwor
ICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJ
RklDQVRJT05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uc19oCkluZGV4OiBXZWJDb3JlL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbnMuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbnMuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
bW9kdWxlIHRocmVhZHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9
Tk9USUZJQ0FUSU9OUworICAgIF0gTm90aWZpY2F0aW9ucyB7CisgICAgICAgW1JldHVybnNOZXdd
IFtDdXN0b21dIE5vdGlmaWNhdGlvbiBjcmVhdGVIVE1MTm90aWZpY2F0aW9uKGluIERPTVN0cmlu
ZyB1cmwpOworICAgICAgIFtSZXR1cm5zTmV3XSBbQ3VzdG9tXSBOb3RpZmljYXRpb24gY3JlYXRl
Tm90aWZpY2F0aW9uKGluIERPTVN0cmluZyBpY29uVXJsLCBpbiBET01TdHJpbmcgdGl0bGUsIGlu
IERPTVN0cmluZyBib2R5KTsKKworICAgICAgIFtDdXN0b21dIGludCBjaGVja1Blcm1pc3Npb24o
KTsKKyAgICAgICBbQ3VzdG9tXSB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKGluIFZvaWRDYWxsYmFj
ayBjYWxsYmFjayk7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDQ0NjE2KQor
KysgV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MSw2ICszOTEs
MTMgQEAgYm9vbCBDaHJvbWU6OnNldEN1cnNvcihQbGF0Zm9ybUN1cnNvckhhbgogICAgIHJldHVy
biBtX2NsaWVudC0+c2V0Q3Vyc29yKGN1cnNvcik7CiB9CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKK05vdGlmaWNhdGlvblByb3ZpZGVyKiBDaHJvbWU6Om5vdGlmaWNhdGlvblByb3ZpZGVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQtPm5vdGlmaWNhdGlvblByb3ZpZGVyKCk7
Cit9CisjZW5kaWYKKwogLy8gLS0tLS0tLS0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9S
VCkKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvQ2hyb21lLmgJKHJldmlzaW9uIDQ0NjE2KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIFBhZ2U7CiAgICAgY2xhc3MgU3RyaW5nOworI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorICAgIGNsYXNzIE5vdGlmaWNhdGlvblByb3ZpZGVyOworI2Vu
ZGlmCiAKICAgICBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKICAgICBzdHJ1Y3QgV2luZG93RmVh
dHVyZXM7CkBAIC0xMjgsNiArMTMxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCBmb2N1c05TVmlldyhOU1ZpZXcqKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCisgICAgICAgIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBub3RpZmljYXRpb25Qcm92aWRl
cigpIGNvbnN0OyAKKyNlbmRpZgorCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGFnZSogbV9wYWdl
OwogICAgICAgICBDaHJvbWVDbGllbnQqIG1fY2xpZW50OwpJbmRleDogV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAko
cmV2aXNpb24gNDQ2MTYpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDYgKzYyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBH
cmFwaGljc0xheWVyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBj
bGFzcyBOb3RpZmljYXRpb25Qcm92aWRlcjsKKyNlbmRpZgorCiAgICAgY2xhc3MgQ2hyb21lQ2xp
ZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQo
KSA9IDA7CkBAIC0xNDMsNiArMTQ3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRhc2hib2FyZFJlZ2lvbnNDaGFuZ2VkKCk7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByb3ZpZGVy
KiBub3RpZmljYXRpb25Qcm92aWRlcigpIGNvbnN0ID0gMDsKKyNlbmRpZgorCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBwb3B1bGF0ZVZpc2l0ZWRMaW5rcygpOwogCiAgICAgICAgIHZpcnR1YWwgRmxv
YXRSZWN0IGN1c3RvbUhpZ2hsaWdodFJlY3QoTm9kZSosIGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgY29uc3QgRmxvYXRSZWN0JiBsaW5lUmVjdCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNp
b24gNDQ2MTYpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODAsNiArODAsMTAgQEAKICNpbmNsdWRlICJET01BcHBsaWNhdGlvbkNhY2hlLmgiCiAjZW5k
aWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbnMu
aCIKKyNlbmRpZgorCiB1c2luZyBzdGQ6Om1pbjsKIHVzaW5nIHN0ZDo6bWF4OwogCkBAIC00NDAs
NiArNDQ0LDEwIEBAIHZvaWQgRE9NV2luZG93OjpjbGVhcigpCiAgICAgICAgIG1fYXBwbGljYXRp
b25DYWNoZS0+ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlID0gMDsK
ICNlbmRpZgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgbV9ub3RpZmljYXRpb25z
ID0gMDsKKyNlbmRpZgogfQogCiBTY3JlZW4qIERPTVdpbmRvdzo6c2NyZWVuKCkgY29uc3QKQEAg
LTU3NSw2ICs1ODMsMjggQEAgU3RvcmFnZSogRE9NV2luZG93Ojpsb2NhbFN0b3JhZ2UoKSBjb25z
dAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK05vdGlmaWNhdGlvbnMq
IERPTVdpbmRvdzo6bm90aWZpY2F0aW9ucygpIGNvbnN0Cit7CisgICAgaWYgKG1fbm90aWZpY2F0
aW9ucykKKyAgICAgICAgcmV0dXJuIG1fbm90aWZpY2F0aW9ucy5nZXQoKTsKKworICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7
CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIE5vdGlmaWNhdGlvblBy
b3ZpZGVyKiBwcm92aWRlciA9IHBhZ2UtPmNocm9tZSgpLT5ub3RpZmljYXRpb25Qcm92aWRlcigp
OworICAgIGlmIChwcm92aWRlcikgCisgICAgICAgIG1fbm90aWZpY2F0aW9ucyA9IE5vdGlmaWNh
dGlvbnM6OmNyZWF0ZShkb2N1bWVudCwgcHJvdmlkZXIpOyAgICAKKyAgICAgIAorICAgIHJldHVy
biBtX25vdGlmaWNhdGlvbnMuZ2V0KCk7Cit9CisjZW5kaWYKKwogdm9pZCBET01XaW5kb3c6OnBv
c3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0
LCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIGlmICghbV9mcmFtZSkKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9u
IDQ0NjE2KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsK
ICAgICBjbGFzcyBOYXZpZ2F0b3I7CiAgICAgY2xhc3MgTm9kZTsKKyAgICBjbGFzcyBOb3RpZmlj
YXRpb25zOwogICAgIGNsYXNzIFBvc3RNZXNzYWdlVGltZXI7CiAgICAgY2xhc3MgU2NoZWR1bGVk
QWN0aW9uOwogICAgIGNsYXNzIFNjcmVlbjsKQEAgLTIwMCw2ICsyMDEsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBET01BcHBsaWNhdGlvbkNhY2hlKiBhcHBsaWNhdGlvbkNhY2hl
KCkgY29uc3Q7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICBO
b3RpZmljYXRpb25zKiBub3RpZmljYXRpb25zKCkgY29uc3Q7CisjZW5kaWYKKwogICAgICAgICB2
b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZVBvcnQqLCBjb25z
dCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZVRpbWVyRmlyZWQoUG9zdE1lc3NhZ2VUaW1lciop
OwogCkBAIC00MjUsNiArNDMwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShP
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgICAgIG11dGFibGUgUmVmUHRyPERPTUFwcGxp
Y2F0aW9uQ2FjaGU+IG1fYXBwbGljYXRpb25DYWNoZTsKICNlbmRpZgorI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKQorICAgICAgICBtdXRhYmxlIFJlZlB0cjxOb3RpZmljYXRpb25zPiBtX25vdGlm
aWNhdGlvbnM7CisjZW5kaWYKIAogICAgICAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lclZlY3Rv
ciBtX2V2ZW50TGlzdGVuZXJzOwogICAgIH07CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24g
NDQ2MTYpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MTYzLDYgKzE2Myw5IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgU3RvcmFnZSBzZXNzaW9uU3RvcmFnZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0
b3JhZ2UgbG9jYWxTdG9yYWdlOwogI2VuZGlmCisjaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FU
SU9OUykgJiYgRU5BQkxFX05PVElGSUNBVElPTlMKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFtDdXN0b21dIE5vdGlmaWNhdGlvbnMgbm90aWZpY2F0aW9uczsKKyNlbmRpZgogCiAgICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZSBbUmVwbGFjZWFibGVdIENvbnNvbGUgY29uc29sZTsKIApJbmRl
eDogV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUGFnZS5o
CShyZXZpc2lvbiA0NDYxNikKKysrIFdlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY5LDYgKzY5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShXTUwpCiAg
ICAgY2xhc3MgV01MUGFnZVN0YXRlOwogI2VuZGlmCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
CisgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJvdmlkZXI7CisjZW5kaWYKIAogICAgIGVudW0gRmlu
ZERpcmVjdGlvbiB7IEZpbmREaXJlY3Rpb25Gb3J3YXJkLCBGaW5kRGlyZWN0aW9uQmFja3dhcmQg
fTsKIApAQCAtMjU4LDYgKzI2MSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxF
KFdNTCkKICAgICAgICAgT3duUHRyPFdNTFBhZ2VTdGF0ZT4gbV93bWxQYWdlU3RhdGU7CiAjZW5k
aWYKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICBOb3RpZmljYXRpb25Qcm92
aWRlciogbV9ub3RpZmljYXRpb25Qcm92aWRlcjsKKyNlbmRpZgogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAJKHJldmlzaW9u
IDQ0NjE2KQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MSw2ICs1MSwxMCBAQAogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9u
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
CisjaW5jbHVkZSAiTm90aWZpY2F0aW9ucy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV29ya2VyQ29udGV4dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWQqIHRocmVhZCkKQEAgLTY2LDcgKzcwLDkg
QEAgV29ya2VyQ29udGV4dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJMJgogV29ya2VyQ29udGV4
dDo6fldvcmtlckNvbnRleHQoKQogewogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90
aHJlYWQtPnRocmVhZElEKCkpOwotCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpICAKKyAgICBt
X25vdGlmaWNhdGlvbnMuY2xlYXIoKTsKKyNlbmRpZgogICAgIG1fdGhyZWFkLT53b3JrZXJPYmpl
Y3RQcm94eSgpLndvcmtlckNvbnRleHREZXN0cm95ZWQoKTsKIH0KIApAQCAtMjk1LDYgKzMwMSwx
NSBAQCB2b2lkIFdvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMoY29uc3QgCiAgICAgfQogfQog
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitOb3RpZmljYXRpb25zKiBXb3JrZXJDb250ZXh0
Ojpub3RpZmljYXRpb25zKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbm90aWZpY2F0aW9ucykKKyAg
ICAgICAgbV9ub3RpZmljYXRpb25zID0gTm90aWZpY2F0aW9uczo6Y3JlYXRlKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgbV90aHJlYWQtPmdldE5vdGlmaWNhdGlvblByb3ZpZGVyKCkpOworICAg
IHJldHVybiBtX25vdGlmaWNhdGlvbnMuZ2V0KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCkluZGV4OiBXZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmgJKHJldmlzaW9uIDQ0NjE2KQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKKyAgICBjbGFzcyBOb3RpZmljYXRpb25zOwogICAgIGNsYXNzIFNjaGVkdWxlZEFj
dGlvbjsKICAgICBjbGFzcyBXb3JrZXJMb2NhdGlvbjsKICAgICBjbGFzcyBXb3JrZXJOYXZpZ2F0
b3I7CkBAIC0xMTMsNiArMTE0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2
b2lkIGRpc3BhdGNoTWVzc2FnZShjb25zdCBTdHJpbmcmKTsKIAorI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQorICAgICAgICBOb3RpZmljYXRpb25zKiBub3RpZmljYXRpb25zKCkgY29uc3Q7Cisj
ZW5kaWYKKwogICAgICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGZvciBHQyBtYXJraW5n
LiBTZWUgSlNXb3JrZXJDb250ZXh0OjptYXJrKCkgaW4KICAgICAgICAgLy8gSlNXb3JrZXJDb250
ZXh0Q3VzdG9tLmNwcC4KICAgICAgICAgV29ya2VyTmF2aWdhdG9yKiBvcHRpb25hbE5hdmlnYXRv
cigpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdG9yLmdldCgpOyB9CkBAIC0xNDQsNiArMTQ5LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9v
bm1lc3NhZ2VMaXN0ZW5lcjsKICAgICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAgbV9ldmVudExpc3Rl
bmVyczsKIAorI2lmIEVOQUJMRV9OT1RJRklDQVRJT05TCisgICAgICAgIG11dGFibGUgUmVmUHRy
PE5vdGlmaWNhdGlvbnM+IG1fbm90aWZpY2F0aW9uczsKKyNlbmRpZgogICAgICAgICBib29sIG1f
Y2xvc2luZzsKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCShyZXZp
c2lvbiA0NDYxNikKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNzUsNiArNzUsMTAgQEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICBib29s
ZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQogICAgICAgICAgICAgcmFpc2VzKEV2ZW50
RXhjZXB0aW9uKTsKIAorI2lmIEVOQUJMRV9OT1RJRklDQVRJT05TCisgICAgICAgIC8vIE5vdGlm
aWNhdGlvbiBpbnRlcmZhY2UKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vdGlmaWNhdGlv
bnMgbm90aWZpY2F0aW9uczsKKyNlbmRpZgogCiAgICAgICAgIC8vIENvbnN0cnVjdG9ycwogICAg
ICAgICBhdHRyaWJ1dGUgTWVzc2FnZUV2ZW50Q29uc3RydWN0b3IgTWVzc2FnZUV2ZW50OwpJbmRl
eDogV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuaAkocmV2aXNpb24gNDQ2MTYpCisrKyBXZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgTm90aWZpY2F0aW9u
UHJvdmlkZXI7CiAgICAgY2xhc3MgU3RyaW5nOwogICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CiAg
ICAgY2xhc3MgV29ya2VyTG9hZGVyUHJveHk7CkBAIC01Niw2ICs1NywxMSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSgp
IGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyTG9hZGVyUHJveHk7IH0KICAgICAgICAgV29ya2VyT2Jq
ZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJPYmpl
Y3RQcm94eTsgfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgICAgIHZpcnR1YWwg
Tm90aWZpY2F0aW9uUHJvdmlkZXIqIGdldE5vdGlmaWNhdGlvblByb3ZpZGVyKCkgeyByZXR1cm4g
bV9ub3RpZmljYXRpb25Qcm92aWRlcjsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0Tm90aWZp
Y2F0aW9uUHJvdmlkZXIoTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKSB7IG1fbm90aWZp
Y2F0aW9uUHJvdmlkZXIgPSBwcm92aWRlcjsgfQorI2VuZGlmCisKICAgICBwcml2YXRlOgogICAg
ICAgICBXb3JrZXJUaHJlYWQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBj
b25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyT2JqZWN0
UHJveHkmKTsKIApAQCAtNzEsNiArNzcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBNdXRleCBtX3RocmVhZENyZWF0aW9uTXV0ZXg7CiAKICAgICAgICAgT3duUHRyPFdvcmtlclRo
cmVhZFN0YXJ0dXBEYXRhPiBtX3N0YXJ0dXBEYXRhOworCisjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCisgICAgICAgIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBtX25vdGlmaWNhdGlvblByb3ZpZGVy
OworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31683</attachid>
            <date>2009-06-22 15:45:47 -0700</date>
            <delta_ts>2009-07-06 18:10:29 -0700</delta_ts>
            <desc>Notifications API, WebCore only</desc>
            <filename>WebKitPatchWithPermissions.diff</filename>
            <type>text/plain</type>
            <size>56679</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ0MTg4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDktMDUtMjAgIEpvaG4gR3Jl
Z2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkcyBFTkFCTEVfTk9USUZJQ0FUSU9OIGZsYWcgZm9yIHRoZSBi
dWlsZCBvZiBjdXN0b20gSlMgY29kZS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDA5LTA1LTI3ICBGcmlkcmljaCBTdHJiYSAgPGZyaWRy
aWNoLnN0cmJhQGJsdWV3aW4uY2g+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3Jv
bmhhLgpJbmRleDogSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDQ0MTg4KQorKysgSmF2YVNjcmlwdENvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDcgQEAgRU5BQkxFX0RPTV9TVE9SQUdFID0gRU5BQkxFX0RPTV9TVE9SQUdFOwog
RU5BQkxFX0dFT0xPQ0FUSU9OID0gOwogRU5BQkxFX0lDT05EQVRBQkFTRSA9IEVOQUJMRV9JQ09O
REFUQUJBU0U7CiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZBU0NSSVBU
X0RFQlVHR0VSOworRU5BQkxFX05PVElGSUNBVElPTlMgPSA7CiBFTkFCTEVfT0ZGTElORV9XRUJf
QVBQTElDQVRJT05TID0gRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUzsKIEVOQUJMRV9T
VkcgPSBFTkFCTEVfU1ZHOwogRU5BQkxFX1NWR19BTklNQVRJT04gPSBFTkFCTEVfU1ZHX0FOSU1B
VElPTjsKQEAgLTQ4LDQgKzQ5LDQgQEAgRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsK
IEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7
CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hB
Tk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFW
QVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVO
QUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkg
JChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5B
QkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8p
ICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxF
X1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJM
RV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RPTV9TVE9S
QUdFKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJM
RV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9P
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1B
VElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElO
R1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVO
QUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JL
RVJTKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaAkocmV2aXNpb24gNDQxODgpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAko
d29ya2luZyBjb3B5KQpAQCAtNDU2LDYgKzQ1NiwxMCBAQAogI2RlZmluZSBFTkFCTEVfR0VPTE9D
QVRJT04gMAogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykKKyNk
ZWZpbmUgRU5BQkxFX05PVElGSUNBVElPTlMgMAorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFC
TEVfVEVYVF9DQVJFVCkKICNkZWZpbmUgRU5BQkxFX1RFWFRfQ0FSRVQgMQogI2VuZGlmCkluZGV4
OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gNDQxODgpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM2IEBACisyMDA5LTA1LTIwICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hh
bmdlIGFkZHMgYW4gKGV4cGVyaW1lbnRhbCkgSFRNTCBub3RpZmljYXRpb24gQVBJLCBiZWluZyBw
cm90b3R5cGVkIGluIENocm9taXVtLiAgSXQncyBwcm90ZWN0ZWQgYnkgY29tcGlsZS10aW1lIGZl
YXR1cmUgZmxhZyBFTkFCTEVfTk9USUZJQ0FUSU9OUy4KKyAgICAgICAgCisgICAgICAgIFRlc3Q6
IGZhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWFjY2Vzc29yLWRpc2FibGVkLmh0bWwK
KworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29y
a2VyQ29udGV4dDo6bm90aWZpY2F0aW9ucyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Tm90aWZpY2F0aW9uc0N1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAqIG5vdGlmaWNhdGlv
bnM6IEFkZGVkLgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDogQWRk
ZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDogQWRkZWQuCisgICAg
ICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBu
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBhcmFtZXRlcnMuaDogQWRkZWQuCisgICAgICAgICog
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBu
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbnMuaDogQWRkZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25zLmlkbDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckNvbnRleHQ6Om5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyQ29udGV4dC5pZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6Z2V0Tm90aWZpY2F0
aW9uUHJvdmlkZXIpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaDoK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9iamVjdFByb3h5Lmg6CisKIDIwMDktMDUtMjcgIEZy
aWRyaWNoIFN0cmJhICA8ZnJpZHJpY2guc3RyYmFAYmx1ZXdpbi5jaD4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEuCkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA0
NDE4OCkKKysrIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYkNvcmUpL2h0bWwgXAogICAgICQoV2Vi
Q29yZSkvaW5zcGVjdG9yIFwKICAgICAkKFdlYkNvcmUpL2xvYWRlci9hcHBjYWNoZSBcCisgICAg
JChXZWJDb3JlKS9ub3RpZmljYXRpb25zIFwKICAgICAkKFdlYkNvcmUpL3BhZ2UgXAogICAgICQo
V2ViQ29yZSkvcGx1Z2lucyBcCiAgICAgJChXZWJDb3JlKS9zdG9yYWdlIFwKQEAgLTE4Myw2ICsx
ODQsOCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBOb2RlSXRlcmF0b3IgXAogICAgIE5vZGVMaXN0
IFwKICAgICBOb3RhdGlvbiBcCisgICAgTm90aWZpY2F0aW9uIFwKKyAgICBOb3RpZmljYXRpb25z
IFwKICAgICBPdmVyZmxvd0V2ZW50IFwKICAgICBQbHVnaW4gXAogICAgIFBsdWdpbkFycmF5IFwK
SW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkocmV2aXNpb24gNDQxODgpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBAIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1J
JChzcmNkaXIpL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlIFwKIAktSSQoc3JjZGlyKS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlIFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL2xvYWRlci9pY29uIFwKKwkt
SSQoc3JjZGlyKS9XZWJDb3JlL25vdGlmaWNhdGlvbnMgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUv
cGFnZSBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbiBcCiAJLUkkKHNyY2Rp
cikvV2ViQ29yZS9wbGF0Zm9ybSBcCkBAIC0yMjUsNiArMjI2LDggQEAgSURMX0JJTkRJTkdTICs9
IFwKIAlXZWJDb3JlL2h0bWwvVm9pZENhbGxiYWNrLmlkbCBcCiAJV2ViQ29yZS9pbnNwZWN0b3Iv
SmF2YVNjcmlwdENhbGxGcmFtZS5pZGwgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuaWRsIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCBc
CisJV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuaWRsIFwKIAlXZWJDb3JlL3Bh
Z2UvQmFySW5mby5pZGwgXAogCVdlYkNvcmUvcGFnZS9Db25zb2xlLmlkbCBcCiAJV2ViQ29yZS9w
YWdlL0Nvb3JkaW5hdGVzLmlkbCBcCkBAIC0yMzYxLDYgKzIzNjQsMjQgQEAgd2ViY29yZWd0a19z
b3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9HZW9sb2NhdGlvblNlcnZpY2VHdGsu
aAogZW5kaWYgIyBFTkQgRU5BQkxFX0dFT0xPQ0FUSU9OCiAKKyMgLS0tLQorIyBOb3RpZmljYXRp
b25zIHN1cHBvcnQKKyMgLS0tLQoraWYgRU5BQkxFX05PVElGSUNBVElPTlMKK0ZFQVRVUkVfREVG
SU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9OT1RJRklDQVRJT05TPTEKKword2ViY29yZV9jcHBm
bGFncyArPSBcCisJLURFTkFCTEVfTk9USUZJQ0FUSU9OUz0xCisKK3dlYmNvcmVfc291cmNlcyAr
PSBcCisJV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgXAorCVdlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBcCisJV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbnMuY3BwIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5o
IFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBcCisJV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBhcmFtZXRlcnMuaAorCitlbmRpZiAjIEVO
RCBFTkFCTEVfTk9USUZJQ0FUSU9OUwogCiAjIC0tLS0KICMgU1ZHIFN1cHBvcnQKQEAgLTMyMzYs
NCArMzI1NywzIEBAIENMRUFORklMRVMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmx1dC5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTUkdCQ29sb3IubHV0Lmgg
XAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5sdXQuaAotCkluZGV4
OiBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJl
dmlzaW9uIDQ0MTg4KQorKysgV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBFTkFCTEVfRE9NX1NUT1JB
R0UgPSBFTkFCTEVfRE9NX1NUT1JBR0U7CiBFTkFCTEVfR0VPTE9DQVRJT04gPSA7CiBFTkFCTEVf
SUNPTkRBVEFCQVNFID0gRU5BQkxFX0lDT05EQVRBQkFTRTsKIEVOQUJMRV9KQVZBU0NSSVBUX0RF
QlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVI7CitFTkFCTEVfTk9USUZJQ0FUSU9O
UyA9IDsKIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgPSBFTkFCTEVfT0ZGTElORV9X
RUJfQVBQTElDQVRJT05TOwogRU5BQkxFX1NWRyA9IEVOQUJMRV9TVkc7CiBFTkFCTEVfU1ZHX0FO
SU1BVElPTiA9IEVOQUJMRV9TVkdfQU5JTUFUSU9OOwpAQCAtNDgsNCArNDksNCBAQCBFTkFCTEVf
V09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwog
RU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVf
M0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJB
U0UpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVf
SUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9PRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElP
TikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1Mp
ICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJM
RV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJT
KSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVO
QUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9E
QVRBQkFTRSkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxF
X05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFC
TEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQo
RU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJM
RV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAk
KEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9Y
U0xUKTsKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiA0NDE4OCkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MDgsNiArNjA4LDE0IEBACiAJCTMxQzBGRjRDMEU0Q0VG
REQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzBGRjQ2MEU0Q0VGREQwMDdENkZFNSAv
KiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCAqLzsgfTsKIAkJMzFDMEZGNEQwRTRDRUZERDAw
N0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzBGRjQ3MEU0Q0VGREQwMDdENkZFNSAvKiBE
T01XZWJLaXRUcmFuc2l0aW9uRXZlbnQubW0gKi87IH07CiAJCTMxQzBGRjRFMEU0Q0VGREQwMDdE
NkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDMEZGNDgwRTRDRUZERDAwN0Q2RkU1
IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmggKi87IH07CisJCTMzM0Y3MDUy
MEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25zLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzRjcwNEEwRkI0OUNBMjAwOEUxMkE2IC8q
IE5vdGlmaWNhdGlvbnMuaWRsICovOyB9OworCQkzMzNGNzA1MzBGQjQ5Q0EyMDA4RTEyQTYgLyog
Tm90aWZpY2F0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMzNGNzA0QjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9ucy5jcHAgKi87
IH07CisJCTMzM0Y3MDU0MEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNGNzA0QzBGQjQ5Q0Ey
MDA4RTEyQTYgLyogTm90aWZpY2F0aW9ucy5oICovOyB9OworCQkzMzNGNzA1NTBGQjQ5Q0EyMDA4
RTEyQTYgLyogTm90aWZpY2F0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzRjcwNEQwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlm
aWNhdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKKwkJMzMzRjcwNTYwRkI0OUNBMjAwOEUxMkE2IC8q
IE5vdGlmaWNhdGlvbi5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMzM0Y3MDRFMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaWRsICov
OyB9OworCQkzMzNGNzA1NzBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNGNzA0RjBGQjQ5Q0Ey
MDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi87IH07CisJCTMzM0Y3MDU4MEZCNDlDQTIwMDhF
MTJBNiAvKiBOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzMzRjcwNTAwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5j
cHAgKi87IH07CisJCTMzM0Y3MDU5MEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25Qcm92
aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMz
RjcwNTEwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvblByb3ZpZGVyLmggKi87IH07CiAJ
CTM3MUY0RjQwMEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjRGM0UwRDI1QjlBRjAwRUNFMEQ1IC8q
IEZvbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMzcxRjRGNDEwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUY0RjNGMEQyNUI5QUYwMEVD
RTBENSAvKiBGb250RGF0YS5jcHAgKi87IH07CiAJCTM3MUY0RkZDMEQyNUU3RjMwMEVDRTBENSAv
KiBTZWdtZW50ZWRGb250RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzcxRjRGRkEwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRh
LmggKi87IH07CkBAIC01NTQ0LDYgKzU1NTIsMTQgQEAKIAkJMzFDMEZGNDYwRTRDRUZERDAwN0Q2
RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzFDMEZGNDcwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRp
b25FdmVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVdl
YktpdFRyYW5zaXRpb25FdmVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFD
MEZGNDgwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdlYktpdFRyYW5zaXRpb25F
dmVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzM0Y3MDRBMEZC
NDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBOb3RpZmljYXRpb25zLmlkbDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzM0Y3MDRCMEZCNDlDQTIwMDhFMTJB
NiAvKiBOb3RpZmljYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IE5vdGlmaWNhdGlvbnMuY3BwOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMzRjcwNEMwRkI0OUNBMjAwOEUx
MkE2IC8qIE5vdGlmaWNhdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Tm90aWZpY2F0aW9ucy5oOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzM0Y3MDREMEZCNDlDQTIwMDhFMTJBNiAvKiBO
b3RpZmljYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IE5vdGlmaWNhdGlvblBhcmFtZXRlcnMuaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA0RTBG
QjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBOb3RpZmljYXRpb24uaWRsOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYg
LyogTm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlm
aWNhdGlvbi5oOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMzRjcwNTAwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNh
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOb3RpZmljYXRp
b24uY3BwOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA1MTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0
aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0
aW9uUHJvdmlkZXIuaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRjRGM0UwRDI1QjlBRjAwRUNFMEQ1
IC8qIEZvbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnREYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUY0RjNGMEQyNUI5QUYwMEVDRTBE
NSAvKiBGb250RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
b250RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUY0RkZBMEQyNUU3
RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTZWdtZW50ZWRGb250RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtOTQzMSw2ICs5NDQ3LDcgQEAKIAkJCQk5M0VFQzFFQzA5QzI4Nzc3MDBDNTE1RDEgLyog
aHRtbCAqLywKIAkJCQkxQzgxQjk0RDBFOTczMkQ5MDAyNjZFMDcgLyogaW5zcGVjdG9yICovLAog
CQkJCUJDQjE2QkZCMDk3OUMzODcwMDQ2Nzc0MSAvKiBsb2FkZXIgKi8sCisJCQkJMzMzRjcwM0Qw
RkI0OUMxNjAwOEUxMkE2IC8qIG5vdGlmaWNhdGlvbnMgKi8sCiAJCQkJNjVCRjAyMTgwOTc0ODA2
MzAwQzQzMTk2IC8qIHBhZ2UgKi8sCiAJCQkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIzIC8qIHBs
YXRmb3JtICovLAogCQkJCTVEQ0Y4MzY5MEQ1OTE1NzgwMDk1M0JDNiAvKiBwbHVnaW5zICovLApA
QCAtOTg5OSw2ICs5OTE2LDIxIEBACiAJCQluYW1lID0gYW5pbWF0aW9uOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMzMzRjcwM0QwRkI0OUMxNjAwOEUxMkE2IC8qIG5vdGlm
aWNhdGlvbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTMzM0Y3MDRBMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25zLmlkbCAqLywKKwkJCQkz
MzNGNzA0QjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9ucy5jcHAgKi8sCisJCQkJMzMz
RjcwNEMwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbnMuaCAqLywKKwkJCQkzMzNGNzA0
RDBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uUGFyYW1ldGVycy5oICovLAorCQkJCTMz
M0Y3MDRFMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaWRsICovLAorCQkJCTMzM0Y3
MDRGMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaCAqLywKKwkJCQkzMzNGNzA1MDBG
QjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmNwcCAqLywKKwkJCQkzMzNGNzA1MTBGQjQ5
Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uUHJvdmlkZXIuaCAqLywKKwkJCSk7CisJCQluYW1l
ID0gbm90aWZpY2F0aW9uczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQ0
OTE5NTkwMEZCRTE3NUIwMEQ5RjgyNCAvKiBFeHBvcnRzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA0
NDE4OCkKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzMsNiArMTMzLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZXhjZWVkZWREYXRh
YmFzZVF1b3RhKEZyYW1lKiwgY29uc3QgU3RyaW5nJikgeyB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQorICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uUHJvdmlkZXIqIG5vdGlm
aWNhdGlvblByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQorI2VuZGlmCisKICAgICB2aXJ0
dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKikgeyB9
CkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQorCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0
aW9uUGFyYW1ldGVycy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgTm90aWZpY2F0
aW9uUHJvdmlkZXIqIHByb3ZpZGVyKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRo
aXMpCisgICAgLCBtX0hUTUwodHJ1ZSkKKyAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCisgICAg
LCBtX2lkKDApCit7CisgICAgaWYgKG1fcHJvdmlkZXItPmNoZWNrUGVybWlzc2lvbihjb250ZXh0
LT5zZWN1cml0eU9yaWdpbigpKSAhPSBOb3RpZmljYXRpb25Qcm92aWRlcjo6UEVSTUlTU0lPTl9B
TExPV0VEKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbV9ub3RpZmljYXRpb25VUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTCh1cmwp
OworICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8ICFtX25vdGlmaWNhdGlvblVSTC5pc1ZhbGlkKCkp
IHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorfQor
CitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBOb3RpZmljYXRpb25QYXJhbWV0ZXJz
JiBmaWVsZHMsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUm
IGVjLCBOb3RpZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIpCisgICAgOiBBY3RpdmVET01PYmpl
Y3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1fSFRNTChmYWxzZSkKKyAgICAsIG1fZmllbGRzKGZp
ZWxkcykKKyAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCisgICAgLCBtX2lkKDApCit7CisgICAg
aWYgKG1fcHJvdmlkZXItPmNoZWNrUGVybWlzc2lvbihjb250ZXh0LT5zZWN1cml0eU9yaWdpbigp
KSAhPSBOb3RpZmljYXRpb25Qcm92aWRlcjo6UEVSTUlTU0lPTl9BTExPV0VEKSB7CisgICAgICAg
IGVjID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgS1VSTCBp
Y29uID0gY29udGV4dC0+Y29tcGxldGVVUkwoZmllbGRzLmljb24oKSk7CisgICAgaWYgKCFpY29u
LmlzRW1wdHkoKSAmJiAhaWNvbi5pc1ZhbGlkKCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OworICAgICAgICByZXR1cm47CisgICAgfQorfQorCitOb3RpZmljYXRpb246On5Ob3RpZmljYXRp
b24oKSAKK3sKK30KKwordm9pZCBOb3RpZmljYXRpb246OnNob3coKSAKK3sKKyAgICBpZiAobV9I
VE1MKQorICAgICAgICBtX2lkID0gbV9wcm92aWRlci0+c2hvdyhtX25vdGlmaWNhdGlvblVSTCwg
dGhpcyk7CisgICAgZWxzZQorICAgICAgICBtX2lkID0gbV9wcm92aWRlci0+c2hvdyhtX2ZpZWxk
cy5pY29uKCksIG1fZmllbGRzLnRpdGxlKCksIG1fZmllbGRzLmJvZHkoKSwgdGhpcyk7Cit9CisK
K3ZvaWQgTm90aWZpY2F0aW9uOjpjYW5jZWwoKSAKK3sKKyAgICBtX3Byb3ZpZGVyLT5jYW5jZWwo
bV9pZCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaERpc3BsYXlFdmVudCgpIAor
eyAgIAorICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5sb2FkRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAgICBpZiAobV9vbkRpc3BsYXlMaXN0ZW5lcikg
eworICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldmVudC0+c2V0Q3Vy
cmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbkRpc3BsYXlMaXN0ZW5lci0+aGFuZGxlRXZl
bnQoZXZlbnQuZ2V0KCksIHRydWUpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFl
Yyk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaEVycm9yRXZlbnQoKQoreyAgCisg
ICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9y
RXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAgICBpZiAobV9vbkVycm9yTGlzdGVuZXIpIHsKKyAgICAg
ICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJn
ZXQodGhpcyk7CisgICAgICAgIG1fb25FcnJvckxpc3RlbmVyLT5oYW5kbGVFdmVudChldmVudC5n
ZXQoKSwgdHJ1ZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlz
cGF0Y2hFdmVudChldmVudC5yZWxlYXNlKCksIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKK30KKwor
dm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xvc2VFdmVudCgpIAoreyAgIAorICAgIFJlZlB0
cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBm
YWxzZSwgdHJ1ZSk7CisgICAgaWYgKG1fb25DbG9zZUxpc3RlbmVyKSB7CisgICAgICAgIGV2ZW50
LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMp
OworICAgICAgICBtX29uQ2xvc2VMaXN0ZW5lci0+aGFuZGxlRXZlbnQoZXZlbnQuZ2V0KCksIHRy
dWUpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZl
bnQoZXZlbnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7Cit9CisKK3ZvaWQgTm90
aWZpY2F0aW9uOjpkaXNwbGF5KCkKK3sKKyAgICBkaXNwYXRjaERpc3BsYXlFdmVudCgpOworfQor
Cit2b2lkIE5vdGlmaWNhdGlvbjo6ZXJyb3IoKQoreworICAgIGRpc3BhdGNoRXJyb3JFdmVudCgp
OworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6Y2xvc2UoKQoreworICAgIGRpc3BhdGNoQ2xvc2VF
dmVudCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRpb25faCAgCisjZGVmaW5l
IE5vdGlmaWNhdGlvbl9oCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJBdG9taWNTdHJpbmdIYXNoLmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVu
dExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByb3Zp
ZGVyLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBXb3JrZXJDb250ZXh0
OworCisgICAgY2xhc3MgTm90aWZpY2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0
aW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0IHsgCisgICAg
cHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0
aW9uQ29kZSYgZWMsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcikgeyByZXR1cm4gYWRv
cHRSZWYobmV3IE5vdGlmaWNhdGlvbih1cmwsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpOyB9Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IE5vdGlm
aWNhdGlvblBhcmFtZXRlcnMmIGZpZWxkcywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgRXhjZXB0aW9uQ29kZSYgZWMsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcikgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbihmaWVsZHMsIGNvbnRleHQsIGVjLCBwcm92
aWRlcikpOyB9CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb24oKTsKKwor
ICAgICAgICB2b2lkIHNob3coKTsKKyAgICAgICAgdm9pZCBjYW5jZWwoKTsKKyAgICAKKyAgICAg
ICAgRXZlbnRMaXN0ZW5lciogb25kaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9vbkRpc3BsYXlM
aXN0ZW5lci5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldE9uZGlzcGxheShQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbkRpc3BsYXlMaXN0ZW5lciA9IGV2ZW50
TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25lcnJvcigpIGNvbnN0IHsgcmV0
dXJuIG1fb25FcnJvckxpc3RlbmVyLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25lcnJvcihQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbkVycm9yTGlzdGVu
ZXIgPSBldmVudExpc3RlbmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uY2xvc2UoKSBj
b25zdCB7IHJldHVybiBtX29uQ2xvc2VMaXN0ZW5lci5nZXQoKTsgfQorICAgICAgICB2b2lkIHNl
dE9uY2xvc2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25D
bG9zZUxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgIAorICAgICAgICB1c2luZyBSZWZD
b3VudGVkPE5vdGlmaWNhdGlvbj46OnJlZjsKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxOb3Rp
ZmljYXRpb24+OjpkZXJlZjsKKyAgICAKKyAgICAgICAgLy8gQ2FsbGJhY2sgbWV0aG9kcyBmb3Ig
dGhlIHByb3ZpZGVyIHdoZW4gZXZlbnRzIG9jY3VyIHJlZ2FyZGluZyB0aGUgbm90aWZpY2F0aW9u
LgorICAgICAgICB2b2lkIGRpc3BsYXkoKTsKKyAgICAgICAgdm9pZCBlcnJvcigpOworICAgICAg
ICB2b2lkIGNsb3NlKCk7CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAg
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wpIHt9CisgICAgICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYsIEV2ZW50
TGlzdGVuZXIqLCBib29sKSB7fQorICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
ICAKKyAgICBwcml2YXRlOgorICAgICAgICBOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB1cmws
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3Rp
ZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIpOworICAgICAgICBOb3RpZmljYXRpb24oY29uc3Qg
Tm90aWZpY2F0aW9uUGFyYW1ldGVycyYgZmllbGRzLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVy
KTsKKworICAgICAgICB2b2lkIGRpc3BhdGNoRGlzcGxheUV2ZW50KCk7CisgICAgICAgIHZvaWQg
ZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7
CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAgICAgIHZpcnR1YWwgdm9p
ZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVm
RXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KKyAgCisgICAgICAgIGJvb2wgbV9IVE1MOworICAg
ICAgICBLVVJMIG1fbm90aWZpY2F0aW9uVVJMOworICAgICAgICBOb3RpZmljYXRpb25QYXJhbWV0
ZXJzIG1fZmllbGRzOworCisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29uRGlzcGxh
eUxpc3RlbmVyOworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbkVycm9yTGlzdGVu
ZXI7CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29uQ2xvc2VMaXN0ZW5lcjsKKwor
ICAgICAgICBOb3RpZmljYXRpb25Qcm92aWRlciogbV9wcm92aWRlcjsKKworICAgICAgICBpbnQg
bV9pZDsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKKworI2VuZGlmIC8vIE5vdGlmaWNhdGlvbnNfaApJbmRleDogV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK21vZHVsZSB0aHJlYWRzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlv
bmFsPU5PVElGSUNBVElPTlMKKyAgICBdIE5vdGlmaWNhdGlvbiB7CisgICAgICAgIFtDdXN0b21d
IHZvaWQgc2hvdygpOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGNhbmNlbCgpOworCisgICAgICAg
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZGlzcGxheTsKKyAgICAgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25lcnJvcjsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25j
bG9zZTsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBOb3RpZmljYXRpb25QYXJhbWV0ZXJzX2gKKyNkZWZpbmUgTm90aWZpY2F0aW9uUGFy
YW1ldGVyc19oCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisgICAgY2xhc3MgTm90aWZpY2F0aW9uUGFyYW1ldGVycyB7IAorICAgIHB1YmxpYzoK
KyAgICAgICAgTm90aWZpY2F0aW9uUGFyYW1ldGVycygpIHt9CisgICAgICAgIE5vdGlmaWNhdGlv
blBhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBpY29uVXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBTdHJpbmcmIGJvZHkpIAorICAgICAgICAgICAgOiBtX2ljb24oaWNvblVybCkKKyAgICAg
ICAgICAgICwgbV90aXRsZSh0aXRsZSkKKyAgICAgICAgICAgICwgbV9ib2R5KGJvZHkpIHt9CisK
KyAgICAgICAgU3RyaW5nIGljb24oKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KKyAgICAgICAg
U3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQorICAgICAgICBTdHJpbmcg
Ym9keSgpIGNvbnN0IHsgcmV0dXJuIG1fYm9keTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAg
U3RyaW5nIG1faWNvbjsKKyAgICAgICAgU3RyaW5nIG1fdGl0bGU7CisgICAgICAgIFN0cmluZyBt
X2JvZHk7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKE5PVElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBOb3RpZmljYXRpb25QYXJhbWV0ZXJzX2gK
SW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Qcm92aWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Qcm92aWRlci5oCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblByb3ZpZGVy
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5vdGlmaWNhdGlvblByb3Zp
ZGVyX2gKKyNkZWZpbmUgTm90aWZpY2F0aW9uUHJvdmlkZXJfaAorCisjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIE5vdGlmaWNhdGlv
bjsKKyAgICBjbGFzcyBQZXJtaXNzaW9uQ2FsbGJhY2s7CisgICAgY2xhc3MgU2VjdXJpdHlPcmln
aW47CisgICAgY2xhc3MgU3RyaW5nOworICAgIAorICAgIGNsYXNzIE5vdGlmaWNhdGlvblByb3Zp
ZGVyIHsKKworICAgIHB1YmxpYzoKKyAgICAgICAgZW51bSBQZXJtaXNzaW9uIHsgCisgICAgICAg
ICAgICBQRVJNSVNTSU9OX0FMTE9XRUQsCisgICAgICAgICAgICBQRVJNSVNTSU9OX05PVF9BTExP
V0VELAorICAgICAgICAgICAgUEVSTUlTU0lPTl9ERU5JRUQKKyAgICAgICAgfTsKKworICAgICAg
ICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25Qcm92aWRlcigpIHt9CisKKyAgICAgICAgdmlydHVhbCBp
bnQgc2hvdyhjb25zdCBTdHJpbmcmIFVSTCwgTm90aWZpY2F0aW9uKiBvYmplY3QpID0gMDsKKwor
ICAgICAgICB2aXJ0dWFsIGludCBzaG93KGNvbnN0IFN0cmluZyYgaWNvblVybCwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBOb3RpZmljYXRpb24qIG9iamVjdCkgPSAw
OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoaW50IGhhbmRsZSkgPSAwOworCisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTZWN1cml0eU9yaWdpbiogb3JpZ2lu
LCBQZXJtaXNzaW9uQ2FsbGJhY2sqIGNhbGxiYWNrKSA9IDA7CisKKyAgICAgICAgdmlydHVhbCBQ
ZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKSA9IDA7Cisg
ICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElG
SUNBVElPTlMpCisKKyNlbmRpZiAvLyBOb3RpZmljYXRpb25Qcm92aWRlcl9oCkluZGV4OiBXZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisK
KyNpbmNsdWRlICJOb3RpZmljYXRpb25zLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIlBlcm1pc3Npb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOb3RpZmljYXRpb25zOjpOb3RpZmljYXRpb25zKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92
aWRlcikgCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQorICAgICwgbV9ub3RpZmljYXRpb25Qcm92aWRl
cihwcm92aWRlcikge30KKworCitpbnQgTm90aWZpY2F0aW9uczo6Y2hlY2tQZXJtaXNzaW9uKCkg
Cit7CisgICAgcmV0dXJuIG1fbm90aWZpY2F0aW9uUHJvdmlkZXItPmNoZWNrUGVybWlzc2lvbiht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpOworfQorCit2b2lkIE5v
dGlmaWNhdGlvbnM6OnJlcXVlc3RQZXJtaXNzaW9uKFBhc3NSZWZQdHI8UGVybWlzc2lvbkNhbGxi
YWNrPiBjYWxsYmFjaykKK3sKKyAgICBtX25vdGlmaWNhdGlvblByb3ZpZGVyLT5yZXF1ZXN0UGVy
bWlzc2lvbihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIGNhbGxi
YWNrLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisKKworCisjZW5kaWYg
Ly8gRU5BQkxFKE5PVElGSUNBVElPTlMpCkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25zLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRpb25z
X2gKKyNkZWZpbmUgTm90aWZpY2F0aW9uc19oCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIK
KyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCisg
ICAgY2xhc3MgTm90aWZpY2F0aW9ucyA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbnM+
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsgCisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxOb3RpZmljYXRpb25zPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgTm90aWZpY2F0aW9ucyhjb250ZXh0LCBwcm92aWRlcikpOyB9CisgICAgICAgIAorICAg
ICAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlSFRNTE5vdGlmaWNhdGlvbihjb25z
dCBTdHJpbmcmIFVSSSwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0ZShLVVJMKFVSSSksIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgZWMsIG1fbm90aWZpY2F0aW9uUHJvdmlkZXIpOworICAgICAgICB9CisgICAgICAg
IFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVOb3RpZmljYXRpb24oTm90aWZpY2F0aW9u
UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBFeGNlcHRpb25Db2RlJiBlYykKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbjo6Y3JlYXRlKHBhcmFtZXRlcnMsIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgZWMsIG1fbm90aWZpY2F0aW9uUHJvdmlkZXIpOworICAgICAgICB9
CisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQorICAgICAgICBOb3RpZmljYXRpb25Qcm92
aWRlciogcHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlvblByb3ZpZGVyOyB9
CisKKyAgICAgICAgaW50IGNoZWNrUGVybWlzc2lvbigpOworICAgICAgICB2b2lkIHJlcXVlc3RQ
ZXJtaXNzaW9uKFBhc3NSZWZQdHI8UGVybWlzc2lvbkNhbGxiYWNrPiBjYWxsYmFjayk7CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBOb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBOb3RpZmljYXRpb25Qcm92aWRlciopOworCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICAgICAgTm90aWZpY2F0aW9uUHJvdmlk
ZXIqIG1fbm90aWZpY2F0aW9uUHJvdmlkZXI7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBOb3Rp
ZmljYXRpb25zX2gKSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5pZGwJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5pZGwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBpbnRl
cmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1OT1RJRklDQVRJT05TCisgICAgXSBOb3RpZmlj
YXRpb25zIHsKKyAgICAgICBbUmV0dXJuc05ld10gW0N1c3RvbV0gTm90aWZpY2F0aW9uIGNyZWF0
ZUhUTUxOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIHVybCk7CisgICAgICAgW1JldHVybnNOZXdd
IFtDdXN0b21dIE5vdGlmaWNhdGlvbiBjcmVhdGVOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIGlj
b25VcmwsIGluIERPTVN0cmluZyB0aXRsZSwgaW4gRE9NU3RyaW5nIGJvZHkpOworCisgICAgICAg
W0N1c3RvbV0gaW50IGNoZWNrUGVybWlzc2lvbigpOworICAgICAgIFtDdXN0b21dIHZvaWQgcmVx
dWVzdFBlcm1pc3Npb24oaW4gUGVybWlzc2lvbkNhbGxiYWNrIGNhbGxiYWNrKTsKKyAgICB9Owor
Cit9CkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvUGVybWlzc2lvbkNhbGxiYWNrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL1Blcm1pc3Npb25DYWxsYmFjay5oCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL1Blcm1pc3Npb25DYWxsYmFjay5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8NCisNCisjaWZuZGVmIFBlcm1pc3Npb25DYWxsYmFj
a19oDQorI2RlZmluZSBQZXJtaXNzaW9uQ2FsbGJhY2tfaA0KKw0KKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykNCisNCisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPg0KKw0KK25hbWVzcGFjZSBX
ZWJDb3JlIHsNCisgDQorY2xhc3MgUGVybWlzc2lvbkNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50
ZWQ8UGVybWlzc2lvbkNhbGxiYWNrPiB7DQorcHVibGljOg0KKyAgICB2aXJ0dWFsIH5QZXJtaXNz
aW9uQ2FsbGJhY2soKSB7IH0NCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KGludCBwZXJt
aXNzaW9uTGV2ZWwpID0gMDsNCit9Ow0KKw0KK30NCisNCisjZW5kaWYNCisNCisjZW5kaWYgLy8g
UGVybWlzc2lvbkNhbGxiYWNrX2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiA0NDE4OCkKKysrIFdl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTEsNiArMzkxLDEzIEBA
IGJvb2wgQ2hyb21lOjpzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JIYW4KICAgICByZXR1cm4gbV9j
bGllbnQtPnNldEN1cnNvcihjdXJzb3IpOwogfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
CitOb3RpZmljYXRpb25Qcm92aWRlciogQ2hyb21lOjpub3RpZmljYXRpb25Qcm92aWRlcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LT5ub3RpZmljYXRpb25Qcm92aWRlcigpOworfQor
I2VuZGlmCisKIC8vIC0tLS0tLS0tCiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCklu
ZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0No
cm9tZS5oCShyZXZpc2lvbiA0NDE4OCkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNiArNDQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
SW50UmVjdDsKICAgICBjbGFzcyBQYWdlOwogICAgIGNsYXNzIFN0cmluZzsKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKKyAgICBjbGFzcyBOb3RpZmljYXRpb25Qcm92aWRlcjsKKyNlbmRpZgog
CiAgICAgc3RydWN0IEZyYW1lTG9hZFJlcXVlc3Q7CiAgICAgc3RydWN0IFdpbmRvd0ZlYXR1cmVz
OwpAQCAtMTI4LDYgKzEzMSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQg
Zm9jdXNOU1ZpZXcoTlNWaWV3Kik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQorICAgICAgICBOb3RpZmljYXRpb25Qcm92aWRlciogbm90aWZpY2F0aW9uUHJvdmlkZXIoKSBj
b25zdDsgCisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAg
ICAgICAgQ2hyb21lQ2xpZW50KiBtX2NsaWVudDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlz
aW9uIDQ0MTg4KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw2ICs2MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgR3JhcGhp
Y3NMYXllcjsKICNlbmRpZgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgY2xhc3Mg
Tm90aWZpY2F0aW9uUHJvdmlkZXI7CisjZW5kaWYKKwogICAgIGNsYXNzIENocm9tZUNsaWVudCB7
CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hyb21lRGVzdHJveWVkKCkgPSAw
OwpAQCAtMTQzLDYgKzE0NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkYXNoYm9hcmRSZWdpb25zQ2hhbmdlZCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKKyAgICAgICAgdmlydHVhbCBOb3RpZmljYXRpb25Qcm92aWRlciogbm90
aWZpY2F0aW9uUHJvdmlkZXIoKSBjb25zdCA9IDA7CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcG9wdWxhdGVWaXNpdGVkTGlua3MoKTsKIAogICAgICAgICB2aXJ0dWFsIEZsb2F0UmVj
dCBjdXN0b21IaWdobGlnaHRSZWN0KE5vZGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNv
bnN0IEZsb2F0UmVjdCYgbGluZVJlY3QpOwpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDQ0
MTg4KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgw
LDYgKzgwLDEwIEBACiAjaW5jbHVkZSAiRE9NQXBwbGljYXRpb25DYWNoZS5oIgogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyNpbmNsdWRlICJOb3RpZmljYXRpb25zLmgiCisj
ZW5kaWYKKwogdXNpbmcgc3RkOjptaW47CiB1c2luZyBzdGQ6Om1heDsKIApAQCAtNDQwLDYgKzQ0
NCwxMCBAQCB2b2lkIERPTVdpbmRvdzo6Y2xlYXIoKQogICAgICAgICBtX2FwcGxpY2F0aW9uQ2Fj
aGUtPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fYXBwbGljYXRpb25DYWNoZSA9IDA7CiAjZW5k
aWYKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIG1fbm90aWZpY2F0aW9ucyA9IDA7
CisjZW5kaWYKIH0KIAogU2NyZWVuKiBET01XaW5kb3c6OnNjcmVlbigpIGNvbnN0CkBAIC01NzUs
NiArNTgzLDI4IEBAIFN0b3JhZ2UqIERPTVdpbmRvdzo6bG9jYWxTdG9yYWdlKCkgY29uc3QKIH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitOb3RpZmljYXRpb25zKiBET01X
aW5kb3c6Om5vdGlmaWNhdGlvbnMoKSBjb25zdAoreworICAgIGlmIChtX25vdGlmaWNhdGlvbnMp
CisgICAgICAgIHJldHVybiBtX25vdGlmaWNhdGlvbnMuZ2V0KCk7CisKKyAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAg
IHJldHVybiAwOworICAgIAorICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAg
IGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBOb3RpZmljYXRpb25Qcm92aWRl
ciogcHJvdmlkZXIgPSBwYWdlLT5jaHJvbWUoKS0+bm90aWZpY2F0aW9uUHJvdmlkZXIoKTsKKyAg
ICBpZiAocHJvdmlkZXIpIAorICAgICAgICBtX25vdGlmaWNhdGlvbnMgPSBOb3RpZmljYXRpb25z
OjpjcmVhdGUoZG9jdW1lbnQsIHByb3ZpZGVyKTsgICAgCisgICAgICAKKyAgICByZXR1cm4gbV9u
b3RpZmljYXRpb25zLmdldCgpOworfQorI2VuZGlmCisKIHZvaWQgRE9NV2luZG93Ojpwb3N0TWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCwgY29u
c3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBpZiAoIW1fZnJhbWUpCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiA0NDE4
OCkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiAr
NTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTWVzc2FnZVBvcnQ7CiAgICAg
Y2xhc3MgTmF2aWdhdG9yOwogICAgIGNsYXNzIE5vZGU7CisgICAgY2xhc3MgTm90aWZpY2F0aW9u
czsKICAgICBjbGFzcyBQb3N0TWVzc2FnZVRpbWVyOwogICAgIGNsYXNzIFNjaGVkdWxlZEFjdGlv
bjsKICAgICBjbGFzcyBTY3JlZW47CkBAIC0yMDAsNiArMjAxLDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgRE9NQXBwbGljYXRpb25DYWNoZSogYXBwbGljYXRpb25DYWNoZSgpIGNv
bnN0OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICAgICAgTm90aWZp
Y2F0aW9ucyogbm90aWZpY2F0aW9ucygpIGNvbnN0OworI2VuZGlmCisKICAgICAgICAgdm9pZCBw
b3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiwgY29uc3QgU3Ry
aW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgICAgIHZvaWQgcG9zdE1lc3NhZ2VUaW1lckZpcmVkKFBvc3RNZXNzYWdlVGltZXIqKTsKIApA
QCAtMzU5LDYgKzM2NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoT0ZGTElO
RV9XRUJfQVBQTElDQVRJT05TKQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxET01BcHBsaWNhdGlv
bkNhY2hlPiBtX2FwcGxpY2F0aW9uQ2FjaGU7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8Tm90aWZpY2F0aW9ucz4gbV9ub3RpZmljYXRp
b25zOworI2VuZGlmCiAKICAgICAgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXJWZWN0b3IgbV9l
dmVudExpc3RlbmVyczsKICAgICB9OwpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDQ0MTg4
KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2
ICsxNjMsOSBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0
b3JhZ2Ugc2Vzc2lvblN0b3JhZ2U7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdG9yYWdl
IGxvY2FsU3RvcmFnZTsKICNlbmRpZgorI2lmIGRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMp
ICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3Vz
dG9tXSBOb3RpZmljYXRpb25zIG5vdGlmaWNhdGlvbnM7CisjZW5kaWYKIAogICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgW1JlcGxhY2VhYmxlXSBDb25zb2xlIGNvbnNvbGU7CiAKSW5kZXg6IFdl
YkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2
aXNpb24gNDQxODgpCisrKyBXZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
OSw2ICs2OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoV01MKQogICAgIGNs
YXNzIFdNTFBhZ2VTdGF0ZTsKICNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAg
IGNsYXNzIE5vdGlmaWNhdGlvblByb3ZpZGVyOworI2VuZGlmCiAKICAgICBlbnVtIEZpbmREaXJl
Y3Rpb24geyBGaW5kRGlyZWN0aW9uRm9yd2FyZCwgRmluZERpcmVjdGlvbkJhY2t3YXJkIH07CiAK
QEAgLTI1OCw2ICsyNjEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShXTUwp
CiAgICAgICAgIE93blB0cjxXTUxQYWdlU3RhdGU+IG1fd21sUGFnZVN0YXRlOwogI2VuZGlmCisK
KyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICAgICAgTm90aWZpY2F0aW9uUHJvdmlkZXIq
IG1fbm90aWZpY2F0aW9uUHJvdmlkZXI7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA0NDE4
OCkKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNiArNTEsMTAgQEAKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvbnMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdvcmtlckNvbnRleHQ6OldvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkKiB0aHJlYWQpCkBAIC02NSw3ICs2OSw5IEBAIFdv
cmtlckNvbnRleHQ6OldvcmtlckNvbnRleHQoY29uc3QgS1VSTCYKIFdvcmtlckNvbnRleHQ6On5X
b3JrZXJDb250ZXh0KCkKIHsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhyZWFk
LT50aHJlYWRJRCgpKTsKLQorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSAgCisgICAgbV9ub3Rp
ZmljYXRpb25zLmNsZWFyKCk7CisjZW5kaWYKICAgICBtX3RocmVhZC0+d29ya2VyT2JqZWN0UHJv
eHkoKS0+d29ya2VyQ29udGV4dERlc3Ryb3llZCgpOwogfQogCkBAIC0yODAsNiArMjg2LDE1IEBA
IHZvaWQgV29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyhjb25zdCAKICAgICB9CiB9CiAKKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK05vdGlmaWNhdGlvbnMqIFdvcmtlckNvbnRleHQ6Om5v
dGlmaWNhdGlvbnMoKSBjb25zdAoreworICAgIGlmICghbV9ub3RpZmljYXRpb25zKQorICAgICAg
ICBtX25vdGlmaWNhdGlvbnMgPSBOb3RpZmljYXRpb25zOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBtX3RocmVhZC0+Z2V0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKSk7CisgICAgcmV0
dXJuIG1fbm90aWZpY2F0aW9ucy5nZXQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKSW5kZXg6IFdlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuaAkocmV2aXNpb24gNDQxODgpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorICAgIGNsYXNzIE5vdGlmaWNhdGlvbnM7CiAgICAgY2xhc3MgU2NoZWR1bGVkQWN0aW9u
OwogICAgIGNsYXNzIFdvcmtlckxvY2F0aW9uOwogICAgIGNsYXNzIFdvcmtlck5hdmlnYXRvcjsK
QEAgLTExMiw2ICsxMTMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQg
ZGlzcGF0Y2hNZXNzYWdlKGNvbnN0IFN0cmluZyYpOwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCisgICAgICAgIE5vdGlmaWNhdGlvbnMqIG5vdGlmaWNhdGlvbnMoKSBjb25zdDsKKyNlbmRp
ZgorCiAgICAgICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgZm9yIEdDIG1hcmtpbmcuIFNl
ZSBKU1dvcmtlckNvbnRleHQ6Om1hcmsoKSBpbgogICAgICAgICAvLyBKU1dvcmtlckNvbnRleHRD
dXN0b20uY3BwLgogICAgICAgICBXb3JrZXJOYXZpZ2F0b3IqIG9wdGlvbmFsTmF2aWdhdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0b3IuZ2V0KCk7IH0KQEAgLTE0Miw2ICsxNDcsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29u
bWVzc2FnZUxpc3RlbmVyOwogICAgICAgICBFdmVudExpc3RlbmVyc01hcCBtX2V2ZW50TGlzdGVu
ZXJzOworCisjaWYgRU5BQkxFX05PVElGSUNBVElPTlMKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8
Tm90aWZpY2F0aW9ucz4gbV9ub3RpZmljYXRpb25zOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkocmV2aXNp
b24gNDQxODgpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTc1LDYgKzc1LDEwIEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICAgICAgYm9vbGVh
biBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKICAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4
Y2VwdGlvbik7CiAKKyNpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUworICAgICAgICAvLyBOb3RpZmlj
YXRpb24gaW50ZXJmYWNlCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb3RpZmljYXRpb25z
IG5vdGlmaWNhdGlvbnM7CisjZW5kaWYKIAogICAgICAgICAvLyBDb25zdHJ1Y3RvcnMKICAgICAg
ICAgYXR0cmlidXRlIE1lc3NhZ2VFdmVudENvbnN0cnVjdG9yIE1lc3NhZ2VFdmVudDsKSW5kZXg6
IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmgJKHJldmlzaW9uIDQ0MTg4KQorKysgV2ViQ29yZS93b3JrZXJz
L1dvcmtlclRocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIE5vdGlmaWNhdGlvblBy
b3ZpZGVyOwogICAgIGNsYXNzIFN0cmluZzsKICAgICBjbGFzcyBXb3JrZXJDb250ZXh0OwogICAg
IGNsYXNzIFdvcmtlck9iamVjdFByb3h5OwpAQCAtNTQsNiArNTUsMTEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkgeyByZXR1cm4gbV9ydW5M
b29wOyB9CiAgICAgICAgIFdvcmtlck9iamVjdFByb3h5KiB3b3JrZXJPYmplY3RQcm94eSgpIGNv
bnN0IHsgcmV0dXJuIG1fd29ya2VyT2JqZWN0UHJveHk7IH0KIAorI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQorICAgICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBnZXROb3RpZmlj
YXRpb25Qcm92aWRlcigpIHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUHJvdmlkZXI7IH0KKyAgICAg
ICAgdmlydHVhbCB2b2lkIHNldE5vdGlmaWNhdGlvblByb3ZpZGVyKE5vdGlmaWNhdGlvblByb3Zp
ZGVyKiBwcm92aWRlcikgeyBtX25vdGlmaWNhdGlvblByb3ZpZGVyID0gcHJvdmlkZXI7IH0KKyNl
bmRpZgorCiAgICAgcHJpdmF0ZToKICAgICAgICAgV29ya2VyVGhyZWFkKGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJP
YmplY3RQcm94eSopOwogCkBAIC02OCw2ICs3NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIE11dGV4IG1fdGhyZWFkQ3JlYXRpb25NdXRleDsKIAogICAgICAgICBPd25QdHI8V29y
a2VyVGhyZWFkU3RhcnR1cERhdGE+IG1fc3RhcnR1cERhdGE7CisKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKKyAgICAgICAgTm90aWZpY2F0aW9uUHJvdmlkZXIqIG1fbm90aWZpY2F0aW9uUHJv
dmlkZXI7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDE4OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE1IEBACisyMDA5LTA1LTIwICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29n
bGUuY29tPgorCisgICAgICAgIEFkZHMgYmFzaWMgbGF5b3V0IHRlc3QgdG8gY29uZmlybSB0aGUg
bm90aWZpY2F0aW9ucyBpbnRlcmZhY2UgaXMgdmlzaWJsZSBmcm9tIHdvcmtlciBzY3JpcHQuCisg
ICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3Qvbm90aWZpY2F0aW9uczogQWRkZWQuCisgICAgICAgICogZmFzdC9ub3RpZmljYXRpb25z
L25vdGlmaWNhdGlvbnMtYWNjZXNzb3IuaHRtbC1kaXNhYmxlZDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtYWNjZXNzb3ItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L25vdGlmaWNhdGlvbnMvcmVzb3VyY2VzOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L25vdGlmaWNhdGlvbnMvcmVzb3VyY2VzL3dvcmtlci1ub3RpZmljYXRpb25z
LmpzOiBBZGRlZC4KKwogMjAwOS0wNS0yNyAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2
by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBEaXNhYmxpbmcgbmV3IHRlc3Rz
IHRvIG1ha2UgdGhlIGJvdCBncmVlbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0
aW9ucy9ub3RpZmljYXRpb25zLWFjY2Vzc29yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1hY2Nlc3Nvci1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMv
bm90aWZpY2F0aW9ucy1hY2Nlc3Nvci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsOCBAQAorVGVzdCBXb3JrZXIgTm90aWZpY2F0aW9ucyBhY2Nlc3MuIFNob3VsZCBwcmludCBh
IHNlcmllcyBvZiBQQVNTIG1lc3NhZ2VzLCBmb2xsb3dlZCB3aXRoIERPTkUuCisKK1Rlc3Qgc3Rh
cnRlZC4KK1BBU1M6IG5vdGlmaWNhdGlvbnMgb2JqZWN0IGV4aXN0cy4KK1BBU1M6IG5vdGlmaWNh
dGlvbnMuY3JlYXRlSFRNTE5vdGlmaWNhdGlvbnMgZG9lcyBub3QgZXhpc3QuCitQQVNTOiBub3Rp
ZmljYXRpb25zLmNyZWF0ZU5vdGlmaWNhdGlvbnMgZG9lcyBub3QgZXhpc3QuCitET05FCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWFjY2Vzc29y
Lmh0bWwtZGlzYWJsZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRp
b25zL25vdGlmaWNhdGlvbnMtYWNjZXNzb3IuaHRtbC1kaXNhYmxlZAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWFjY2Vzc29yLmh0
bWwtZGlzYWJsZWQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzxib2R5PgorPHA+VGVz
dCBXb3JrZXIgTm90aWZpY2F0aW9ucyBhY2Nlc3MuIFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQ
QVNTIG1lc3NhZ2VzLCBmb2xsb3dlZCB3aXRoIERPTkUuPC9wPgorPGRpdiBpZD1yZXN1bHQ+PC9k
aXY+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK30KKwordHJ5IHsKKyAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigicmVzb3VyY2Vz
L3dvcmtlci1ub3RpZmljYXRpb25zLmpzIik7CisKKyAgICB3b3JrZXIub25tZXNzYWdlID0gZnVu
Y3Rpb24oZXZ0KSB7CisgICAgICAgIGxvZyhldnQuZGF0YSk7CisgICAgICAgIGlmIChldnQuZGF0
YSA9PSAiRE9ORSIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKyAgICAKK30gY2F0Y2gg
KGV4KSB7CisgICAgbG9nKCJGQUlMOiB1bmV4cGVjdGVkIGV4Y2VwdGlvbiAiICsgZXgpOworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL3Jlc291cmNlcy93b3JrZXItbm90aWZpY2F0aW9ucy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvcmVzb3VyY2Vz
L3dvcmtlci1ub3RpZmljYXRpb25zLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9ub3RpZmljYXRpb25zL3Jlc291cmNlcy93b3JrZXItbm90aWZpY2F0aW9ucy5qcwkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNiBAQAorcG9zdE1lc3NhZ2UoIlRlc3Qgc3RhcnRlZC4iKTsKKwor
Ly8gVHJ5IHRvIGdldCB0aGUgbm90aWZpY2F0aW9ucyBvYmplY3QgZnJvbSBnbG9iYWwgY29udGV4
dHMuCitpZiAobm90aWZpY2F0aW9ucyAhPSB1bmRlZmluZWQpIHsKKyAgICBwb3N0TWVzc2FnZSgi
UEFTUzogbm90aWZpY2F0aW9ucyBvYmplY3QgZXhpc3RzLiIpOworICAgIAorICAgIGlmICghbm90
aWZpY2F0aW9ucy5jcmVhdGVIVE1MTm90aWZpY2F0aW9ucykgeworICAgICAgICBwb3N0TWVzc2Fn
ZSgiUEFTUzogbm90aWZpY2F0aW9ucy5jcmVhdGVIVE1MTm90aWZpY2F0aW9ucyBkb2VzIG5vdCBl
eGlzdC4iKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFub3RpZmljYXRpb25zLmNyZWF0ZU5vdGlm
aWNhdGlvbnMpIHsKKyAgICAgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IG5vdGlmaWNhdGlvbnMuY3Jl
YXRlTm90aWZpY2F0aW9ucyBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICB9CisgICAgCisgICAgcG9z
dE1lc3NhZ2UoIkRPTkUiKTsKK30K
</data>
<flag name="review"
          id="16289"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32340</attachid>
            <date>2009-07-06 18:10:29 -0700</date>
            <delta_ts>2009-07-06 18:14:09 -0700</delta_ts>
            <desc>Notifications API, WebCore only</desc>
            <filename>wk_core.diff</filename>
            <type>text/plain</type>
            <size>91012</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ1NTc2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDctMDYgIEpvaG4gR3Jl
Z2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRGVza3RvcCBOb3RpZmljYXRpb25zIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0NjMKKworICAgICAgICBBZGRz
IEVOQUJMRV9OT1RJRklDQVRJT04gZmxhZy4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDA5
LTA3LTA2ICBBZGEgQ2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyIGFuZCBNYXJrIFJvd2UuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24g
NDU1NzQpCisrKyBKYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBFTkFCTEVfRklMVEVSUyA9
IDsKIEVOQUJMRV9HRU9MT0NBVElPTiA9IDsKIEVOQUJMRV9JQ09OREFUQUJBU0UgPSBFTkFCTEVf
SUNPTkRBVEFCQVNFOwogRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIgPSBFTkFCTEVfSkFWQVND
UklQVF9ERUJVR0dFUjsKK0VOQUJMRV9OT1RJRklDQVRJT05TID0gOwogRU5BQkxFX09GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUyA9IEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7CiBFTkFC
TEVfU1ZHID0gRU5BQkxFX1NWRzsKIEVOQUJMRV9TVkdfQU5JTUFUSU9OID0gRU5BQkxFX1NWR19B
TklNQVRJT047CkBAIC01MSw0ICs1Miw0IEBAIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktF
UlM7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9Y
U0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfRE9NX1NUT1JB
R0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09O
REFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX09GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAk
KEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChF
TkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NW
R19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQo
RU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxF
XzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RBVEFC
QVNFKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VP
TE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUikgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NW
R19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdf
Rk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChF
TkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDQ1
NTc0KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxNCw2ICs1MTQsMTAgQEAKICNkZWZpbmUgRU5BQkxFX0dFT0xPQ0FUSU9OIDAKICNlbmRpZgog
CisjaWYgIWRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpCisjZGVmaW5lIEVOQUJMRV9OT1RJ
RklDQVRJT05TIDAKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX1RFWFRfQ0FSRVQpCiAj
ZGVmaW5lIEVOQUJMRV9URVhUX0NBUkVUIDEKICNlbmRpZgpJbmRleDogV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ1NTc2KQorKysg
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMDUgQEAKKzIwMDkt
MDctMDYgIEpvaG4gR3JlZ2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVza3RvcCBOb3RpZmljYXRpb25zIEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0NjMK
KworICAgICAgICBBZGRzIGFuIGltcGxlbWVudGF0aW9uIG9mIGRlc2t0b3Agbm90aWZpY2F0aW9u
cywgYmVoaW5kIHRoZSBjb21waWxlLXRpbWUKKyAgICAgICAgZmxhZyBFTkFCTEUoTk9USUZJQ0FU
SU9OUykuICBUaGlzIGNvZGUgc2ltcGx5IHJlbGF5cyBjYWxscyBvbiB0aGUgSmF2YVNjcmlwdAor
ICAgICAgICBBUEkgdGhyb3VnaCBhIE5vdGlmaWNhdGlvblByb3ZpZGVyIGludGVyZmFjZSwgd2hp
Y2ggbXVzdCBwcm92aWRlIHRoZSBzZXJ2aWNlcworICAgICAgICB0byBhY3R1YWxseSBub3RpZnkg
dGhlIHVzZXIgYW5kIG1hbmFnZSB0aGUgZGVza3RvcC4gIFRoaXMgcHJvdmlkZXIgaXMgaW5qZWN0
ZWQKKyAgICAgICAgaW50byBXZWJLaXQgdGhyb3VnaCB0aGUgQ2hyb21lQ2xpZW50IGZvciBub3Jt
YWwgcGFnZSBjb250ZXh0cyBhbmQgdGhyb3VnaCB0aGUKKyAgICAgICAgV29ya2VyVGhyZWFkIGZv
ciB3b3JrZXIgY29udGV4dHMuCisKKyAgICAgICAgQSBwZXJtaXNzaW9ucyBBUEkgaXMgZGVmaW5l
ZCBvbiBhIHBlci1vcmlnaW4gYmFzaXMsIHdoaWNoIGFsbG93cyBhIHdlYiBwYWdlCisgICAgICAg
IHRvIGNoZWNrIGlmIGl0cyBvcmlnaW4gaXMgYWxsb3dlZCB0byBzaG93IGRlc2t0b3Agbm90aWZp
Y2F0aW9ucywgYW5kIHRvIHJlcXVlc3QKKyAgICAgICAgcGVybWlzc2lvbiBmb3IgaXRzIG9yaWdp
bi4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmVDb21tb24u
dnNwcm9wczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6Om5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkpTTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVIVE1MTm90aWZpY2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVOb3RpZmljYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SlNOb3RpZmljYXRpb25DZW50ZXI6OmNoZWNrUGVybWlzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpKU05vdGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVzdFBlcm1pc3Np
b24pOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkVtcHR5Q2hyb21lQ2xpZW50Ojpub3RpZmljYXRpb25Qcm92aWRlcik6CisgICAgICAgICogbm90
aWZpY2F0aW9uczogQWRkZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjpjYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkaXNw
YXRjaERpc3BsYXlFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRpc3Bh
dGNoRXJyb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRpc3BhdGNo
Q2xvc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmFkZEV2ZW50TGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpyZW1vdmVFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRpc3BsYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OmNsb3NlKToKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbjo6aXNIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bjo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y29udGVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpvbmRpc3BsYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjpzZXRPbmRpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uOjpvbmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2V0T25l
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246Om9uY2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzZXRPbmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb246OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNlbnRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVy
OjpOb3RpZmljYXRpb25DZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2Vu
dGVyOjpjaGVja1Blcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2Vu
dGVyOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25DZW50ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0
ZUhUTUxOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVy
OjpjcmVhdGVOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2Vu
dGVyOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNlbnRlcjo6cHJv
dmlkZXIpOgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbDog
QWRkZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250ZW50cy5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNvbnRlbnRzOjpOb3RpZmljYXRp
b25Db250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250ZW50czo6aWNv
bik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250ZW50czo6dGl0bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udGVudHM6OmJvZHkpOgorICAgICAgICAqIG5v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb25Qcm92aWRlcjo6KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByb3ZpZGVyOjp+Tm90aWZpY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAqIHBhZ2UvQ2hy
b21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6bm90aWZpY2F0aW9uUHJvdmlkZXIp
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQu
aDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6d2Via2l0Tm90aWZp
Y2F0aW9ucyk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RP
TVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6On5Xb3Jr
ZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OndlYmtpdE5vdGlm
aWNhdGlvbnMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyQ29udGV4dC5pZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJl
YWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6Z2V0Tm90aWZpY2F0aW9uUHJv
dmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjpzZXROb3RpZmljYXRpb25Q
cm92aWRlcik6CisKIDIwMDktMDctMDYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5jcHAJKHJldmlzaW9uIDQ1NTc0KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIsOCBAQAogI2luY2x1ZGUgIkpTTm9kZUl0ZXJhdG9y
LmNwcCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmNwcCIKICNpbmNsdWRlICJKU05vdGF0aW9uLmNw
cCIKKyNpbmNsdWRlICJKU05vdGlmaWNhdGlvbkNlbnRlci5jcHAiCisjaW5jbHVkZSAiSlNOb3Rp
ZmljYXRpb24uY3BwIgogI2luY2x1ZGUgIkpTT3ZlcmZsb3dFdmVudC5jcHAiCiAjaW5jbHVkZSAi
SlNQbHVnaW4uY3BwIgogI2luY2x1ZGUgIkpTUGx1Z2luQXJyYXkuY3BwIgpJbmRleDogV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQkocmV2aXNpb24gNDU1NzQpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJDb3Jl
KS9odG1sIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3RvciBcCiAgICAgJChXZWJDb3JlKS9sb2Fk
ZXIvYXBwY2FjaGUgXAorICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucyBcCiAgICAgJChXZWJD
b3JlKS9wYWdlIFwKICAgICAkKFdlYkNvcmUpL3BsdWdpbnMgXAogICAgICQoV2ViQ29yZSkvc3Rv
cmFnZSBcCkBAIC0xODgsNiArMTg5LDggQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgTm9kZUl0ZXJh
dG9yIFwKICAgICBOb2RlTGlzdCBcCiAgICAgTm90YXRpb24gXAorICAgIE5vdGlmaWNhdGlvbiBc
CisgICAgTm90aWZpY2F0aW9uQ2VudGVyIFwKICAgICBPdmVyZmxvd0V2ZW50IFwKICAgICBQbHVn
aW4gXAogICAgIFBsdWdpbkFycmF5IFwKQEAgLTY3OCw3ICs2ODEsNyBAQCBlbmRpZgogIyBKYXZh
U2NyaXB0IGJpbmRpbmdzCiAKIEdFTkVSQVRFX0JJTkRJTkdTID0gcGVybCAtSSAkKFdlYkNvcmUp
L2JpbmRpbmdzL3NjcmlwdHMgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJp
bmRpbmdzLnBsIFwKLSAgICAtLWluY2x1ZGUgZG9tIC0taW5jbHVkZSBodG1sIC0taW5jbHVkZSBj
c3MgLS1pbmNsdWRlIHBhZ2UgLS1pbmNsdWRlIHhtbCAtLWluY2x1ZGUgc3ZnIC0tb3V0cHV0RGly
IC4KKyAgICAtLWluY2x1ZGUgZG9tIC0taW5jbHVkZSBodG1sIC0taW5jbHVkZSBjc3MgLS1pbmNs
dWRlIHBhZ2UgLS1pbmNsdWRlIG5vdGlmaWNhdGlvbnMgLS1pbmNsdWRlIHhtbCAtLWluY2x1ZGUg
c3ZnIC0tb3V0cHV0RGlyIC4KIAogR0VORVJBVEVfQklORElOR1NfU0NSSVBUUyA9IFwKICAgICBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gXApJbmRleDogV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA0
NTU3NCkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDYg
KzI1LDcgQEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUgXAogCS1J
JChzcmNkaXIpL1dlYkNvcmUvbG9hZGVyL2ljb24gXAorCS1JJChzcmNkaXIpL1dlYkNvcmUvbm90
aWZpY2F0aW9ucyBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9wYWdlIFwKIAktSSQoc3JjZGlyKS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uIFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL3BsYXRmb3JtIFwK
QEAgLTIzMSw2ICsyMzIsOCBAQCBJRExfQklORElOR1MgKz0gXAogCVdlYkNvcmUvaHRtbC9Wb2lk
Q2FsbGJhY2suaWRsIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlk
bCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5pZGwgXAorCVdlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9ucy5pZGwgXAogCVdlYkNvcmUvcGFnZS9CYXJJbmZvLmlkbCBcCiAJV2Vi
Q29yZS9wYWdlL0NvbnNvbGUuaWRsIFwKIAlXZWJDb3JlL3BhZ2UvQ29vcmRpbmF0ZXMuaWRsIFwK
QEAgLTI0MjgsNiArMjQzMSwyNCBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUv
cGxhdGZvcm0vZ3RrL0dlb2xvY2F0aW9uU2VydmljZUd0ay5oCiBlbmRpZiAjIEVORCBFTkFCTEVf
R0VPTE9DQVRJT04KIAorIyAtLS0tCisjIE5vdGlmaWNhdGlvbnMgc3VwcG9ydAorIyAtLS0tCitp
ZiBFTkFCTEVfTk9USUZJQ0FUSU9OUworRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5B
QkxFX05PVElGSUNBVElPTlM9MQorCit3ZWJjb3JlX2NwcGZsYWdzICs9IFwKKwktREVOQUJMRV9O
T1RJRklDQVRJT05TPTEKKword2ViY29yZV9zb3VyY2VzICs9IFwKKwlXZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmNwcCBcCisJV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5oIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9ucy5jcHAgXAorCVdl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLmggXAorCVdlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25Qcm92aWRlci5oIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uUGFyYW1ldGVycy5oCisKK2VuZGlmICMgRU5EIEVOQUJMRV9OT1RJRklDQVRJT05T
CiAKICMgLS0tLQogIyBTVkcgU3VwcG9ydApJbmRleDogV2ViQ29yZS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA0NTU3NCkKKysrIFdlYkNvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDcgQEAgRU5BQkxFX0ZJTFRFUlMgPSA7CiBFTkFCTEVfR0VPTE9DQVRJT04gPSA7
CiBFTkFCTEVfSUNPTkRBVEFCQVNFID0gRU5BQkxFX0lDT05EQVRBQkFTRTsKIEVOQUJMRV9KQVZB
U0NSSVBUX0RFQlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVI7CitFTkFCTEVfTk9U
SUZJQ0FUSU9OUyA9IDsKIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgPSBFTkFCTEVf
T0ZGTElORV9XRUJfQVBQTElDQVRJT05TOwogRU5BQkxFX1NWRyA9IEVOQUJMRV9TVkc7CiBFTkFC
TEVfU1ZHX0FOSU1BVElPTiA9IEVOQUJMRV9TVkdfQU5JTUFUSU9OOwpAQCAtNTIsNCArNTMsNSBA
QCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5BQkxF
X1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0g
JChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFC
TEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChF
TkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFT
RSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxF
X1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkg
JChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVf
WFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVO
REVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQo
RU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFW
QVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElO
RV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04p
ICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAk
KEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVf
U1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykg
JChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDQ1NTc0KQorKysgV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQAogCQkJ
Lz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29t
bWFuZExpbmU9Im1rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7JiN4MEQ7JiN4
MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7
TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hl
YWRlcnNccGFyc2VyJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lJnF1
b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7JiN4MEE7bWtk
aXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3
YXJkaW5nSGVhZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9m
aWxlciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3JlYyZxdW90OyYjeDBEOyYj
eDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVy
c1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNv
ZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGNvbmZpZy5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XHdpblwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3JcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcHBjYWNoZVwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxjZlwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcaWNvblwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnlcY2ZcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caHRtbFwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjc3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXNc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3Jh
cGhpY3Ncd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHRcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1xjZlwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpblwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxzcWxcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2Fpcm9cY2Fp
cm9cc3JjXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRp
bmdzXGpzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2Vc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRp
b25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW5c
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW5cKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZVwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxlZGl0aW5nXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx4bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5cc3ZnXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHN0b3JhZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5cd29ya2Vyc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilc
Li5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdI
ZWFkZXJzXHBhcnNlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcbWFzbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5n
SGVhZGVyc1xwY3JlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBjcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdI
ZWFkZXJzXHByb2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3cmVjXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdI
ZWFkZXJzXHd0ZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGYmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdI
ZWFkZXJzXHd0Zlx1bmljb2RlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3VcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNcd3RmXHVuaWNvZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7bWtkaXIgMiZn
dDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGluc3Bl
Y3RvciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4Y2x1
ZGVzICZxdW90OyQoUHJvamVjdERpcilcLi5caW5zcGVjdG9yXGZyb250LWVuZFwqJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xpbnNwZWN0b3ImcXVv
dDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmlu
XFdlYktpdC5yZXNvdXJjZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAv
cyAvZXhjbHVkZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXEVuZ2xpc2gu
bHByb2pcbG9jYWxpemVkU3RyaW5ncy5qcyZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
YmluXFdlYktpdC5yZXNvdXJjZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gw
QTtpZiBleGlzdCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQmcXVvdDsgZGVs
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZxdW90OyYjeDBEOyYjeDBBOyIN
CisJCQkJQ29tbWFuZExpbmU9Im1rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7
JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYjeDBBO21r
ZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9y
d2FyZGluZ0hlYWRlcnNccGFyc2VyJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xy
dW50aW1lJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7
JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtO
VUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVyc1xwcm9maWxlciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3JlYyZxdW90
OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIg
MiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
d3RmXHVuaWNvZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNvbmZpZy5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XHdpblwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3JcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcHBjYWNoZVwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxj
ZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcaWNv
blwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnlcY2ZcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caHRtbFwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxub3RpZmljYXRpb25zXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNzc1wqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb25cKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2ZcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
dHJhbnNmb3Jtc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxncmFwaGljc1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGVcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dFwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1wqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtc
d2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XHNxbFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxjYWlyb1xjYWlyb1xzcmNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5cYmluZGluZ3NcanNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5ccGFnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxw
YWdlXGFuaW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxwYWdlXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxi
cmlkZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2lu
c1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdp
blwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHN0
eWxlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGVkaXRpbmdc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cZG9tXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHhtbFwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5cc3RvcmFnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlx3b3JrZXJzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1wqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xiaW5k
aW5ncyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5c
Rm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNc
cnVudGltZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJz
XG1hc20mcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4u
XEZvcndhcmRpbmdIZWFkZXJzXHBjcmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccHJv
ZmlsZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVc
Rm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHdyZWNcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
d3JlYyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5c
Rm9yd2FyZGluZ0hlYWRlcnNcd3RmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVu
aWNvZGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVc
Rm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGlj
dVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3
YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3UmcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gw
QTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNv
dXJjZXNcaW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6
eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxpbnNwZWN0b3JcZnJvbnQtZW5k
XComcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGlu
c3BlY3RvciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xlbi5scHJvaiZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4Y2x1ZGVzICZxdW90OyQoUHJvamVjdERpcilc
Li5cRW5nbGlzaC5scHJvalxsb2NhbGl6ZWRTdHJpbmdzLmpzJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xlbi5scHJvaiZxdW90OyYjeDBEOyYjeDBB
OyYjeDBEOyYjeDBBO2lmIGV4aXN0ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxidWlsZGZhaWxl
ZCZxdW90OyBkZWwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJ1aWxkZmFpbGVkJnF1b3Q7JiN4
MEQ7JiN4MEE7Ig0KIAkJCS8+DQogCQk8L0NvbmZpZ3VyYXRpb24+DQogCQk8Q29uZmlndXJhdGlv
bg0KQEAgLTcxOTAsNiArNzE5MCwxMDIgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU05vdGlmaWNhdGlvbi5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0K
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJv
fFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8
VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJl
bGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJ
CT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+
DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU05vdGlmaWNhdGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU05vdGlmaWNhdGlvbkNlbnRlci5jcHAiDQorCQkJCT4NCisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4N
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFs
fFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8
VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRl
YnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+
DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJ
CU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIN
CisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU05vdGlmaWNhdGlvbkNlbnRlci5oIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIp
XG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU092ZXJmbG93RXZlbnQuY3BwIg0K
IAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTIzODMyLDYgKzIzOTI4LDM0IEBA
CiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCiAJCTxGaWx0ZXINCisJCQlOYW1lPSJub3RpZmlj
YXRpb25zIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNh
dGlvbnNcTm90aWZpY2F0aW9uLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uLmgiDQorCQkJ
CT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxub3RpZmlj
YXRpb25zXE5vdGlmaWNhdGlvbkNlbnRlci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxub3RpZmljYXRpb25zXE5vdGlmaWNhdGlvbkNl
bnRlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb25Db250ZW50cy5oIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cbm90aWZpY2F0aW9uc1xO
b3RpZmljYXRpb25Qcm92aWRlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+
DQorCQk8RmlsdGVyDQogCQkJTmFtZT0iZWRpdGluZyINCiAJCQk+DQogCQkJPEZpbGUNCkBAIC0y
ODA2Niw2ICsyODE5MCwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNEZXNrdG9wTm90aWZpY2F0aW9uc0N1
c3RvbS5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNEb2N1bWVudEN1c3RvbS5jcHAiDQogCQkJCQk+DQog
CQkJCTwvRmlsZT4NCkBAIC0zMDEwMywxNCArMzAyMzEsNiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+
DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFN0b3JhZ2VNYXAuY3Bw
Ig0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5c
c3RvcmFnZVxTdG9yYWdlTWFwLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFN0b3JhZ2VOYW1lc3BhY2UuY3BwIg0KIAkJCQk+
DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZUNvbW1v
bi52c3Byb3BzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZUNv
bW1vbi52c3Byb3BzCShyZXZpc2lvbiA0NTU3NCkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZUNvbW1vbi52c3Byb3BzCSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQAogCT4N
CiAJPFRvb2wNCiAJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPSImcXVvdDskKFByb2plY3REaXIpLi5cJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eSZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGJyaWRnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXGMmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
ZWRpdGluZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5bGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXGJpbmRpbmdzXGpzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxkb20mcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVxkZWZhdWx0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxoaXN0b3J5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxpbnNwZWN0b3ImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRl
ciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5cbG9hZGVyXGFyY2hpdmVcY2YmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxp
Y29uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxwYWdlXGFuaW1hdGlvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3
aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXHNxbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cY2YmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdy
YXBoaWNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVu
dHlwZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNm
b3JtcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dCZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlx4bWwmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3Jl
XERlcml2ZWRTb3VyY2VzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cc3ZnXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhp
Y3NcZmlsdGVycyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlx3bWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2UmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcSmF2
YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXEZvcndhcmRpbmdIZWFkZXJz
JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQo
V2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXGljdSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcaW5jbHVkZVxpY29udiZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rpcilc
aW5jbHVkZVxwdGhyZWFkcyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVk
ZVxzcWxpdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcSmF2YVNj
cmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcQ29yZUZv
dW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJy
YXJpZXNEaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnNc
R05VQ29tcGF0aWJpbGl0eSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGFuaW1hdGlv
biZxdW90OyINCisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoUHJvamVj
dERpcikuLlwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxhY2Nlc3NpYmlsaXR5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3Np
YmlsaXR5XHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxicmlkZ2VcYyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cY3Nz
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxlZGl0aW5nJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxub3RpZmljYXRpb25zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJp
bmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZSZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5cYmluZGluZ3NcanMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGRvbSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZG9tXGRlZmF1bHQmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGhpc3RvcnkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWwm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGluc3BlY3RvciZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cbG9hZGVyJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXBwY2Fj
aGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxjZiZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cbG9hZGVyXGljb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2UmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxwYWdlXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm0mcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlvbiZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cc3FsJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmsm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcd2luJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxjZiZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cZ3JhcGhpY3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XGdyYXBoaWNzXG9wZW50eXBlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxn
cmFwaGljc1x0cmFuc2Zvcm1zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0
ZXh0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW4mcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHhtbCZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERp
cilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsdWdpbnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcd2luJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHN2Z1xncmFwaGljc1xmaWx0ZXJzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmcm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5cc3RvcmFnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cd29ya2VycyZxdW90OzsmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cRm9y
d2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUm
cXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcaWN1JnF1b3Q7OyZxdW90
OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXGljb252JnF1b3Q7OyZxdW90OyQoV2ViS2l0
TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFy
aWVzRGlyKVxpbmNsdWRlXHNxbGl0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rpcilc
aW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rpcilc
SW5jbHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVycyZxdW90OzsmcXVv
dDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRp
YmlsaXR5SGVhZGVyc1xHTlVDb21wYXRpYmlsaXR5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxzdmdcYW5pbWF0aW9uJnF1b3Q7Ig0KIAkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9fV0lO
MzJfXztXRUJDT1JFX0NPTlRFWFRfTUVOVVM7RU5BQkxFX0RBVEFCQVNFO0VOQUJMRV9EQVRBR1JJ
RDtFTkFCTEVfRE9NX1NUT1JBR0U7RU5BQkxFX0lDT05EQVRBQkFTRTtFTkFCTEVfT0ZGTElORV9X
RUJfQVBQTElDQVRJT05TO0VOQUJMRV9TVkc7RU5BQkxFX1NWR19BTklNQVRJT047RU5BQkxFX1NW
R19BU19JTUFHRTtFTkFCTEVfU1ZHX0ZPTlRTO0VOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Q7RU5B
QkxFX1NWR19VU0U7RU5BQkxFX1dPUktFUlM7RU5BQkxFX1hQQVRIO0VOQUJMRV9YU0xUIg0KIAkJ
VXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQogCQlQcmVjb21waWxlZEhlYWRlclRocm91Z2g9Ildl
YkNvcmVQcmVmaXguaCINCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gNDU1NzQpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjE0LDYgKzYxNCwxMCBAQAogCQkzMUMw
RkY0QzBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUMwRkY0NjBFNENFRkRE
MDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggKi87IH07CiAJCTMxQzBGRjRE
MEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUMwRkY0NzBFNENFRkREMDA3
RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1tICovOyB9OwogCQkzMUMwRkY0RTBF
NENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzBGRjQ4MEU0Q0VG
REQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnRJbnRlcm5hbC5oICovOyB9Owor
CQkzMzkwQ0E1NTBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzOTBDQTUxMEZGQzE1
N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuY3BwICovOyB9OworCQkzMzkwQ0E1NjBG
RkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzkwQ0E1MjBGRkMxNTdCMDA5MjE5NjIgLyog
Tm90aWZpY2F0aW9uQ2VudGVyLmggKi87IH07CisJCTMzOTBDQTU3MEZGQzE1N0IwMDkyMTk2MiAv
KiBOb3RpZmljYXRpb25DZW50ZXIuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMzkwQ0E1MzBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9u
Q2VudGVyLmlkbCAqLzsgfTsKKwkJMzM5MENBNTgwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNh
dGlvbkNvbnRlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMzkwQ0E1NDBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ29udGVudHMuaCAq
LzsgfTsKIAkJMzcxRjRGNDAwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFGNEYzRTBEMjVCOUFGMDBF
Q0UwRDUgLyogRm9udERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkzNzFGNEY0MTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjRGM0YwRDI1
QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmNwcCAqLzsgfTsKIAkJMzcxRjRGRkMwRDI1RTdGMzAw
RUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFGNEZGQTBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVk
Rm9udERhdGEuaCAqLzsgfTsKQEAgLTU1NDIsNiArNTU0NiwxNCBAQAogCQkzMUMwRkY0NjBFNENF
RkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMUMwRkY0NzBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0
VHJhbnNpdGlvbkV2ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMUMwRkY0ODBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50
SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2ViS2l0VHJh
bnNpdGlvbkV2ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMz
RjcwNEUwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gTm90aWZpY2F0aW9uLmlkbDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMzRjcwNEYwRkI0OUNBMjAw
OEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBOb3RpZmljYXRpb24uaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzM0Y3MDUwMEZCNDlDQTIwMDhFMTJBNiAvKiBO
b3RpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTm90
aWZpY2F0aW9uLmNwcDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMzRjcwNTEwRkI0OUNBMjAwOEUxMkE2IC8qIE5v
dGlmaWNhdGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5v
dGlmaWNhdGlvblByb3ZpZGVyLmg7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBy
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzOTBDQTUxMEZGQzE1N0Iw
MDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTm90aWZpY2F0aW9uQ2VudGVyLmNwcDsgcGF0aCA9IG5vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzM5MENBNTIwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOb3RpZmljYXRpb25DZW50ZXIuaDsgcGF0aCA9IG5v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMzOTBDQTUzMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE5vdGlmaWNhdGlvbkNlbnRlci5pZGw7IHBhdGggPSBu
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMzOTBDQTU0MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25Db250ZW50
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOb3RpZmljYXRpb25Db250ZW50
cy5oOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250ZW50cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFGNEYzRTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERh
dGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udERhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRjRGM0YwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnRE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnREYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRjRGRkEwRDI1RTdGMzAwRUNFMEQ1
IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNlZ21lbnRlZEZvbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDE0
LDYgKzk0MjYsNyBAQAogCQkJCTkzRUVDMUVDMDlDMjg3NzcwMEM1MTVEMSAvKiBodG1sICovLAog
CQkJCTFDODFCOTREMEU5NzMyRDkwMDI2NkUwNyAvKiBpbnNwZWN0b3IgKi8sCiAJCQkJQkNCMTZC
RkIwOTc5QzM4NzAwNDY3NzQxIC8qIGxvYWRlciAqLywKKwkJCQkzMzNGNzAzRDBGQjQ5QzE2MDA4
RTEyQTYgLyogbm90aWZpY2F0aW9ucyAqLywKIAkJCQk2NUJGMDIxODA5NzQ4MDYzMDBDNDMxOTYg
LyogcGFnZSAqLywKIAkJCQlCQ0YxQTVCQTA5NzgzMjA5MDA2MUExMjMgLyogcGxhdGZvcm0gKi8s
CiAJCQkJNURDRjgzNjkwRDU5MTU3ODAwOTUzQkM2IC8qIHBsdWdpbnMgKi8sCkBAIC05ODg0LDYg
Kzk4OTcsMjEgQEAKIAkJCW5hbWUgPSBhbmltYXRpb247CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OworCQkzMzNGNzAzRDBGQjQ5QzE2MDA4RTEyQTYgLyogbm90aWZpY2F0aW9ucyAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMzM5MENBNTEw
RkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5jcHAgKi8sCisJCQkJMzM5MENB
NTIwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5oICovLAorCQkJCTMzOTBD
QTUzMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaWRsICovLAorCQkJCTMz
OTBDQTU0MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25Db250ZW50cy5oICovLAorCQkJ
CTMzM0Y3MDRFMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaWRsICovLAorCQkJCTMz
M0Y3MDRGMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaCAqLywKKwkJCQkzMzNGNzA1
MDBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmNwcCAqLywKKwkJCQkzMzNGNzA1MTBG
QjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uUHJvdmlkZXIuaCAqLywKKwkJCSk7CisJCQlu
YW1lID0gbm90aWZpY2F0aW9uczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJ
CTQ0OTE5NTkwMEZCRTE3NUIwMEQ5RjgyNCAvKiBFeHBvcnRzICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE2OTE3LDYgKzE2OTQ1LDggQEAKIAkJCQlCQzc3
RDE2QzBGRjE5RjU2MDA3MDg4N0IgLyogSlNEYXRhR3JpZENvbHVtbkxpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDQkNBRTM3MEZGMTkzODUwMDA3NjJBRSAvKiBEYXRhR3JpZERhdGFTb3VyY2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkNBRTNEMEZGMTkzOTkwMDA3NjJBRSAvKiBKU0RhdGFH
cmlkRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzM5MENBNTYwRkZDMTU3QjAwOTIx
OTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzM5MENBNTgw
RkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNvbnRlbnRzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDNTBEMEU4MzBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM3REFBRUYwRkY5NjE1RDAwQ0UwMTM4IC8qIERPTURhdGFHcmlkRGF0
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVBNjg0MjIwRkZBQkU5ODAwRDI0Njg5IC8q
IFNRTGl0ZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovLApAQCAtMTcwMjgsNiArMTcwNTgsNyBA
QAogCQkJCUJDNzdDREEzMEZFRkVCNTMwMDcwODg3QiAvKiBIVE1MRGF0YUdyaWRDZWxsRWxlbWVu
dC5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCUJDNzdDRjk5MEZGMTcyNDIwMDcwODg3QiAvKiBE
YXRhR3JpZENvbHVtbkxpc3QuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCQlCQzc3Q0Y5RjBGRjE3
MkIzMDA3MDg4N0IgLyogRGF0YUdyaWRDb2x1bW4uaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQkz
MzkwQ0E1NzBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBpbiBSZXNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkBAIC0xODkzMiw2ICsxODk2Myw3IEBACiAJCQkJQkNCQ0FFNTQwRkYxQTI5RTAw
MDc2MkFFIC8qIEpTSFRNTERhdGFHcmlkRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzc3RDFGRDBGRjI4RDlCMDA3MDg4N0IgLyogRGF0YUdyaWRDb2x1bW5MaXN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDNzdEMjM5MEZGMjk4MDgwMDcwODg3QiAvKiBEYXRhR3JpZENv
bHVtbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMzkwQ0E1NTBGRkMxNTdCMDA5MjE5NjIgLyog
Tm90aWZpY2F0aW9uQ2VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MEQwRTgyMEZGNDI3
MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
N0RBQUVFMEZGOTYxNUQwMENFMDEzOCAvKiBET01EYXRhR3JpZERhdGFTb3VyY2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjVBNjg0MjQwRkZBQkVBQTAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0
ZW0uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gNDU1NzQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2lu
Y2x1ZGUgIkpTTG9jYXRpb24uaCIKICNpbmNsdWRlICJKU01lc3NhZ2VDaGFubmVsQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiSlNOb3RpZmljYXRp
b25DZW50ZXIuaCIKICNpbmNsdWRlICJKU09wdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
SlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTV2ViS2l0UG9pbnRD
b25zdHJ1Y3Rvci5oIgpAQCAtNTMsNiArNTQsNyBAQAogI2luY2x1ZGUgIkxvY2F0aW9uLmgiCiAj
aW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1
ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgiCkBA
IC0zNzQsNiArMzc2LDE5IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OmxvY2F0aW9uKEV4ZWNTdGF0
ZSoKICAgICByZXR1cm4ganNMb2NhdGlvbjsKIH0KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQorSlNWYWx1ZSBKU0RPTVdpbmRvdzo6bm90aWZpY2F0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0Cit7CisgICAgTm90aWZpY2F0aW9uQ2VudGVyKiBub3RpZmljYXRpb25zID0gaW1wbCgpLT5u
b3RpZmljYXRpb25zKCk7CisgICAgaWYgKERPTU9iamVjdCogd3JhcHBlciA9IGdldENhY2hlZERP
TU9iamVjdFdyYXBwZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBub3RpZmljYXRpb25zKSkKKyAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7CisKKyAgICBKU05vdGlmaWNhdGlvbkNlbnRlcioganNOb3RpZmlj
YXRpb25zID0gbmV3IChleGVjKSBKU05vdGlmaWNhdGlvbkNlbnRlcihnZXRET01TdHJ1Y3R1cmU8
SlNOb3RpZmljYXRpb25DZW50ZXI+KGV4ZWMsIGNvbnN0X2Nhc3Q8SlNET01XaW5kb3cqPih0aGlz
KSksIG5vdGlmaWNhdGlvbnMpOworICAgIGNhY2hlRE9NT2JqZWN0V3JhcHBlcihleGVjLT5nbG9i
YWxEYXRhKCksIG5vdGlmaWNhdGlvbnMsIGpzTm90aWZpY2F0aW9ucyk7CisgICAgcmV0dXJuIGpz
Tm90aWZpY2F0aW9uczsKK30KKyNlbmRpZgorCiB2b2lkIEpTRE9NV2luZG93OjpzZXRMb2NhdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgRnJhbWUqIGxleGljYWxG
cmFtZSA9IHRvTGV4aWNhbEZyYW1lKGV4ZWMpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0Rlc2t0b3BOb3RpZmljYXRpb25zQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rlc2t0b3BOb3RpZmljYXRpb25zQ3VzdG9tLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJK
U0N1c3RvbVZvaWRDYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTTm90aWZpY2F0aW9uLmgiCisjaW5j
bHVkZSAiSlNOb3RpZmljYXRpb25DZW50ZXIuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIK
KyNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU1ZhbHVlIEpTTm90aWZpY2F0aW9uQ2VudGVyOjpj
cmVhdGVIVE1MTm90aWZpY2F0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJn
cykKK3sKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTdHJpbmcgdXJsID0gYXJncy5h
dCgwKS50b1N0cmluZyhleGVjKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gdG9KUyhleGVjLCBOb3Rp
ZmljYXRpb246OmNyZWF0ZSh1cmwsIGltcGwoKS0+Y29udGV4dCgpLCBlYywgaW1wbCgpLT5wcm92
aWRlcigpKSk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICByZXR1cm4gdmFs
dWU7Cit9CisKK0pTVmFsdWUgSlNOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZU5vdGlmaWNhdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgTm90aWZpY2F0aW9uQ29udGVudHMgY29udGVudHMoYXJncy5hdCgw
KS50b1N0cmluZyhleGVjKSwgYXJncy5hdCgxKS50b1N0cmluZyhleGVjKSwgYXJncy5hdCgyKS50
b1N0cmluZyhleGVjKSk7CisKKworICAgIEpTVmFsdWUgdmFsdWUgPSB0b0pTKGV4ZWMsIE5vdGlm
aWNhdGlvbjo6Y3JlYXRlKGNvbnRlbnRzLCBpbXBsKCktPmNvbnRleHQoKSwgZWMsIGltcGwoKS0+
cHJvdmlkZXIoKSkpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgcmV0dXJu
IHZhbHVlOworfQorCitKU1ZhbHVlIEpTTm90aWZpY2F0aW9uQ2VudGVyOjpjaGVja1Blcm1pc3Np
b24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBK
U1ZhbHVlKGV4ZWMsIGltcGwoKS0+Y2hlY2tQZXJtaXNzaW9uKCkpOworfQorCitKU1ZhbHVlIEpT
Tm90aWZpY2F0aW9uQ2VudGVyOjpyZXF1ZXN0UGVybWlzc2lvbihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgLy8gUGVybWlzc2lvbiByZXF1ZXN0IGlzIG9ubHkg
dmFsaWQgZnJvbSBwYWdlIGNvbnRleHQuCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCA9IGltcGwoKS0+Y29udGV4dCgpOworICAgIGlmIChjb250ZXh0LT5pc1dvcmtlckNvbnRl
eHQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IpOworCisg
ICAgaWYgKCFhcmdzLmF0KDApLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KGV4ZWMsIFR5cGVFcnJvcik7CisKKyAgICBQYXNzUmVmUHRyPEpTQ3VzdG9tVm9pZENhbGxiYWNr
PiBjYWxsYmFjayA9IEpTQ3VzdG9tVm9pZENhbGxiYWNrOjpjcmVhdGUoYXJncy5hdCgwKS5nZXRP
YmplY3QoKSwgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUoKSk7CisKKyAg
ICBpbXBsKCktPnJlcXVlc3RQZXJtaXNzaW9uKGNhbGxiYWNrKTsKKyAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklD
QVRJT05TKQorCkluZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gNDU1NzQpCisrKyBX
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEz
MywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShG
cmFtZSosIGNvbnN0IFN0cmluZyYpIHsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKKyAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBub3RpZmljYXRpb25Qcm92
aWRlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHJ1
bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSB7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgTm9kZSopIHsgfQpJbmRleDogV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
OTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKwor
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNvbnRlbnRz
LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNp
bmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTm90aWZp
Y2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRpb25Qcm92aWRlciog
cHJvdmlkZXIpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1f
aXNIVE1MKHRydWUpCisgICAgLCBtX2lzU2hvd2luZyhmYWxzZSkKKyAgICAsIG1fcHJvdmlkZXIo
cHJvdmlkZXIpCit7CisgICAgaWYgKG1fcHJvdmlkZXItPmNoZWNrUGVybWlzc2lvbihjb250ZXh0
LT5zZWN1cml0eU9yaWdpbigpKSAhPSBOb3RpZmljYXRpb25Qcm92aWRlcjo6UEVSTUlTU0lPTl9B
TExPV0VEKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbV9ub3RpZmljYXRpb25VUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTCh1cmwp
OworICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8ICFtX25vdGlmaWNhdGlvblVSTC5pc1ZhbGlkKCkp
IHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorfQor
CitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBOb3RpZmljYXRpb25Db250ZW50cyYg
Y29udGVudHMsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUm
IGVjLCBOb3RpZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIpCisgICAgOiBBY3RpdmVET01PYmpl
Y3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1faXNIVE1MKGZhbHNlKQorICAgICwgbV9pc1Nob3dp
bmcoZmFsc2UpCisgICAgLCBtX2NvbnRlbnRzKGNvbnRlbnRzKQorICAgICwgbV9wcm92aWRlcihw
cm92aWRlcikKK3sKKyAgICBpZiAobV9wcm92aWRlci0+Y2hlY2tQZXJtaXNzaW9uKGNvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCkpICE9IE5vdGlmaWNhdGlvblByb3ZpZGVyOjpQRVJNSVNTSU9OX0FM
TE9XRUQpIHsKKyAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBLVVJMIGljb24gPSBjb250ZXh0LT5jb21wbGV0ZVVSTChjb250ZW50cy5pY29u
KCkpOworICAgIGlmICghaWNvbi5pc0VtcHR5KCkgJiYgIWljb24uaXNWYWxpZCgpKSB7CisgICAg
ICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworTm90aWZp
Y2F0aW9uOjp+Tm90aWZpY2F0aW9uKCkgCit7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpzaG93
KCkgCit7CisgICAgLy8gcHJldmVudCBkb3VibGUtc2hvd2luZworICAgIGlmICghbV9pc1Nob3dp
bmcpCisgICAgICAgIG1faXNTaG93aW5nID0gbV9wcm92aWRlci0+c2hvdyh0aGlzKTsKK30KKwor
dm9pZCBOb3RpZmljYXRpb246OmNhbmNlbCgpIAoreworICAgIGlmIChtX2lzU2hvd2luZykKKyAg
ICAgICAgbV9wcm92aWRlci0+Y2FuY2VsKHRoaXMpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6
ZGlzcGF0Y2hEaXNwbGF5RXZlbnQoKSAKK3sgICAKKyAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0g
RXZlbnQ6OmNyZWF0ZSgiZGlzcGxheSIsIGZhbHNlLCB0cnVlKTsKKworICAgIGlmIChtX29uRGlz
cGxheUxpc3RlbmVyKSB7CisgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAg
IGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29uRGlzcGxheUxpc3Rl
bmVyLT5oYW5kbGVFdmVudChldmVudC5nZXQoKSwgdHJ1ZSk7CisgICAgfQorCisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hFdmVudChldmVudC5yZWxlYXNlKCksIGVjKTsK
KyAgICBBU1NFUlQoIWVjKTsKK30KKwordm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoRXJyb3JF
dmVudCgpCit7ICAKKyAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIHRydWUpOworCisgICAgaWYgKG1fb25FcnJvckxp
c3RlbmVyKSB7CisgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2ZW50
LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29uRXJyb3JMaXN0ZW5lci0+aGFu
ZGxlRXZlbnQoZXZlbnQuZ2V0KCksIHRydWUpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNT
RVJUKCFlYyk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQoKSAK
K3sgICAKKyAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuY2xvc2VFdmVudCwgZmFsc2UsIHRydWUpOworCisgICAgaWYgKG1fb25DbG9zZUxpc3RlbmVy
KSB7CisgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2ZW50LT5zZXRD
dXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29uQ2xvc2VMaXN0ZW5lci0+aGFuZGxlRXZl
bnQoZXZlbnQuZ2V0KCksIHRydWUpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFl
Yyk7CisKK30KKwordm9pZCBOb3RpZmljYXRpb246OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI+
IHJlZ2lzdGVyZWRMaXN0ZW5lciA9IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyOjpjcmVhdGUoZXZl
bnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgbV9ldmVudExpc3RlbmVycy5hcHBl
bmQocmVnaXN0ZXJlZExpc3RlbmVyKTsKK30KKwordm9pZCBOb3RpZmljYXRpb246OnJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCit7CisgICAgc2l6ZV90IHNpemUgPSBtX2V2ZW50
TGlzdGVuZXJzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkg
eworICAgICAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgciA9ICptX2V2ZW50TGlzdGVuZXJz
W2ldOworICAgICAgICBpZiAoci5ldmVudFR5cGUoKSA9PSBldmVudFR5cGUgJiYgci5saXN0ZW5l
cigpID09IGxpc3RlbmVyICYmIHIudXNlQ2FwdHVyZSgpID09IHVzZUNhcHR1cmUpIHsKKyAgICAg
ICAgICAgIHIuc2V0UmVtb3ZlZCh0cnVlKTsKKyAgICAgICAgICAgIG1fZXZlbnRMaXN0ZW5lcnMu
cmVtb3ZlKGkpOworICAgICAgICAgICAgcmV0dXJuOyAKKyAgICAgICAgfQorICAgIH0KK30KKwor
Ym9vbCBOb3RpZmljYXRpb246OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyVmVjdG9y
IGxpc3RlbmVyc0NvcHkgPSBtX2V2ZW50TGlzdGVuZXJzOworICAgIHNpemVfdCBzaXplID0gbGlz
dGVuZXJzQ29weS5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKKyAgICAgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIHIgPSAqbGlzdGVuZXJzQ29weVtp
XTsKKyAgICAgICAgaWYgKHIuZXZlbnRUeXBlKCkgPT0gZXZlbnQtPnR5cGUoKSAmJiAhci5yZW1v
dmVkKCkpCisgICAgICAgICAgICByLmxpc3RlbmVyKCktPmhhbmRsZUV2ZW50KGV2ZW50LmdldCgp
KTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBOb3RpZmljYXRpb246OmRp
c3BsYXkoKQoreworICAgIGRpc3BhdGNoRGlzcGxheUV2ZW50KCk7Cit9CisKK3ZvaWQgTm90aWZp
Y2F0aW9uOjplcnJvcigpCit7CisgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7Cit9CisKK3ZvaWQg
Tm90aWZpY2F0aW9uOjpjbG9zZSgpCit7CisgICAgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05T
KQpJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE5vdGlmaWNhdGlvbl9oICAKKyNkZWZpbmUgTm90aWZpY2F0aW9u
X2gKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkF0b21pY1N0cmlu
Z0hhc2guaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIK
KyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKKyNpbmNs
dWRlICJOb3RpZmljYXRpb25Db250ZW50cy5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyZWRFdmVudExp
c3RlbmVyLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
ICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CisKKyAgICBjbGFzcyBOb3RpZmljYXRpb24gOiBwdWJs
aWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJs
aWMgRXZlbnRUYXJnZXQgeyAKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE5vdGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgTm90aWZpY2F0aW9uUHJvdmlkZXIq
IHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKHVybCwgY29udGV4
dCwgZWMsIHByb3ZpZGVyKSk7IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0
aW9uPiBjcmVhdGUoY29uc3QgTm90aWZpY2F0aW9uQ29udGVudHMmIGNvbnRlbnRzLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgTm90aWZpY2F0aW9u
UHJvdmlkZXIqIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKGNv
bnRlbnRzLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKTsgfQorICAgICAgICAKKyAgICAgICAgdmly
dHVhbCB+Tm90aWZpY2F0aW9uKCk7CisKKyAgICAgICAgdm9pZCBzaG93KCk7CisgICAgICAgIHZv
aWQgY2FuY2VsKCk7CisgICAgCisgICAgICAgIGJvb2wgaXNIVE1MKCkgeyByZXR1cm4gbV9pc0hU
TUw7IH0KKyAgICAgICAgS1VSTCB1cmwoKSB7IHJldHVybiBtX25vdGlmaWNhdGlvblVSTDsgfQor
ICAgICAgICBOb3RpZmljYXRpb25Db250ZW50cyYgY29udGVudHMoKSB7IHJldHVybiBtX2NvbnRl
bnRzOyB9CisKKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25kaXNwbGF5KCkgY29uc3QgeyByZXR1
cm4gbV9vbkRpc3BsYXlMaXN0ZW5lci5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldE9uZGlzcGxh
eShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbkRpc3BsYXlM
aXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25lcnJv
cigpIGNvbnN0IHsgcmV0dXJuIG1fb25FcnJvckxpc3RlbmVyLmdldCgpOyB9CisgICAgICAgIHZv
aWQgc2V0T25lcnJvcihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsg
bV9vbkVycm9yTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVu
ZXIqIG9uY2xvc2UoKSBjb25zdCB7IHJldHVybiBtX29uQ2xvc2VMaXN0ZW5lci5nZXQoKTsgfQor
ICAgICAgICB2b2lkIHNldE9uY2xvc2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExp
c3RlbmVyKSB7IG1fb25DbG9zZUxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgIAorICAg
ICAgICB1c2luZyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj46OnJlZjsKKyAgICAgICAgdXNpbmcg
UmVmQ291bnRlZDxOb3RpZmljYXRpb24+OjpkZXJlZjsKKyAgICAKKyAgICAgICAgLy8gQ2FsbGJh
Y2sgbWV0aG9kcyBmb3IgdGhlIHByb3ZpZGVyIHdoZW4gZXZlbnRzIG9jY3VyIHJlZ2FyZGluZyB0
aGUgbm90aWZpY2F0aW9uLgorICAgICAgICB2b2lkIGRpc3BsYXkoKTsKKyAgICAgICAgdm9pZCBl
cnJvcigpOworICAgICAgICB2b2lkIGNsb3NlKCk7CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQg
aW50ZXJmYWNlCisgICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmLCBFdmVudExpc3RlbmVyKiwgYm9vbCk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNw
YXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBFeGNlcHRpb25Db2RlJik7CisgICAgICAKKyAg
ICBwcml2YXRlOgorICAgICAgICBOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRp
b25Qcm92aWRlciogcHJvdmlkZXIpOworICAgICAgICBOb3RpZmljYXRpb24oY29uc3QgTm90aWZp
Y2F0aW9uQ29udGVudHMmIGZpZWxkcywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
RXhjZXB0aW9uQ29kZSYgZWMsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcik7CisKKyAg
ICAgICAgdm9pZCBkaXNwYXRjaERpc3BsYXlFdmVudCgpOworICAgICAgICB2b2lkIGRpc3BhdGNo
RXJyb3JFdmVudCgpOworICAgICAgICB2b2lkIGRpc3BhdGNoQ2xvc2VFdmVudCgpOworCisgICAg
ICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZl
bnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFy
Z2V0KCkgeyBkZXJlZigpOyB9CisgIAorICAgICAgICBib29sIG1faXNIVE1MOworICAgICAgICBL
VVJMIG1fbm90aWZpY2F0aW9uVVJMOworICAgICAgICBOb3RpZmljYXRpb25Db250ZW50cyBtX2Nv
bnRlbnRzOworCisgICAgICAgIGJvb2wgbV9pc1Nob3dpbmc7CisKKyAgICAgICAgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IG1fb25EaXNwbGF5TGlzdGVuZXI7CisgICAgICAgIFJlZlB0cjxFdmVudExp
c3RlbmVyPiBtX29uRXJyb3JMaXN0ZW5lcjsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IG1fb25DbG9zZUxpc3RlbmVyOworICAgICAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lclZlY3Rv
ciBtX2V2ZW50TGlzdGVuZXJzOworCisgICAgICAgIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBtX3By
b3ZpZGVyOworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShOT1RJRklDQVRJT05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uc19oCkluZGV4OiBX
ZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworbW9kdWxlIHRocmVhZHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0
aW9uYWw9Tk9USUZJQ0FUSU9OUworICAgIF0gTm90aWZpY2F0aW9uIHsKKyAgICAgICAgdm9pZCBz
aG93KCk7CisgICAgICAgIHZvaWQgY2FuY2VsKCk7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb25kaXNwbGF5OworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVy
cm9yOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNsb3NlOworICAgIH07CisK
K30KSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3Bw
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRl
ci5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIK
KyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTm90
aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25DZW50ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKSAKKyAgICA6IEFjdGl2
ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQorICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KGNvbnRleHQpCisgICAgLCBtX25vdGlmaWNhdGlvblByb3ZpZGVyKHByb3ZpZGVyKSB7fQorCisK
K2ludCBOb3RpZmljYXRpb25DZW50ZXI6OmNoZWNrUGVybWlzc2lvbigpIAoreworICAgIHJldHVy
biBtX25vdGlmaWNhdGlvblByb3ZpZGVyLT5jaGVja1Blcm1pc3Npb24obV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpKTsKK30KKwordm9pZCBOb3RpZmljYXRpb25DZW50
ZXI6OnJlcXVlc3RQZXJtaXNzaW9uKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykK
K3sKKyAgICBtX25vdGlmaWNhdGlvblByb3ZpZGVyLT5yZXF1ZXN0UGVybWlzc2lvbihtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIGNhbGxiYWNrKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCklu
ZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRpb25DZW50ZXJfaAorI2Rl
ZmluZSBOb3RpZmljYXRpb25DZW50ZXJfaAorCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisj
aW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworICAg
IGNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlv
bkNlbnRlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeyAKKyAgICBwdWJsaWM6CisgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcikgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbkNlbnRlcihjb250ZXh0LCBwcm92aWRlcikp
OyB9CisgICAgICAgIAorICAgICAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlSFRN
TE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIFVSSSwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0ZShLVVJMKFVSSSks
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZWMsIG1fbm90aWZpY2F0aW9uUHJvdmlkZXIpOwor
ICAgICAgICB9CisgICAgICAgIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVOb3RpZmlj
YXRpb24oTm90aWZpY2F0aW9uQ29udGVudHMgY29udGVudHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29udGVu
dHMsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZWMsIG1fbm90aWZpY2F0aW9uUHJvdmlkZXIp
OworICAgICAgICB9CisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQorICAgICAgICBOb3Rp
ZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlv
blByb3ZpZGVyOyB9CisKKyAgICAgICAgaW50IGNoZWNrUGVybWlzc2lvbigpOworICAgICAgICB2
b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjayk7
CisKKyAgICBwcml2YXRlOgorICAgICAgICBOb3RpZmljYXRpb25DZW50ZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIE5vdGlmaWNhdGlvblByb3ZpZGVyKik7CisKKyAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgICAgICBOb3RpZmlj
YXRpb25Qcm92aWRlciogbV9ub3RpZmljYXRpb25Qcm92aWRlcjsKKyAgICB9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2Vu
ZGlmIC8vIE5vdGlmaWNhdGlvbnNfaApJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNlbnRlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNlbnRlci5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21v
ZHVsZSB0aHJlYWRzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU5P
VElGSUNBVElPTlMKKyAgICBdIE5vdGlmaWNhdGlvbkNlbnRlciB7CisgICAgICAgW1JldHVybnNO
ZXddIFtDdXN0b21dIE5vdGlmaWNhdGlvbiBjcmVhdGVIVE1MTm90aWZpY2F0aW9uKGluIERPTVN0
cmluZyB1cmwpOworICAgICAgIFtSZXR1cm5zTmV3XSBbQ3VzdG9tXSBOb3RpZmljYXRpb24gY3Jl
YXRlTm90aWZpY2F0aW9uKGluIERPTVN0cmluZyBpY29uVXJsLCBpbiBET01TdHJpbmcgdGl0bGUs
IGluIERPTVN0cmluZyBib2R5KTsKKworICAgICAgIFtDdXN0b21dIGludCBjaGVja1Blcm1pc3Np
b24oKTsKKyAgICAgICBbQ3VzdG9tXSB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKGluIFZvaWRDYWxs
YmFjayBjYWxsYmFjayk7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNvbnRlbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNvbnRlbnRzLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udGVudHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTm90aWZpY2F0aW9uQ29udGVudHNfaAorI2RlZmluZSBOb3RpZmljYXRpb25D
b250ZW50c19oCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisgICAgY2xhc3MgTm90aWZpY2F0aW9uQ29udGVudHMgeyAKKyAgICBwdWJsaWM6Cisg
ICAgICAgIE5vdGlmaWNhdGlvbkNvbnRlbnRzKCkge30KKyAgICAgICAgTm90aWZpY2F0aW9uQ29u
dGVudHMoY29uc3QgU3RyaW5nJiBpY29uVXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBT
dHJpbmcmIGJvZHkpIAorICAgICAgICAgICAgOiBtX2ljb24oaWNvblVybCkKKyAgICAgICAgICAg
ICwgbV90aXRsZSh0aXRsZSkKKyAgICAgICAgICAgICwgbV9ib2R5KGJvZHkpIHt9CisKKyAgICAg
ICAgU3RyaW5nIGljb24oKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KKyAgICAgICAgU3RyaW5n
IHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQorICAgICAgICBTdHJpbmcgYm9keSgp
IGNvbnN0IHsgcmV0dXJuIG1fYm9keTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgU3RyaW5n
IG1faWNvbjsKKyAgICAgICAgU3RyaW5nIG1fdGl0bGU7CisgICAgICAgIFN0cmluZyBtX2JvZHk7
CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5P
VElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBOb3RpZmljYXRpb25Db250ZW50c19oCkluZGV4OiBX
ZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJvdmlkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJvdmlkZXIuaAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Qcm92aWRlci5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRpb25Qcm92aWRlcl9oCisj
ZGVmaW5lIE5vdGlmaWNhdGlvblByb3ZpZGVyX2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgTm90aWZpY2F0aW9uOworICAg
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOworICAgIGNsYXNzIFN0cmluZzsKKyAgICAKKyAgICBjbGFz
cyBOb3RpZmljYXRpb25Qcm92aWRlciB7CisKKyAgICBwdWJsaWM6CisgICAgICAgIGVudW0gUGVy
bWlzc2lvbiB7IAorICAgICAgICAgICAgUEVSTUlTU0lPTl9BTExPV0VELAorICAgICAgICAgICAg
UEVSTUlTU0lPTl9OT1RfQUxMT1dFRCwKKyAgICAgICAgICAgIFBFUk1JU1NJT05fREVOSUVECisg
ICAgICAgIH07CisKKyAgICAgICAgdmlydHVhbCB+Tm90aWZpY2F0aW9uUHJvdmlkZXIoKSB7fQor
CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG93KE5vdGlmaWNhdGlvbiogb2JqZWN0KSA9IDA7CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbChOb3RpZmljYXRpb24qIG9iamVjdCkgPSAwOwor
CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTZWN1cml0eU9yaWdpbiog
b3JpZ2luLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spID0gMDsKKworICAgICAg
ICB2aXJ0dWFsIFBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pID0gMDsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2VuZGlmIC8vIE5vdGlmaWNhdGlvblByb3ZpZGVyX2gK
SW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwCShyZXZpc2lvbiA0NTU3NCkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOTEsNiArMzkxLDEzIEBAIGJvb2wgQ2hyb21lOjpzZXRDdXJz
b3IoUGxhdGZvcm1DdXJzb3JIYW4KICAgICByZXR1cm4gbV9jbGllbnQtPnNldEN1cnNvcihjdXJz
b3IpOwogfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitOb3RpZmljYXRpb25Qcm92aWRl
ciogQ2hyb21lOjpub3RpZmljYXRpb25Qcm92aWRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Y2xpZW50LT5ub3RpZmljYXRpb25Qcm92aWRlcigpOworfQorI2VuZGlmCisKIC8vIC0tLS0tLS0t
CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hy
b21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5oCShyZXZpc2lvbiA0NTU3
NCkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBQ
YWdlOwogICAgIGNsYXNzIFN0cmluZzsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBj
bGFzcyBOb3RpZmljYXRpb25Qcm92aWRlcjsKKyNlbmRpZgogCiAgICAgc3RydWN0IEZyYW1lTG9h
ZFJlcXVlc3Q7CiAgICAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwpAQCAtMTI4LDYgKzEzMSwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZm9jdXNOU1ZpZXcoTlNWaWV3Kik7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICBOb3RpZmljYXRp
b25Qcm92aWRlciogbm90aWZpY2F0aW9uUHJvdmlkZXIoKSBjb25zdDsgCisjZW5kaWYKKwogICAg
IHByaXZhdGU6CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAgICAgQ2hyb21lQ2xpZW50KiBt
X2NsaWVudDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDQ1NTc0KQorKysgV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2MiwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgR3JhcGhpY3NMYXllcjsKICNlbmRpZgogCisj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJvdmlkZXI7
CisjZW5kaWYKKwogICAgIGNsYXNzIENocm9tZUNsaWVudCB7CiAgICAgcHVibGljOgogICAgICAg
ICB2aXJ0dWFsIHZvaWQgY2hyb21lRGVzdHJveWVkKCkgPSAwOwpAQCAtMTQzLDYgKzE0NywxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkYXNoYm9hcmRSZWdp
b25zQ2hhbmdlZCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICAg
ICAgdmlydHVhbCBOb3RpZmljYXRpb25Qcm92aWRlciogbm90aWZpY2F0aW9uUHJvdmlkZXIoKSBj
b25zdCA9IDA7CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVWaXNpdGVk
TGlua3MoKTsKIAogICAgICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjdXN0b21IaWdobGlnaHRSZWN0
KE5vZGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgbGluZVJl
Y3QpOwpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDQ1NTc0KQorKysgV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDEwIEBACiAjaW5jbHVk
ZSAiRE9NQXBwbGljYXRpb25DYWNoZS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKKyNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKKyNlbmRpZgorCiB1c2luZyBz
dGQ6Om1pbjsKIHVzaW5nIHN0ZDo6bWF4OwogCkBAIC00NTMsNiArNDU3LDEwIEBAIHZvaWQgRE9N
V2luZG93OjpjbGVhcigpCiAgICAgICAgIG1fYXBwbGljYXRpb25DYWNoZS0+ZGlzY29ubmVjdEZy
YW1lKCk7CiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlID0gMDsKICNlbmRpZgorCisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCisgICAgbV9ub3RpZmljYXRpb25zID0gMDsKKyNlbmRpZgogfQogCiBT
Y3JlZW4qIERPTVdpbmRvdzo6c2NyZWVuKCkgY29uc3QKQEAgLTU4OCw2ICs1OTYsMjggQEAgU3Rv
cmFnZSogRE9NV2luZG93Ojpsb2NhbFN0b3JhZ2UoKSBjb25zdAogfQogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKK05vdGlmaWNhdGlvbkNlbnRlciogRE9NV2luZG93Ojp3ZWJr
aXROb3RpZmljYXRpb25zKCkgY29uc3QKK3sKKyAgICBpZiAobV9ub3RpZmljYXRpb25zKQorICAg
ICAgICByZXR1cm4gbV9ub3RpZmljYXRpb25zLmdldCgpOworCisgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1
cm4gMDsKKyAgICAKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICBpZiAo
IXBhZ2UpCisgICAgICAgIHJldHVybiAwOworCisgICAgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHBy
b3ZpZGVyID0gcGFnZS0+Y2hyb21lKCktPm5vdGlmaWNhdGlvblByb3ZpZGVyKCk7CisgICAgaWYg
KHByb3ZpZGVyKSAKKyAgICAgICAgbV9ub3RpZmljYXRpb25zID0gTm90aWZpY2F0aW9uQ2VudGVy
OjpjcmVhdGUoZG9jdW1lbnQsIHByb3ZpZGVyKTsgICAgCisgICAgICAKKyAgICByZXR1cm4gbV9u
b3RpZmljYXRpb25zLmdldCgpOworfQorI2VuZGlmCisKIHZvaWQgRE9NV2luZG93Ojpwb3N0TWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCwgY29u
c3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBpZiAoIW1fZnJhbWUpCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiA0NTU3
NCkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiAr
NTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTWVzc2FnZVBvcnQ7CiAgICAg
Y2xhc3MgTmF2aWdhdG9yOwogICAgIGNsYXNzIE5vZGU7CisgICAgY2xhc3MgTm90aWZpY2F0aW9u
Q2VudGVyOwogICAgIGNsYXNzIFBvc3RNZXNzYWdlVGltZXI7CiAgICAgY2xhc3MgU2NoZWR1bGVk
QWN0aW9uOwogICAgIGNsYXNzIFNjcmVlbjsKQEAgLTE5OSw2ICsyMDAsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBET01BcHBsaWNhdGlvbkNhY2hlKiBhcHBsaWNhdGlvbkNhY2hl
KCkgY29uc3Q7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICBO
b3RpZmljYXRpb25DZW50ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMoKSBjb25zdDsKKyNlbmRpZgor
CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdl
UG9ydCosIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlVGltZXJGaXJlZChQb3N0TWVz
c2FnZVRpbWVyKik7CiAKQEAgLTQyNCw2ICs0MjksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
aWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKICAgICAgICAgbXV0YWJsZSBSZWZQ
dHI8RE9NQXBwbGljYXRpb25DYWNoZT4gbV9hcHBsaWNhdGlvbkNhY2hlOwogI2VuZGlmCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgICAgIG11dGFibGUgUmVmUHRyPE5vdGlmaWNhdGlv
bkNlbnRlcj4gbV9ub3RpZmljYXRpb25zOworI2VuZGlmCiAKICAgICAgICAgUmVnaXN0ZXJlZEV2
ZW50TGlzdGVuZXJWZWN0b3IgbV9ldmVudExpc3RlbmVyczsKICAgICB9OwpJbmRleDogV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5pZGwJKHJldmlzaW9uIDQ1NTc0KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsOSBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFN0b3JhZ2Ugc2Vzc2lvblN0b3JhZ2U7CiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBTdG9yYWdlIGxvY2FsU3RvcmFnZTsKICNlbmRpZgorI2lmIGRlZmluZWQo
RU5BQkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tXSBOb3RpZmljYXRpb25DZW50ZXIgd2Via2l0Tm90aWZp
Y2F0aW9uczsKKyNlbmRpZgogCiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbUmVwbGFjZWFi
bGVdIENvbnNvbGUgY29uc29sZTsKIApJbmRleDogV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiA0NTU3NCkKKysrIFdlYkNvcmUv
cGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2lmIEVOQUJMRShXTUwpCiAgICAgY2xhc3MgV01MUGFnZVN0YXRlOwogI2VuZGlm
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJvdmlk
ZXI7CisjZW5kaWYKIAogICAgIGVudW0gRmluZERpcmVjdGlvbiB7IEZpbmREaXJlY3Rpb25Gb3J3
YXJkLCBGaW5kRGlyZWN0aW9uQmFja3dhcmQgfTsKIApAQCAtMjYzLDYgKzI2NiwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKFdNTCkKICAgICAgICAgT3duUHRyPFdNTFBhZ2VT
dGF0ZT4gbV93bWxQYWdlU3RhdGU7CiAjZW5kaWYKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQorICAgICAgICBOb3RpZmljYXRpb25Qcm92aWRlciogbV9ub3RpZmljYXRpb25Qcm92aWRlcjsK
KyNlbmRpZgogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5jcHAJKHJldmlzaW9uIDQ1NTc0KQorKysgV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCwxMCBAQAogI2luY2x1
ZGUgIlhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVy
LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXb3JrZXJDb250ZXh0OjpXb3Jr
ZXJDb250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdvcmtl
clRocmVhZCogdGhyZWFkKQpAQCAtNjUsNyArNjksOSBAQCBXb3JrZXJDb250ZXh0OjpXb3JrZXJD
b250ZXh0KGNvbnN0IEtVUkwmCiBXb3JrZXJDb250ZXh0Ojp+V29ya2VyQ29udGV4dCgpCiB7CiAg
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RocmVhZC0+dGhyZWFkSUQoKSk7Ci0KKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgIAorICAgIG1fbm90aWZpY2F0aW9ucy5jbGVhcigpOwor
I2VuZGlmCiAgICAgbV90aHJlYWQtPndvcmtlck9iamVjdFByb3h5KCkud29ya2VyQ29udGV4dERl
c3Ryb3llZCgpOwogfQogCkBAIC0zMTAsNiArMzE2LDE1IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6
aW1wb3J0U2NyaXB0cyhjb25zdCAKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKK05vdGlmaWNhdGlvbkNlbnRlciogV29ya2VyQ29udGV4dDo6d2Via2l0Tm90aWZpY2F0aW9u
cygpIGNvbnN0Cit7CisgICAgaWYgKCFtX25vdGlmaWNhdGlvbnMpCisgICAgICAgIG1fbm90aWZp
Y2F0aW9ucyA9IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgbV90aHJlYWQtPmdldE5vdGlmaWNhdGlvblByb3ZpZGVyKCkpOworICAgIHJldHVybiBt
X25vdGlmaWNhdGlvbnMuZ2V0KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmgJKHJldmlzaW9uIDQ1NTc0KQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
KyAgICBjbGFzcyBOb3RpZmljYXRpb25DZW50ZXI7CiAgICAgY2xhc3MgU2NoZWR1bGVkQWN0aW9u
OwogICAgIGNsYXNzIFdvcmtlckxvY2F0aW9uOwogICAgIGNsYXNzIFdvcmtlck5hdmlnYXRvcjsK
QEAgLTExMiw2ICsxMTMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQg
ZGlzcGF0Y2hNZXNzYWdlKGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+KTsK
IAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICBOb3RpZmljYXRpb25DZW50ZXIq
IHdlYmtpdE5vdGlmaWNhdGlvbnMoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgICAgIC8vIFRoZXNl
IG1ldGhvZHMgYXJlIHVzZWQgZm9yIEdDIG1hcmtpbmcuIFNlZSBKU1dvcmtlckNvbnRleHQ6Om1h
cmsoKSBpbgogICAgICAgICAvLyBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwLgogICAgICAgICBX
b3JrZXJOYXZpZ2F0b3IqIG9wdGlvbmFsTmF2aWdhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9uYXZp
Z2F0b3IuZ2V0KCk7IH0KQEAgLTE0Myw2ICsxNDgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ubWVzc2FnZUxpc3RlbmVyOwogICAgICAg
ICBFdmVudExpc3RlbmVyc01hcCBtX2V2ZW50TGlzdGVuZXJzOwogCisjaWYgRU5BQkxFX05PVElG
SUNBVElPTlMKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBtX25v
dGlmaWNhdGlvbnM7CisjZW5kaWYKICAgICAgICAgYm9vbCBtX2Nsb3Npbmc7CiAgICAgfTsKIApJ
bmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkocmV2aXNpb24gNDU1NzQpCisrKyBXZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0
LDEwIEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGlu
IEV2ZW50IGV2dCkKICAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CiAKKyNpZiBk
ZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTk9USUZJQ0FUSU9OUworICAg
ICAgICAvLyBOb3RpZmljYXRpb24gaW50ZXJmYWNlCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBOb3RpZmljYXRpb25DZW50ZXIgd2Via2l0Tm90aWZpY2F0aW9uczsKKyNlbmRpZgogCiAgICAg
ICAgIC8vIENvbnN0cnVjdG9ycwogICAgICAgICBhdHRyaWJ1dGUgTWVzc2FnZUV2ZW50Q29uc3Ry
dWN0b3IgTWVzc2FnZUV2ZW50OwpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAkocmV2aXNpb24g
NDU1NzQpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDYgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEtVUkw7
CisgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJvdmlkZXI7CiAgICAgY2xhc3MgU3RyaW5nOwogICAg
IGNsYXNzIFdvcmtlckNvbnRleHQ7CiAgICAgY2xhc3MgV29ya2VyTG9hZGVyUHJveHk7CkBAIC01
Niw2ICs1NywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdvcmtlckxvYWRlclBy
b3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyTG9hZGVyUHJv
eHk7IH0KICAgICAgICAgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5KCkgY29u
c3QgeyByZXR1cm4gbV93b3JrZXJPYmplY3RQcm94eTsgfQogCisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCisgICAgICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uUHJvdmlkZXIqIGdldE5vdGlmaWNh
dGlvblByb3ZpZGVyKCkgeyByZXR1cm4gbV9ub3RpZmljYXRpb25Qcm92aWRlcjsgfQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Tm90aWZpY2F0aW9uUHJvdmlkZXIoTm90aWZpY2F0aW9uUHJvdmlk
ZXIqIHByb3ZpZGVyKSB7IG1fbm90aWZpY2F0aW9uUHJvdmlkZXIgPSBwcm92aWRlcjsgfQorI2Vu
ZGlmCisKICAgICBwcml2YXRlOgogICAgICAgICBXb3JrZXJUaHJlYWQoY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxv
YWRlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmKTsKIApAQCAtNzEsNiArNzcsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBNdXRleCBtX3RocmVhZENyZWF0aW9uTXV0ZXg7CiAK
ICAgICAgICAgT3duUHRyPFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhPiBtX3N0YXJ0dXBEYXRhOwor
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgICAgIE5vdGlmaWNhdGlvblByb3ZpZGVy
KiBtX25vdGlmaWNhdGlvblByb3ZpZGVyOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHJldmlzaW9uIDQ1NTc0
KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDcgKzQ5LDcgQEAgbXkgKCR0aHJlZURSZW5kZXJpbmdTdXBwb3J0LCAkY2hhbm5lbE1lcwog
ICAgICRqYXZhU2NyaXB0RGVidWdnZXJTdXBwb3J0LCAkb2ZmbGluZVdlYkFwcGxpY2F0aW9uU3Vw
cG9ydCwgJHN2Z1N1cHBvcnQsICRzdmdBbmltYXRpb25TdXBwb3J0LAogICAgICRzdmdBc0ltYWdl
U3VwcG9ydCwgJHN2Z0RPTU9iakNCaW5kaW5nc1N1cHBvcnQsICRzdmdGb250c1N1cHBvcnQsICRz
dmdGb3JlaWduT2JqZWN0U3VwcG9ydCwKICAgICAkc3ZnVXNlU3VwcG9ydCwgJHZpZGVvU3VwcG9y
dCwgJHdtbFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwgJHhwYXRoU3VwcG9ydCwgJHhzbHRTdXBw
b3J0LAotICAgICRjb3ZlcmFnZVN1cHBvcnQpOworICAgICRjb3ZlcmFnZVN1cHBvcnQsICRub3Rp
ZmljYXRpb25zU3VwcG9ydCk7CiAKIG15IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAi
M2QtcmVuZGVyaW5nIiwgZGVzYyA9PiAiVG9nZ2xlIDNEIHJlbmRlcmluZyBzdXBwb3J0IiwKQEAg
LTgyLDYgKzgyLDkgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICJqYXZhc2Ny
aXB0LWRlYnVnZ2VyIiwgZGVzYyA9PiAiVG9nZ2xlIEphdmFTY3JpcHQgRGVidWdnZXIvUHJvZmls
ZXIgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VS
IiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBcJGphdmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQgfSwK
IAorICAgIHsgb3B0aW9uID0+ICJub3RpZmljYXRpb25zIiwgZGVzYyA9PiAiVG9nZ2xlIERlc2t0
b3AgTm90aWZpY2F0aW9ucyBTdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05PVElG
SUNBVElPTlMiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkbm90aWZpY2F0aW9uc1N1cHBvcnQg
fSwKKwogICAgIHsgb3B0aW9uID0+ICJvZmZsaW5lLXdlYi1hcHBsaWNhdGlvbnMiLCBkZXNjID0+
ICJUb2dnbGUgT2ZmbGluZSBXZWIgQXBwbGljYXRpb24gU3VwcG9ydCIsCiAgICAgICBkZWZpbmUg
PT4gIkVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMiLCBkZWZhdWx0ID0+IDEsIHZhbHVl
ID0+IFwkb2ZmbGluZVdlYkFwcGxpY2F0aW9uU3VwcG9ydCB9LAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32341</attachid>
            <date>2009-07-06 18:10:59 -0700</date>
            <delta_ts>2009-07-23 10:54:25 -0700</delta_ts>
            <desc>Notifications API, Tests and DumpRenderTree hooks</desc>
            <filename>wk_testhooks.diff</filename>
            <type>text/plain</type>
            <size>55395</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQ1NTc2KQ0KKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMSwzICsxLDE0IEBADQorMjAwOS0wNy0wNiAgSm9obiBHcmVnZyAgPGpv
aG5ueWdAZ29vZ2xlLmNvbT4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
Lg0KKw0KKyAgICAgICAgRGVza3RvcCBOb3RpZmljYXRpb25zIEFQSQ0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NDYzDQorDQorICAgICAgICBBZGRz
IEVOQUJMRV9OT1RJRklDQVRJT04gZmxhZy4NCisNCisgICAgICAgICogQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWc6DQorDQogMjAwOS0wNy0wNiAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPg0KIA0KICAgICAgICAgUmV2aWV3ZWQgYnkgQWRlbGUgUGV0
ZXJzb24uDQpJbmRleDogV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDQ1NTc0KQ0KKysrIFdlYktpdC9tYWMvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkNCkBAIC0zOSw2
ICszOSw3IEBAIEVOQUJMRV9HRU9MT0NBVElPTiA9IDsNCiBFTkFCTEVfSUNPTkRBVEFCQVNFID0g
RU5BQkxFX0lDT05EQVRBQkFTRTsNCiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9IEVOQUJM
RV9KQVZBU0NSSVBUX0RFQlVHR0VSOw0KIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMg
PSBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TOw0KK0VOQUJMRV9OT1RJRklDQVRJT05T
ID0gOw0KIEVOQUJMRV9TVkcgPSBFTkFCTEVfU1ZHOw0KIEVOQUJMRV9TVkdfQU5JTUFUSU9OID0g
RU5BQkxFX1NWR19BTklNQVRJT047DQogRU5BQkxFX1NWR19BU19JTUFHRSA9IEVOQUJMRV9TVkdf
QVNfSU1BR0U7DQpAQCAtNTIsNCArNTMsNSBAQCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JL
RVJTOw0KIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsNCiBFTkFCTEVfWFNMVCA9IEVOQUJM
RV9YU0xUOw0KIA0KLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChF
TkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRB
R1JJRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dF
T0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVC
VUdHRVIpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAk
KEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NW
R19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9S
RUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9X
TUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsNCitG
RUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxf
TUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxF
X0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChF
TkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJM
RV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5B
QkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAk
KEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFC
TEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykg
JChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVf
WFNMVCk7DQorDQpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNDU1NzYpDQorKysgV2ViS2l0L3dpbi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkNCkBAIC0xLDMgKzEsNDUgQEANCisyMDA5LTA3LTA2ICBKb2hu
IEdyZWdnICA8am9obm55Z0Bnb29nbGUuY29tPg0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuDQorDQorICAgICAgICBEZXNrdG9wIE5vdGlmaWNhdGlvbnMgQVBJDQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0NjMNCisNCisg
ICAgICAgIEFkZHMgdGVzdCBob29rcyBmb3Igbm90aWZpY2F0aW9ucyBmZWF0dXJlLg0KKw0KKyAg
ICAgICAgKiBJbnRlcmZhY2VzL0lXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmlkbDog
QWRkZWQuDQorICAgICAgICAqIEludGVyZmFjZXMvSVdlYlVJRGVsZWdhdGUuaWRsOg0KKyAgICAg
ICAgKiBJbnRlcmZhY2VzL1dlYktpdC5pZGw6DQorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHA6DQorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpXZWJDaHJvbWVD
bGllbnQpOg0KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoNCisg
ICAgICAgIChXZWJDaHJvbWVDbGllbnQ6Om5vdGlmaWNhdGlvblByb3ZpZGVyKToNCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLg0KKyAgICAgICAgKE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6OmNyZWF0ZSk6DQorICAgICAg
ICAoTm90aWZpY2F0aW9uQ09NV3JhcHBlcjo6Tm90aWZpY2F0aW9uQ09NV3JhcHBlcik6DQorICAg
ICAgICAoTm90aWZpY2F0aW9uQ09NV3JhcHBlcjo6UXVlcnlJbnRlcmZhY2UpOg0KKyAgICAgICAg
KE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6OkFkZFJlZik6DQorICAgICAgICAoTm90aWZpY2F0aW9u
Q09NV3JhcHBlcjo6UmVsZWFzZSk6DQorICAgICAgICAoTm90aWZpY2F0aW9uQ09NV3JhcHBlcjo6
aXNIVE1MKToNCisgICAgICAgIChOb3RpZmljYXRpb25DT01XcmFwcGVyOjpjb250ZW50c1VSTCk6
DQorICAgICAgICAoTm90aWZpY2F0aW9uQ09NV3JhcHBlcjo6aWNvblVSTCk6DQorICAgICAgICAo
Tm90aWZpY2F0aW9uQ09NV3JhcHBlcjo6dGl0bGUpOg0KKyAgICAgICAgKE5vdGlmaWNhdGlvbkNP
TVdyYXBwZXI6OnRleHQpOg0KKyAgICAgICAgKE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6Om5vdGlm
eURpc3BsYXkpOg0KKyAgICAgICAgKE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6Om5vdGlmeUVycm9y
KToNCisgICAgICAgIChOb3RpZmljYXRpb25DT01XcmFwcGVyOjpub3RpZnlDbG9zZSk6DQorICAg
ICAgICAoV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZTo6V2ViRGVza3RvcE5vdGlmaWNh
dGlvbnNEZWxlZ2F0ZSk6DQorICAgICAgICAoV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0
ZTo6c2hvdyk6DQorICAgICAgICAoV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZTo6Y2Fu
Y2VsKToNCisgICAgICAgIChXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOjpyZXF1ZXN0
UGVybWlzc2lvbik6DQorICAgICAgICAoV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZTo6
Y2hlY2tQZXJtaXNzaW9uKToNCisgICAgICAgIChXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVn
YXRlOjpub3RpZmljYXRpb25EZWxlZ2F0ZSk6DQorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaDogQWRkZWQuDQorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckRlbGVnYXRlLmg6DQorICAgICAgICAoV2ViSW5zcGVjdG9y
RGVsZWdhdGU6OmRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUpOg0KKyAgICAgICAgKiBXZWJL
aXQudmNwcm9qL0ludGVyZmFjZXMudmNwcm9qOg0KKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL1dl
YktpdC52Y3Byb2o6DQorDQogMjAwOS0wNy0wMiAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21p
dW0ub3JnPg0KIA0KICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4NCkluZGV4OiBXZWJL
aXQvd2luL0ludGVyZmFjZXMvSVdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaWRsDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJEZXNrdG9wTm90aWZpY2F0
aW9uc0RlbGVnYXRlLmlkbAkocmV2aXNpb24gMCkNCisrKyBXZWJLaXQvd2luL0ludGVyZmFjZXMv
SVdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaWRsCShyZXZpc2lvbiAwKQ0KQEAgLTAs
MCArMSwxMDYgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLg0KKyAqDQorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQ0K
KyAqIG1ldDoNCisgKg0KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyDQorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KKyAqIGRpc3RyaWJ1dGlvbi4NCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzDQorICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20NCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLg0KKyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SDQorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
DQorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsDQorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQ0KKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorICovDQorDQorI2lmbmRlZiBET19OT19J
TVBPUlRTDQoraW1wb3J0ICJvYWlkbC5pZGwiOw0KK2ltcG9ydCAib2NpZGwuaWRsIjsNCisjZW5k
aWYNCisNCisvKiENCisgICAgQGNhdGVnb3J5IFdlYkRlc2t0b3BOb3RpZmljYXRpb24NCisgICAg
QGRpc2N1c3Npb24gQSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgYSBub3RpZmljYXRpb24gYmVpbmcg
c2hvd24NCisgICAgb24gdGhlIHVzZXIncyBkZXNrdG9wLiAgSXQgcHJvdmlkZXMgdGhlIGNvbnRl
bnRzIG9mIHRoZSBub3RpZmljYXRpb24NCisgICAgYW5kIHJlY2VpdmVzIGV2ZW50cyByZWxhdGVk
IHRvIHRoZSBkaXNwbGF5Lg0KKyAgICBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJEZXNrdG9wTm90
aWZpY2F0aW9uUHJvdmlkZXIpDQorKi8NCitbDQorICAgIG9iamVjdCwNCisgICAgb2xlYXV0b21h
dGlvbiwNCisgICAgdXVpZCgwQTBBQUZBOC1DNjk4LTRjZmYtQkQyOC0zOTYxNDYyMkVFQTQpLA0K
KyAgICBwb2ludGVyX2RlZmF1bHQodW5pcXVlKQ0KK10NCitpbnRlcmZhY2UgSVdlYkRlc2t0b3BO
b3RpZmljYXRpb24gOiBJVW5rbm93bg0KK3sNCisgICAgSFJFU1VMVCBpc0hUTUwoW291dCwgcmV0
dmFsXSBCT09MKiByZXN1bHQpOw0KKyAgICBIUkVTVUxUIGNvbnRlbnRzVVJMKFtvdXQsIHJldHZh
bF0gQlNUUiogcmVzdWx0KTsNCisgICAgSFJFU1VMVCBpY29uVVJMKFtvdXQsIHJldHZhbF0gQlNU
UiogcmVzdWx0KTsNCisgICAgSFJFU1VMVCB0aXRsZShbb3V0LCByZXR2YWxdIEJTVFIqIHJlc3Vs
dCk7DQorICAgIEhSRVNVTFQgdGV4dChbb3V0LCByZXR2YWxdIEJTVFIqIHJlc3VsdCk7DQorDQor
ICAgIEhSRVNVTFQgbm90aWZ5RGlzcGxheSgpOw0KKyAgICBIUkVTVUxUIG5vdGlmeUVycm9yKCk7
DQorICAgIEhSRVNVTFQgbm90aWZ5Q2xvc2UoW2luXSBCT09MIHhwbGljaXQpOw0KK30NCisNCisv
KiENCisgICAgQGNhdGVnb3J5IFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUNCisgICAg
QGRpc2N1c3Npb24gQSBjbGFzcyB0aGF0IGltcGxlbWVudHMgV2ViRGVza3RvcE5vdGlmaWNhdGlv
blByb3ZpZGVyIHByb3ZpZGVzDQorICAgIG1ldGhvZHMgdGhhdCBtYXkgYmUgdXNlZCBieSBKYXZh
c2NyaXB0IHRvIGRpc3BsYXkgbm90aWZpY2F0aW9ucyAoInRvYXN0cyIpDQorICAgIG9uIHRoZSB1
c2VyJ3MgZGVza3RvcC4NCisgICAgQGludGVyZmFjZSBOU09iamVjdCAoV2ViRGVza3RvcE5vdGlm
aWNhdGlvblByb3ZpZGVyKQ0KKyovDQorWw0KKyAgICBvYmplY3QsDQorICAgIG9sZWF1dG9tYXRp
b24sDQorICAgIHV1aWQoMDlEQTA3M0UtMzhCMy00NjZhLTk4MjgtQjI5MTVGREQyRUNCKSwNCisg
ICAgcG9pbnRlcl9kZWZhdWx0KHVuaXF1ZSkNCitdDQorDQoraW50ZXJmYWNlIElXZWJEZXNrdG9w
Tm90aWZpY2F0aW9uc0RlbGVnYXRlIDogSVVua25vd24NCit7DQorICAgIC8qIQ0KKyAgICAgICAg
QG1ldGhvZCBzaG93RGVza3RvcE5vdGlmaWNhdGlvbjoNCisgICAgICAgIEBhYnN0cmFjdCBTaG93
IGEgbm90aWZpY2F0aW9uLg0KKyAgICAgICAgQHBhcmFtIG5vdGlmaWNhdGlvbiBUaGUgTm90aWZp
Y2F0aW9uIHRvIGJlIHNob3duLg0KKyAgICAqLw0KKyAgICBIUkVTVUxUIHNob3dEZXNrdG9wTm90
aWZpY2F0aW9uKFtpbl0gSVdlYkRlc2t0b3BOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbik7DQor
DQorICAgIC8qIQ0KKyAgICAgICAgQG1ldGhvZCBjYW5jZWxEZXNrdG9wTm90aWZpY2F0aW9uOg0K
KyAgICAgICAgQGFic3RyYWN0IENhbmNlbCBzaG93aW5nIGEgbm90aWZpY2F0aW9uIChvciB0YWtl
IGl0IGRvd24gaWYgaXQncyBzaG93bikuDQorICAgICAgICBAcGFyYW0gbm90aWZpY2F0aW9uIFRo
ZSBOb3RpZmljYXRpb24gdG8gYmUgY2FuY2VsZWQuDQorICAgICovDQorICAgIEhSRVNVTFQgY2Fu
Y2VsRGVza3RvcE5vdGlmaWNhdGlvbihbaW5dIElXZWJEZXNrdG9wTm90aWZpY2F0aW9uKiBub3Rp
ZmljYXRpb24pOw0KKw0KKyAgICAvKiENCisgICAgICAgIEBtZXRob2QgY2hlY2tOb3RpZmljYXRp
b25QZXJtaXNzaW9uOg0KKyAgICAgICAgQGFic3RyYWN0IFNlZSBpZiB0aGUgb3JpZ2luIGNvbnRl
eHQgaXMgYWxsb3dlZCB0byBzaG93IG5vdGlmaWNhdGlvbnMuDQorICAgICAgICBAcGFyYW0gb3Jp
Z2luIFRoZSBvcmlnaW4gdG8gYmUgY2hlY2tlZC4NCisgICAgICAgIEBwYXJhbSByZXN1bHQgQSB2
YWx1ZSBmcm9tIFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByb3ZpZGVyOjpQZXJtaXNzaW9uIGVudW0u
DQorICAgICovDQorICAgIEhSRVNVTFQgY2hlY2tOb3RpZmljYXRpb25QZXJtaXNzaW9uKFtpbl0g
QlNUUiBvcmlnaW4sIFtvdXQsIHJldHZhbF0gaW50KiByZXN1bHQpOw0KKw0KKyAgICAvKiENCisg
ICAgICAgIEBtZXRob2QgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb246DQorICAgICAgICBA
YWJzdHJhY3QgUmVxdWVzdCBwZXJtaXNzaW9uIHRvIHNob3cgbm90aWZpY2F0aW9ucyBvbiBhIGdp
dmVuIG9yaWdpbi4NCisgICAgICAgIEBwYXJhbSBvcmlnaW4gVGhlIG9yaWdpbiB0byBiZSByZXF1
ZXN0ZWQuDQorICAgICovDQorICAgIEhSRVNVTFQgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Np
b24oW2luXSBCU1RSIG9yaWdpbik7DQorfQ0KSW5kZXg6IFdlYktpdC93aW4vSW50ZXJmYWNlcy9J
V2ViVUlEZWxlZ2F0ZS5pZGwNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvd2luL0ludGVyZmFjZXMv
SVdlYlVJRGVsZWdhdGUuaWRsCShyZXZpc2lvbiA0NTU3NCkNCisrKyBXZWJLaXQvd2luL0ludGVy
ZmFjZXMvSVdlYlVJRGVsZWdhdGUuaWRsCSh3b3JraW5nIGNvcHkpDQpAQCAtNzU1LDQgKzc1NSw2
IEBAIGludGVyZmFjZSBJV2ViVUlEZWxlZ2F0ZSA6IElVbmtub3duDQogICAgIEhSRVNVTFQgcGFp
bnRDdXN0b21TY3JvbGxiYXIoW2luXSBJV2ViVmlldyogd2ViVmlldywgW2luXSBIREMgaERDLCBb
aW5dIFJFQ1QgcmVjdCwgW2luXSBXZWJTY3JvbGxCYXJDb250cm9sU2l6ZSBzaXplLCBbaW5dIFdl
YlNjcm9sbGJhckNvbnRyb2xTdGF0ZSBzdGF0ZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW2luXSBXZWJTY3JvbGxiYXJDb250cm9sUGFydCBwcmVzc2VkUGFydCwgW2luXSBC
T09MIHZlcnRpY2FsLCBbaW5dIGZsb2F0IHZhbHVlLCBbaW5dIGZsb2F0IHByb3BvcnRpb24sIFtp
bl0gV2ViU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrIHBhcnRzKTsNCiAgICAgSFJFU1VMVCBwYWlu
dEN1c3RvbVNjcm9sbENvcm5lcihbaW5dIElXZWJWaWV3KiB3ZWJWaWV3LCBbaW5dIEhEQyBoREMs
IFtpbl0gUkVDVCByZWN0KTsNCisNCisgICAgSFJFU1VMVCBkZXNrdG9wTm90aWZpY2F0aW9uc0Rl
bGVnYXRlKFtvdXQsIHJldHZhbF0gSVdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUqKiBy
ZXN1bHQpOw0KIH0NCkluZGV4OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsCShyZXZpc2lvbiA0
NTU3NCkNCisrKyBXZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAkod29ya2luZyBjb3B5
KQ0KQEAgLTczLDYgKzczLDcgQEAgaW1wb3J0ICJvY2lkbC5pZGwiOw0KICNpbmNsdWRlICJJV2Vi
Q29yZVN0YXRpc3RpY3MuaWRsIg0KICNpbmNsdWRlICJJV2ViRGF0YVNvdXJjZS5pZGwiDQogI2lu
Y2x1ZGUgIklXZWJEYXRhYmFzZU1hbmFnZXIuaWRsIg0KKyNpbmNsdWRlICJJV2ViRGVza3RvcE5v
dGlmaWNhdGlvbnNEZWxlZ2F0ZS5pZGwiDQogI2luY2x1ZGUgIklXZWJEb2N1bWVudC5pZGwiDQog
I2luY2x1ZGUgIklXZWJEb3dubG9hZC5pZGwiDQogI2luY2x1ZGUgIklXZWJFZGl0aW5nRGVsZWdh
dGUuaWRsIg0KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAkocmV2aXNpb24gNDU1NzQpDQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzAsNiArMzAsNyBAQA0K
ICNpbmNsdWRlICJXZWJGcmFtZS5oIg0KICNpbmNsdWRlICJXZWJIaXN0b3J5LmgiDQogI2luY2x1
ZGUgIldlYk11dGFibGVVUkxSZXF1ZXN0LmgiDQorI2luY2x1ZGUgIldlYkRlc2t0b3BOb3RpZmlj
YXRpb25zRGVsZWdhdGUuaCINCiAjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCINCiAjaW5j
bHVkZSAiV2ViVmlldy5oIg0KICNwcmFnbWEgd2FybmluZyhwdXNoLCAwKQ0KQEAgLTU4LDYgKzU5
LDkgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhGaWxlUGF0aHNMaXN0U2l6ZQ0KIA0KIFdlYkNo
cm9tZUNsaWVudDo6V2ViQ2hyb21lQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpDQogICAgIDogbV93
ZWJWaWV3KHdlYlZpZXcpDQorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQ0KKyAgICAsIG1fbm90
aWZpY2F0aW9uc0RlbGVnYXRlKG5ldyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlKHdl
YlZpZXcpKQ0KKyNlbmRpZg0KIHsNCiB9DQogDQpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDQ1NTc0KQ0KKysrIFdlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkNCkBAIC0y
OSw4ICsyOSwxMCBAQA0KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzRGlyZWN0aW9uLmg+DQogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4NCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4N
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiANCiBjbGFzcyBXZWJWaWV3Ow0KK2NsYXNz
IFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU7DQogDQogaW50ZXJmYWNlIElXZWJVSURl
bGVnYXRlOw0KIA0KQEAgLTEyNyw4ICsxMjksMTYgQEAgcHVibGljOg0KIA0KICAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
KiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsNCiANCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
DQorICAgIHZpcnR1YWwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJvdmlkZXIqIG5vdGlmaWNhdGlv
blByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb3Rp
ZmljYXRpb25Qcm92aWRlcio+KG1fbm90aWZpY2F0aW9uc0RlbGVnYXRlLmdldCgpKTsgfQ0KKyNl
bmRpZg0KKw0KIHByaXZhdGU6DQogICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZT4gdWlEZWxlZ2F0
ZSgpOw0KIA0KICAgICBXZWJWaWV3KiBtX3dlYlZpZXc7DQorDQorI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQ0KKyAgICBPd25QdHI8V2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZT4gbV9u
b3RpZmljYXRpb25zRGVsZWdhdGU7DQorI2VuZGlmDQogfTsNCkluZGV4OiBXZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9u
c0RlbGVnYXRlLmNwcAkocmV2aXNpb24gMCkNCisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAwKQ0KQEAgLTAs
MCArMSwxODMgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLg0KKyAqDQorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQ0K
KyAqIG1ldDoNCisgKg0KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyDQorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KKyAqIGRpc3RyaWJ1dGlvbi4NCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzDQorICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20NCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLg0KKyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SDQorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
DQorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsDQorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQ0KKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorICovDQorDQorI2luY2x1ZGUgImNvbmZp
Zy5oIg0KKyNpbmNsdWRlICJXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgiDQorI2lu
Y2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiDQorI2luY2x1ZGUgIldlYlZpZXcuaCINCisjaW5j
bHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+DQorDQorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQ0K
Kw0KK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOw0KKw0KK2NsYXNzIE5vdGlmaWNhdGlvbkNPTVdy
YXBwZXIgOiBwdWJsaWMgSVdlYkRlc2t0b3BOb3RpZmljYXRpb24gew0KK3B1YmxpYzoNCisgICAg
c3RhdGljIE5vdGlmaWNhdGlvbkNPTVdyYXBwZXIqIGNyZWF0ZShOb3RpZmljYXRpb24qIGlubmVy
KSB7IHJldHVybiBuZXcgTm90aWZpY2F0aW9uQ09NV3JhcHBlcihpbm5lcik7IH0NCisgICANCisg
ICAgLy8gSVVua25vd24NCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1
ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsNCisgICAgdmlydHVh
bCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsNCisgICAgdmlydHVhbCBVTE9ORyBT
VERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7DQorDQorICAgIC8vIElXZWJEZXNrdG9wTm90aWZp
Y2F0aW9uDQorICAgIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNIVE1MKEJPT0wqIHJlc3Vs
dCk7DQorICAgIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29udGVudHNVUkwoQlNUUiogcmVz
dWx0KTsNCisgICAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpY29uVVJMKEJTVFIqIHJlc3Vs
dCk7DQorICAgIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGl0bGUoQlNUUiogcmVzdWx0KTsN
CisgICAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0ZXh0KEJTVFIqIHJlc3VsdCk7DQorICAg
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm90aWZ5RGlzcGxheSgpOw0KKyAgICBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIG5vdGlmeUVycm9yKCk7DQorICAgIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgbm90aWZ5Q2xvc2UoQk9PTCB4cGxpY2l0KTsNCisNCitwcml2YXRlOg0KKyAgICBO
b3RpZmljYXRpb25DT01XcmFwcGVyKE5vdGlmaWNhdGlvbiogaW5uZXIpIDogbV9yZWZDb3VudCgx
KSwgbV9pbm5lcihpbm5lcikge30NCisNCisgICAgaW50IG1fcmVmQ291bnQ7DQorICAgIE5vdGlm
aWNhdGlvbiogbV9pbm5lcjsNCit9Ow0KKw0KK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgTm90
aWZpY2F0aW9uQ09NV3JhcHBlcjo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBw
cHZPYmplY3QpDQorew0KKyAgICAqcHB2T2JqZWN0ID0gMDsNCisgICAgaWYgKElzRXF1YWxHVUlE
KHJpaWQsIElJRF9JVW5rbm93bikpDQorICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8
Tm90aWZpY2F0aW9uQ09NV3JhcHBlcio+KHRoaXMpOw0KKyAgICBlbHNlIGlmIChJc0VxdWFsR1VJ
RChyaWlkLCBJSURfSVdlYkRlc2t0b3BOb3RpZmljYXRpb24pKQ0KKyAgICAgICAgKnBwdk9iamVj
dCA9IHN0YXRpY19jYXN0PE5vdGlmaWNhdGlvbkNPTVdyYXBwZXIqPih0aGlzKTsNCisgICAgZWxz
ZQ0KKyAgICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7DQorDQorICAgIEFkZFJlZigpOw0KKyAg
ICByZXR1cm4gU19PSzsNCit9DQorDQorVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgTm90aWZpY2F0
aW9uQ09NV3JhcHBlcjo6QWRkUmVmKCkNCit7IA0KKyAgICByZXR1cm4gKyttX3JlZkNvdW50OyAN
Cit9DQorDQorVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgTm90aWZpY2F0aW9uQ09NV3JhcHBlcjo6
UmVsZWFzZSgpDQorew0KKyAgICBVTE9ORyBuZXdSZWYgPSAtLW1fcmVmQ291bnQ7DQorICAgIGlm
ICghbmV3UmVmKQ0KKyAgICAgICAgZGVsZXRlKHRoaXMpOw0KKyAgICByZXR1cm4gbmV3UmVmOw0K
K30NCisNCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6
OmlzSFRNTChCT09MKiByZXN1bHQpDQorew0KKyAgICAqcmVzdWx0ID0gbV9pbm5lci0+aXNIVE1M
KCk7DQorICAgIHJldHVybiBTX09LOw0KK30NCisNCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6OmNvbnRlbnRzVVJMKEJTVFIqIHJlc3VsdCkNCit7DQor
ICAgICpyZXN1bHQgPSBCU3RyaW5nKG1faW5uZXItPnVybCgpKS5yZWxlYXNlKCk7DQorICAgIHJl
dHVybiBTX09LOw0KK30NCisNCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIE5vdGlmaWNhdGlv
bkNPTVdyYXBwZXI6Omljb25VUkwoQlNUUiogcmVzdWx0KQ0KK3sNCisgICAgKnJlc3VsdCA9IEJT
dHJpbmcobV9pbm5lci0+Y29udGVudHMoKS5pY29uKCkpLnJlbGVhc2UoKTsNCisgICAgcmV0dXJu
IFNfT0s7DQorfQ0KKw0KK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgTm90aWZpY2F0aW9uQ09N
V3JhcHBlcjo6dGl0bGUoQlNUUiogcmVzdWx0KQ0KK3sNCisgICAgKnJlc3VsdCA9IEJTdHJpbmco
bV9pbm5lci0+Y29udGVudHMoKS50aXRsZSgpKS5yZWxlYXNlKCk7DQorICAgIHJldHVybiBTX09L
Ow0KK30NCisNCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIE5vdGlmaWNhdGlvbkNPTVdyYXBw
ZXI6OnRleHQoQlNUUiogcmVzdWx0KQ0KK3sNCisgICAgKnJlc3VsdCA9IEJTdHJpbmcobV9pbm5l
ci0+Y29udGVudHMoKS5ib2R5KCkpLnJlbGVhc2UoKTsNCisgICAgcmV0dXJuIFNfT0s7DQorfQ0K
Kw0KK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgTm90aWZpY2F0aW9uQ09NV3JhcHBlcjo6bm90
aWZ5RGlzcGxheSgpDQorew0KKyAgICBtX2lubmVyLT5kaXNwbGF5KCk7DQorICAgIHJldHVybiBT
X09LOw0KK30NCisNCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIE5vdGlmaWNhdGlvbkNPTVdy
YXBwZXI6Om5vdGlmeUVycm9yKCkNCit7DQorICAgIG1faW5uZXItPmVycm9yKCk7DQorICAgIHJl
dHVybiBTX09LOw0KK30NCisNCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIE5vdGlmaWNhdGlv
bkNPTVdyYXBwZXI6Om5vdGlmeUNsb3NlKEJPT0wgeHBsaWNpdCkNCit7DQorICAgIG1faW5uZXIt
PmNsb3NlKCk7DQorICAgIHJldHVybiBTX09LOw0KK30NCisNCitXZWJEZXNrdG9wTm90aWZpY2F0
aW9uc0RlbGVnYXRlOjpXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlKFdlYlZpZXcqIHdl
YlZpZXcpDQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpDQorew0KK30NCisNCitib29sIFdlYkRl
c2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU6OnNob3coTm90aWZpY2F0aW9uKiBvYmplY3QpDQor
ew0KKyAgICBub3RpZmljYXRpb25EZWxlZ2F0ZSgpLT5zaG93RGVza3RvcE5vdGlmaWNhdGlvbihO
b3RpZmljYXRpb25DT01XcmFwcGVyOjpjcmVhdGUob2JqZWN0KSk7DQorICAgIHJldHVybiB0cnVl
Ow0KK30NCisNCit2b2lkIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU6OmNhbmNlbChO
b3RpZmljYXRpb24qIG9iamVjdCkNCit7DQorICAgIG5vdGlmaWNhdGlvbkRlbGVnYXRlKCktPmNh
bmNlbERlc2t0b3BOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uQ09NV3JhcHBlcjo6Y3JlYXRlKG9i
amVjdCkpOw0KK30NCisNCit2b2lkIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU6OnJl
cXVlc3RQZXJtaXNzaW9uKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIFBhc3NSZWZQdHI8Vm9pZENh
bGxiYWNrPiBjYWxsYmFjaykNCit7DQorICAgIEJTdHJpbmcgb3JnKG9yaWdpbi0+dG9TdHJpbmco
KSk7DQorICAgIG5vdGlmaWNhdGlvbkRlbGVnYXRlKCktPnJlcXVlc3ROb3RpZmljYXRpb25QZXJt
aXNzaW9uKG9yZyk7DQorfQ0KKw0KK05vdGlmaWNhdGlvblByb3ZpZGVyOjpQZXJtaXNzaW9uIFdl
YkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU6OmNoZWNrUGVybWlzc2lvbihTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQ0KK3sgIA0KKyAgICBpbnQgb3V0Ow0KKyAgICBCU3RyaW5nIG9yZyhvcmln
aW4tPnRvU3RyaW5nKCkpOw0KKyAgICBub3RpZmljYXRpb25EZWxlZ2F0ZSgpLT5jaGVja05vdGlm
aWNhdGlvblBlcm1pc3Npb24ob3JnLCAmb3V0KTsNCisgICAgcmV0dXJuIChOb3RpZmljYXRpb25Q
cm92aWRlcjo6UGVybWlzc2lvbikgb3V0Ow0KK30NCisNCitDT01QdHI8SVdlYkRlc2t0b3BOb3Rp
ZmljYXRpb25zRGVsZWdhdGU+IFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU6Om5vdGlm
aWNhdGlvbkRlbGVnYXRlKCkNCit7DQorICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZT4gdWk7DQor
ICAgIG1fd2ViVmlldy0+dWlEZWxlZ2F0ZSgmdWkpOw0KKyAgICANCisgICAgQ09NUHRyPElXZWJE
ZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlPiBkZWxlZ2F0ZTsNCisgICAgdWktPmRlc2t0b3BO
b3RpZmljYXRpb25zRGVsZWdhdGUoJmRlbGVnYXRlKTsNCisgICAgDQorICAgIHJldHVybiBkZWxl
Z2F0ZTsNCit9DQorDQorI2VuZGlmICAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykNCisNCkluZGV4
OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdh
dGUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3Rv
cE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCShyZXZpc2lvbiAwKQ0KKysrIFdlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCShyZXZpc2lvbiAw
KQ0KQEAgLTAsMCArMSw1NSBAQA0KKy8qDQorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlDQorICogbWV0Og0KKyAqDQorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQ0KKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXINCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlDQorICogZGlzdHJpYnV0aW9uLg0KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMN
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQ0KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQorICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QN
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1INCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVA0KKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QNCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwNCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkNCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUDQorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFDQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCisgKi8NCisNCisjaW5jbHVk
ZSA8V2ViQ29yZS9DT01QdHIuaD4NCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb24uaD4N
CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25Qcm92aWRlci5oPg0KKw0KKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykNCisNCitpbnRlcmZhY2UgSVdlYkRlc2t0b3BOb3RpZmljYXRpb25Q
cm92aWRlcjsNCisNCitjbGFzcyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlIDogcHVi
bGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByb3ZpZGVyIHsNCitwdWJsaWM6DQorICAgIFdlYkRl
c2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUoV2ViVmlldyogdmlldyk7DQorDQorICAgIC8qIFdl
YkNvcmU6Ok5vdGlmaWNhdGlvblByb3ZpZGVyIGludGVyZmFjZSAqLw0KKyAgICB2aXJ0dWFsIGJv
b2wgc2hvdyhXZWJDb3JlOjpOb3RpZmljYXRpb24qIG9iamVjdCk7DQorICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWwoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBvYmplY3QpOw0KKyAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKTsNCisgICAgdmlydHVhbCBX
ZWJDb3JlOjpOb3RpZmljYXRpb25Qcm92aWRlcjo6UGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24o
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbik7DQorDQorcHJpdmF0ZToNCisgICAgQ09N
UHRyPElXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlPiBub3RpZmljYXRpb25EZWxlZ2F0
ZSgpOw0KKyAgICANCisgICAgV2ViVmlldyogbV93ZWJWaWV3Ow0KK307DQorDQorI2VuZGlmDQor
DQpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JEZWxlZ2F0ZS5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JE
ZWxlZ2F0ZS5oCShyZXZpc2lvbiA0NTU3NCkNCisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckRlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMjQsNiArMzI0LDkg
QEAgcHVibGljOg0KICAgICAgICAgLyogW2luXSAqLyBIREMgaERDLA0KICAgICAgICAgLyogW2lu
XSAqLyBSRUNUIHJlY3QpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQ0KIA0KKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZSggDQor
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVn
YXRlICoqcmVzdWx0KSB7IHJldHVybiBFX05PVElNUEw7IH0NCisNCiBwcml2YXRlOg0KICAgICBX
ZWJJbnNwZWN0b3JEZWxlZ2F0ZSgpOw0KIA0KSW5kZXg6IFdlYktpdC93aW4vV2ViS2l0LnZjcHJv
ai9JbnRlcmZhY2VzLnZjcHJvag0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC93aW4vV2ViS2l0LnZj
cHJvai9JbnRlcmZhY2VzLnZjcHJvagkocmV2aXNpb24gNDU1NzQpDQorKysgV2ViS2l0L3dpbi9X
ZWJLaXQudmNwcm9qL0ludGVyZmFjZXMudmNwcm9qCSh3b3JraW5nIGNvcHkpDQpAQCAtNDkyLDYg
KzQ5MiwxOCBAQA0KIAkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQk8L0ZpbGU+DQogCQk8Rmls
ZQ0KKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW50ZXJmYWNlc1xJV2ViRGVza3RvcE5vdGlmaWNhdGlv
bnNEZWxlZ2F0ZS5pZGwiDQorCQkJPg0KKwkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQlOYW1l
PSJEZWJ1Z3xXaW4zMiINCisJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCT4NCisJ
CQkJPFRvb2wNCisJCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCS8+DQorCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4NCisJCTwvRmlsZT4NCisJCTxGaWxlDQogCQkJUmVsYXRpdmVQYXRoPSIuLlxJ
bnRlcmZhY2VzXElXZWJEb2N1bWVudC5pZGwiDQogCQkJPg0KIAkJCTxGaWxlQ29uZmlndXJhdGlv
bg0KSW5kZXg6IFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9qDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2oJKHJldmlzaW9u
IDQ1NTc0KQ0KKysrIFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9qCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMjA1OCw2ICsyMDU4LDE0IEBADQogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJDb3JlU3VwcG9ydFxXZWJEZXNrdG9w
Tm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYkNvcmVTdXBwb3J0XFdlYkRlc2t0b3BOb3RpZmlj
YXRpb25zRGVsZWdhdGUuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXFdlYkNvcmVTdXBwb3J0XFdlYkRyYWdDbGllbnQuY3BwIg0KIAkJCQk+
DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZw0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNDU1NzYpDQorKysgV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDQyIEBADQorMjAwOS0wNy0w
NiAgSm9obiBHcmVnZyAgPGpvaG5ueWdAZ29vZ2xlLmNvbT4NCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgRGVza3RvcCBOb3RpZmljYXRpb25zIEFQ
SQ0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NDYz
DQorDQorCUFkZHMgdGVzdCBob29rcyB0byBEdW1wUmVuZGVyVHJlZSBpbiBvcmRlciB0byB0ZXN0
IHRoZQ0KKwlEZXNrdG9wIE5vdGlmaWNhdGlvbnMgQVBJLg0KKw0KKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6DQorICAgICAgICAoZ3JhbnREZXNrdG9w
Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrKToNCisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToNCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6Z3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbik6DQorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmNoZWNrRGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24pOg0KKwlI
b29rcyB0byBzaW11bGF0ZSB1c2VyIHBlcm1pc3Npb25zIGluIGxheW91dCB0ZXN0cy4NCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoNCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvd2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25Qcm92aWRlci5jcHA6IEFk
ZGVkLg0KKyAgICAgICAgKERSVERlc2t0b3BOb3RpZmljYXRpb25Qcm92aWRlcjo6RFJURGVza3Rv
cE5vdGlmaWNhdGlvblByb3ZpZGVyKToNCisgICAgICAgIChEUlREZXNrdG9wTm90aWZpY2F0aW9u
UHJvdmlkZXI6OlF1ZXJ5SW50ZXJmYWNlKToNCisgICAgICAgIChEUlREZXNrdG9wTm90aWZpY2F0
aW9uUHJvdmlkZXI6OkFkZFJlZik6DQorICAgICAgICAoRFJURGVza3RvcE5vdGlmaWNhdGlvblBy
b3ZpZGVyOjpSZWxlYXNlKToNCisgICAgICAgIChEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJvdmlk
ZXI6OnNob3dEZXNrdG9wTm90aWZpY2F0aW9uKToNCisgICAgICAgIChEUlREZXNrdG9wTm90aWZp
Y2F0aW9uUHJvdmlkZXI6OmNhbmNlbERlc2t0b3BOb3RpZmljYXRpb24pOg0KKyAgICAgICAgKERS
VERlc2t0b3BOb3RpZmljYXRpb25Qcm92aWRlcjo6Y2hlY2tOb3RpZmljYXRpb25QZXJtaXNzaW9u
KToNCisgICAgICAgIChEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlcXVlc3ROb3Rp
ZmljYXRpb25QZXJtaXNzaW9uKToNCisJSG9va3MgdG8gcHJvdmlkZSBzaW1wbGUgcHJpbnRmKCkg
b3V0cHV0IG9mIGFjdGlvbnMgd2hpY2ggd291bGQNCisJcmVzdWx0IGluIGRlc2t0b3Agbm90aWZp
Y2F0aW9ucyBhcHBlYXJpbmcgYW5kIGNsb3NpbmcuDQorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L3dpbi9EUlREZXNrdG9wTm90aWZpY2F0aW9uUHJvdmlkZXIuaDogQWRkZWQuDQorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS52Y3Byb2o6DQorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6DQorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcDoNCisgICAgICAgIChVSURlbGVnYXRl
OjpVSURlbGVnYXRlKToNCisgICAgICAgIChVSURlbGVnYXRlOjpkZXNrdG9wTm90aWZpY2F0aW9u
c0RlbGVnYXRlKToNCisJQ29ubmVjdCB0aGUgdGVzdCBOb3RpZmljYXRpb25zUHJvdmlkZXIgdGhy
b3VnaCB0aGUgVUlEZWxlZ2F0ZQ0KKwlpbnRlcmZhY2UuDQorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL3dpbi9VSURlbGVnYXRlLmg6DQorICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0Og0K
Kw0KIDIwMDktMDctMDMgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4NCiANCiAg
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLg0KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
NDU1NzQpDQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzQ0LDYgKzM0NCwxOSBAQCBzdGF0aWMgSlNWYWx1
ZVJlZiBleGVjQ29tbWFuZENhbGxiYWNrKEpTDQogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsNCiB9DQogDQorc3RhdGljIEpTVmFsdWVSZWYgZ3JhbnREZXNrdG9wTm90
aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikN
Cit7DQorICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRpb24NCisgICAgaWYgKGFyZ3VtZW50Q291
bnQgPCAxKQ0KKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOw0K
Kw0KKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExh
eW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsNCisN
CisgICAgY29udHJvbGxlci0+Z3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbihKU1Zh
bHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgTlVMTCkpOw0KKyAgICAgICAg
DQorICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsNCit9DQorDQogc3Rh
dGljIEpTVmFsdWVSZWYgaXNDb21tYW5kRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikNCiB7DQogICAgIC8vIEhhcyBNYWMgaW1wbGVtZW50YXRpb24uDQpAQCAtODg5
LDYgKzkwMiw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoNCiAg
ICAgICAgIHsgImVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZCIsIGVsZW1l
bnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sDQogICAg
ICAgICB7ICJlbmNvZGVIb3N0TmFtZSIsIGVuY29kZUhvc3ROYW1lQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwN
CiAgICAgICAgIHsgImV4ZWNDb21tYW5kIiwgZXhlY0NvbW1hbmRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LA0K
KyAgICAgICAgeyAiZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbiIsIGdyYW50RGVz
a3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LCANCiAgICAgICAgIHsg
ImlzQ29tbWFuZEVuYWJsZWQiLCBpc0NvbW1hbmRFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwNCiAg
ICAgICAgIHsgImtlZXBXZWJIaXN0b3J5Iiwga2VlcFdlYkhpc3RvcnlDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LA0KICAgICAgICAgeyAibm90aWZ5RG9uZSIsIG5vdGlmeURvbmVDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LA0K
QEAgLTk2MiwzICs5NzYsMjAgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVldWVSZWxv
YWQoKQ0KIHsNCiAgICAgV29ya1F1ZXVlOjpzaGFyZWQoKS0+cXVldWUobmV3IFJlbG9hZEl0ZW0p
Ow0KIH0NCisNCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpncmFudERlc2t0b3BOb3RpZmlj
YXRpb25QZXJtaXNzaW9uKEpTU3RyaW5nUmVmIG9yaWdpbikNCit7DQorICAgIG1fZGVza3RvcE5v
dGlmaWNhdGlvbkFsbG93ZWRPcmlnaW5zLnB1c2hfYmFjayhKU1N0cmluZ1JldGFpbihvcmlnaW4p
KTsNCit9DQorDQorYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2hlY2tEZXNrdG9wTm90aWZp
Y2F0aW9uUGVybWlzc2lvbihKU1N0cmluZ1JlZiBvcmlnaW4pDQorew0KKyAgICBzdGQ6OnZlY3Rv
cjxKU1N0cmluZ1JlZj46Oml0ZXJhdG9yIGk7DQorICAgIGZvciAoaSA9IG1fZGVza3RvcE5vdGlm
aWNhdGlvbkFsbG93ZWRPcmlnaW5zLmJlZ2luKCk7DQorICAgICAgICAgaSAhPSBtX2Rlc2t0b3BO
b3RpZmljYXRpb25BbGxvd2VkT3JpZ2lucy5lbmQoKTsNCisgICAgICAgICArK2kpIHsNCisgICAg
ICAgIGlmIChKU1N0cmluZ0lzRXF1YWwoKmksIG9yaWdpbikpDQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7DQorICAgIH0NCisgICAgcmV0dXJuIGZhbHNlOw0KK30NCisNCkluZGV4OiBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2
aXNpb24gNDU1NzQpDQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMyLDYgKzMyLDcgQEANCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4NCiAjaW5jbHVkZSA8c3RyaW5nPg0KKyNpbmNsdWRlIDx2ZWN0b3I+DQogDQogY2xhc3MgTGF5
b3V0VGVzdENvbnRyb2xsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxMYXlvdXRUZXN0Q29udHJvbGxl
cj4gew0KIHB1YmxpYzoNCkBAIC04MSw2ICs4Miw5IEBAIHB1YmxpYzoNCiAgICAgc2l6ZV90IHdl
Ykhpc3RvcnlJdGVtQ291bnQoKTsNCiAgICAgaW50IHdpbmRvd0NvdW50KCk7DQogICAgIA0KKyAg
ICB2b2lkIGdyYW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYgb3Jp
Z2luKTsNCisgICAgYm9vbCBjaGVja0Rlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uKEpTU3Ry
aW5nUmVmIG9yaWdpbik7DQorDQogICAgIGJvb2wgZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JF
bGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIGlkKTsNCiANCiAgICAgYm9vbCBkdW1wQXNUZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9kdW1wQXNUZXh0OyB9DQpAQCAtMTk2LDYgKzIwMCw5IEBAIHByaXZh
dGU6DQogICAgIHN0ZDo6c3RyaW5nIG1fdGVzdFBhdGhPclVSTDsNCiAgICAgc3RkOjpzdHJpbmcg
bV9leHBlY3RlZFBpeGVsSGFzaDsgICAgLy8gZW1wdHkgc3RyaW5nIGlmIG5vIGhhc2gNCiAgICAg
DQorICAgIC8vIG9yaWdpbnMgd2hpY2ggaGF2ZSBiZWVuIGdyYW50ZWQgZGVza3RvcCBub3RpZmlj
YXRpb24gYWNjZXNzDQorICAgIHN0ZDo6dmVjdG9yPEpTU3RyaW5nUmVmPiBtX2Rlc2t0b3BOb3Rp
ZmljYXRpb25BbGxvd2VkT3JpZ2luczsNCisNCiAgICAgc3RhdGljIEpTQ2xhc3NSZWYgZ2V0SlND
bGFzcygpOw0KICAgICBzdGF0aWMgSlNTdGF0aWNWYWx1ZSogc3RhdGljVmFsdWVzKCk7DQogICAg
IHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uKiBzdGF0aWNGdW5jdGlvbnMoKTsNCkluZGV4OiBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblByb3ZpZGVy
LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlRE
ZXNrdG9wTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCShyZXZpc2lvbiAwKQ0KKysrIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREZXNrdG9wTm90aWZpY2F0aW9uUHJvdmlkZXIuY3Bw
CShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwxMzYgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAqDQorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
DQorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQ0KKyAqIG1ldDoNCisgKg0KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLg0KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUNCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyDQorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KKyAqIGRpc3RyaWJ1
dGlvbi4NCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzDQorICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKyAqDQorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0K
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UDQorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwNCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UDQorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
DQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVA0KKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorICov
DQorDQorI2luY2x1ZGUgIkRSVERlc2t0b3BOb3RpZmljYXRpb25Qcm92aWRlci5oIg0KKw0KKyNp
bmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIg0KKyNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxl
ci5oIg0KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPg0KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZkJTVFIuaD4NCisjaW5jbHVkZSA8V2ViQ29yZS9O
b3RpZmljYXRpb25Qcm92aWRlci5oPg0KKw0KK0RSVERlc2t0b3BOb3RpZmljYXRpb25Qcm92aWRl
cjo6RFJURGVza3RvcE5vdGlmaWNhdGlvblByb3ZpZGVyKCkNCisgICAgOiBtX3JlZkNvdW50KDEp
IHt9IA0KKw0KK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRFJURGVza3RvcE5vdGlmaWNhdGlv
blByb3ZpZGVyOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkN
Cit7DQorICAgICpwcHZPYmplY3QgPSAwOw0KKyAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlE
X0lVbmtub3duKSkNCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxEUlREZXNrdG9w
Tm90aWZpY2F0aW9uUHJvdmlkZXIqPih0aGlzKTsNCisgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQo
cmlpZCwgSUlEX0lXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlKSkNCisgICAgICAgICpw
cHZPYmplY3QgPSBzdGF0aWNfY2FzdDxEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJvdmlkZXIqPih0
aGlzKTsNCisgICAgZWxzZQ0KKyAgICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7DQorDQorICAg
IEFkZFJlZigpOw0KKyAgICByZXR1cm4gU19PSzsNCit9DQorDQorVUxPTkcgU1RETUVUSE9EQ0FM
TFRZUEUgRFJURGVza3RvcE5vdGlmaWNhdGlvblByb3ZpZGVyOjpBZGRSZWYoKQ0KK3sNCisgICAg
cmV0dXJuICsrbV9yZWZDb3VudDsNCit9DQorDQorVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgRFJU
RGVza3RvcE5vdGlmaWNhdGlvblByb3ZpZGVyOjpSZWxlYXNlKCkNCit7DQorICAgIFVMT05HIG5l
d1JlZiA9IC0tbV9yZWZDb3VudDsNCisgICAgaWYgKCFuZXdSZWYpDQorICAgICAgICBkZWxldGUo
dGhpcyk7DQorDQorICAgIHJldHVybiBuZXdSZWY7DQorfQ0KKw0KK0hSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRFJURGVza3RvcE5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaG93RGVza3RvcE5vdGlm
aWNhdGlvbigNCisgICAgLyogW2luXSAqLyBJV2ViRGVza3RvcE5vdGlmaWNhdGlvbiogbm90aWZp
Y2F0aW9uKQ0KK3sNCisgICAgQlNUUiB0aXRsZSwgdGV4dCwgdXJsOw0KKyAgICBCT09MIGh0bWw7
DQorDQorICAgIGlmICghbm90aWZpY2F0aW9uLT5pc0hUTUwoJmh0bWwpICYmIGh0bWwpIHsNCisg
ICAgICAgIG5vdGlmaWNhdGlvbi0+Y29udGVudHNVUkwoJnVybCk7ICAgIA0KKyAgICAgICAgcHJp
bnRmKCJERVNLVE9QIE5PVElGSUNBVElPTjogY29udGVudHMgYXQgJVNcbiIsIHVybCA/IHVybCA6
IEwiIik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBub3RpZmljYXRpb24tPmljb25VUkwoJnVy
bCk7DQorICAgICAgICBub3RpZmljYXRpb24tPnRpdGxlKCZ0aXRsZSk7DQorICAgICAgICBub3Rp
ZmljYXRpb24tPnRleHQoJnRleHQpOw0KKyAgICAgICAgcHJpbnRmKCJERVNLVE9QIE5PVElGSUNB
VElPTjogaWNvbiAlUywgdGl0bGUgJVMsIHRleHQgJVNcbiIsIA0KKyAgICAgICAgICAgIHVybCA/
IHVybCA6IEwiIiwgDQorICAgICAgICAgICAgdGl0bGUgPyB0aXRsZSA6IEwiIiwgDQorICAgICAg
ICAgICAgdGV4dCA/IHRleHQgOiBMIiIpOw0KKyAgICB9DQorDQorICAgIC8vIEluIHRoaXMgc3R1
YiBpbXBsZW1lbnRhdGlvbiwgdGhlIG5vdGlmaWNhdGlvbiBpcyBkaXNwbGF5ZWQgaW1tZWRpYXRl
bHk7DQorICAgIC8vIHdlIGRpc3BhdGNoIHRoZSBkaXNwbGF5IGV2ZW50IHRvIG1pbWljIHRoYXQu
DQorICAgIG5vdGlmaWNhdGlvbi0+bm90aWZ5RGlzcGxheSgpOw0KKw0KKyAgICByZXR1cm4gU19P
SzsNCit9DQorDQorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBEUlREZXNrdG9wTm90aWZpY2F0
aW9uUHJvdmlkZXI6OmNhbmNlbERlc2t0b3BOb3RpZmljYXRpb24oDQorICAgIC8qIFtpbl0gKi8g
SVdlYkRlc2t0b3BOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikNCit7DQorICAgIEJTVFIgaWRl
bnRpZmllcjsNCisgICAgQk9PTCBodG1sOw0KKyAgICBub3RpZmljYXRpb24tPmlzSFRNTCgmaHRt
bCk7DQorICAgIGlmIChodG1sKQ0KKyAgICAgICAgbm90aWZpY2F0aW9uLT5jb250ZW50c1VSTCgm
aWRlbnRpZmllcik7DQorICAgIGVsc2UNCisgICAgICAgIG5vdGlmaWNhdGlvbi0+dGl0bGUoJmlk
ZW50aWZpZXIpOw0KKw0KKyAgICBwcmludGYoIkRFU0tUT1AgTk9USUZJQ0FUSU9OIENMT1NFRDog
JVNcbiIsIGlkZW50aWZpZXIgPyBpZGVudGlmaWVyIDogTCIiKTsNCisgICAgbm90aWZpY2F0aW9u
LT5ub3RpZnlDbG9zZShmYWxzZSk7DQorDQorICAgIHJldHVybiBTX09LOw0KK30NCisNCitIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIERSVERlc2t0b3BOb3RpZmljYXRpb25Qcm92aWRlcjo6Y2hl
Y2tOb3RpZmljYXRpb25QZXJtaXNzaW9uKA0KKyAgICAgICAgLyogW2luXSAqLyBCU1RSIG9yaWdp
biwgDQorICAgICAgICAvKiBbb3V0LCByZXR2YWxdICovIGludCogcmVzdWx0KQ0KK3sNCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpDQorICAgIEpTU3RyaW5nUmVmIGpzT3JpZ2luID0gSlNTdHJp
bmdDcmVhdGVXaXRoQlNUUihvcmlnaW4pOw0KKyAgICBib29sIGFsbG93ZWQgPSA6OmdMYXlvdXRU
ZXN0Q29udHJvbGxlci0+Y2hlY2tEZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbihqc09yaWdp
bik7DQorDQorICAgIGlmIChhbGxvd2VkKQ0KKyAgICAgICAgKnJlc3VsdCA9IFdlYkNvcmU6Ok5v
dGlmaWNhdGlvblByb3ZpZGVyOjpQRVJNSVNTSU9OX0FMTE9XRUQ7DQorICAgIGVsc2UNCisgICAg
ICAgICpyZXN1bHQgPSBXZWJDb3JlOjpOb3RpZmljYXRpb25Qcm92aWRlcjo6UEVSTUlTU0lPTl9E
RU5JRUQ7DQorDQorICAgIEpTU3RyaW5nUmVsZWFzZShqc09yaWdpbik7DQorI2VuZGlmDQorICAg
IHJldHVybiBTX09LOw0KK30NCisNCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERSVERlc2t0
b3BOb3RpZmljYXRpb25Qcm92aWRlcjo6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24oDQor
ICAgICAgICAvKiBbaW5dICovIEJTVFIgb3JpZ2luKQ0KK3sNCisgICAgcHJpbnRmKCJERVNLVE9Q
IE5PVElGSUNBVElPTiBQRVJNSVNTSU9OIFJFUVVFU1RFRDogJVNcbiIsIG9yaWdpbiA/IG9yaWdp
biA6IEwiIik7DQorICAgIHJldHVybiBTX09LOw0KK30NCkluZGV4OiBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblByb3ZpZGVyLmgNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGVza3RvcE5vdGlmaWNh
dGlvblByb3ZpZGVyLmgJKHJldmlzaW9uIDApDQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25Qcm92aWRlci5oCShyZXZpc2lvbiAwKQ0KQEAg
LTAsMCArMSw2MyBAQA0KKy8qDQorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMNCisgKiBhcmUgbWV0Og0KKyAqDQorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4g
DQorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4gDQorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YNCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
IA0KKyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkNCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEDQorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQ0KKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkNCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUw0K
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsNCisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQNCisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVA0KKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRg0KKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorICovDQor
DQorI2lmbmRlZiBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJvdmlkZXJfaA0KKyNkZWZpbmUgRFJU
RGVza3RvcE5vdGlmaWNhdGlvblByb3ZpZGVyX2gNCisNCisjaW5jbHVkZSA8V2ViS2l0L1dlYktp
dC5oPg0KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+DQorI2luY2x1ZGUgPHdpbmRlZi5oPg0KKw0K
K2NsYXNzIERSVERlc2t0b3BOb3RpZmljYXRpb25Qcm92aWRlciA6IHB1YmxpYyBJV2ViRGVza3Rv
cE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZSB7DQorcHVibGljOg0KKyAgICBEUlREZXNrdG9wTm90aWZp
Y2F0aW9uUHJvdmlkZXIoKTsNCisNCisgICAgLy8gSVVua25vd24NCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiog
cHB2T2JqZWN0KTsNCisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYo
dm9pZCk7DQorICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lk
KTsNCisNCisgICAgLy8gSVdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUNCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNob3dEZXNrdG9wTm90aWZpY2F0aW9uKA0K
KyAgICAgICAgLyogW2luXSAqLyBJV2ViRGVza3RvcE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9u
KTsNCisNCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbmNlbERlc2t0
b3BOb3RpZmljYXRpb24oDQorICAgICAgICAvKiBbaW5dICovIElXZWJEZXNrdG9wTm90aWZpY2F0
aW9uKiBub3RpZmljYXRpb24pOw0KKw0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgY2hlY2tOb3RpZmljYXRpb25QZXJtaXNzaW9uKA0KKyAgICAgICAgLyogW2luXSAqLyBC
U1RSIG9yaWdpbiwgDQorICAgICAgICAvKiBbb3V0LCByZXR2YWxdICovIGludCogcmVzdWx0KTsN
CisNCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlcXVlc3ROb3RpZmlj
YXRpb25QZXJtaXNzaW9uKA0KKyAgICAgICAgLyogW2luXSAqLyBCU1RSIG9yaWdpbik7DQorDQor
cHJpdmF0ZToNCisgICAgVUxPTkcgbV9yZWZDb3VudDsNCit9Ow0KKw0KKyNlbmRpZg0KSW5kZXg6
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS52Y3Byb2oNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRy
ZWUudmNwcm9qCShyZXZpc2lvbiA0NTU3NCkNCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRHVtcFJlbmRlclRyZWUudmNwcm9qCSh3b3JraW5nIGNvcHkpDQpAQCAtNDMyLDYgKzQz
MiwxNCBAQA0KIAkJCU5hbWU9IkRlbGVnYXRlcyINCiAJCQk+DQogCQkJPEZpbGUNCisJCQkJUmVs
YXRpdmVQYXRoPSIuXERSVERlc2t0b3BOb3RpZmljYXRpb25Qcm92aWRlci5jcHAiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuXERSVERlc2t0b3BO
b3RpZmljYXRpb25Qcm92aWRlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQog
CQkJCVJlbGF0aXZlUGF0aD0iLlxFZGl0aW5nRGVsZWdhdGUuY3BwIg0KIAkJCQk+DQogCQkJPC9G
aWxlPg0KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29u
dHJvbGxlcldpbi5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCShyZXZpc2lvbiA0NTU3NCkNCisrKyBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpDQpAQCAtNDUsNiArNDUsNyBAQA0KICNpbmNsdWRlIDxXZWJLaXQvV2Vi
S2l0Lmg+DQogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXRDT01BUEkuaD4NCiAjaW5jbHVkZSA8c3Ry
aW5nPg0KKyNpbmNsdWRlIDx2ZWN0b3I+DQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVG
b3VuZGF0aW9uLmg+DQogI2luY2x1ZGUgPHNobHdhcGkuaD4NCiAjaW5jbHVkZSA8c2hsZ3VpZC5o
Pg0KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRl
LmNwcAkocmV2aXNpb24gNDU1NzQpDQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L1VJRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzMsNiArMzMsNyBAQA0KICNpbmNs
dWRlICJEcmFnZ2luZ0luZm8uaCINCiAjaW5jbHVkZSAiRXZlbnRTZW5kZXIuaCINCiAjaW5jbHVk
ZSAiTGF5b3V0VGVzdENvbnRyb2xsZXIuaCINCisjaW5jbHVkZSAiRFJURGVza3RvcE5vdGlmaWNh
dGlvblByb3ZpZGVyLmgiDQogDQogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+DQogI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPg0KQEAgLTE1NSw2ICsxNTYsNyBAQCB2b2lkIERSVFVuZG9NYW5h
Z2VyOjp1bmRvKCkNCiBVSURlbGVnYXRlOjpVSURlbGVnYXRlKCkNCiAgICAgOiBtX3JlZkNvdW50
KDEpDQogICAgICwgbV91bmRvTWFuYWdlcihuZXcgRFJUVW5kb01hbmFnZXIpDQorICAgICwgbV9k
ZXNrdG9wTm90aWZpY2F0aW9ucyhuZXcgRFJURGVza3RvcE5vdGlmaWNhdGlvblByb3ZpZGVyKQ0K
IHsNCiAgICAgbV9mcmFtZS5ib3R0b20gPSAwOw0KICAgICBtX2ZyYW1lLnRvcCA9IDA7DQpAQCAt
NjA0LDMgKzYwNiw5IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgVUlEZWxlZ2F0ZTo6c2UN
CiAgICAgICAgIHByaW50ZigiVUkgREVMRUdBVEUgU1RBVFVTIENBTExCQUNLOiBzZXRTdGF0dXNU
ZXh0OiVTXG4iLCB0ZXh0ID8gdGV4dCA6IEwiIik7DQogICAgIHJldHVybiBTX09LOw0KIH0NCisN
CitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFVJRGVsZWdhdGU6OmRlc2t0b3BOb3RpZmljYXRp
b25zRGVsZWdhdGUoSVdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUqKiByZXN1bHQpDQor
ew0KKyAgICBtX2Rlc2t0b3BOb3RpZmljYXRpb25zLmNvcHlSZWZUbyhyZXN1bHQpOw0KKyAgICBy
ZXR1cm4gU19PSzsNCit9DQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJ
RGVsZWdhdGUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9VSURlbGVnYXRlLmgJKHJldmlzaW9uIDQ1NTc0KQ0KKysrIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9VSURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yOSwxMSArMjksMTMg
QEANCiAjaWZuZGVmIFVJRGVsZWdhdGVfaA0KICNkZWZpbmUgVUlEZWxlZ2F0ZV9oDQogDQorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+DQogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQuaD4NCiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPg0KICNpbmNsdWRlIDx3aW5kZWYuaD4NCiANCiBjbGFzcyBE
UlRVbmRvTWFuYWdlcjsNCitjbGFzcyBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJvdmlkZXI7DQog
DQogY2xhc3MgVUlEZWxlZ2F0ZSA6IHB1YmxpYyBJV2ViVUlEZWxlZ2F0ZSwgSVdlYlVJRGVsZWdh
dGVQcml2YXRlIHsNCiBwdWJsaWM6DQpAQCAtMzk5LDExICs0MDEsMTYgQEAgcHJvdGVjdGVkOg0K
ICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0RpZEludmFsaWRh
dGUoIA0KICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyKTsNCiANCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdh
dGUoDQorICAgICAgICAvKiBbb3V0XSAqLyBJV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0
ZSoqIHJlc3VsdCk7DQorDQogICAgIFVMT05HICAgICAgICAgICAgICAgICAgIG1fcmVmQ291bnQ7
DQogDQogcHJpdmF0ZToNCiAgICAgUkVDVCBtX2ZyYW1lOw0KICAgICBPd25QdHI8RFJUVW5kb01h
bmFnZXI+IG1fdW5kb01hbmFnZXI7DQorDQorICAgIENPTVB0cjxJV2ViRGVza3RvcE5vdGlmaWNh
dGlvbnNEZWxlZ2F0ZT4gbV9kZXNrdG9wTm90aWZpY2F0aW9uczsNCiB9Ow0KIA0KICNlbmRpZg0K
IEluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ1NTc2KQ0KKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQ0KQEAgLTEsMyArMSwzMyBAQA0KKzIwMDktMDctMDYgIEpvaG4gR3JlZ2cg
IDxqb2hubnlnQGdvb2dsZS5jb20+DQorDQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4NCisNCisgICAgICAgIERlc2t0b3AgTm90aWZpY2F0aW9ucyBBUEkNCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTQ2Mw0KKw0KKyAgICAgICAg
QWRkaW5nIGxheW91dCB0ZXN0cyBmb3IgZGVza3RvcCBub3RpZmljYXRpb25zLiAgQ3VycmVudGx5
IHRoZXNlDQorCWFyZSBhbGwgZGlzYWJsZWQgYmVjYXVzZSB0aGUgZmxhZyBmb3IgdGhpcyBmZWF0
dXJlIGlzIHNldCB0byAwLg0KKw0KKyAgICAgICAgKiBmYXN0L25vdGlmaWNhdGlvbnM6IEFkZGVk
Lg0KKyAgICAgICAgKiBmYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1jaGVjay1wZXJt
aXNzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuDQorICAgICAgICAqIGZhc3Qvbm90aWZpY2F0aW9u
cy9ub3RpZmljYXRpb25zLWNoZWNrLXBlcm1pc3Npb24uaHRtbC1kaXNhYmxlZDogQWRkZWQuDQor
CS0gVmFsaWRhdGVzIHRoYXQgY2hlY2tpbmcgcGVybWlzc2lvbiBmb3Igbm90aWZpY2F0aW9ucyB3
b3JrcyBjb3JyZWN0bHkuDQorICAgICAgICAqIGZhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRp
b25zLWRpc3BsYXktY2xvc2UtZXZlbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuDQorICAgICAgICAq
IGZhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWRpc3BsYXktY2xvc2UtZXZlbnRzLmh0
bWwtZGlzYWJsZWQ6IEFkZGVkLg0KKwktIFZhbGlkYXRlcyB0aGF0IHRoZSBkaXNwbGF5IGFuZCBj
bG9zZSBldmVudHMgYXJlIGZpcmVkIGNvcnJlY3RseS4NCisgICAgICAgICogZmFzdC9ub3RpZmlj
YXRpb25zL25vdGlmaWNhdGlvbnMtZG91YmxlLXNob3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4NCisg
ICAgICAgICogZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZG91YmxlLXNob3cuaHRt
bC1kaXNhYmxlZDogQWRkZWQuDQorCS0gVmFsaWRhdGVzIHRoYXQgdGhlIHNhbWUgbm90aWZpY2F0
aW9uIG9iamVjdCBjYW5ub3QgYmUgc2hvd24gdHdpY2UuDQorICAgICAgICAqIGZhc3Qvbm90aWZp
Y2F0aW9ucy9ub3RpZmljYXRpb25zLXJlcXVlc3QtcGVybWlzc2lvbi1leHBlY3RlZC50eHQ6IEFk
ZGVkLg0KKyAgICAgICAgKiBmYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1yZXF1ZXN0
LXBlcm1pc3Npb24uaHRtbC1kaXNhYmxlZDogQWRkZWQuDQorCS0gVmFsaWRhdGVzIHRoYXQgcmVx
dWVzdGluZyBwZXJtaXNzaW9uIHdvcmtzIGNvcnJlY3RseS4NCisgICAgICAgICogZmFzdC9ub3Rp
ZmljYXRpb25zL25vdGlmaWNhdGlvbnMtd2l0aC1wZXJtaXNzaW9uLWV4cGVjdGVkLnR4dDogQWRk
ZWQuDQorICAgICAgICAqIGZhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXdpdGgtcGVy
bWlzc2lvbi5odG1sLWRpc2FibGVkOiBBZGRlZC4NCisJLSBWYWxpZGF0ZXMgdGhhdCwgd2l0aCBw
ZXJtaXNzaW9uLCBzaG93aW5nIGEgbm90aWZpY2F0aW9uIHdvcmtzIGNvcnJlY3RseS4NCisgICAg
ICAgICogZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtd2l0aG91dC1wZXJtaXNzaW9u
LWV4cGVjdGVkLnR4dDogQWRkZWQuDQorICAgICAgICAqIGZhc3Qvbm90aWZpY2F0aW9ucy9ub3Rp
ZmljYXRpb25zLXdpdGhvdXQtcGVybWlzc2lvbi5odG1sLWRpc2FibGVkOiBBZGRlZC4NCisJLSBW
YWxpZGF0ZXMgdGhhdCwgd2l0aG91dCBwZXJtaXNzaW9uLCBzaG93aW5nIGEgbm90aWZpY2F0aW9u
IGZhaWxzLg0KKw0KIDIwMDktMDctMDYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBs
ZS5jb20+DQogDQogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuDQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtY2hlY2stcGVybWlzc2lv
bi1leHBlY3RlZC50eHQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNh
dGlvbnMvbm90aWZpY2F0aW9ucy1jaGVjay1wZXJtaXNzaW9uLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkNCisrKyBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1j
aGVjay1wZXJtaXNzaW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsNSBA
QA0KK0NoZWNraW5nIHBlcm1pc3Npb24uLi4NCisNCitQQVNTOiBQZXJtaXNzaW9uIG5vdCBncmFu
dGVkLg0KK1BBU1M6IFBlcm1pc3Npb24gZ3JhbnRlZC4NCisNCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1jaGVjay1wZXJtaXNzaW9uLmh0bWwtZGlz
YWJsZWQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90
aWZpY2F0aW9ucy1jaGVjay1wZXJtaXNzaW9uLmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDApDQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtY2hlY2stcGVy
bWlzc2lvbi5odG1sLWRpc2FibGVkCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw0OCBAQA0KKzwh
RE9DVFlQRSBodG1sPg0KKzxodG1sPg0KKzxoZWFkPg0KKyAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+DQorICAgICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkNCisgICAgICAgIHsN
CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1M
ICs9IG1lc3NhZ2UgKyAiPGJyPiI7DQorICAgICAgICB9DQorICAgICAgICANCisgICAgICAgIGZ1
bmN0aW9uIHJ1blRlc3RzKCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7DQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgaWYgKCF3
aW5kb3cud2Via2l0Tm90aWZpY2F0aW9ucykgew0KKyAgICAgICAgICAgICAgICBsb2coIkZBSUw6
IE5vIHdlYmtpdE5vdGlmaWNhdGlvbnMgaW50ZXJmYWNlISIpOw0KKyAgICAgICAgICAgIH0NCisg
ICAgICAgICAgICANCisgICAgICAgICAgICB2YXIgTiA9IHdpbmRvdy53ZWJraXROb3RpZmljYXRp
b25zLmNoZWNrUGVybWlzc2lvbigpOw0KKyAgICAgICAgICAgIGlmIChOICE9IDApIHsNCisgICAg
ICAgICAgICAgICAgbG9nKCJQQVNTOiBQZXJtaXNzaW9uIG5vdCBncmFudGVkLiIpOw0KKyAgICAg
ICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGxvZygiRkFJTDogUGVybWlzc2lvbiBz
aG91bGRuJ3QgYmUgZ3JhbnRlZC4iKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgDQor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0KKyAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ncmFudERlc2t0b3BOb3RpZmljYXRpb25QZXJt
aXNzaW9uKCJmaWxlOi8vIik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIA0KKyAgICAg
ICAgICAgIE4gPSB3aW5kb3cud2Via2l0Tm90aWZpY2F0aW9ucy5jaGVja1Blcm1pc3Npb24oKTsN
CisgICAgICAgICAgICBpZiAoTiA9PSAwKSB7DQorICAgICAgICAgICAgICAgIGxvZygiUEFTUzog
UGVybWlzc2lvbiBncmFudGVkLiIpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAg
ICAgICAgIGxvZygiRkFJTDogUGVybWlzc2lvbiBub3QgZ3JhbnRlZC4iKTsNCisgICAgICAgICAg
ICB9DQorICAgICAgICB9DQorICAgIDwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9keT4NCis8cD5D
aGVja2luZyBwZXJtaXNzaW9uLi4uPC9wPg0KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+DQorPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KK3J1blRlc3RzKCk7DQorPC9zY3JpcHQ+DQor
DQorPC9ib2R5Pg0KKzwvaHRtbD4NCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlv
bnMvbm90aWZpY2F0aW9ucy1kaXNwbGF5LWNsb3NlLWV2ZW50cy1leHBlY3RlZC50eHQNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1k
aXNwbGF5LWNsb3NlLWV2ZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApDQorKysgTGF5b3V0
VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZGlzcGxheS1jbG9zZS1ldmVu
dHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw3IEBADQorREVTS1RPUCBO
T1RJRklDQVRJT046IGljb24gaHR0cDovL2xvY2FsaG9zdC9teV9pY29uLnBuZywgdGl0bGUgTmV3
IEUtbWFpbCwgdGV4dCBNZWV0IG1lIHRvbmlnaHQgYXQgOCENCitERVNLVE9QIE5PVElGSUNBVElP
TiBDTE9TRUQ6IE5ldyBFLW1haWwNCitTZW5kaW5nIG5vdGlmaWNhdGlvbnMgd2l0aCBwZXJtaXNz
aW9uLi4uDQorDQorUEFTUzogZGlzcGxheSBldmVudCBpbnZva2VkLg0KK1BBU1M6IGNsb3NlIGV2
ZW50IGludm9rZWQuDQorDQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25v
dGlmaWNhdGlvbnMtZGlzcGxheS1jbG9zZS1ldmVudHMuaHRtbC1kaXNhYmxlZA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWRpc3Bs
YXktY2xvc2UtZXZlbnRzLmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDApDQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZGlzcGxheS1jbG9zZS1ldmVudHMu
aHRtbC1kaXNhYmxlZAkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsMzcgQEANCis8IURPQ1RZUEUg
aHRtbD4NCis8aHRtbD4NCis8aGVhZD4NCisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPg0KKyAgICAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpDQorICAgICAgICB7DQorICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNz
YWdlICsgIjxicj4iOw0KKyAgICAgICAgfQ0KKyAgICAgICAgDQorICAgICAgICBmdW5jdGlvbiBy
dW5UZXN0cygpDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgew0KKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ncmFu
dERlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uKCJmaWxlOi8vIik7DQorICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCisgICAgICAgICAgICB9DQor
DQorICAgICAgICAgICAgaWYgKCF3aW5kb3cud2Via2l0Tm90aWZpY2F0aW9ucykgew0KKyAgICAg
ICAgICAgICAgICBsb2coIkZBSUw6IE5vIHdlYmtpdE5vdGlmaWNhdGlvbnMgaW50ZXJmYWNlISIp
Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICANCisgICAgICAgICAgICB2YXIgTiA9IHdp
bmRvdy53ZWJraXROb3RpZmljYXRpb25zLmNyZWF0ZU5vdGlmaWNhdGlvbigiaHR0cDovL2xvY2Fs
aG9zdC9teV9pY29uLnBuZyIsICJOZXcgRS1tYWlsIiwgIk1lZXQgbWUgdG9uaWdodCBhdCA4ISIp
Ow0KKyAgICAgICAgICAgIE4ub25kaXNwbGF5ID0gZnVuY3Rpb24oKSB7IGxvZygiUEFTUzogZGlz
cGxheSBldmVudCBpbnZva2VkLiIpOyB9DQorICAgICAgICAgICAgTi5vbmNsb3NlID0gZnVuY3Rp
b24oKSB7IGxvZygiUEFTUzogY2xvc2UgZXZlbnQgaW52b2tlZC4iKTsgfQ0KKyAgICAgICAgICAg
IE4uc2hvdygpOw0KKyAgICAgICAgICAgIE4uY2FuY2VsKCk7DQorICAgICAgICB9DQorICAgIDwv
c2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9keT4NCis8cD5TZW5kaW5nIG5vdGlmaWNhdGlvbnMgd2l0
aCBwZXJtaXNzaW9uLi4uPC9wPg0KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+ICAgIA0KKyAgICAN
Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQorcnVuVGVzdHMoKTsNCis8L3Njcmlw
dD4NCis8L2JvZHk+DQorPC9odG1sPg0KKw0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvbm90aWZp
Y2F0aW9ucy9ub3RpZmljYXRpb25zLWRvdWJsZS1zaG93LWV4cGVjdGVkLnR4dA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWRvdWJs
ZS1zaG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkNCisrKyBMYXlvdXRUZXN0cy9mYXN0L25v
dGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1kb3VibGUtc2hvdy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApDQpAQCAtMCwwICsxLDQgQEANCitERVNLVE9QIE5PVElGSUNBVElPTjogaWNvbiBodHRw
Oi8vbG9jYWxob3N0L215X2ljb24ucG5nLCB0aXRsZSBOZXcgRS1tYWlsLCB0ZXh0IE1lZXQgbWUg
dG9uaWdodCBhdCA4IQ0KK1NlbmRpbmcgbm90aWZpY2F0aW9ucy4uLg0KKw0KKw0KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWRvdWJsZS1zaG93Lmh0
bWwtZGlzYWJsZWQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlv
bnMvbm90aWZpY2F0aW9ucy1kb3VibGUtc2hvdy5odG1sLWRpc2FibGVkCShyZXZpc2lvbiAwKQ0K
KysrIExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWRvdWJsZS1z
aG93Lmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDM2IEBADQorPCFET0NU
WVBFIGh0bWw+DQorPGh0bWw+DQorPGhlYWQ+DQorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4NCisgICAgICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQ0KKyAgICAgICAgew0KKyAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0g
bWVzc2FnZSArICI8YnI+IjsNCisgICAgICAgIH0NCisgICAgICAgIA0KKyAgICAgICAgZnVuY3Rp
b24gcnVuVGVzdHMoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsNCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
Z3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbigiZmlsZTovLyIpOw0KKyAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQorICAgICAgICAgICAg
fQ0KKw0KKyAgICAgICAgICAgIGlmICghd2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMpIHsNCisg
ICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBObyB3ZWJraXROb3RpZmljYXRpb25zIGludGVyZmFj
ZSEiKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgDQorICAgICAgICAgICAgdmFyIE4g
PSB3aW5kb3cud2Via2l0Tm90aWZpY2F0aW9ucy5jcmVhdGVOb3RpZmljYXRpb24oImh0dHA6Ly9s
b2NhbGhvc3QvbXlfaWNvbi5wbmciLCAiTmV3IEUtbWFpbCIsICJNZWV0IG1lIHRvbmlnaHQgYXQg
OCEiKTsNCisgICAgICAgICAgICBOLnNob3coKTsNCisgICAgICAgICAgICBOLnNob3coKTsNCisg
ICAgICAgIH0NCisgICAgPC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxib2R5Pg0KKzxwPlNlbmRpbmcg
bm90aWZpY2F0aW9ucy4uLjwvcD4NCis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PiAgICANCisgICAg
DQorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KK3J1blRlc3RzKCk7DQorPC9zY3Jp
cHQ+DQorDQorPC9ib2R5Pg0KKzwvaHRtbD4NCisNCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L25v
dGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1yZXF1ZXN0LXBlcm1pc3Npb24tZXhwZWN0ZWQudHh0
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNh
dGlvbnMtcmVxdWVzdC1wZXJtaXNzaW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkNCisrKyBM
YXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1yZXF1ZXN0LXBlcm1p
c3Npb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw0IEBADQorREVTS1RP
UCBOT1RJRklDQVRJT04gUEVSTUlTU0lPTiBSRVFVRVNURUQ6IGZpbGU6Ly8NCitSZXF1ZXN0aW5n
IG5vdGlmaWNhdGlvbiBwZXJtaXNzaW9uLi4uDQorDQorDQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtcmVxdWVzdC1wZXJtaXNzaW9uLmh0bWwtZGlz
YWJsZWQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90
aWZpY2F0aW9ucy1yZXF1ZXN0LXBlcm1pc3Npb24uaHRtbC1kaXNhYmxlZAkocmV2aXNpb24gMCkN
CisrKyBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1yZXF1ZXN0
LXBlcm1pc3Npb24uaHRtbC1kaXNhYmxlZAkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsMzYgQEAN
Cis8IURPQ1RZUEUgaHRtbD4NCis8aHRtbD4NCis8aGVhZD4NCisgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPg0KKyAgICAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpDQorICAgICAg
ICB7DQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVy
SFRNTCArPSBtZXNzYWdlICsgIjxicj4iOw0KKyAgICAgICAgfQ0KKyAgICAgICAgDQorICAgICAg
ICBmdW5jdGlvbiBydW5UZXN0cygpDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0KKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIGlm
ICghd2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMpIHsNCisgICAgICAgICAgICAgICAgbG9nKCJG
QUlMOiBObyB3ZWJraXROb3RpZmljYXRpb25zIGludGVyZmFjZSEiKTsNCisgICAgICAgICAgICB9
DQorICAgICAgICAgICAgDQorICAgICAgICAgICAgdmFyIE4gPSB3aW5kb3cud2Via2l0Tm90aWZp
Y2F0aW9ucy5yZXF1ZXN0UGVybWlzc2lvbigNCisgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7
IGxvZygiUEFTUzogUGVybWlzc2lvbiBjYWxsYmFjayBpbnZva2VkLiIpOyB9DQorICAgICAgICAg
ICAgKTsNCisgICAgICAgIH0NCisgICAgPC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxib2R5Pg0KKyAg
ICA8cD5SZXF1ZXN0aW5nIG5vdGlmaWNhdGlvbiBwZXJtaXNzaW9uLi4uPC9wPg0KKyAgICANCisg
ICAgDQorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KK3J1blRlc3RzKCk7DQorPC9z
Y3JpcHQ+DQorDQorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4NCis8L2JvZHk+DQorPC9odG1sPg0K
Kw0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXdp
dGgtcGVybWlzc2lvbi1leHBlY3RlZC50eHQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBMYXlvdXRUZXN0cy9m
YXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy13aXRoLXBlcm1pc3Npb24tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQ0KKysrIExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3Rp
ZmljYXRpb25zLXdpdGgtcGVybWlzc2lvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApDQpAQCAt
MCwwICsxLDUgQEANCitERVNLVE9QIE5PVElGSUNBVElPTjogY29udGVudHMgYXQgaHR0cDovL2xv
Y2FsaG9zdC9teV9ub3RpZmljYXRpb24uaHRtbA0KK0RFU0tUT1AgTk9USUZJQ0FUSU9OOiBpY29u
IGh0dHA6Ly9sb2NhbGhvc3QvbXlfaWNvbi5wbmcsIHRpdGxlIE5ldyBFLW1haWwsIHRleHQgTWVl
dCBtZSB0b25pZ2h0IGF0IDghDQorU2VuZGluZyBub3RpZmljYXRpb25zIHdpdGggcGVybWlzc2lv
bi4uLg0KKw0KKw0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmlj
YXRpb25zLXdpdGgtcGVybWlzc2lvbi5odG1sLWRpc2FibGVkDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtd2l0aC1wZXJtaXNzaW9u
Lmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDApDQorKysgTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmlj
YXRpb25zL25vdGlmaWNhdGlvbnMtd2l0aC1wZXJtaXNzaW9uLmh0bWwtZGlzYWJsZWQJKHJldmlz
aW9uIDApDQpAQCAtMCwwICsxLDM5IEBADQorPCFET0NUWVBFIGh0bWw+DQorPGh0bWw+DQorPGhl
YWQ+DQorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCisgICAgICAgIGZ1bmN0
aW9uIGxvZyhtZXNzYWdlKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsNCisgICAg
ICAgIH0NCisgICAgICAgIA0KKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQ0KKyAgICAgICAg
ew0KKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsNCisgICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9u
UGVybWlzc2lvbigiZmlsZTovLyIpOw0KKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIGlmICgh
d2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMpIHsNCisgICAgICAgICAgICAgICAgbG9nKCJGQUlM
OiBObyB3ZWJraXROb3RpZmljYXRpb25zIGludGVyZmFjZSEiKTsNCisgICAgICAgICAgICB9DQor
ICAgICAgICAgICAgDQorICAgICAgICAgICAgdmFyIE4gPSB3aW5kb3cud2Via2l0Tm90aWZpY2F0
aW9ucy5jcmVhdGVIVE1MTm90aWZpY2F0aW9uKCJodHRwOi8vbG9jYWxob3N0L215X25vdGlmaWNh
dGlvbi5odG1sIik7DQorICAgICAgICAgICAgTi5zaG93KCk7DQorICAgICAgICAgICAgDQorICAg
ICAgICAgICAgdmFyIE0gPSB3aW5kb3cud2Via2l0Tm90aWZpY2F0aW9ucy5jcmVhdGVOb3RpZmlj
YXRpb24oImh0dHA6Ly9sb2NhbGhvc3QvbXlfaWNvbi5wbmciLCAiTmV3IEUtbWFpbCIsICJNZWV0
IG1lIHRvbmlnaHQgYXQgOCEiKTsNCisgICAgICAgICAgICBNLnNob3coKTsNCisgICAgICAgIH0N
CisgICAgPC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxib2R5Pg0KKzxwPlNlbmRpbmcgbm90aWZpY2F0
aW9ucyB3aXRoIHBlcm1pc3Npb24uLi48L3A+DQorICAgIA0KKyAgICANCis8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+DQorcnVuVGVzdHMoKTsNCis8L3NjcmlwdD4NCisNCis8ZGl2IGlk
PSJyZXN1bHQiPjwvZGl2Pg0KKzwvYm9keT4NCis8L2h0bWw+DQorDQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtd2l0aG91dC1wZXJtaXNzaW9uLWV4
cGVjdGVkLnR4dA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9u
cy9ub3RpZmljYXRpb25zLXdpdGhvdXQtcGVybWlzc2lvbi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApDQorKysgTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtd2l0
aG91dC1wZXJtaXNzaW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsNCBA
QA0KK1NlbmRpbmcgbm90aWZpY2F0aW9ucyB3aXRob3V0IHBlcm1pc3Npb24uLi4NCisNCitQQVNT
OiBFeGNlcHRpb24gdGhyb3duLg0KKw0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0
aW9ucy9ub3RpZmljYXRpb25zLXdpdGhvdXQtcGVybWlzc2lvbi5odG1sLWRpc2FibGVkDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMt
d2l0aG91dC1wZXJtaXNzaW9uLmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDApDQorKysgTGF5b3V0
VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtd2l0aG91dC1wZXJtaXNzaW9u
Lmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDM5IEBADQorPCFET0NUWVBF
IGh0bWw+DQorPGh0bWw+DQorPGhlYWQ+DQorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4NCisgICAgICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQ0KKyAgICAgICAgew0KKyAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVz
c2FnZSArICI8YnI+IjsNCisgICAgICAgIH0NCisgICAgICAgIA0KKyAgICAgICAgZnVuY3Rpb24g
cnVuVGVzdHMoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsNCisgICAgICAgICAgICAgICAgLy8gTk8gUEVSTUlTU0lPTiBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ncmFudERlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uKCJmaWxlOi8v
Iik7DQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsN
CisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgaWYgKCF3aW5kb3cud2Via2l0Tm90aWZp
Y2F0aW9ucykgew0KKyAgICAgICAgICAgICAgICBsb2coIkZBSUw6IE5vIHdlYmtpdE5vdGlmaWNh
dGlvbnMgaW50ZXJmYWNlISIpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICANCisgICAg
ICAgICAgICB0cnkgew0KKyAgICAgICAgICAgICAgICB2YXIgTiA9IHdpbmRvdy53ZWJraXROb3Rp
ZmljYXRpb25zLmNyZWF0ZU5vdGlmaWNhdGlvbigiaHR0cDovL2xvY2FsaG9zdC9teV9pY29uLnBu
ZyIsICJOZXcgRS1tYWlsIiwgIk1lZXQgbWUgdG9uaWdodCBhdCA4ISIpOw0KKyAgICAgICAgICAg
ICAgICBOLnNob3coKTsNCisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBTaG91bGQgaGF2ZSB0
aHJvd24gc2VjdXJpdHkgZXhjZXB0aW9uLiIpOw0KKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsN
CisgICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBFeGNlcHRpb24gdGhyb3duLiIpOw0KKyAgICAg
ICAgICAgIH0NCisgICAgICAgIH0NCisgICAgPC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxib2R5Pg0K
KzxwPlNlbmRpbmcgbm90aWZpY2F0aW9ucyB3aXRob3V0IHBlcm1pc3Npb24uLi48L3A+DQorPGRp
diBpZD0icmVzdWx0Ij48L2Rpdj4NCisNCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
DQorcnVuVGVzdHMoKTsNCis8L3NjcmlwdD4NCis8L2JvZHk+DQorPC9odG1sPg0K
</data>
<flag name="review"
          id="16800"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32342</attachid>
            <date>2009-07-06 18:11:18 -0700</date>
            <delta_ts>2009-07-23 10:54:25 -0700</delta_ts>
            <desc>Notifications API, V8 Bindings</desc>
            <filename>wk_v8bindings.diff</filename>
            <type>text/plain</type>
            <size>21080</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDQ1NTc2KQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDIyIEBADQorMjAwOS0wNy0wNiAgSm9obiBHcmVnZyAgPGpvaG5ueWdAZ29v
Z2xlLmNvbT4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAg
ICAgICAgRGVza3RvcCBOb3RpZmljYXRpb25zIEFQSQ0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NDYzDQorDQorICAgICAgICBBZGRzIFY4IGJpbmRp
bmdzIGZvciBkZXNrdG9wIG5vdGlmaWNhdGlvbnMgamF2YXNjcmlwdCBvYmplY3RzLg0KKw0KKyAg
ICAgICAgKiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwDQorICAgICAgICAqIFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhJbmRleC5oDQorICAgICAgICAqIFdlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHANCisgICAgICAgICogV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgNCisg
ICAgICAgICogV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHku
Y3BwDQorICAgICAgICAqIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGlu
Zy5oDQorICAgICAgICAqIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3Vz
dG9tLmNwcA0KKyAgICAgICAgKiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNh
dGlvbkNlbnRlckN1c3RvbS5jcHANCisgICAgICAgICogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcA0KKw0KIDIwMDktMDctMDYgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+DQogDQogICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBGcmFzZXIuDQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAJKHJldmlzaW9uIDQ1NTc0
KQ0KKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAJKHdvcmtpbmcgY29weSkNCkBA
IC0zNzYsNiArMzc2LDExIEBADQogI2luY2x1ZGUgIlY4V29ya2VyTmF2aWdhdG9yLmgiDQogI2Vu
ZGlmDQogDQorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQ0KKyNpbmNsdWRlICJWOE5vdGlmaWNh
dGlvbi5oIg0KKyNpbmNsdWRlICJWOE5vdGlmaWNhdGlvbkNlbnRlci5oIg0KKyNlbmRpZg0KKw0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCiBGdW5jdGlvblRlbXBsYXRlRmFjdG9yeSBWOENsYXNz
SW5kZXg6OkdldEZhY3RvcnkoVjhXcmFwcGVyVHlwZSB0eXBlKQ0KSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhJbmRleC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEluZGV4LmgJKHJldmlzaW9uIDQ1NTc0KQ0KKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRl
eC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNjUsNiArNjUsMTQgQEAgdHlwZWRlZiB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbA0KICNkZWZpbmUgV09SS0VSX05PTk5PREVfV1JBUFBFUl9U
WVBFUyhWKQ0KICNlbmRpZg0KIA0KKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykNCisjZGVmaW5l
IE5PVElGSUNBVElPTlNfTk9OTk9ERV9XUkFQUEVSX1RZUEVTKFYpICAgICAgICAgICAgICAgICAg
ICAgICAgICBcDQorICAgIFYoTk9USUZJQ0FUSU9OLCBOb3RpZmljYXRpb24pICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICBWKE5PVElGSUNBVElPTkNFTlRFUiwg
Tm90aWZpY2F0aW9uQ2VudGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyNlbHNlDQor
I2RlZmluZSBOT1RJRklDQVRJT05TX05PTk5PREVfV1JBUFBFUl9UWVBFUyhWKQ0KKyNlbmRpZg0K
Kw0KICNkZWZpbmUgRE9NX05PREVfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwNCiAgICAgVihBVFRSLCBBdHRyKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgIFYoQ0hBUkFDVEVS
REFUQSwgQ2hhcmFjdGVyRGF0YSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XA0KQEAgLTM2NSw3ICszNzMsOCBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsDQogICAgIFYoWFNMVFBST0NFU1NPUiwgWFNMVFByb2Nlc3NvcikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICBBQ1RJVkVfRE9NX09CSkVDVF9UWVBFUyhW
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCiAgICAgVklERU9f
Tk9OTk9ERV9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcDQotICAgIFdPUktFUl9OT05OT0RFX1dSQVBQRVJfVFlQRVMoVikNCisgICAgV09SS0VS
X05PTk5PREVfV1JBUFBFUl9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcDQorICAgIE5PVElGSUNBVElPTlNfTk9OTk9ERV9XUkFQUEVSX1RZUEVTKFYpDQogDQog
I2lmIEVOQUJMRShEQVRBQkFTRSkNCiAjZGVmaW5lIERPTV9PQkpFQ1RfREFUQUJBU0VfVFlQRVMo
VikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFByb3h5LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvVjhQcm94eS5jcHAJKHJldmlzaW9uIDQ1NTc0KQ0KKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0xNDcxLDYgKzE0NzEsMTUgQEAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4UA0KICAgICB9DQogI2VuZGlmIC8vIFdP
UktFUlMNCiANCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpDQorICAgIGNhc2UgVjhDbGFzc0lu
ZGV4OjpOT1RJRklDQVRJT046IHsNCisgICAgICAgIC8vIFJlc2VydmUgb25lIG1vcmUgaW50ZXJu
YWwgZmllbGQgZm9yIGtlZXBpbmcgZXZlbnQgbGlzdGVuZXJzLg0KKyAgICAgICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2VUZW1wbGF0ZSA9IGRlc2NyaXB0b3ItPkluc3Rh
bmNlVGVtcGxhdGUoKTsNCisgICAgICAgIGluc3RhbmNlVGVtcGxhdGUtPlNldEludGVybmFsRmll
bGRDb3VudChWOEN1c3RvbTo6a05vdGlmaWNhdGlvbkludGVybmFsRmllbGRDb3VudCk7DQorICAg
ICAgICBicmVhazsNCisgICAgfQ0KKyNlbmRpZiAvLyBOT1RJRklDQVRJT05TDQorDQogICAgIC8v
IFRoZSBmb2xsb3dpbmcgb2JqZWN0cyBhcmUgY3JlYXRlZCBmcm9tIEphdmFTY3JpcHQuDQogICAg
IGNhc2UgVjhDbGFzc0luZGV4OjpET01QQVJTRVI6DQogICAgICAgICBkZXNjcmlwdG9yLT5TZXRD
YWxsSGFuZGxlcihVU0VfQ0FMTEJBQ0soRE9NUGFyc2VyQ29uc3RydWN0b3IpKTsNCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQcm94eS5oCShyZXZpc2lvbiA0NTU3NCkNCisrKyBXZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UHJveHkuaAkod29ya2luZyBjb3B5KQ0KQEAgLTg0LDYgKzg0LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsNCiAgICAgY2xhc3MgTm9kZTsNCiAgICAgY2xhc3MgTm9kZUZpbHRlcjsNCiAg
ICAgY2xhc3MgTm9kZUxpc3Q7DQorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQ0KKyAgICBjbGFz
cyBOb3RpZmljYXRpb247DQorICAgIGNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsNCisjZW5kaWYN
CiAgICAgY2xhc3MgUGx1Z2luOw0KICAgICBjbGFzcyBQbHVnaW5BcnJheTsNCiAgICAgY2xhc3Mg
U1ZHRWxlbWVudDsNCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtl
ckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAJKHJldmlzaW9uIDQ1NTc0KQ0KKysrIFdlYkNvcmUv
YmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAkod29ya2luZyBjb3B5
KQ0KQEAgLTM3LDYgKzM3LDggQEANCiANCiAjaW5jbHVkZSAiRE9NQ29yZUV4Y2VwdGlvbi5oIg0K
ICNpbmNsdWRlICJFdmVudC5oIg0KKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCINCisjaW5jbHVk
ZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiDQogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiDQog
I2luY2x1ZGUgIlJhbmdlRXhjZXB0aW9uLmgiDQogI2luY2x1ZGUgIlY4QmluZGluZy5oIg0KQEAg
LTIzNSw2ICsyMzcsMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdvcmtlckNvbnRleHRFeGVj
dQ0KICAgICAgICAgICAgIGNhc2UgVjhDbGFzc0luZGV4OjpXT1JLRVJOQVZJR0FUT1I6DQogICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PFdvcmtlck5hdmlnYXRvcio+KGltcGwpLT5yZWYoKTsN
CiAgICAgICAgICAgICAgICAgYnJlYWs7DQorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQ0KKyAg
ICAgICAgICAgIGNhc2UgVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT05DRU5URVI6DQorICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PE5vdGlmaWNhdGlvbkNlbnRlcio+KGltcGwpLT5yZWYoKTsN
CisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSBWOENsYXNzSW5kZXg6
Ok5PVElGSUNBVElPTjoNCisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9u
Kj4oaW1wbCktPnJlZigpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisjZW5kaWYNCiAgICAg
ICAgICAgICBjYXNlIFY4Q2xhc3NJbmRleDo6RE9NQ09SRUVYQ0VQVElPTjoNCiAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8RE9NQ29yZUV4Y2VwdGlvbio+KGltcGwpLT5yZWYoKTsNCiAgICAg
ICAgICAgICAgICAgYnJlYWs7DQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21CaW5kaW5nLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbUJpbmRpbmcuaAkocmV2aXNpb24gNDU1NzQpDQorKysgV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xMjYsNiAr
MTI2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQg
a1dvcmtlckNvbnRleHRJbnRlcm5hbEZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5h
bEZpZWxkQ291bnQgKyAxOw0KICNlbmRpZg0KIA0KKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykN
CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga05vdGlmaWNhdGlvblJlcXVlc3RDYWNoZUluZGV4
ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsNCisgICAgICAgIHN0YXRp
YyBjb25zdCBpbnQga05vdGlmaWNhdGlvblZpZXdJbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVy
bmFsRmllbGRDb3VudCArIDE7DQorICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtOb3RpZmljYXRp
b25JbnRlcm5hbEZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQg
KyAyOw0KKyNlbmRpZg0KKw0KICAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRE9NV2luZG93Q29u
c29sZUluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsNCiAgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdpbmRvd0hpc3RvcnlJbmRleCA9IGtEZWZhdWx0V3Jh
cHBlckludGVybmFsRmllbGRDb3VudCArIDE7DQogICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtE
T01XaW5kb3dMb2NhdGlvbmJhckluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENv
dW50ICsgMjsNCkBAIC00ODUsNiArNDkxLDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiAgICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29udGV4dENsZWFySW50ZXJ2YWwpOw0KICAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJDb250ZXh0QWRkRXZlbnRMaXN0ZW5lcik7DQogICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKFdvcmtlckNvbnRleHRSZW1vdmVFdmVudExpc3RlbmVyKTsN
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpDQorICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FD
Q0VTU09SX0dFVFRFUihXb3JrZXJDb250ZXh0V2Via2l0Tm90aWZpY2F0aW9ucyk7DQorI2VuZGlm
IC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQ0KKyNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykNCisN
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpDQorICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FD
Q0VTU09SX0dFVFRFUihET01XaW5kb3dXZWJraXROb3RpZmljYXRpb25zKTsNCisNCisgICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soTm90aWZpY2F0aW9uQ2VudGVyQ3JlYXRlSFRNTE5vdGlmaWNhdGlv
bik7DQorICAgICAgICBERUNMQVJFX0NBTExCQUNLKE5vdGlmaWNhdGlvbkNlbnRlckNyZWF0ZU5v
dGlmaWNhdGlvbik7DQorICAgICAgICBERUNMQVJFX0NBTExCQUNLKE5vdGlmaWNhdGlvbkNlbnRl
clJlcXVlc3RQZXJtaXNzaW9uKTsNCisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTm90aWZpY2F0
aW9uQ2VudGVyQ2hlY2tQZXJtaXNzaW9uKTsNCisNCisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlf
QUNDRVNTT1IoTm90aWZpY2F0aW9uT25kaXNwbGF5KTsNCisgICAgICAgIERFQ0xBUkVfUFJPUEVS
VFlfQUNDRVNTT1IoTm90aWZpY2F0aW9uT25lcnJvcik7DQorICAgICAgICBERUNMQVJFX1BST1BF
UlRZX0FDQ0VTU09SKE5vdGlmaWNhdGlvbk9uY2xvc2UpOw0KKw0KKyAgICAgICAgLy9ERUNMQVJF
X0NBTExCQUNLKE5vdGlmaWNhdGlvblNob3cpOw0KKyAgICAgICAgLy9ERUNMQVJFX0NBTExCQUNL
KE5vdGlmaWNhdGlvbkNhbmNlbCk7DQogI2VuZGlmDQogDQogI3VuZGVmIERFQ0xBUkVfSU5ERVhF
RF9BQ0NFU1NfQ0hFQ0sNCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdp
bmRvd0N1c3RvbS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDQ1NTc0KQ0KKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQ0KQEAg
LTg3OSw2ICs4NzksMTUgQEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKERPTVdpbmRvd0NsZWFySW50ZXJ2
YQ0KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOw0KIH0NCiANCisjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpDQorQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd1dlYmtpdE5vdGlmaWNhdGlvbnMp
DQorew0KKyAgICBJTkNfU1RBVFMoTCJET00uRE9NV2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMu
X2dldCIpOw0KKyAgICBET01XaW5kb3cqIGltcCA9IFY4UHJveHk6OmNvbnZlcnRUb05hdGl2ZU9i
amVjdDxET01XaW5kb3c+KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBpbmZvLkhvbGRlcigpKTsN
CisgICAgcmV0dXJuIFY4UHJveHk6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6Tk9U
SUZJQ0FUSU9OQ0VOVEVSLCBpbXAtPndlYmtpdE5vdGlmaWNhdGlvbnMoKSk7DQorfQ0KKyNlbmRp
ZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykNCisNCiBOQU1FRF9BQ0NFU1NfQ0hFQ0soRE9NV2lu
ZG93KQ0KIHsNCiAgICAgQVNTRVJUKFY4Q2xhc3NJbmRleDo6RnJvbUludChkYXRhLT5JbnQzMlZh
bHVlKCkpID09IFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XKTsNCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHANCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3Rv
bS5jcHAJKHJldmlzaW9uIDApDQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3Rp
ZmljYXRpb25DZW50ZXJDdXN0b20uY3BwCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwyNTkgQEAN
CisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLg0KKyAqDQorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQ0KKyAqIG1ldDoNCisg
Kg0KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0DQorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
DQorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQ0KKyAqIGRpc3RyaWJ1dGlvbi4NCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzDQorICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
Lg0KKyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUw0KKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQNCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsDQorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQ0KKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuDQorICovDQorDQorI2luY2x1ZGUgImNvbmZpZy5oIg0KKw0KKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykNCisNCisjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgi
DQorI2luY2x1ZGUgIlY4UHJveHkuaCINCisNCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIN
CisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiDQorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRl
ci5oIg0KKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiDQorI2luY2x1ZGUgIldvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eS5oIg0KKyNpbmNsdWRlICJWOEJpbmRpbmcuaCINCisjaW5jbHVkZSAi
VjhDdXN0b21FdmVudExpc3RlbmVyLmgiDQorI2luY2x1ZGUgIlY4Q3VzdG9tVm9pZENhbGxiYWNr
LmgiDQorI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiDQorDQorbmFtZXNwYWNlIFdlYkNvcmUgew0K
Kw0KK0FDQ0VTU09SX0dFVFRFUihOb3RpZmljYXRpb25PbmRpc3BsYXkpDQorew0KKyAgICBJTkNf
U1RBVFMoTCJET00uTm90aWZpY2F0aW9uLm9uZGlzcGxheS5fZ2V0Iik7DQorICAgIE5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uID0gVjhQcm94eTo6Y29udmVydFRvTmF0aXZlT2JqZWN0PE5vdGlm
aWNhdGlvbj4oVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT04sIGluZm8uSG9sZGVyKCkpOw0KKyAg
ICByZXR1cm4gVjhQcm94eTo6Y29udmVydEV2ZW50TGlzdGVuZXJUb1Y4T2JqZWN0KG5vdGlmaWNh
dGlvbi0+b25kaXNwbGF5KCkpOw0KK30NCisNCitBQ0NFU1NPUl9TRVRURVIoTm90aWZpY2F0aW9u
T25kaXNwbGF5KSANCit7DQorICAgIElOQ19TVEFUUyhMIkRPTS5Ob3RpZmljYXRpb24ub25kaXNw
bGF5Ll9zZXQiKTsNCisgICAgTm90aWZpY2F0aW9uKiBub3RpZiA9IFY4UHJveHk6OmNvbnZlcnRU
b05hdGl2ZU9iamVjdDxOb3RpZmljYXRpb24+KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBp
bmZvLkhvbGRlcigpKTsNCisgICAgVjhFdmVudExpc3RlbmVyKiBvbGRMaXN0ZW5lciA9IHN0YXRp
Y19jYXN0PFY4RXZlbnRMaXN0ZW5lcio+KG5vdGlmLT5vbmRpc3BsYXkoKSk7DQorICAgIGlmICh2
YWx1ZS0+SXNOdWxsKCkpIHsNCisgICAgICAgIGlmIChvbGRMaXN0ZW5lcikgew0KKyAgICAgICAg
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvbGRWOExpc3RlbmVyID0gb2xkTGlzdGVuZXItPmdl
dExpc3RlbmVyT2JqZWN0KCk7DQorICAgICAgICAgICAgcmVtb3ZlSGlkZGVuRGVwZW5kZW5jeShp
bmZvLkhvbGRlcigpLCBvbGRWOExpc3RlbmVyLCBWOEN1c3RvbTo6a05vdGlmaWNhdGlvblJlcXVl
c3RDYWNoZUluZGV4KTsNCisgICAgICAgIH0NCisNCisgICAgICAgIC8vIENsZWFyIHRoZSBsaXN0
ZW5lcg0KKyAgICAgICAgbm90aWYtPnNldE9uZGlzcGxheSgwKTsNCisgICAgfSBlbHNlIHsNCisg
ICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcjsNCisgICAgICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBub3RpZi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
Ow0KKyAgICAgICAgaWYgKGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKQ0KKyAgICAgICAgICAg
IGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpLT5zY3JpcHQo
KS0+cHJveHkoKS0+ZmluZE9yQ3JlYXRlRXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVj
dD46OkNhc3QodmFsdWUpLCBmYWxzZSwgZmFsc2UpOw0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAg
ICAgIGxpc3RlbmVyID0gVjhQcm94eTo6cmV0cmlldmUoY29udGV4dCktPmZpbmRPckNyZWF0ZVY4
RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpLCBmYWxzZSk7
DQorDQorICAgICAgICBpZiAobGlzdGVuZXIpIHsNCisgICAgICAgICAgICBpZiAob2xkTGlzdGVu
ZXIpIHsNCisgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9sZFY4TGlzdGVu
ZXIgPSBvbGRMaXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsNCisgICAgICAgICAgICAgICAg
cmVtb3ZlSGlkZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCBvbGRWOExpc3RlbmVyLCBWOEN1
c3RvbTo6a05vdGlmaWNhdGlvblJlcXVlc3RDYWNoZUluZGV4KTsNCisgICAgICAgICAgICB9DQor
ICAgIA0KKyAgICAgICAgICAgIG5vdGlmLT5zZXRPbmRpc3BsYXkobGlzdGVuZXIpOw0KKyAgICAg
ICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgdmFsdWUsIFY4Q3Vz
dG9tOjprTm90aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5kZXgpOw0KKyAgICAgICAgfQ0KKyAgICB9
DQorfQ0KKw0KK0FDQ0VTU09SX0dFVFRFUihOb3RpZmljYXRpb25PbmVycm9yKQ0KK3sNCisgICAg
SU5DX1NUQVRTKEwiRE9NLk5vdGlmaWNhdGlvbi5vbmVycm9yLl9nZXQiKTsNCisgICAgTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24gPSBWOFByb3h5Ojpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8Tm90
aWZpY2F0aW9uPihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwgaW5mby5Ib2xkZXIoKSk7DQor
ICAgIHJldHVybiBWOFByb3h5Ojpjb252ZXJ0RXZlbnRMaXN0ZW5lclRvVjhPYmplY3Qobm90aWZp
Y2F0aW9uLT5vbmVycm9yKCkpOw0KK30NCisNCitBQ0NFU1NPUl9TRVRURVIoTm90aWZpY2F0aW9u
T25lcnJvcikNCit7DQorICAgIElOQ19TVEFUUyhMIkRPTS5Ob3RpZmljYXRpb24ub25lcnJvci5f
c2V0Iik7DQorICAgIE5vdGlmaWNhdGlvbiogbm90aWYgPSBWOFByb3h5Ojpjb252ZXJ0VG9OYXRp
dmVPYmplY3Q8Tm90aWZpY2F0aW9uPihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwgaW5mby5I
b2xkZXIoKSk7DQorICAgIFY4RXZlbnRMaXN0ZW5lciogb2xkTGlzdGVuZXIgPSBzdGF0aWNfY2Fz
dDxWOEV2ZW50TGlzdGVuZXIqPihub3RpZi0+b25lcnJvcigpKTsNCisgICAgaWYgKHZhbHVlLT5J
c051bGwoKSkgew0KKyAgICAgICAgaWYgKG9sZExpc3RlbmVyKSB7DQorICAgICAgICAgICAgdjg6
OkxvY2FsPHY4OjpPYmplY3Q+IG9sZFY4TGlzdGVuZXIgPSBvbGRMaXN0ZW5lci0+Z2V0TGlzdGVu
ZXJPYmplY3QoKTsNCisgICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9s
ZGVyKCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjprTm90aWZpY2F0aW9uUmVxdWVzdENhY2hl
SW5kZXgpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgLy8gQ2xlYXIgdGhlIGxpc3RlbmVyDQor
ICAgICAgICBub3RpZi0+c2V0T25lcnJvcigwKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIFJl
ZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcjsNCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQgPSBub3RpZi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOw0KKyAgICAg
ICAgaWYgKGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKQ0KKyAgICAgICAgICAgIGxpc3RlbmVy
ID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpLT5zY3JpcHQoKS0+cHJveHko
KS0+ZmluZE9yQ3JlYXRlRXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3Qo
dmFsdWUpLCBmYWxzZSwgZmFsc2UpOw0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgIGxpc3Rl
bmVyID0gVjhQcm94eTo6cmV0cmlldmUoY29udGV4dCktPmZpbmRPckNyZWF0ZVY4RXZlbnRMaXN0
ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpLCBmYWxzZSk7DQorICAgICAg
ICANCisgICAgICAgIGlmIChsaXN0ZW5lcikgew0KKyAgICAgICAgICAgIGlmIChvbGRMaXN0ZW5l
cikgew0KKyAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0ZW5l
ciA9IG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOw0KKyAgICAgICAgICAgICAgICBy
ZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIG9sZFY4TGlzdGVuZXIsIFY4Q3Vz
dG9tOjprTm90aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5kZXgpOw0KKyAgICAgICAgICAgIH0NCisN
CisgICAgICAgICAgICBub3RpZi0+c2V0T25lcnJvcihsaXN0ZW5lcik7DQorICAgICAgICAgICAg
Y3JlYXRlSGlkZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCB2YWx1ZSwgVjhDdXN0b206OmtO
b3RpZmljYXRpb25SZXF1ZXN0Q2FjaGVJbmRleCk7DQorICAgICAgICB9DQorICAgIH0NCit9DQor
DQorQUNDRVNTT1JfR0VUVEVSKE5vdGlmaWNhdGlvbk9uY2xvc2UpIA0KK3sNCisgICAgSU5DX1NU
QVRTKEwiRE9NLk5vdGlmaWNhdGlvbi5vbmNsb3NlLl9nZXQiKTsNCisgICAgTm90aWZpY2F0aW9u
KiBub3RpZmljYXRpb24gPSBWOFByb3h5Ojpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0
aW9uPihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwgaW5mby5Ib2xkZXIoKSk7DQorICAgIHJl
dHVybiBWOFByb3h5Ojpjb252ZXJ0RXZlbnRMaXN0ZW5lclRvVjhPYmplY3Qobm90aWZpY2F0aW9u
LT5vbmNsb3NlKCkpOw0KK30NCisNCitBQ0NFU1NPUl9TRVRURVIoTm90aWZpY2F0aW9uT25jbG9z
ZSkNCit7DQorICAgIElOQ19TVEFUUyhMIkRPTS5Ob3RpZmljYXRpb24ub25lcnJvci5fc2V0Iik7
DQorICAgIE5vdGlmaWNhdGlvbiogbm90aWYgPSBWOFByb3h5Ojpjb252ZXJ0VG9OYXRpdmVPYmpl
Y3Q8Tm90aWZpY2F0aW9uPihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwgaW5mby5Ib2xkZXIo
KSk7DQorICAgIFY4RXZlbnRMaXN0ZW5lciogb2xkTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOEV2
ZW50TGlzdGVuZXIqPihub3RpZi0+b25jbG9zZSgpKTsNCisgICAgaWYgKHZhbHVlLT5Jc051bGwo
KSkgew0KKyAgICAgICAgaWYgKG9sZExpc3RlbmVyKSB7DQorICAgICAgICAgICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IG9sZFY4TGlzdGVuZXIgPSBvbGRMaXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmpl
Y3QoKTsNCisgICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCks
IG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjprTm90aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5kZXgp
Ow0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgLy8gQ2xlYXIgdGhlIGxpc3RlbmVyDQorICAgICAg
ICBub3RpZi0+c2V0T25jbG9zZSgwKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIFJlZlB0cjxF
dmVudExpc3RlbmVyPiBsaXN0ZW5lcjsNCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQgPSBub3RpZi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOw0KKyAgICAgICAgaWYg
KGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKQ0KKyAgICAgICAgICAgIGxpc3RlbmVyID0gc3Rh
dGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpLT5zY3JpcHQoKS0+cHJveHkoKS0+Zmlu
ZE9yQ3JlYXRlRXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUp
LCBmYWxzZSwgZmFsc2UpOw0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgIGxpc3RlbmVyID0g
VjhQcm94eTo6cmV0cmlldmUoY29udGV4dCktPmZpbmRPckNyZWF0ZVY4RXZlbnRMaXN0ZW5lcih2
ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpLCBmYWxzZSk7DQorICAgICAgICANCisg
ICAgICAgIGlmIChsaXN0ZW5lcikgew0KKyAgICAgICAgICAgIGlmIChvbGRMaXN0ZW5lcikgew0K
KyAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0ZW5lciA9IG9s
ZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOw0KKyAgICAgICAgICAgICAgICByZW1vdmVI
aWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjpr
Tm90aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5kZXgpOw0KKyAgICAgICAgICAgIH0NCisNCisgICAg
ICAgICAgICBub3RpZi0+c2V0T25jbG9zZShsaXN0ZW5lcik7DQorICAgICAgICAgICAgY3JlYXRl
SGlkZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCB2YWx1ZSwgVjhDdXN0b206OmtOb3RpZmlj
YXRpb25SZXF1ZXN0Q2FjaGVJbmRleCk7DQorICAgICAgICB9DQorICAgIH0NCit9DQorDQorQ0FM
TEJBQ0tfRlVOQ19ERUNMKE5vdGlmaWNhdGlvbkNlbnRlckNyZWF0ZUhUTUxOb3RpZmljYXRpb24p
DQorew0KKyAgICBJTkNfU1RBVFMoTCJET00uTm90aWZpY2F0aW9uQ2VudGVyLkNyZWF0ZUhUTUxO
b3RpZmljYXRpb24oKSIpOw0KKyAgICBOb3RpZmljYXRpb25DZW50ZXIqIG5vdGlmSW50ZXJmYWNl
ID0gVjhQcm94eTo6Y29udmVydFRvTmF0aXZlT2JqZWN0PE5vdGlmaWNhdGlvbkNlbnRlcj4oVjhD
bGFzc0luZGV4OjpOT1RJRklDQVRJT05DRU5URVIsIGFyZ3MuSG9sZGVyKCkpOw0KKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gbm90aWZJbnRlcmZhY2UtPmNvbnRleHQoKTsN
CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7DQorICAgIFN0cmluZyB1cmwgPSB0b1dlYkNvcmVT
dHJpbmcoYXJnc1swXSk7DQorICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmID0gTm90aWZp
Y2F0aW9uOjpjcmVhdGUodXJsLCBjb250ZXh0LCBlYywgbm90aWZJbnRlcmZhY2UtPnByb3ZpZGVy
KCkpOw0KKw0KKyAgICBpZiAoZWMpDQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7DQor
ICAgIA0KKyAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpIA0KKyAgICAgICAgcmV0
dXJuIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6VG9WOE9iamVjdChWOENsYXNzSW5kZXg6
Ok5PVElGSUNBVElPTiwgbm90aWYuZ2V0KCkpOw0KKyAgICBlbHNlDQorICAgICAgICByZXR1cm4g
VjhQcm94eTo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT04sIG5v
dGlmLmdldCgpKTsNCit9DQorDQorQ0FMTEJBQ0tfRlVOQ19ERUNMKE5vdGlmaWNhdGlvbkNlbnRl
ckNyZWF0ZU5vdGlmaWNhdGlvbikNCit7DQorICAgIElOQ19TVEFUUyhMIkRPTS5Ob3RpZmljYXRp
b25DZW50ZXIuQ3JlYXRlTm90aWZpY2F0aW9uKCkiKTsNCisgICAgTm90aWZpY2F0aW9uQ2VudGVy
KiBub3RpZkludGVyZmFjZSA9IFY4UHJveHk6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxOb3RpZmlj
YXRpb25DZW50ZXI+KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OQ0VOVEVSLCBhcmdzLkhvbGRl
cigpKTsNCisgICAgTm90aWZpY2F0aW9uQ29udGVudHMgY29udGVudHModG9XZWJDb3JlU3RyaW5n
KGFyZ3NbMF0pLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1sxXSksIHRvV2ViQ29yZVN0cmluZyhhcmdz
WzJdKSk7DQorICAgIA0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gbm90
aWZJbnRlcmZhY2UtPmNvbnRleHQoKTsNCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7DQorICAg
IFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmID0gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29udGVu
dHMsIGNvbnRleHQsIGVjLCBub3RpZkludGVyZmFjZS0+cHJvdmlkZXIoKSk7DQorDQorICAgIGlm
IChlYykgDQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7DQorDQorICAgIGlmIChjb250
ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkgDQorICAgICAgICByZXR1cm4gV29ya2VyQ29udGV4dEV4
ZWN1dGlvblByb3h5OjpUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBub3Rp
Zi5nZXQoKSk7DQorICAgIGVsc2UNCisgICAgICAgIHJldHVybiBWOFByb3h5Ojpjb252ZXJ0VG9W
OE9iamVjdChWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwgbm90aWYuZ2V0KCkpOw0KK30NCisN
CitDQUxMQkFDS19GVU5DX0RFQ0woTm90aWZpY2F0aW9uQ2VudGVyQ2hlY2tQZXJtaXNzaW9uKQ0K
K3sNCisgICAgSU5DX1NUQVRTKEwiRE9NLk5vdGlmaWNhdGlvbkNlbnRlci5DaGVja1Blcm1pc3Np
b24oKSIpOw0KKyAgICBOb3RpZmljYXRpb25DZW50ZXIqIG5vdGlmSW50ZXJmYWNlID0gVjhQcm94
eTo6Y29udmVydFRvTmF0aXZlT2JqZWN0PE5vdGlmaWNhdGlvbkNlbnRlcj4oVjhDbGFzc0luZGV4
OjpOT1RJRklDQVRJT05DRU5URVIsIGFyZ3MuSG9sZGVyKCkpOw0KKyAgICBpbnQgcGVybWlzc2lv
biA9IG5vdGlmSW50ZXJmYWNlLT5jaGVja1Blcm1pc3Npb24oKTsNCisgICAgDQorICAgIHJldHVy
biB2ODo6SW50ZWdlcjo6TmV3KHBlcm1pc3Npb24pOw0KK30NCisNCitDQUxMQkFDS19GVU5DX0RF
Q0woTm90aWZpY2F0aW9uQ2VudGVyUmVxdWVzdFBlcm1pc3Npb24pDQorew0KKyAgICBJTkNfU1RB
VFMoTCJET00uTm90aWZpY2F0aW9uQ2VudGVyLlJlcXVlc3RQZXJtaXNzaW9uKCkiKTsNCisgICAg
Tm90aWZpY2F0aW9uQ2VudGVyKiBub3RpZkludGVyZmFjZSA9IFY4UHJveHk6OmNvbnZlcnRUb05h
dGl2ZU9iamVjdDxOb3RpZmljYXRpb25DZW50ZXI+KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9O
Q0VOVEVSLCBhcmdzLkhvbGRlcigpKTsNCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCA9IG5vdGlmSW50ZXJmYWNlLT5jb250ZXh0KCk7DQorDQorICAgIC8vIHJlcXVlc3Rpbmcg
cGVybWlzc2lvbiBpcyBvbmx5IHZhbGlkIGZyb20gYSBwYWdlIGNvbnRleHQuDQorICAgIGlmIChj
b250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkNCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKE5P
VF9TVVBQT1JURURfRVJSKTsNCisgICAgIA0KKyAgICBSZWZQdHI8VjhDdXN0b21Wb2lkQ2FsbGJh
Y2s+IGNhbGxiYWNrOw0KKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDApIHsNCisgICAgICAgIGlm
ICghYXJnc1swXS0+SXNPYmplY3QoKSkgew0KKyAgICAgICAgICAgIFY4UHJveHk6OnRocm93RXJy
b3IoVjhQcm94eTo6VHlwZUVycm9yLCAiQ2FsbGJhY2sgbXVzdCBiZSBvZiB2YWxpZCB0eXBlLiIp
Ow0KKyAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7DQorICAgICAgICB9DQorICAg
ICAgICBjYWxsYmFjayA9IFY4Q3VzdG9tVm9pZENhbGxiYWNrOjpjcmVhdGUoYXJnc1swXSwgVjhQ
cm94eTo6cmV0cmlldmVGcmFtZSgpKTsNCisgICAgfQ0KKw0KKyAgICBub3RpZkludGVyZmFjZS0+
cmVxdWVzdFBlcm1pc3Npb24oY2FsbGJhY2sucmVsZWFzZSgpKTsNCisgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsNCit9DQorDQorLypDQUxMQkFDS19GVU5DX0RFQ0woTm90aWZpY2F0aW9uU2hv
dykgDQorew0KKyAgICBJTkNfU1RBVFMoTCJET00uTm90aWZpY2F0aW9uLlNob3coKSIpOw0KKyAg
ICBOb3RpZmljYXRpb24qIG5vdGlmID0gVjhQcm94eTo6Y29udmVydFRvTmF0aXZlT2JqZWN0PE5v
dGlmaWNhdGlvbj4oVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT04sIGFyZ3MuSG9sZGVyKCkpOw0K
KyAgICBub3RpZi0+c2hvdygpOw0KKw0KKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOw0KK30N
CisNCitDQUxMQkFDS19GVU5DX0RFQ0woTm90aWZpY2F0aW9uQ2FuY2VsKSANCit7DQorICAgIElO
Q19TVEFUUyhMIkRPTS5Ob3RpZmljYXRpb24uQ2FuY2VsKCkiKTsNCisgICAgTm90aWZpY2F0aW9u
KiBub3RpZiA9IFY4UHJveHk6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxOb3RpZmljYXRpb24+KFY4
Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBhcmdzLkhvbGRlcigpKTsNCisgICAgbm90aWYtPmNh
bmNlbCgpOw0KKw0KKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOw0KK30qLw0KKw0KK30gIC8v
IG5hbWVzcGFjZSBXZWJDb3JlDQorDQorI2VuZGlmICAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykN
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20u
Y3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gNDU1NzQpDQorKysgV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTky
LDYgKzkyLDE1IEBAIEFDQ0VTU09SX1NFVFRFUihXb3JrZXJDb250ZXh0T25tZXNzYWdlKQ0KICAg
ICB9DQogfQ0KIA0KKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykNCitBQ0NFU1NPUl9HRVRURVIo
V29ya2VyQ29udGV4dFdlYmtpdE5vdGlmaWNhdGlvbnMpDQorew0KKyAgICBJTkNfU1RBVFMoTCJE
T00uV29ya2VyQ29udGV4dC53ZWJraXROb3RpZmljYXRpb25zLl9nZXQiKTsNCisgICAgV29ya2Vy
Q29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4UHJveHk6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxX
b3JrZXJDb250ZXh0PihWOENsYXNzSW5kZXg6OldPUktFUkNPTlRFWFQsIGluZm8uSG9sZGVyKCkp
Ow0KKyAgICByZXR1cm4gV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpUb1Y4T2JqZWN0KFY4
Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OQ0VOVEVSLCB3b3JrZXJDb250ZXh0LT53ZWJraXROb3Rp
ZmljYXRpb25zKCkpOw0KK30NCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpDQorDQog
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFNldFRpbWVvdXRPckludGVydmFsKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MsIGJvb2wgc2luZ2xlU2hvdCkNCiB7DQogICAgIFdvcmtlckNvbnRleHQqIHdv
cmtlckNvbnRleHQgPSBWOFByb3h5Ojpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8V29ya2VyQ29udGV4
dD4oVjhDbGFzc0luZGV4OjpXT1JLRVJDT05URVhULCBhcmdzLkhvbGRlcigpKTs=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32343</attachid>
            <date>2009-07-06 18:14:09 -0700</date>
            <delta_ts>2009-07-06 18:18:59 -0700</delta_ts>
            <desc>Notifications API, Core &amp; JSC Bindings</desc>
            <filename>wk_core.diff</filename>
            <type>text/plain</type>
            <size>91025</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ1NTc2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDctMDYgIEpvaG4gR3Jl
Z2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRGVza3RvcCBOb3RpZmljYXRpb25zIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0NjMKKworICAgICAgICBBZGRz
IEVOQUJMRV9OT1RJRklDQVRJT04gZmxhZy4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDA5
LTA3LTA2ICBBZGEgQ2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyIGFuZCBNYXJrIFJvd2UuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24g
NDU1NzQpCisrKyBKYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBFTkFCTEVfRklMVEVSUyA9
IDsKIEVOQUJMRV9HRU9MT0NBVElPTiA9IDsKIEVOQUJMRV9JQ09OREFUQUJBU0UgPSBFTkFCTEVf
SUNPTkRBVEFCQVNFOwogRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIgPSBFTkFCTEVfSkFWQVND
UklQVF9ERUJVR0dFUjsKK0VOQUJMRV9OT1RJRklDQVRJT05TID0gOwogRU5BQkxFX09GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUyA9IEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7CiBFTkFC
TEVfU1ZHID0gRU5BQkxFX1NWRzsKIEVOQUJMRV9TVkdfQU5JTUFUSU9OID0gRU5BQkxFX1NWR19B
TklNQVRJT047CkBAIC01MSw0ICs1Miw0IEBAIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktF
UlM7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9Y
U0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfRE9NX1NUT1JB
R0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09O
REFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX09GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAk
KEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChF
TkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NW
R19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQo
RU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxF
XzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RBVEFC
QVNFKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VP
TE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUikgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NW
R19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdf
Rk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChF
TkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDQ1
NTc0KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxNCw2ICs1MTQsMTAgQEAKICNkZWZpbmUgRU5BQkxFX0dFT0xPQ0FUSU9OIDAKICNlbmRpZgog
CisjaWYgIWRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpCisjZGVmaW5lIEVOQUJMRV9OT1RJ
RklDQVRJT05TIDAKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX1RFWFRfQ0FSRVQpCiAj
ZGVmaW5lIEVOQUJMRV9URVhUX0NBUkVUIDEKICNlbmRpZgpJbmRleDogV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ1NTc2KQorKysg
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMDUgQEAKKzIwMDkt
MDctMDYgIEpvaG4gR3JlZ2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVza3RvcCBOb3RpZmljYXRpb25zIEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0NjMK
KworICAgICAgICBBZGRzIGFuIGltcGxlbWVudGF0aW9uIG9mIGRlc2t0b3Agbm90aWZpY2F0aW9u
cywgYmVoaW5kIHRoZSBjb21waWxlLXRpbWUKKyAgICAgICAgZmxhZyBFTkFCTEUoTk9USUZJQ0FU
SU9OUykuICBUaGlzIGNvZGUgc2ltcGx5IHJlbGF5cyBjYWxscyBvbiB0aGUgSmF2YVNjcmlwdAor
ICAgICAgICBBUEkgdGhyb3VnaCBhIE5vdGlmaWNhdGlvblByb3ZpZGVyIGludGVyZmFjZSwgd2hp
Y2ggbXVzdCBwcm92aWRlIHRoZSBzZXJ2aWNlcworICAgICAgICB0byBhY3R1YWxseSBub3RpZnkg
dGhlIHVzZXIgYW5kIG1hbmFnZSB0aGUgZGVza3RvcC4gIFRoaXMgcHJvdmlkZXIgaXMgaW5qZWN0
ZWQKKyAgICAgICAgaW50byBXZWJLaXQgdGhyb3VnaCB0aGUgQ2hyb21lQ2xpZW50IGZvciBub3Jt
YWwgcGFnZSBjb250ZXh0cyBhbmQgdGhyb3VnaCB0aGUKKyAgICAgICAgV29ya2VyVGhyZWFkIGZv
ciB3b3JrZXIgY29udGV4dHMuCisKKyAgICAgICAgQSBwZXJtaXNzaW9ucyBBUEkgaXMgZGVmaW5l
ZCBvbiBhIHBlci1vcmlnaW4gYmFzaXMsIHdoaWNoIGFsbG93cyBhIHdlYiBwYWdlCisgICAgICAg
IHRvIGNoZWNrIGlmIGl0cyBvcmlnaW4gaXMgYWxsb3dlZCB0byBzaG93IGRlc2t0b3Agbm90aWZp
Y2F0aW9ucywgYW5kIHRvIHJlcXVlc3QKKyAgICAgICAgcGVybWlzc2lvbiBmb3IgaXRzIG9yaWdp
bi4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmVDb21tb24u
dnNwcm9wczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6Om5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkpTTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVIVE1MTm90aWZpY2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVOb3RpZmljYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SlNOb3RpZmljYXRpb25DZW50ZXI6OmNoZWNrUGVybWlzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpKU05vdGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVzdFBlcm1pc3Np
b24pOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkVtcHR5Q2hyb21lQ2xpZW50Ojpub3RpZmljYXRpb25Qcm92aWRlcik6CisgICAgICAgICogbm90
aWZpY2F0aW9uczogQWRkZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjpjYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkaXNw
YXRjaERpc3BsYXlFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRpc3Bh
dGNoRXJyb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRpc3BhdGNo
Q2xvc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmFkZEV2ZW50TGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpyZW1vdmVFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRpc3BsYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OmNsb3NlKToKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbjo6aXNIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bjo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y29udGVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpvbmRpc3BsYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjpzZXRPbmRpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uOjpvbmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2V0T25l
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246Om9uY2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzZXRPbmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb246OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNlbnRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVy
OjpOb3RpZmljYXRpb25DZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2Vu
dGVyOjpjaGVja1Blcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2Vu
dGVyOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25DZW50ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0
ZUhUTUxOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVy
OjpjcmVhdGVOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2Vu
dGVyOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNlbnRlcjo6cHJv
dmlkZXIpOgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbDog
QWRkZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250ZW50cy5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNvbnRlbnRzOjpOb3RpZmljYXRp
b25Db250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250ZW50czo6aWNv
bik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250ZW50czo6dGl0bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udGVudHM6OmJvZHkpOgorICAgICAgICAqIG5v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb25Qcm92aWRlcjo6KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByb3ZpZGVyOjp+Tm90aWZpY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAqIHBhZ2UvQ2hy
b21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6bm90aWZpY2F0aW9uUHJvdmlkZXIp
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQu
aDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6d2Via2l0Tm90aWZp
Y2F0aW9ucyk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RP
TVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6On5Xb3Jr
ZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OndlYmtpdE5vdGlm
aWNhdGlvbnMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyQ29udGV4dC5pZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJl
YWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6Z2V0Tm90aWZpY2F0aW9uUHJv
dmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjpzZXROb3RpZmljYXRpb25Q
cm92aWRlcik6CisKIDIwMDktMDctMDYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5jcHAJKHJldmlzaW9uIDQ1NTc0KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIsOCBAQAogI2luY2x1ZGUgIkpTTm9kZUl0ZXJhdG9y
LmNwcCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmNwcCIKICNpbmNsdWRlICJKU05vdGF0aW9uLmNw
cCIKKyNpbmNsdWRlICJKU05vdGlmaWNhdGlvbkNlbnRlci5jcHAiCisjaW5jbHVkZSAiSlNOb3Rp
ZmljYXRpb24uY3BwIgogI2luY2x1ZGUgIkpTT3ZlcmZsb3dFdmVudC5jcHAiCiAjaW5jbHVkZSAi
SlNQbHVnaW4uY3BwIgogI2luY2x1ZGUgIkpTUGx1Z2luQXJyYXkuY3BwIgpJbmRleDogV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQkocmV2aXNpb24gNDU1NzQpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJDb3Jl
KS9odG1sIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3RvciBcCiAgICAgJChXZWJDb3JlKS9sb2Fk
ZXIvYXBwY2FjaGUgXAorICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucyBcCiAgICAgJChXZWJD
b3JlKS9wYWdlIFwKICAgICAkKFdlYkNvcmUpL3BsdWdpbnMgXAogICAgICQoV2ViQ29yZSkvc3Rv
cmFnZSBcCkBAIC0xODgsNiArMTg5LDggQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgTm9kZUl0ZXJh
dG9yIFwKICAgICBOb2RlTGlzdCBcCiAgICAgTm90YXRpb24gXAorICAgIE5vdGlmaWNhdGlvbiBc
CisgICAgTm90aWZpY2F0aW9uQ2VudGVyIFwKICAgICBPdmVyZmxvd0V2ZW50IFwKICAgICBQbHVn
aW4gXAogICAgIFBsdWdpbkFycmF5IFwKQEAgLTY3OCw3ICs2ODEsNyBAQCBlbmRpZgogIyBKYXZh
U2NyaXB0IGJpbmRpbmdzCiAKIEdFTkVSQVRFX0JJTkRJTkdTID0gcGVybCAtSSAkKFdlYkNvcmUp
L2JpbmRpbmdzL3NjcmlwdHMgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJp
bmRpbmdzLnBsIFwKLSAgICAtLWluY2x1ZGUgZG9tIC0taW5jbHVkZSBodG1sIC0taW5jbHVkZSBj
c3MgLS1pbmNsdWRlIHBhZ2UgLS1pbmNsdWRlIHhtbCAtLWluY2x1ZGUgc3ZnIC0tb3V0cHV0RGly
IC4KKyAgICAtLWluY2x1ZGUgZG9tIC0taW5jbHVkZSBodG1sIC0taW5jbHVkZSBjc3MgLS1pbmNs
dWRlIHBhZ2UgLS1pbmNsdWRlIG5vdGlmaWNhdGlvbnMgLS1pbmNsdWRlIHhtbCAtLWluY2x1ZGUg
c3ZnIC0tb3V0cHV0RGlyIC4KIAogR0VORVJBVEVfQklORElOR1NfU0NSSVBUUyA9IFwKICAgICBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gXApJbmRleDogV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA0
NTU3NCkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDYg
KzI1LDcgQEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUgXAogCS1J
JChzcmNkaXIpL1dlYkNvcmUvbG9hZGVyL2ljb24gXAorCS1JJChzcmNkaXIpL1dlYkNvcmUvbm90
aWZpY2F0aW9ucyBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9wYWdlIFwKIAktSSQoc3JjZGlyKS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uIFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL3BsYXRmb3JtIFwK
QEAgLTIzMSw2ICsyMzIsOCBAQCBJRExfQklORElOR1MgKz0gXAogCVdlYkNvcmUvaHRtbC9Wb2lk
Q2FsbGJhY2suaWRsIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlk
bCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5pZGwgXAorCVdlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBcCiAJV2ViQ29yZS9wYWdlL0JhckluZm8uaWRsIFwK
IAlXZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwgXAogCVdlYkNvcmUvcGFnZS9Db29yZGluYXRlcy5p
ZGwgXApAQCAtMjQyOCw2ICsyNDMxLDI0IEBAIHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR2VvbG9jYXRpb25TZXJ2aWNlR3RrLmgKIGVuZGlmICMgRU5EIEVO
QUJMRV9HRU9MT0NBVElPTgogCisjIC0tLS0KKyMgTm90aWZpY2F0aW9ucyBzdXBwb3J0CisjIC0t
LS0KK2lmIEVOQUJMRV9OT1RJRklDQVRJT05TCitGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCAr
PSBFTkFCTEVfTk9USUZJQ0FUSU9OUz0xCisKK3dlYmNvcmVfY3BwZmxhZ3MgKz0gXAorCS1ERU5B
QkxFX05PVElGSUNBVElPTlM9MQorCit3ZWJjb3JlX3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmggXAorCVdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIu
Y3BwIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggXAorCVdl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Qcm92aWRlci5oIFwKKwlXZWJDb3JlL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udGVudHMuaAorCitlbmRpZiAjIEVORCBFTkFCTEVf
Tk9USUZJQ0FUSU9OUwogCiAjIC0tLS0KICMgU1ZHIFN1cHBvcnQKSW5kZXg6IFdlYkNvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gNDU1NzQp
CisrKyBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIEVOQUJMRV9GSUxURVJTID0gOwogRU5BQkxFX0dF
T0xPQ0FUSU9OID0gOwogRU5BQkxFX0lDT05EQVRBQkFTRSA9IEVOQUJMRV9JQ09OREFUQUJBU0U7
CiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VS
OworRU5BQkxFX05PVElGSUNBVElPTlMgPSA7CiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJ
T05TID0gRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUzsKIEVOQUJMRV9TVkcgPSBFTkFC
TEVfU1ZHOwogRU5BQkxFX1NWR19BTklNQVRJT04gPSBFTkFCTEVfU1ZHX0FOSU1BVElPTjsKQEAg
LTUyLDQgKzUzLDUgQEAgRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJMRV9Y
UEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRV
UkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNT
QUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfRE9N
X1NUT1JBR0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX09G
RkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFU
SU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5H
UykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5B
QkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktF
UlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQo
RU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxF
X0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5B
QkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0Up
ICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQo
RU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9T
VkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JK
Q19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpF
Q1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5B
QkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKKwpJbmRleDogV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA0NTU3NCkKKysrIFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcg
KzY3LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRv
b2wiDQotCQkJCUNvbW1hbmRMaW5lPSJta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZx
dW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gwRDsmI3gw
QTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
XEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVM
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFzbSZxdW90OyYj
eDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDIm
Z3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMm
cXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBBO21r
ZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9y
d2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05V
TCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjb25maWcuaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW5c
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caW5zcGVjdG9yXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXBwY2FjaGVcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hp
dmVcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVy
XGljb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caGlzdG9y
eVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XGNm
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cY3NzXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlvblwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxjZlwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1wqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGlj
c1x0cmFuc2Zvcm1zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXGdyYXBoaWNzXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZVwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0XCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpblwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29y
a1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cc3FsXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXGNhaXJvXGNhaXJvXHNyY1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxiaW5kaW5nc1xqc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwYWdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBhZ2VcYW5pbWF0aW9uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBhZ2Vcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGJyaWRnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbHVn
aW5zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNc
d2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmlu
Z1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdc
c3R5bGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGlu
Z1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxkb21cKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ceG1sXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxzdG9yYWdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtlcnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXGJp
bmRpbmdzJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVy
c1xydW50aW1lXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXG1hc21cKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilc
Li5cRm9yd2FyZGluZ0hlYWRlcnNccGNyZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xw
cm9maWxlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3JlY1wqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVy
c1x3cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZc
dW5pY29kZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVc
aWN1XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYj
eDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJl
c291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAvcyAvZXhjbHVk
ZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXGluc3BlY3Rvclxmcm9udC1l
bmRcKiZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNc
aW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9qZWN0RGly
KVwuLlxFbmdsaXNoLmxwcm9qXGxvY2FsaXplZFN0cmluZ3MuanMmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4MEQ7JiN4
MEE7JiN4MEQ7JiN4MEE7aWYgZXhpc3QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJ1aWxkZmFp
bGVkJnF1b3Q7IGRlbCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQmcXVvdDsm
I3gwRDsmI3gwQTsiDQorCQkJCUNvbW1hbmRMaW5lPSJta2RpciAyJmd0O05VTCAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZn
dDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVycyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsm
I3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO21rZGly
IDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2Fy
ZGluZ0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFz
bSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBB
O21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVc
Rm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05V
TCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBE
OyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTtta2Rp
ciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjb25maWcuaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2Vz
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxp
dHlcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJp
bGl0eVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caW5z
cGVjdG9yXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRl
clwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXBw
Y2FjaGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVy
XGFyY2hpdmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9h
ZGVyXGFyY2hpdmVcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cbG9hZGVyXGljb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5caGlzdG9yeVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxo
aXN0b3J5XGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0
bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbm90aWZpY2F0
aW9uc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjc3NcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9u
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNm
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdy
YXBoaWNzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXGdyYXBoaWNzXHRyYW5zZm9ybXNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHRcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0
d29ya1xjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxuZXR3b3JrXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVxzcWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cY2Fpcm9cY2Fpcm9cc3JjXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5ccGFnZVxhbmltYXRpb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5ccGFnZVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5cYnJpZGdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsdWdpbnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5ccGx1Z2luc1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5ccmVuZGVyaW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHJlbmRlcmluZ1xzdHlsZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxlZGl0aW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGRvbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx4bWxcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2VcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cd29ya2Vyc1wqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlclwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXIm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndh
cmRpbmdIZWFkZXJzXHJ1bnRpbWVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcbWFz
bVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3
YXJkaW5nSGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBjcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRp
bmdIZWFkZXJzXHByb2ZpbGVyXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3cmVj
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0ZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGYmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdI
ZWFkZXJzXHd0Zlx1bmljb2RlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3
dGZcdW5pY29kZVxpY3VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4
MEE7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJp
blxXZWJLaXQucmVzb3VyY2VzXGluc3BlY3RvciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
IC9zIC9leGNsdWRlOnhjb3B5LmV4Y2x1ZGVzICZxdW90OyQoUHJvamVjdERpcilcLi5caW5zcGVj
dG9yXGZyb250LWVuZFwqJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0
LnJlc291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcZW4ubHByb2omcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAvcyAvZXhjbHVkZTp4Y29weS5leGNsdWRlcyAmcXVvdDsk
KFByb2plY3REaXIpXC4uXEVuZ2xpc2gubHByb2pcbG9jYWxpemVkU3RyaW5ncy5qcyZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcZW4ubHByb2omcXVv
dDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTtpZiBleGlzdCAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcYnVpbGRmYWlsZWQmcXVvdDsgZGVsICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxidWlsZGZh
aWxlZCZxdW90OyYjeDBEOyYjeDBBOyINCiAJCQkvPg0KIAkJPC9Db25maWd1cmF0aW9uPg0KIAkJ
PENvbmZpZ3VyYXRpb24NCkBAIC03MTkwLDYgKzcxOTAsMTAyIEBACiAJCQkJPg0KIAkJCTwvRmls
ZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNOb3RpZmljYXRpb24uY3BwIg0KKwkJCQk+
DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIN
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19JbnRl
cm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJ
CQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1l
PSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
Lz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQor
CQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNOb3RpZmljYXRpb24uaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxv
YmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNOb3RpZmljYXRpb25DZW50ZXIuY3Bw
Ig0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2lu
MzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29s
DQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFz
ZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJ
PFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJE
ZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
Lz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQor
CQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxv
YmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNOb3RpZmljYXRpb25DZW50ZXIuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2Vi
S2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNPdmVyZmxv
d0V2ZW50LmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0yMzgzMiw2
ICsyMzkyOCwzNCBAQAogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQogCQk8RmlsdGVyDQorCQkJ
TmFtZT0ibm90aWZpY2F0aW9ucyINCisJCQk+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxub3RpZmljYXRpb25zXE5vdGlmaWNhdGlvbi5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxub3RpZmljYXRpb25zXE5vdGlmaWNh
dGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb25DZW50ZXIuY3BwIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cbm90aWZpY2F0aW9uc1xO
b3RpZmljYXRpb25DZW50ZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uQ29udGVudHMuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5v
dGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uUHJvdmlkZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4N
CisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KIAkJCU5hbWU9ImVkaXRpbmciDQogCQkJPg0KIAkJ
CTxGaWxlDQpAQCAtMjgwNjYsNiArMjgxOTAsMTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQog
CQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRGVza3RvcE5v
dGlmaWNhdGlvbnNDdXN0b20uY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxl
DQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRG9jdW1lbnRDdXN0b20uY3Bw
Ig0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpAQCAtMzAxMDMsMTQgKzMwMjMxLDYgQEAKIAkJCQk+
DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxT
dG9yYWdlTWFwLmNwcCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcU3RvcmFnZU1hcC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0K
LQkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxTdG9yYWdlTmFtZXNwYWNl
LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmVDb21tb24udnNwcm9wcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmVDb21tb24udnNwcm9wcwkocmV2aXNpb24gNDU1NzQpCisrKyBXZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmVDb21tb24udnNwcm9wcwkod29ya2luZyBjb3B5KQpAQCAtNyw3
ICs3LDcgQEAKIAk+DQogCTxUb29sDQogCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChQcm9qZWN0RGlyKS4uXCZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2li
aWxpdHkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcd2luJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGJyaWRnZVxjJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxjc3MmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGVkaXRpbmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmlu
ZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHN0eWxlJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xqcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
ZG9tJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxkb21cZGVmYXVsdCZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5caGlzdG9yeSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caHRtbCZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caW5zcGVjdG9yJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxsb2FkZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcHBjYWNo
ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmUmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNmJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxsb2FkZXJcaWNvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZSZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBhZ2Vcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybSZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxzcWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29yayZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3aW4mcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxwbGF0Zm9ybVxncmFwaGljcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
Z3JhcGhpY3Ncb3BlbnR5cGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdy
YXBoaWNzXHRyYW5zZm9ybXMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRl
eHQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpbiZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5ceG1sJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNlcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
cGx1Z2lucyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW4mcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xncmFwaGljcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5cc3ZnXGdyYXBoaWNzXGZpbHRlcnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2ZyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cd21sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxzdG9yYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3b3JrZXJzJnF1b3Q7OyZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxGb3J3
YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZSZx
dW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxpY3UmcXVvdDs7JnF1b3Q7
JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcaWNvbnYmcXVvdDs7JnF1b3Q7JChXZWJLaXRM
aWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJp
ZXNEaXIpXGluY2x1ZGVcc3FsaXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxp
bmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJ
bmNsdWRlXENvcmVGb3VuZGF0aW9uXE9TWENvbXBhdGliaWxpdHlIZWFkZXJzJnF1b3Q7OyZxdW90
OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXENvcmVGb3VuZGF0aW9uXE9TWENvbXBhdGli
aWxpdHlIZWFkZXJzXEdOVUNvbXBhdGliaWxpdHkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHN2Z1xhbmltYXRpb24mcXVvdDsiDQorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIm
cXVvdDskKFByb2plY3REaXIpLi5cJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLiZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eSZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cYWNjZXNzaWJpbGl0eVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRn
ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXGMmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGNzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGluZyZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5cbm90aWZpY2F0aW9ucyZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccmVuZGVyaW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5
bGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxkb20mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVxkZWZhdWx0
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5JnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxodG1sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3ImcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
bG9hZGVyXGFwcGNhY2hlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2
ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2YmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxpY29uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxwYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlvbiZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb24m
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbCZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxuZXR3b3JrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3Jr
XHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2YmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNmb3JtcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cdGV4dCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3Jh
cGhpY3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx4bWwmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxwbHVnaW5zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5z
XHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3NcZmlsdGVycyZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cc3ZnJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3bWwmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtl
cnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVz
RGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXGlj
dSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxpY29udiZxdW90Ozsm
cXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OzsmcXVvdDsk
KFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxzcWxpdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRM
aWJyYXJpZXNEaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRM
aWJyYXJpZXNEaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRl
cnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRp
b25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnNcR05VQ29tcGF0aWJpbGl0eSZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cc3ZnXGFuaW1hdGlvbiZxdW90OyINCiAJCVByZXByb2Nlc3NvckRlZmlu
aXRpb25zPSJfX1dJTjMyX187V0VCQ09SRV9DT05URVhUX01FTlVTO0VOQUJMRV9EQVRBQkFTRTtF
TkFCTEVfREFUQUdSSUQ7RU5BQkxFX0RPTV9TVE9SQUdFO0VOQUJMRV9JQ09OREFUQUJBU0U7RU5B
QkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUztFTkFCTEVfU1ZHO0VOQUJMRV9TVkdfQU5JTUFU
SU9OO0VOQUJMRV9TVkdfQVNfSU1BR0U7RU5BQkxFX1NWR19GT05UUztFTkFCTEVfU1ZHX0ZPUkVJ
R05fT0JKRUNUO0VOQUJMRV9TVkdfVVNFO0VOQUJMRV9XT1JLRVJTO0VOQUJMRV9YUEFUSDtFTkFC
TEVfWFNMVCINCiAJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KIAkJUHJlY29tcGlsZWRIZWFk
ZXJUaHJvdWdoPSJXZWJDb3JlUHJlZml4LmgiDQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDQ1NTc0KQorKysgV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTYxNCw2ICs2MTQs
MTAgQEAKIAkJMzFDMEZGNEMwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25F
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFD
MEZGNDYwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oICovOyB9
OwogCQkzMUMwRkY0RDBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDMEZG
NDcwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5tbSAqLzsgfTsK
IAkJMzFDMEZGNEUwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudElu
dGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MUMwRkY0ODBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50ZXJu
YWwuaCAqLzsgfTsKKwkJMzM5MENBNTUwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNl
bnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MzkwQ0E1MTBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNwcCAqLzsgfTsK
KwkJMzM5MENBNTYwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM5MENBNTIwRkZDMTU3
QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5oICovOyB9OworCQkzMzkwQ0E1NzBGRkMx
NTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM5MENBNTMwRkZDMTU3QjAwOTIxOTYyIC8q
IE5vdGlmaWNhdGlvbkNlbnRlci5pZGwgKi87IH07CisJCTMzOTBDQTU4MEZGQzE1N0IwMDkyMTk2
MiAvKiBOb3RpZmljYXRpb25Db250ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzM5MENBNTQwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlv
bkNvbnRlbnRzLmggKi87IH07CiAJCTM3MUY0RjQwMEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjRG
M0UwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzcxRjRGNDEwRDI1QjlBRjAwRUNFMEQ1IC8qIEZv
bnREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3MUY0RjNGMEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5jcHAgKi87IH07CiAJCTM3MUY0
RkZDMEQyNUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjRGRkEwRDI1RTdGMzAwRUNFMEQ1
IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggKi87IH07CkBAIC01NTQyLDYgKzU1NDYsMTQgQEAKIAkJ
MzFDMEZGNDYwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFDMEZGNDcwRTRDRUZERDAwN0Q2RkU1
IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzFDMEZGNDgwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRy
YW5zaXRpb25FdmVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMzM0Y3MDRFMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5pZGw7IHBhdGggPSBub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzM0Y3
MDRGMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0aW9uLmg7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA1MDBGQjQ5Q0Ey
MDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5jcHA7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzM0Y3MDUxMEZCNDlDQTIw
MDhFMTJBNiAvKiBOb3RpZmljYXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBOb3RpZmljYXRpb25Qcm92aWRlci5oOyBwYXRoID0gbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzkw
Q0E1MTBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5vdGlmaWNhdGlvbkNlbnRlci5jcHA7IHBhdGgg
PSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMzOTBDQTUyMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0aW9uQ2VudGVy
Lmg7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMzkwQ0E1MzBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0
aW9uQ2VudGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOb3RpZmljYXRpb25DZW50ZXIu
aWRsOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMzkwQ0E1NDBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZp
Y2F0aW9uQ29udGVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZp
Y2F0aW9uQ29udGVudHMuaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udGVu
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRjRGM0UwRDI1QjlBRjAwRUNF
MEQ1IC8qIEZvbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRE
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUY0RjNGMEQyNUI5QUYwMEVD
RTBENSAvKiBGb250RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGb250RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUY0RkZBMEQy
NUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTZWdtZW50ZWRGb250RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTQxNCw2ICs5NDI2LDcgQEAKIAkJCQk5M0VFQzFFQzA5QzI4Nzc3MDBDNTE1RDEg
LyogaHRtbCAqLywKIAkJCQkxQzgxQjk0RDBFOTczMkQ5MDAyNjZFMDcgLyogaW5zcGVjdG9yICov
LAogCQkJCUJDQjE2QkZCMDk3OUMzODcwMDQ2Nzc0MSAvKiBsb2FkZXIgKi8sCisJCQkJMzMzRjcw
M0QwRkI0OUMxNjAwOEUxMkE2IC8qIG5vdGlmaWNhdGlvbnMgKi8sCiAJCQkJNjVCRjAyMTgwOTc0
ODA2MzAwQzQzMTk2IC8qIHBhZ2UgKi8sCiAJCQkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIzIC8q
IHBsYXRmb3JtICovLAogCQkJCTVEQ0Y4MzY5MEQ1OTE1NzgwMDk1M0JDNiAvKiBwbHVnaW5zICov
LApAQCAtOTg4NCw2ICs5ODk3LDIxIEBACiAJCQluYW1lID0gYW5pbWF0aW9uOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMzMzRjcwM0QwRkI0OUMxNjAwOEUxMkE2IC8qIG5v
dGlmaWNhdGlvbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCTMzOTBDQTUxMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuY3BwICov
LAorCQkJCTMzOTBDQTUyMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaCAq
LywKKwkJCQkzMzkwQ0E1MzBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmlk
bCAqLywKKwkJCQkzMzkwQ0E1NDBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ29udGVu
dHMuaCAqLywKKwkJCQkzMzNGNzA0RTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmlk
bCAqLywKKwkJCQkzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi8s
CisJCQkJMzMzRjcwNTAwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5jcHAgKi8sCisJ
CQkJMzMzRjcwNTEwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvblByb3ZpZGVyLmggKi8s
CisJCQkpOworCQkJbmFtZSA9IG5vdGlmaWNhdGlvbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OwogCQk0NDkxOTU5MDBGQkUxNzVCMDBEOUY4MjQgLyogRXhwb3J0cyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNjkxNyw2ICsxNjk0NSw4
IEBACiAJCQkJQkM3N0QxNkMwRkYxOUY1NjAwNzA4ODdCIC8qIEpTRGF0YUdyaWRDb2x1bW5MaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JDQUUzNzBGRjE5Mzg1MDAwNzYyQUUgLyogRGF0YUdy
aWREYXRhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JDQUUzRDBGRjE5Mzk5MDAwNzYy
QUUgLyogSlNEYXRhR3JpZERhdGFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTMzOTBDQTU2
MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTMzOTBDQTU4MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25Db250ZW50cy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzUwRDBFODMwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1l
c3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0RBQUVGMEZGOTYxNUQwMENFMDEzOCAvKiBE
T01EYXRhR3JpZERhdGFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1QTY4NDIyMEZGQUJF
OTgwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLywKQEAgLTE3MDI4
LDYgKzE3MDU4LDcgQEAKIAkJCQlCQzc3Q0RBMzBGRUZFQjUzMDA3MDg4N0IgLyogSFRNTERhdGFH
cmlkQ2VsbEVsZW1lbnQuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCQlCQzc3Q0Y5OTBGRjE3MjQy
MDA3MDg4N0IgLyogRGF0YUdyaWRDb2x1bW5MaXN0LmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJ
QkM3N0NGOUYwRkYxNzJCMzAwNzA4ODdCIC8qIERhdGFHcmlkQ29sdW1uLmlkbCBpbiBSZXNvdXJj
ZXMgKi8sCisJCQkJMzM5MENBNTcwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRl
ci5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTg5MzIsNiArMTg5NjMsNyBAQAogCQkJCUJDQkNB
RTU0MEZGMUEyOUUwMDA3NjJBRSAvKiBKU0hUTUxEYXRhR3JpZEVsZW1lbnRDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM3N0QxRkQwRkYyOEQ5QjAwNzA4ODdCIC8qIERhdGFHcmlkQ29s
dW1uTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzc3RDIzOTBGRjI5ODA4MDA3MDg4N0Ig
LyogRGF0YUdyaWRDb2x1bW4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzM5MENBNTUwRkZDMTU3
QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
NTBEMEU4MjBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzdEQUFFRTBGRjk2MTVEMDBDRTAxMzggLyogRE9NRGF0YUdyaWREYXRhU291
cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1QTY4NDI0MEZGQUJFQUEwMEQyNDY4OSAvKiBT
UUxpdGVGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDQ1NTc0KQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYg
KzQ0LDcgQEAKICNpbmNsdWRlICJKU0xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiSlNNZXNzYWdlQ2hh
bm5lbENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUg
IkpTTm90aWZpY2F0aW9uQ2VudGVyLmgiCiAjaW5jbHVkZSAiSlNPcHRpb25Db25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJK
U1dlYktpdFBvaW50Q29uc3RydWN0b3IuaCIKQEAgLTUzLDYgKzU0LDcgQEAKICNpbmNsdWRlICJM
b2NhdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBv
cnQuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNsdWRlICJSZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lci5oIgpAQCAtMzc0LDYgKzM3NiwxOSBAQCBKU1ZhbHVlIEpTRE9NV2luZG93Ojpsb2Nh
dGlvbihFeGVjU3RhdGUqCiAgICAgcmV0dXJuIGpzTG9jYXRpb247CiB9CiAKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKK0pTVmFsdWUgSlNET01XaW5kb3c6Om5vdGlmaWNhdGlvbnMoRXhlY1N0
YXRlKiBleGVjKSBjb25zdAoreworICAgIE5vdGlmaWNhdGlvbkNlbnRlciogbm90aWZpY2F0aW9u
cyA9IGltcGwoKS0+bm90aWZpY2F0aW9ucygpOworICAgIGlmIChET01PYmplY3QqIHdyYXBwZXIg
PSBnZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgbm90aWZpY2F0
aW9ucykpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworCisgICAgSlNOb3RpZmljYXRpb25DZW50
ZXIqIGpzTm90aWZpY2F0aW9ucyA9IG5ldyAoZXhlYykgSlNOb3RpZmljYXRpb25DZW50ZXIoZ2V0
RE9NU3RydWN0dXJlPEpTTm90aWZpY2F0aW9uQ2VudGVyPihleGVjLCBjb25zdF9jYXN0PEpTRE9N
V2luZG93Kj4odGhpcykpLCBub3RpZmljYXRpb25zKTsKKyAgICBjYWNoZURPTU9iamVjdFdyYXBw
ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBub3RpZmljYXRpb25zLCBqc05vdGlmaWNhdGlvbnMpOwor
ICAgIHJldHVybiBqc05vdGlmaWNhdGlvbnM7Cit9CisjZW5kaWYKKwogdm9pZCBKU0RPTVdpbmRv
dzo6c2V0TG9jYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIEZy
YW1lKiBsZXhpY2FsRnJhbWUgPSB0b0xleGljYWxGcmFtZShleGVjKTsKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvanMvSlNEZXNrdG9wTm90aWZpY2F0aW9uc0N1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rlc2t0b3BOb3RpZmljYXRpb25zQ3VzdG9tLmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNEZXNrdG9wTm90aWZpY2F0aW9u
c0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisjaW5jbHVkZSAiSlNDdXN0b21Wb2lkQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU05vdGlmaWNh
dGlvbi5oIgorI2luY2x1ZGUgIkpTTm90aWZpY2F0aW9uQ2VudGVyLmgiCisjaW5jbHVkZSAiTm90
aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSBKU05vdGlmaWNh
dGlvbkNlbnRlcjo6Y3JlYXRlSFRNTE5vdGlmaWNhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU3RyaW5n
IHVybCA9IGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IHRv
SlMoZXhlYywgTm90aWZpY2F0aW9uOjpjcmVhdGUodXJsLCBpbXBsKCktPmNvbnRleHQoKSwgZWMs
IGltcGwoKS0+cHJvdmlkZXIoKSkpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Cisg
ICAgcmV0dXJuIHZhbHVlOworfQorCitKU1ZhbHVlIEpTTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVh
dGVOb3RpZmljYXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQorewor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIE5vdGlmaWNhdGlvbkNvbnRlbnRzIGNvbnRl
bnRzKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIGFyZ3MuYXQoMSkudG9TdHJpbmcoZXhlYyks
IGFyZ3MuYXQoMikudG9TdHJpbmcoZXhlYykpOworCisKKyAgICBKU1ZhbHVlIHZhbHVlID0gdG9K
UyhleGVjLCBOb3RpZmljYXRpb246OmNyZWF0ZShjb250ZW50cywgaW1wbCgpLT5jb250ZXh0KCks
IGVjLCBpbXBsKCktPnByb3ZpZGVyKCkpKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMp
OworICAgIHJldHVybiB2YWx1ZTsKK30KKworSlNWYWx1ZSBKU05vdGlmaWNhdGlvbkNlbnRlcjo6
Y2hlY2tQZXJtaXNzaW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sK
KyAgICByZXR1cm4gSlNWYWx1ZShleGVjLCBpbXBsKCktPmNoZWNrUGVybWlzc2lvbigpKTsKK30K
KworSlNWYWx1ZSBKU05vdGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVzdFBlcm1pc3Npb24oRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIC8vIFBlcm1pc3Npb24gcmVx
dWVzdCBpcyBvbmx5IHZhbGlkIGZyb20gcGFnZSBjb250ZXh0LgorICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQgPSBpbXBsKCktPmNvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dC0+
aXNXb3JrZXJDb250ZXh0KCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRh
eEVycm9yKTsKKworICAgIGlmICghYXJncy5hdCgwKS5pc09iamVjdCgpKQorICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOworCisgICAgUGFzc1JlZlB0cjxKU0N1c3Rv
bVZvaWRDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU0N1c3RvbVZvaWRDYWxsYmFjazo6Y3JlYXRlKGFy
Z3MuYXQoMCkuZ2V0T2JqZWN0KCksIHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmZy
YW1lKCkpOworCisgICAgaW1wbCgpLT5yZXF1ZXN0UGVybWlzc2lvbihjYWxsYmFjayk7CisgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZiAvLyBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9u
IDQ1NTc0KQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzMyw2ICsxMzMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBleGNlZWRlZERh
dGFiYXNlUXVvdGEoRnJhbWUqLCBjb25zdCBTdHJpbmcmKSB7IH0KICNlbmRpZgogCisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCisgICAgdmlydHVhbCBOb3RpZmljYXRpb25Qcm92aWRlciogbm90
aWZpY2F0aW9uUHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CisjZW5kaWYKKwogICAgIHZp
cnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPikg
eyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKSB7
IH0KSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJOb3RpZmlj
YXRpb25Db250ZW50cy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgTm90aWZpY2F0
aW9uUHJvdmlkZXIqIHByb3ZpZGVyKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRo
aXMpCisgICAgLCBtX2lzSFRNTCh0cnVlKQorICAgICwgbV9pc1Nob3dpbmcoZmFsc2UpCisgICAg
LCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQoreworICAgIGlmIChtX3Byb3ZpZGVyLT5jaGVja1Blcm1p
c3Npb24oY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSkgIT0gTm90aWZpY2F0aW9uUHJvdmlkZXI6
OlBFUk1JU1NJT05fQUxMT1dFRCkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fbm90aWZpY2F0aW9uVVJMID0gY29udGV4dC0+Y29t
cGxldGVVUkwodXJsKTsKKyAgICBpZiAodXJsLmlzRW1wdHkoKSB8fCAhbV9ub3RpZmljYXRpb25V
UkwuaXNWYWxpZCgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KK30KKworTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgTm90aWZpY2F0
aW9uQ29udGVudHMmIGNvbnRlbnRzLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBF
eGNlcHRpb25Db2RlJiBlYywgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKQorICAgIDog
QWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX2lzSFRNTChmYWxzZSkKKyAg
ICAsIG1faXNTaG93aW5nKGZhbHNlKQorICAgICwgbV9jb250ZW50cyhjb250ZW50cykKKyAgICAs
IG1fcHJvdmlkZXIocHJvdmlkZXIpCit7CisgICAgaWYgKG1fcHJvdmlkZXItPmNoZWNrUGVybWlz
c2lvbihjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpKSAhPSBOb3RpZmljYXRpb25Qcm92aWRlcjo6
UEVSTUlTU0lPTl9BTExPV0VEKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgS1VSTCBpY29uID0gY29udGV4dC0+Y29tcGxldGVVUkwo
Y29udGVudHMuaWNvbigpKTsKKyAgICBpZiAoIWljb24uaXNFbXB0eSgpICYmICFpY29uLmlzVmFs
aWQoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9
Cit9CisKK05vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlvbigpIAoreworfQorCit2b2lkIE5vdGlm
aWNhdGlvbjo6c2hvdygpIAoreworICAgIC8vIHByZXZlbnQgZG91YmxlLXNob3dpbmcKKyAgICBp
ZiAoIW1faXNTaG93aW5nKQorICAgICAgICBtX2lzU2hvd2luZyA9IG1fcHJvdmlkZXItPnNob3co
dGhpcyk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpjYW5jZWwoKSAKK3sKKyAgICBpZiAobV9p
c1Nob3dpbmcpCisgICAgICAgIG1fcHJvdmlkZXItPmNhbmNlbCh0aGlzKTsKK30KKwordm9pZCBO
b3RpZmljYXRpb246OmRpc3BhdGNoRGlzcGxheUV2ZW50KCkgCit7ICAgCisgICAgUmVmUHRyPEV2
ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoImRpc3BsYXkiLCBmYWxzZSwgdHJ1ZSk7CisKKyAg
ICBpZiAobV9vbkRpc3BsYXlMaXN0ZW5lcikgeworICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRo
aXMpOworICAgICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9v
bkRpc3BsYXlMaXN0ZW5lci0+aGFuZGxlRXZlbnQoZXZlbnQuZ2V0KCksIHRydWUpOworICAgIH0K
KworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQucmVs
ZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpk
aXNwYXRjaEVycm9yRXZlbnQoKQoreyAgCisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlKTsKKworICAgIGlm
IChtX29uRXJyb3JMaXN0ZW5lcikgeworICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwor
ICAgICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbkVycm9y
TGlzdGVuZXItPmhhbmRsZUV2ZW50KGV2ZW50LmdldCgpLCB0cnVlKTsKKyAgICB9CisKKyAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LnJlbGVhc2UoKSwg
ZWMpOworICAgIEFTU0VSVCghZWMpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hD
bG9zZUV2ZW50KCkgCit7ICAgCisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCB0cnVlKTsKKworICAgIGlmIChtX29u
Q2xvc2VMaXN0ZW5lcikgeworICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAg
ICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbkNsb3NlTGlzdGVu
ZXItPmhhbmRsZUV2ZW50KGV2ZW50LmdldCgpLCB0cnVlKTsKKyAgICB9CisKKyAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LnJlbGVhc2UoKSwgZWMpOwor
ICAgIEFTU0VSVCghZWMpOworCit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjphZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVyZWRF
dmVudExpc3RlbmVyPiByZWdpc3RlcmVkTGlzdGVuZXIgPSBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
cjo6Y3JlYXRlKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAgIG1fZXZlbnRM
aXN0ZW5lcnMuYXBwZW5kKHJlZ2lzdGVyZWRMaXN0ZW5lcik7Cit9CisKK3ZvaWQgTm90aWZpY2F0
aW9uOjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBF
dmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQoreworICAgIHNpemVfdCBz
aXplID0gbV9ldmVudExpc3RlbmVycy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKKyAgICAgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIHIgPSAqbV9l
dmVudExpc3RlbmVyc1tpXTsKKyAgICAgICAgaWYgKHIuZXZlbnRUeXBlKCkgPT0gZXZlbnRUeXBl
ICYmIHIubGlzdGVuZXIoKSA9PSBsaXN0ZW5lciAmJiByLnVzZUNhcHR1cmUoKSA9PSB1c2VDYXB0
dXJlKSB7CisgICAgICAgICAgICByLnNldFJlbW92ZWQodHJ1ZSk7CisgICAgICAgICAgICBtX2V2
ZW50TGlzdGVuZXJzLnJlbW92ZShpKTsKKyAgICAgICAgICAgIHJldHVybjsgCisgICAgICAgIH0K
KyAgICB9Cit9CisKK2Jvb2wgTm90aWZpY2F0aW9uOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8
RXZlbnQ+IGV2ZW50LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBSZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lclZlY3RvciBsaXN0ZW5lcnNDb3B5ID0gbV9ldmVudExpc3RlbmVyczsKKyAgICBzaXpl
X3Qgc2l6ZSA9IGxpc3RlbmVyc0NvcHkuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByID0gKmxp
c3RlbmVyc0NvcHlbaV07CisgICAgICAgIGlmIChyLmV2ZW50VHlwZSgpID09IGV2ZW50LT50eXBl
KCkgJiYgIXIucmVtb3ZlZCgpKQorICAgICAgICAgICAgci5saXN0ZW5lcigpLT5oYW5kbGVFdmVu
dChldmVudC5nZXQoKSk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTm90
aWZpY2F0aW9uOjpkaXNwbGF5KCkKK3sKKyAgICBkaXNwYXRjaERpc3BsYXlFdmVudCgpOworfQor
Cit2b2lkIE5vdGlmaWNhdGlvbjo6ZXJyb3IoKQoreworICAgIGRpc3BhdGNoRXJyb3JFdmVudCgp
OworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6Y2xvc2UoKQoreworICAgIGRpc3BhdGNoQ2xvc2VF
dmVudCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRpb25faCAgCisjZGVmaW5l
IE5vdGlmaWNhdGlvbl9oCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJBdG9taWNTdHJpbmdIYXNoLmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVu
dExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByb3Zp
ZGVyLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ29udGVudHMuaCIKKyNpbmNsdWRlICJSZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKyAgICBjbGFzcyBXb3JrZXJDb250ZXh0OworCisgICAgY2xhc3MgTm90aWZp
Y2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPiwgcHVibGljIEFjdGl2ZURP
TU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0IHsgCisgICAgcHVibGljOgorICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIE5vdGlmaWNh
dGlvblByb3ZpZGVyKiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlv
bih1cmwsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpOyB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IE5vdGlmaWNhdGlvbkNvbnRlbnRzJiBjb250
ZW50cywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMs
IE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYobmV3IE5v
dGlmaWNhdGlvbihjb250ZW50cywgY29udGV4dCwgZWMsIHByb3ZpZGVyKSk7IH0KKyAgICAgICAg
CisgICAgICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlvbigpOworCisgICAgICAgIHZvaWQgc2hvdygp
OworICAgICAgICB2b2lkIGNhbmNlbCgpOworICAgIAorICAgICAgICBib29sIGlzSFRNTCgpIHsg
cmV0dXJuIG1faXNIVE1MOyB9CisgICAgICAgIEtVUkwgdXJsKCkgeyByZXR1cm4gbV9ub3RpZmlj
YXRpb25VUkw7IH0KKyAgICAgICAgTm90aWZpY2F0aW9uQ29udGVudHMmIGNvbnRlbnRzKCkgeyBy
ZXR1cm4gbV9jb250ZW50czsgfQorCisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uZGlzcGxheSgp
IGNvbnN0IHsgcmV0dXJuIG1fb25EaXNwbGF5TGlzdGVuZXIuZ2V0KCk7IH0KKyAgICAgICAgdm9p
ZCBzZXRPbmRpc3BsYXkoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7
IG1fb25EaXNwbGF5TGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9CisgICAgICAgIEV2ZW50TGlz
dGVuZXIqIG9uZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX29uRXJyb3JMaXN0ZW5lci5nZXQoKTsg
fQorICAgICAgICB2b2lkIHNldE9uZXJyb3IoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVu
dExpc3RlbmVyKSB7IG1fb25FcnJvckxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAg
ICBFdmVudExpc3RlbmVyKiBvbmNsb3NlKCkgY29uc3QgeyByZXR1cm4gbV9vbkNsb3NlTGlzdGVu
ZXIuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRPbmNsb3NlKFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uQ2xvc2VMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7
IH0KKyAgICAKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+OjpyZWY7Cisg
ICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPjo6ZGVyZWY7CisgICAgCisgICAg
ICAgIC8vIENhbGxiYWNrIG1ldGhvZHMgZm9yIHRoZSBwcm92aWRlciB3aGVuIGV2ZW50cyBvY2N1
ciByZWdhcmRpbmcgdGhlIG5vdGlmaWNhdGlvbi4KKyAgICAgICAgdm9pZCBkaXNwbGF5KCk7Cisg
ICAgICAgIHZvaWQgZXJyb3IoKTsKKyAgICAgICAgdm9pZCBjbG9zZSgpOworCisgICAgICAgIC8v
IEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBBY3RpdmVET01P
YmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+LCBib29sKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiwgRXZlbnRMaXN0ZW5lciosIGJvb2wpOworICAgICAgICB2aXJ0
dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYp
OworICAgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgTm90aWZpY2F0aW9uKGNvbnN0IFN0cmlu
ZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBl
YywgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKTsKKyAgICAgICAgTm90aWZpY2F0aW9u
KGNvbnN0IE5vdGlmaWNhdGlvbkNvbnRlbnRzJiBmaWVsZHMsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRpb25Qcm92aWRlciogcHJv
dmlkZXIpOworCisgICAgICAgIHZvaWQgZGlzcGF0Y2hEaXNwbGF5RXZlbnQoKTsKKyAgICAgICAg
dm9pZCBkaXNwYXRjaEVycm9yRXZlbnQoKTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaENsb3NlRXZl
bnQoKTsKKworICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAgdmlydHVh
bCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAKKyAgICAgICAgYm9vbCBtX2lzSFRN
TDsKKyAgICAgICAgS1VSTCBtX25vdGlmaWNhdGlvblVSTDsKKyAgICAgICAgTm90aWZpY2F0aW9u
Q29udGVudHMgbV9jb250ZW50czsKKworICAgICAgICBib29sIG1faXNTaG93aW5nOworCisgICAg
ICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29uRGlzcGxheUxpc3RlbmVyOworICAgICAgICBS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbkVycm9yTGlzdGVuZXI7CisgICAgICAgIFJlZlB0cjxF
dmVudExpc3RlbmVyPiBtX29uQ2xvc2VMaXN0ZW5lcjsKKyAgICAgICAgUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXJWZWN0b3IgbV9ldmVudExpc3RlbmVyczsKKworICAgICAgICBOb3RpZmljYXRpb25Q
cm92aWRlciogbV9wcm92aWRlcjsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2VuZGlmIC8vIE5vdGlmaWNhdGlv
bnNfaApJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK21vZHVsZSB0aHJlYWRzIHsKKworICAgIGludGVyZmFjZSBbCisg
ICAgICAgIENvbmRpdGlvbmFsPU5PVElGSUNBVElPTlMKKyAgICBdIE5vdGlmaWNhdGlvbiB7Cisg
ICAgICAgIHZvaWQgc2hvdygpOworICAgICAgICB2b2lkIGNhbmNlbCgpOworCisgICAgICAgIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZGlzcGxheTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb25lcnJvcjsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jbG9z
ZTsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q2VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ2VudGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJOb3Rp
ZmljYXRpb25DZW50ZXIuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiVm9p
ZENhbGxiYWNrLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK05vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uQ2VudGVyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcikg
CisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dChjb250ZXh0KQorICAgICwgbV9ub3RpZmljYXRpb25Qcm92aWRlcihwcm92
aWRlcikge30KKworCitpbnQgTm90aWZpY2F0aW9uQ2VudGVyOjpjaGVja1Blcm1pc3Npb24oKSAK
K3sKKyAgICByZXR1cm4gbV9ub3RpZmljYXRpb25Qcm92aWRlci0+Y2hlY2tQZXJtaXNzaW9uKG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7Cit9CisKK3ZvaWQgTm90
aWZpY2F0aW9uQ2VudGVyOjpyZXF1ZXN0UGVybWlzc2lvbihQYXNzUmVmUHRyPFZvaWRDYWxsYmFj
az4gY2FsbGJhY2spCit7CisgICAgbV9ub3RpZmljYXRpb25Qcm92aWRlci0+cmVxdWVzdFBlcm1p
c3Npb24obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBjYWxsYmFj
ayk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJ
RklDQVRJT05TKQpJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50
ZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
ZW50ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTm90aWZpY2F0aW9u
Q2VudGVyX2gKKyNkZWZpbmUgTm90aWZpY2F0aW9uQ2VudGVyX2gKKworI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbi5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CisKKyAgICBjbGFzcyBOb3RpZmljYXRpb25DZW50ZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxOb3RpZmljYXRpb25DZW50ZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsgCisgICAgcHVi
bGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRpb25Qcm92aWRlciog
cHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb25DZW50ZXIoY29udGV4
dCwgcHJvdmlkZXIpKTsgfQorICAgICAgICAKKyAgICAgICAgUGFzc1JlZlB0cjxOb3RpZmljYXRp
b24+IGNyZWF0ZUhUTUxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBVUkksIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uOjpjcmVh
dGUoS1VSTChVUkkpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGVjLCBtX25vdGlmaWNhdGlv
blByb3ZpZGVyKTsKKyAgICAgICAgfQorICAgICAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4g
Y3JlYXRlTm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbkNvbnRlbnRzIGNvbnRlbnRzLCBFeGNlcHRp
b25Db2RlJiBlYykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbjo6
Y3JlYXRlKGNvbnRlbnRzLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGVjLCBtX25vdGlmaWNh
dGlvblByb3ZpZGVyKTsKKyAgICAgICAgfQorCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0K
KyAgICAgICAgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4g
bV9ub3RpZmljYXRpb25Qcm92aWRlcjsgfQorCisgICAgICAgIGludCBjaGVja1Blcm1pc3Npb24o
KTsKKyAgICAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihQYXNzUmVmUHRyPFZvaWRDYWxsYmFj
az4gY2FsbGJhY2spOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgTm90aWZpY2F0aW9uQ2VudGVy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBOb3RpZmljYXRpb25Qcm92aWRlciopOworCisgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAg
ICAgICAgTm90aWZpY2F0aW9uUHJvdmlkZXIqIG1fbm90aWZpY2F0aW9uUHJvdmlkZXI7CisgICAg
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNB
VElPTlMpCisKKyNlbmRpZiAvLyBOb3RpZmljYXRpb25zX2gKSW5kZXg6IFdlYkNvcmUvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBD
b25kaXRpb25hbD1OT1RJRklDQVRJT05TCisgICAgXSBOb3RpZmljYXRpb25DZW50ZXIgeworICAg
ICAgIFtSZXR1cm5zTmV3XSBbQ3VzdG9tXSBOb3RpZmljYXRpb24gY3JlYXRlSFRNTE5vdGlmaWNh
dGlvbihpbiBET01TdHJpbmcgdXJsKTsKKyAgICAgICBbUmV0dXJuc05ld10gW0N1c3RvbV0gTm90
aWZpY2F0aW9uIGNyZWF0ZU5vdGlmaWNhdGlvbihpbiBET01TdHJpbmcgaWNvblVybCwgaW4gRE9N
U3RyaW5nIHRpdGxlLCBpbiBET01TdHJpbmcgYm9keSk7CisKKyAgICAgICBbQ3VzdG9tXSBpbnQg
Y2hlY2tQZXJtaXNzaW9uKCk7CisgICAgICAgW0N1c3RvbV0gdm9pZCByZXF1ZXN0UGVybWlzc2lv
bihpbiBWb2lkQ2FsbGJhY2sgY2FsbGJhY2spOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250ZW50cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250ZW50cy5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRlbnRzLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5vdGlmaWNhdGlvbkNvbnRlbnRzX2gKKyNkZWZpbmUg
Tm90aWZpY2F0aW9uQ29udGVudHNfaAorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIE5vdGlmaWNhdGlvbkNvbnRlbnRzIHsgCisg
ICAgcHVibGljOgorICAgICAgICBOb3RpZmljYXRpb25Db250ZW50cygpIHt9CisgICAgICAgIE5v
dGlmaWNhdGlvbkNvbnRlbnRzKGNvbnN0IFN0cmluZyYgaWNvblVybCwgY29uc3QgU3RyaW5nJiB0
aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5KSAKKyAgICAgICAgICAgIDogbV9pY29uKGljb25Vcmwp
CisgICAgICAgICAgICAsIG1fdGl0bGUodGl0bGUpCisgICAgICAgICAgICAsIG1fYm9keShib2R5
KSB7fQorCisgICAgICAgIFN0cmluZyBpY29uKCkgY29uc3QgeyByZXR1cm4gbV9pY29uOyB9Cisg
ICAgICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KKyAgICAgICAg
U3RyaW5nIGJvZHkoKSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0KKworICAgIHByaXZhdGU6Cisg
ICAgICAgIFN0cmluZyBtX2ljb247CisgICAgICAgIFN0cmluZyBtX3RpdGxlOworICAgICAgICBT
dHJpbmcgbV9ib2R5OworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uQ29udGVu
dHNfaApJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblByb3ZpZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblByb3ZpZGVy
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJv
dmlkZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTm90aWZpY2F0aW9u
UHJvdmlkZXJfaAorI2RlZmluZSBOb3RpZmljYXRpb25Qcm92aWRlcl9oCisKKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgorCisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIE5vdGlm
aWNhdGlvbjsKKyAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsKKyAgICBjbGFzcyBTdHJpbmc7Cisg
ICAgCisgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJvdmlkZXIgeworCisgICAgcHVibGljOgorICAg
ICAgICBlbnVtIFBlcm1pc3Npb24geyAKKyAgICAgICAgICAgIFBFUk1JU1NJT05fQUxMT1dFRCwK
KyAgICAgICAgICAgIFBFUk1JU1NJT05fTk9UX0FMTE9XRUQsCisgICAgICAgICAgICBQRVJNSVNT
SU9OX0RFTklFRAorICAgICAgICB9OworCisgICAgICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlvblBy
b3ZpZGVyKCkge30KKworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdyhOb3RpZmljYXRpb24qIG9i
amVjdCkgPSAwOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoTm90aWZpY2F0aW9uKiBv
YmplY3QpID0gMDsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oU2Vj
dXJpdHlPcmlnaW4qIG9yaWdpbiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKSA9
IDA7CisKKyAgICAgICAgdmlydHVhbCBQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihTZWN1cml0
eU9yaWdpbiogb3JpZ2luKSA9IDA7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBOb3RpZmljYXRp
b25Qcm92aWRlcl9oCkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gNDU1NzQpCisrKyBXZWJDb3JlL3Bh
Z2UvQ2hyb21lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkxLDYgKzM5MSwxMyBAQCBib29sIENo
cm9tZTo6c2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29ySGFuCiAgICAgcmV0dXJuIG1fY2xpZW50LT5z
ZXRDdXJzb3IoY3Vyc29yKTsKIH0KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorTm90aWZp
Y2F0aW9uUHJvdmlkZXIqIENocm9tZTo6bm90aWZpY2F0aW9uUHJvdmlkZXIoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2NsaWVudC0+bm90aWZpY2F0aW9uUHJvdmlkZXIoKTsKK30KKyNlbmRpZgor
CiAvLyAtLS0tLS0tLQogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpJbmRleDogV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWUuaAko
cmV2aXNpb24gNDU1NzQpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDYgKzQ0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEludFJlY3Q7
CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBTdHJpbmc7CisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCisgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJvdmlkZXI7CisjZW5kaWYKIAogICAgIHN0
cnVjdCBGcmFtZUxvYWRSZXF1ZXN0OwogICAgIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKQEAgLTEy
OCw2ICsxMzEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGZvY3VzTlNW
aWV3KE5TVmlldyopOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICAg
ICAgTm90aWZpY2F0aW9uUHJvdmlkZXIqIG5vdGlmaWNhdGlvblByb3ZpZGVyKCkgY29uc3Q7IAor
I2VuZGlmCisKICAgICBwcml2YXRlOgogICAgICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgICAgIENo
cm9tZUNsaWVudCogbV9jbGllbnQ7CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiA0NTU3
NCkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIs
NiArNjIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEdyYXBoaWNzTGF5ZXI7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIGNsYXNzIE5vdGlmaWNh
dGlvblByb3ZpZGVyOworI2VuZGlmCisKICAgICBjbGFzcyBDaHJvbWVDbGllbnQgewogICAgIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGNocm9tZURlc3Ryb3llZCgpID0gMDsKQEAgLTE0
Myw2ICsxNDcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGFzaGJvYXJkUmVnaW9uc0NoYW5nZWQoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCisgICAgICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uUHJvdmlkZXIqIG5vdGlmaWNhdGlv
blByb3ZpZGVyKCkgY29uc3QgPSAwOworI2VuZGlmCisKICAgICAgICAgdmlydHVhbCB2b2lkIHBv
cHVsYXRlVmlzaXRlZExpbmtzKCk7CiAKICAgICAgICAgdmlydHVhbCBGbG9hdFJlY3QgY3VzdG9t
SGlnaGxpZ2h0UmVjdChOb2RlKiwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBGbG9h
dFJlY3QmIGxpbmVSZWN0KTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiA0NTU3NCkKKysr
IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSwx
MCBAQAogI2luY2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCisjZW5k
aWYKKwogdXNpbmcgc3RkOjptaW47CiB1c2luZyBzdGQ6Om1heDsKIApAQCAtNDUzLDYgKzQ1Nywx
MCBAQCB2b2lkIERPTVdpbmRvdzo6Y2xlYXIoKQogICAgICAgICBtX2FwcGxpY2F0aW9uQ2FjaGUt
PmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIG1fYXBwbGljYXRpb25DYWNoZSA9IDA7CiAjZW5kaWYK
KworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIG1fbm90aWZpY2F0aW9ucyA9IDA7Cisj
ZW5kaWYKIH0KIAogU2NyZWVuKiBET01XaW5kb3c6OnNjcmVlbigpIGNvbnN0CkBAIC01ODgsNiAr
NTk2LDI4IEBAIFN0b3JhZ2UqIERPTVdpbmRvdzo6bG9jYWxTdG9yYWdlKCkgY29uc3QKIH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitOb3RpZmljYXRpb25DZW50ZXIqIERP
TVdpbmRvdzo6d2Via2l0Tm90aWZpY2F0aW9ucygpIGNvbnN0Cit7CisgICAgaWYgKG1fbm90aWZp
Y2F0aW9ucykKKyAgICAgICAgcmV0dXJuIG1fbm90aWZpY2F0aW9ucy5nZXQoKTsKKworICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdl
KCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIE5vdGlmaWNhdGlv
blByb3ZpZGVyKiBwcm92aWRlciA9IHBhZ2UtPmNocm9tZSgpLT5ub3RpZmljYXRpb25Qcm92aWRl
cigpOworICAgIGlmIChwcm92aWRlcikgCisgICAgICAgIG1fbm90aWZpY2F0aW9ucyA9IE5vdGlm
aWNhdGlvbkNlbnRlcjo6Y3JlYXRlKGRvY3VtZW50LCBwcm92aWRlcik7ICAgIAorICAgICAgCisg
ICAgcmV0dXJuIG1fbm90aWZpY2F0aW9ucy5nZXQoKTsKK30KKyNlbmRpZgorCiB2b2lkIERPTVdp
bmRvdzo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogbWVz
c2FnZVBvcnQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQpJbmRleDogV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAko
cmV2aXNpb24gNDU1NzQpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU1LDYgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE1lc3Nh
Z2VQb3J0OwogICAgIGNsYXNzIE5hdmlnYXRvcjsKICAgICBjbGFzcyBOb2RlOworICAgIGNsYXNz
IE5vdGlmaWNhdGlvbkNlbnRlcjsKICAgICBjbGFzcyBQb3N0TWVzc2FnZVRpbWVyOwogICAgIGNs
YXNzIFNjaGVkdWxlZEFjdGlvbjsKICAgICBjbGFzcyBTY3JlZW47CkBAIC0xOTksNiArMjAwLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRE9NQXBwbGljYXRpb25DYWNoZSogYXBw
bGljYXRpb25DYWNoZSgpIGNvbnN0OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKKyAgICAgICAgTm90aWZpY2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRpb25zKCkgY29u
c3Q7CisjZW5kaWYKKwogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgTWVzc2FnZVBvcnQqLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93
KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZVRpbWVy
RmlyZWQoUG9zdE1lc3NhZ2VUaW1lciopOwogCkBAIC00MjQsNiArNDI5LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgICAg
IG11dGFibGUgUmVmUHRyPERPTUFwcGxpY2F0aW9uQ2FjaGU+IG1fYXBwbGljYXRpb25DYWNoZTsK
ICNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICBtdXRhYmxlIFJlZlB0
cjxOb3RpZmljYXRpb25DZW50ZXI+IG1fbm90aWZpY2F0aW9uczsKKyNlbmRpZgogCiAgICAgICAg
IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyVmVjdG9yIG1fZXZlbnRMaXN0ZW5lcnM7CiAgICAgfTsK
SW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiA0NTU3NCkKKysrIFdlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiArMTYzLDkgQEAgbW9kdWxlIHdpbmRv
dyB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdG9yYWdlIHNlc3Npb25TdG9yYWdlOwog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU3RvcmFnZSBsb2NhbFN0b3JhZ2U7CiAjZW5kaWYK
KyNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTk9USUZJQ0FUSU9O
UworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3RvbV0gTm90aWZpY2F0aW9uQ2VudGVy
IHdlYmtpdE5vdGlmaWNhdGlvbnM7CisjZW5kaWYKIAogICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUgW1JlcGxhY2VhYmxlXSBDb25zb2xlIGNvbnNvbGU7CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9Q
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gNDU1NzQp
CisrKyBXZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoV01MKQogICAgIGNsYXNzIFdNTFBhZ2VT
dGF0ZTsKICNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIGNsYXNzIE5vdGlm
aWNhdGlvblByb3ZpZGVyOworI2VuZGlmCiAKICAgICBlbnVtIEZpbmREaXJlY3Rpb24geyBGaW5k
RGlyZWN0aW9uRm9yd2FyZCwgRmluZERpcmVjdGlvbkJhY2t3YXJkIH07CiAKQEAgLTI2Myw2ICsy
NjYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShXTUwpCiAgICAgICAgIE93
blB0cjxXTUxQYWdlU3RhdGU+IG1fd21sUGFnZVN0YXRlOwogI2VuZGlmCisKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKKyAgICAgICAgTm90aWZpY2F0aW9uUHJvdmlkZXIqIG1fbm90aWZpY2F0
aW9uUHJvdmlkZXI7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA0NTU3NCkKKysrIFdlYkNv
cmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAs
MTAgQEAKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbkNlbnRlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV29ya2Vy
Q29udGV4dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBXb3JrZXJUaHJlYWQqIHRocmVhZCkKQEAgLTY1LDcgKzY5LDkgQEAgV29ya2VyQ29u
dGV4dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJMJgogV29ya2VyQ29udGV4dDo6fldvcmtlckNv
bnRleHQoKQogewogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90aHJlYWQtPnRocmVh
ZElEKCkpOwotCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpICAKKyAgICBtX25vdGlmaWNhdGlv
bnMuY2xlYXIoKTsKKyNlbmRpZgogICAgIG1fdGhyZWFkLT53b3JrZXJPYmplY3RQcm94eSgpLndv
cmtlckNvbnRleHREZXN0cm95ZWQoKTsKIH0KIApAQCAtMzEwLDYgKzMxNiwxNSBAQCB2b2lkIFdv
cmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMoY29uc3QgCiAgICAgfQogfQogCisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCitOb3RpZmljYXRpb25DZW50ZXIqIFdvcmtlckNvbnRleHQ6OndlYmtp
dE5vdGlmaWNhdGlvbnMoKSBjb25zdAoreworICAgIGlmICghbV9ub3RpZmljYXRpb25zKQorICAg
ICAgICBtX25vdGlmaWNhdGlvbnMgPSBOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZShzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIG1fdGhyZWFkLT5nZXROb3RpZmljYXRpb25Qcm92aWRlcigpKTsK
KyAgICByZXR1cm4gbV9ub3RpZmljYXRpb25zLmdldCgpOworfQorI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpJbmRleDogV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5oCShyZXZpc2lvbiA0NTU3NCkKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCisgICAgY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyOwogICAgIGNsYXNzIFNj
aGVkdWxlZEFjdGlvbjsKICAgICBjbGFzcyBXb3JrZXJMb2NhdGlvbjsKICAgICBjbGFzcyBXb3Jr
ZXJOYXZpZ2F0b3I7CkBAIC0xMTIsNiArMTEzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPE1l
c3NhZ2VQb3J0Pik7CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICAgICAgTm90aWZp
Y2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRpb25zKCkgY29uc3Q7CisjZW5kaWYKKwogICAg
ICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGZvciBHQyBtYXJraW5nLiBTZWUgSlNXb3Jr
ZXJDb250ZXh0OjptYXJrKCkgaW4KICAgICAgICAgLy8gSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cC4KICAgICAgICAgV29ya2VyTmF2aWdhdG9yKiBvcHRpb25hbE5hdmlnYXRvcigpIGNvbnN0IHsg
cmV0dXJuIG1fbmF2aWdhdG9yLmdldCgpOyB9CkBAIC0xNDMsNiArMTQ4LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbm1lc3NhZ2VMaXN0
ZW5lcjsKICAgICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAgbV9ldmVudExpc3RlbmVyczsKIAorI2lm
IEVOQUJMRV9OT1RJRklDQVRJT05TCisgICAgICAgIG11dGFibGUgUmVmUHRyPE5vdGlmaWNhdGlv
bkNlbnRlcj4gbV9ub3RpZmljYXRpb25zOworI2VuZGlmCiAgICAgICAgIGJvb2wgbV9jbG9zaW5n
OwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwJKHJldmlzaW9uIDQ1
NTc0KQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC03NCw2ICs3NCwxMCBAQCBtb2R1bGUgdGhyZWFkcyB7CiAgICAgICAgIGJvb2xlYW4gZGlz
cGF0Y2hFdmVudChpbiBFdmVudCBldnQpCiAgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRp
b24pOwogCisjaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX05PVElG
SUNBVElPTlMKKyAgICAgICAgLy8gTm90aWZpY2F0aW9uIGludGVyZmFjZQorICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgTm90aWZpY2F0aW9uQ2VudGVyIHdlYmtpdE5vdGlmaWNhdGlvbnM7Cisj
ZW5kaWYKIAogICAgICAgICAvLyBDb25zdHJ1Y3RvcnMKICAgICAgICAgYXR0cmlidXRlIE1lc3Nh
Z2VFdmVudENvbnN0cnVjdG9yIE1lc3NhZ2VFdmVudDsKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFk
LmgJKHJldmlzaW9uIDQ1NTc0KQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBjbGFzcyBLVVJMOworICAgIGNsYXNzIE5vdGlmaWNhdGlvblByb3ZpZGVyOwogICAgIGNsYXNz
IFN0cmluZzsKICAgICBjbGFzcyBXb3JrZXJDb250ZXh0OwogICAgIGNsYXNzIFdvcmtlckxvYWRl
clByb3h5OwpAQCAtNTYsNiArNTcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBX
b3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dv
cmtlckxvYWRlclByb3h5OyB9CiAgICAgICAgIFdvcmtlck9iamVjdFByb3h5JiB3b3JrZXJPYmpl
Y3RQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyT2JqZWN0UHJveHk7IH0KIAorI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByb3ZpZGVy
KiBnZXROb3RpZmljYXRpb25Qcm92aWRlcigpIHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUHJvdmlk
ZXI7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHNldE5vdGlmaWNhdGlvblByb3ZpZGVyKE5vdGlm
aWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcikgeyBtX25vdGlmaWNhdGlvblByb3ZpZGVyID0gcHJv
dmlkZXI7IH0KKyNlbmRpZgorCiAgICAgcHJpdmF0ZToKICAgICAgICAgV29ya2VyVGhyZWFkKGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VD
b2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5Jik7CiAKQEAgLTcxLDYg
Kzc3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgTXV0ZXggbV90aHJlYWRDcmVh
dGlvbk11dGV4OwogCiAgICAgICAgIE93blB0cjxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4gbV9z
dGFydHVwRGF0YTsKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICBOb3RpZmlj
YXRpb25Qcm92aWRlciogbV9ub3RpZmljYXRpb25Qcm92aWRlcjsKKyNlbmRpZgogICAgIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQt
d2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CShy
ZXZpc2lvbiA0NTU3NCkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIG15ICgkdGhyZWVEUmVuZGVyaW5nU3VwcG9ydCwg
JGNoYW5uZWxNZXMKICAgICAkamF2YVNjcmlwdERlYnVnZ2VyU3VwcG9ydCwgJG9mZmxpbmVXZWJB
cHBsaWNhdGlvblN1cHBvcnQsICRzdmdTdXBwb3J0LCAkc3ZnQW5pbWF0aW9uU3VwcG9ydCwKICAg
ICAkc3ZnQXNJbWFnZVN1cHBvcnQsICRzdmdET01PYmpDQmluZGluZ3NTdXBwb3J0LCAkc3ZnRm9u
dHNTdXBwb3J0LCAkc3ZnRm9yZWlnbk9iamVjdFN1cHBvcnQsCiAgICAgJHN2Z1VzZVN1cHBvcnQs
ICR2aWRlb1N1cHBvcnQsICR3bWxTdXBwb3J0LCAkd29ya2Vyc1N1cHBvcnQsICR4cGF0aFN1cHBv
cnQsICR4c2x0U3VwcG9ydCwKLSAgICAkY292ZXJhZ2VTdXBwb3J0KTsKKyAgICAkY292ZXJhZ2VT
dXBwb3J0LCAkbm90aWZpY2F0aW9uc1N1cHBvcnQpOwogCiBteSBAZmVhdHVyZXMgPSAoCiAgICAg
eyBvcHRpb24gPT4gIjNkLXJlbmRlcmluZyIsIGRlc2MgPT4gIlRvZ2dsZSAzRCByZW5kZXJpbmcg
c3VwcG9ydCIsCkBAIC04Miw2ICs4Miw5IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlv
biA9PiAiamF2YXNjcmlwdC1kZWJ1Z2dlciIsIGRlc2MgPT4gIlRvZ2dsZSBKYXZhU2NyaXB0IERl
YnVnZ2VyL1Byb2ZpbGVyIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfSkFWQVND
UklQVF9ERUJVR0dFUiIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRqYXZhU2NyaXB0RGVidWdn
ZXJTdXBwb3J0IH0sCiAKKyAgICB7IG9wdGlvbiA9PiAibm90aWZpY2F0aW9ucyIsIGRlc2MgPT4g
IlRvZ2dsZSBEZXNrdG9wIE5vdGlmaWNhdGlvbnMgU3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4g
IkVOQUJMRV9OT1RJRklDQVRJT05TIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJG5vdGlmaWNh
dGlvbnNTdXBwb3J0IH0sCisKICAgICB7IG9wdGlvbiA9PiAib2ZmbGluZS13ZWItYXBwbGljYXRp
b25zIiwgZGVzYyA9PiAiVG9nZ2xlIE9mZmxpbmUgV2ViIEFwcGxpY2F0aW9uIFN1cHBvcnQiLAog
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TIiwgZGVmYXVs
dCA9PiAxLCB2YWx1ZSA9PiBcJG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQgfSwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32344</attachid>
            <date>2009-07-06 18:18:59 -0700</date>
            <delta_ts>2009-07-23 10:54:25 -0700</delta_ts>
            <desc>Notifications API, Core &amp; JSC Bindings</desc>
            <filename>wk_core.diff</filename>
            <type>text/plain</type>
            <size>90750</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ1NTc2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDctMDYgIEpvaG4gR3Jl
Z2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRGVza3RvcCBOb3RpZmljYXRpb25zIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0NjMKKworICAgICAgICBBZGRz
IEVOQUJMRV9OT1RJRklDQVRJT04gZmxhZy4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDA5
LTA3LTA2ICBBZGEgQ2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyIGFuZCBNYXJrIFJvd2UuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24g
NDU1NzQpCisrKyBKYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBFTkFCTEVfRklMVEVSUyA9
IDsKIEVOQUJMRV9HRU9MT0NBVElPTiA9IDsKIEVOQUJMRV9JQ09OREFUQUJBU0UgPSBFTkFCTEVf
SUNPTkRBVEFCQVNFOwogRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIgPSBFTkFCTEVfSkFWQVND
UklQVF9ERUJVR0dFUjsKK0VOQUJMRV9OT1RJRklDQVRJT05TID0gOwogRU5BQkxFX09GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUyA9IEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7CiBFTkFC
TEVfU1ZHID0gRU5BQkxFX1NWRzsKIEVOQUJMRV9TVkdfQU5JTUFUSU9OID0gRU5BQkxFX1NWR19B
TklNQVRJT047CkBAIC01MSw0ICs1Miw0IEBAIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktF
UlM7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9Y
U0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfRE9NX1NUT1JB
R0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09O
REFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX09GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAk
KEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChF
TkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NW
R19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQo
RU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxF
XzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RBVEFC
QVNFKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VP
TE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUikgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NW
R19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdf
Rk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChF
TkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDQ1
NTc0KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxNCw2ICs1MTQsMTAgQEAKICNkZWZpbmUgRU5BQkxFX0dFT0xPQ0FUSU9OIDAKICNlbmRpZgog
CisjaWYgIWRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpCisjZGVmaW5lIEVOQUJMRV9OT1RJ
RklDQVRJT05TIDAKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX1RFWFRfQ0FSRVQpCiAj
ZGVmaW5lIEVOQUJMRV9URVhUX0NBUkVUIDEKICNlbmRpZgpJbmRleDogV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ1NTc2KQorKysg
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMDUgQEAKKzIwMDkt
MDctMDYgIEpvaG4gR3JlZ2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVza3RvcCBOb3RpZmljYXRpb25zIEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0NjMK
KworICAgICAgICBBZGRzIGFuIGltcGxlbWVudGF0aW9uIG9mIGRlc2t0b3Agbm90aWZpY2F0aW9u
cywgYmVoaW5kIHRoZSBjb21waWxlLXRpbWUKKyAgICAgICAgZmxhZyBFTkFCTEUoTk9USUZJQ0FU
SU9OUykuICBUaGlzIGNvZGUgc2ltcGx5IHJlbGF5cyBjYWxscyBvbiB0aGUgSmF2YVNjcmlwdAor
ICAgICAgICBBUEkgdGhyb3VnaCBhIE5vdGlmaWNhdGlvblByb3ZpZGVyIGludGVyZmFjZSwgd2hp
Y2ggbXVzdCBwcm92aWRlIHRoZSBzZXJ2aWNlcworICAgICAgICB0byBhY3R1YWxseSBub3RpZnkg
dGhlIHVzZXIgYW5kIG1hbmFnZSB0aGUgZGVza3RvcC4gIFRoaXMgcHJvdmlkZXIgaXMgaW5qZWN0
ZWQKKyAgICAgICAgaW50byBXZWJLaXQgdGhyb3VnaCB0aGUgQ2hyb21lQ2xpZW50IGZvciBub3Jt
YWwgcGFnZSBjb250ZXh0cyBhbmQgdGhyb3VnaCB0aGUKKyAgICAgICAgV29ya2VyVGhyZWFkIGZv
ciB3b3JrZXIgY29udGV4dHMuCisKKyAgICAgICAgQSBwZXJtaXNzaW9ucyBBUEkgaXMgZGVmaW5l
ZCBvbiBhIHBlci1vcmlnaW4gYmFzaXMsIHdoaWNoIGFsbG93cyBhIHdlYiBwYWdlCisgICAgICAg
IHRvIGNoZWNrIGlmIGl0cyBvcmlnaW4gaXMgYWxsb3dlZCB0byBzaG93IGRlc2t0b3Agbm90aWZp
Y2F0aW9ucywgYW5kIHRvIHJlcXVlc3QKKyAgICAgICAgcGVybWlzc2lvbiBmb3IgaXRzIG9yaWdp
bi4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmVDb21tb24u
dnNwcm9wczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6Om5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkpTTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVIVE1MTm90aWZpY2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVOb3RpZmljYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SlNOb3RpZmljYXRpb25DZW50ZXI6OmNoZWNrUGVybWlzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpKU05vdGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVzdFBlcm1pc3Np
b24pOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkVtcHR5Q2hyb21lQ2xpZW50Ojpub3RpZmljYXRpb25Qcm92aWRlcik6CisgICAgICAgICogbm90
aWZpY2F0aW9uczogQWRkZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjpjYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkaXNw
YXRjaERpc3BsYXlFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRpc3Bh
dGNoRXJyb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRpc3BhdGNo
Q2xvc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmFkZEV2ZW50TGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpyZW1vdmVFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRpc3BsYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OmNsb3NlKToKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbjo6aXNIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bjo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y29udGVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpvbmRpc3BsYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjpzZXRPbmRpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uOjpvbmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2V0T25l
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246Om9uY2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzZXRPbmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb246OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNlbnRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVy
OjpOb3RpZmljYXRpb25DZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2Vu
dGVyOjpjaGVja1Blcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2Vu
dGVyOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25DZW50ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0
ZUhUTUxOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVy
OjpjcmVhdGVOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2Vu
dGVyOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNlbnRlcjo6cHJv
dmlkZXIpOgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbDog
QWRkZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250ZW50cy5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNvbnRlbnRzOjpOb3RpZmljYXRp
b25Db250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250ZW50czo6aWNv
bik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250ZW50czo6dGl0bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udGVudHM6OmJvZHkpOgorICAgICAgICAqIG5v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb25Qcm92aWRlcjo6KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByb3ZpZGVyOjp+Tm90aWZpY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAqIHBhZ2UvQ2hy
b21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6bm90aWZpY2F0aW9uUHJvdmlkZXIp
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQu
aDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6d2Via2l0Tm90aWZp
Y2F0aW9ucyk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RP
TVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6On5Xb3Jr
ZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OndlYmtpdE5vdGlm
aWNhdGlvbnMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyQ29udGV4dC5pZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJl
YWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6Z2V0Tm90aWZpY2F0aW9uUHJv
dmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjpzZXROb3RpZmljYXRpb25Q
cm92aWRlcik6CisKIDIwMDktMDctMDYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5jcHAJKHJldmlzaW9uIDQ1NTc0KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIsOCBAQAogI2luY2x1ZGUgIkpTTm9kZUl0ZXJhdG9y
LmNwcCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmNwcCIKICNpbmNsdWRlICJKU05vdGF0aW9uLmNw
cCIKKyNpbmNsdWRlICJKU05vdGlmaWNhdGlvbkNlbnRlci5jcHAiCisjaW5jbHVkZSAiSlNOb3Rp
ZmljYXRpb24uY3BwIgogI2luY2x1ZGUgIkpTT3ZlcmZsb3dFdmVudC5jcHAiCiAjaW5jbHVkZSAi
SlNQbHVnaW4uY3BwIgogI2luY2x1ZGUgIkpTUGx1Z2luQXJyYXkuY3BwIgpJbmRleDogV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQkocmV2aXNpb24gNDU1NzQpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJDb3Jl
KS9odG1sIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3RvciBcCiAgICAgJChXZWJDb3JlKS9sb2Fk
ZXIvYXBwY2FjaGUgXAorICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucyBcCiAgICAgJChXZWJD
b3JlKS9wYWdlIFwKICAgICAkKFdlYkNvcmUpL3BsdWdpbnMgXAogICAgICQoV2ViQ29yZSkvc3Rv
cmFnZSBcCkBAIC0xODgsNiArMTg5LDggQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgTm9kZUl0ZXJh
dG9yIFwKICAgICBOb2RlTGlzdCBcCiAgICAgTm90YXRpb24gXAorICAgIE5vdGlmaWNhdGlvbiBc
CisgICAgTm90aWZpY2F0aW9uQ2VudGVyIFwKICAgICBPdmVyZmxvd0V2ZW50IFwKICAgICBQbHVn
aW4gXAogICAgIFBsdWdpbkFycmF5IFwKQEAgLTY3OCw3ICs2ODEsNyBAQCBlbmRpZgogIyBKYXZh
U2NyaXB0IGJpbmRpbmdzCiAKIEdFTkVSQVRFX0JJTkRJTkdTID0gcGVybCAtSSAkKFdlYkNvcmUp
L2JpbmRpbmdzL3NjcmlwdHMgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJp
bmRpbmdzLnBsIFwKLSAgICAtLWluY2x1ZGUgZG9tIC0taW5jbHVkZSBodG1sIC0taW5jbHVkZSBj
c3MgLS1pbmNsdWRlIHBhZ2UgLS1pbmNsdWRlIHhtbCAtLWluY2x1ZGUgc3ZnIC0tb3V0cHV0RGly
IC4KKyAgICAtLWluY2x1ZGUgZG9tIC0taW5jbHVkZSBodG1sIC0taW5jbHVkZSBjc3MgLS1pbmNs
dWRlIHBhZ2UgLS1pbmNsdWRlIG5vdGlmaWNhdGlvbnMgLS1pbmNsdWRlIHhtbCAtLWluY2x1ZGUg
c3ZnIC0tb3V0cHV0RGlyIC4KIAogR0VORVJBVEVfQklORElOR1NfU0NSSVBUUyA9IFwKICAgICBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gXApJbmRleDogV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA0
NTU3NCkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDYg
KzI1LDcgQEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUgXAogCS1J
JChzcmNkaXIpL1dlYkNvcmUvbG9hZGVyL2ljb24gXAorCS1JJChzcmNkaXIpL1dlYkNvcmUvbm90
aWZpY2F0aW9ucyBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9wYWdlIFwKIAktSSQoc3JjZGlyKS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uIFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL3BsYXRmb3JtIFwK
QEAgLTIzMSw2ICsyMzIsOCBAQCBJRExfQklORElOR1MgKz0gXAogCVdlYkNvcmUvaHRtbC9Wb2lk
Q2FsbGJhY2suaWRsIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlk
bCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5pZGwgXAorCVdlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBcCiAJV2ViQ29yZS9wYWdlL0JhckluZm8uaWRsIFwK
IAlXZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwgXAogCVdlYkNvcmUvcGFnZS9Db29yZGluYXRlcy5p
ZGwgXApAQCAtMjQyOCw2ICsyNDMxLDI0IEBAIHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR2VvbG9jYXRpb25TZXJ2aWNlR3RrLmgKIGVuZGlmICMgRU5EIEVO
QUJMRV9HRU9MT0NBVElPTgogCisjIC0tLS0KKyMgTm90aWZpY2F0aW9ucyBzdXBwb3J0CisjIC0t
LS0KK2lmIEVOQUJMRV9OT1RJRklDQVRJT05TCitGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCAr
PSBFTkFCTEVfTk9USUZJQ0FUSU9OUz0xCisKK3dlYmNvcmVfY3BwZmxhZ3MgKz0gXAorCS1ERU5B
QkxFX05PVElGSUNBVElPTlM9MQorCit3ZWJjb3JlX3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmggXAorCVdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIu
Y3BwIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggXAorCVdl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Qcm92aWRlci5oIFwKKwlXZWJDb3JlL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udGVudHMuaAorCitlbmRpZiAjIEVORCBFTkFCTEVf
Tk9USUZJQ0FUSU9OUwogCiAjIC0tLS0KICMgU1ZHIFN1cHBvcnQKSW5kZXg6IFdlYkNvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gNDU1NzQp
CisrKyBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIEVOQUJMRV9GSUxURVJTID0gOwogRU5BQkxFX0dF
T0xPQ0FUSU9OID0gOwogRU5BQkxFX0lDT05EQVRBQkFTRSA9IEVOQUJMRV9JQ09OREFUQUJBU0U7
CiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VS
OworRU5BQkxFX05PVElGSUNBVElPTlMgPSA7CiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJ
T05TID0gRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUzsKIEVOQUJMRV9TVkcgPSBFTkFC
TEVfU1ZHOwogRU5BQkxFX1NWR19BTklNQVRJT04gPSBFTkFCTEVfU1ZHX0FOSU1BVElPTjsKQEAg
LTUyLDQgKzUzLDUgQEAgRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJMRV9Y
UEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRV
UkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNT
QUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfRE9N
X1NUT1JBR0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX09G
RkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFU
SU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5H
UykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5B
QkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktF
UlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQo
RU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxF
X0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5B
QkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0Up
ICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQo
RU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9T
VkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JK
Q19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpF
Q1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5B
QkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKKwpJbmRleDogV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA0NTU3NCkKKysrIFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcg
KzY3LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRv
b2wiDQotCQkJCUNvbW1hbmRMaW5lPSJta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZx
dW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gwRDsmI3gw
QTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
XEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVM
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFzbSZxdW90OyYj
eDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDIm
Z3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMm
cXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBBO21r
ZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9y
d2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05V
TCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjb25maWcuaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW5c
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caW5zcGVjdG9yXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXBwY2FjaGVcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hp
dmVcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVy
XGljb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caGlzdG9y
eVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XGNm
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cY3NzXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlvblwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxjZlwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1wqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGlj
c1x0cmFuc2Zvcm1zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXGdyYXBoaWNzXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZVwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0XCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpblwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29y
a1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cc3FsXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXGNhaXJvXGNhaXJvXHNyY1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxiaW5kaW5nc1xqc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwYWdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBhZ2VcYW5pbWF0aW9uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBhZ2Vcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGJyaWRnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbHVn
aW5zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNc
d2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmlu
Z1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdc
c3R5bGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGlu
Z1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxkb21cKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ceG1sXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxzdG9yYWdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtlcnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXGJp
bmRpbmdzJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVy
c1xydW50aW1lXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXG1hc21cKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilc
Li5cRm9yd2FyZGluZ0hlYWRlcnNccGNyZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xw
cm9maWxlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3JlY1wqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVy
c1x3cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZc
dW5pY29kZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVc
aWN1XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYj
eDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJl
c291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAvcyAvZXhjbHVk
ZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXGluc3BlY3Rvclxmcm9udC1l
bmRcKiZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNc
aW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9qZWN0RGly
KVwuLlxFbmdsaXNoLmxwcm9qXGxvY2FsaXplZFN0cmluZ3MuanMmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4MEQ7JiN4
MEE7JiN4MEQ7JiN4MEE7aWYgZXhpc3QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJ1aWxkZmFp
bGVkJnF1b3Q7IGRlbCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQmcXVvdDsm
I3gwRDsmI3gwQTsiDQorCQkJCUNvbW1hbmRMaW5lPSJta2RpciAyJmd0O05VTCAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZn
dDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVycyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsm
I3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO21rZGly
IDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2Fy
ZGluZ0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFz
bSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBB
O21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVc
Rm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05V
TCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBE
OyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTtta2Rp
ciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjb25maWcuaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2Vz
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxp
dHlcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJp
bGl0eVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caW5z
cGVjdG9yXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRl
clwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXBw
Y2FjaGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVy
XGFyY2hpdmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9h
ZGVyXGFyY2hpdmVcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cbG9hZGVyXGljb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5caGlzdG9yeVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxo
aXN0b3J5XGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0
bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbm90aWZpY2F0
aW9uc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjc3NcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9u
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNm
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdy
YXBoaWNzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXGdyYXBoaWNzXHRyYW5zZm9ybXNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHRcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0
d29ya1xjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxuZXR3b3JrXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVxzcWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cY2Fpcm9cY2Fpcm9cc3JjXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5ccGFnZVxhbmltYXRpb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5ccGFnZVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5cYnJpZGdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsdWdpbnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5ccGx1Z2luc1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5ccmVuZGVyaW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHJlbmRlcmluZ1xzdHlsZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxlZGl0aW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGRvbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx4bWxcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2VcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cd29ya2Vyc1wqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlclwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXIm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndh
cmRpbmdIZWFkZXJzXHJ1bnRpbWVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcbWFz
bVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3
YXJkaW5nSGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBjcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRp
bmdIZWFkZXJzXHByb2ZpbGVyXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3cmVj
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0ZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGYmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdI
ZWFkZXJzXHd0Zlx1bmljb2RlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3
dGZcdW5pY29kZVxpY3VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4
MEE7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJp
blxXZWJLaXQucmVzb3VyY2VzXGluc3BlY3RvciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
IC9zIC9leGNsdWRlOnhjb3B5LmV4Y2x1ZGVzICZxdW90OyQoUHJvamVjdERpcilcLi5caW5zcGVj
dG9yXGZyb250LWVuZFwqJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0
LnJlc291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcZW4ubHByb2omcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAvcyAvZXhjbHVkZTp4Y29weS5leGNsdWRlcyAmcXVvdDsk
KFByb2plY3REaXIpXC4uXEVuZ2xpc2gubHByb2pcbG9jYWxpemVkU3RyaW5ncy5qcyZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcZW4ubHByb2omcXVv
dDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTtpZiBleGlzdCAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcYnVpbGRmYWlsZWQmcXVvdDsgZGVsICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxidWlsZGZh
aWxlZCZxdW90OyYjeDBEOyYjeDBBOyINCiAJCQkvPg0KIAkJPC9Db25maWd1cmF0aW9uPg0KIAkJ
PENvbmZpZ3VyYXRpb24NCkBAIC03MTkwLDYgKzcxOTAsMTAyIEBACiAJCQkJPg0KIAkJCTwvRmls
ZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNOb3RpZmljYXRpb24uY3BwIg0KKwkJCQk+
DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIN
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19JbnRl
cm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJ
CQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1l
PSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
Lz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQor
CQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNOb3RpZmljYXRpb24uaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxv
YmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNOb3RpZmljYXRpb25DZW50ZXIuY3Bw
Ig0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2lu
MzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29s
DQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFz
ZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJ
PFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJE
ZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
Lz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQor
CQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxv
YmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNOb3RpZmljYXRpb25DZW50ZXIuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2Vi
S2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNPdmVyZmxv
d0V2ZW50LmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0yMzgzMiw2
ICsyMzkyOCwzNCBAQAogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQogCQk8RmlsdGVyDQorCQkJ
TmFtZT0ibm90aWZpY2F0aW9ucyINCisJCQk+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxub3RpZmljYXRpb25zXE5vdGlmaWNhdGlvbi5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxub3RpZmljYXRpb25zXE5vdGlmaWNh
dGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb25DZW50ZXIuY3BwIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cbm90aWZpY2F0aW9uc1xO
b3RpZmljYXRpb25DZW50ZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uQ29udGVudHMuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5v
dGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uUHJvdmlkZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4N
CisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KIAkJCU5hbWU9ImVkaXRpbmciDQogCQkJPg0KIAkJ
CTxGaWxlDQpAQCAtMjgwNjYsNiArMjgxOTAsMTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQog
CQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRGVza3RvcE5v
dGlmaWNhdGlvbnNDdXN0b20uY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxl
DQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRG9jdW1lbnRDdXN0b20uY3Bw
Ig0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlQ29tbW9uLnZzcHJvcHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlQ29tbW9uLnZzcHJvcHMJKHJldmlzaW9uIDQ1NTc0KQorKysgV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlQ29tbW9uLnZzcHJvcHMJKHdvcmtpbmcgY29weSkKQEAgLTcsNyAr
Nyw3IEBACiAJPg0KIAk8VG9vbA0KIAkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCUFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoUHJvamVjdERpcikuLlwmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmls
aXR5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XHdpbiZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxi
cmlkZ2VcYyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cY3NzJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxlZGl0aW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmcm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZSZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cYmluZGluZ3NcanMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRv
bSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZG9tXGRlZmF1bHQmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGhpc3RvcnkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWwmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGluc3BlY3RvciZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cbG9hZGVyJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXBwY2FjaGUm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxjZiZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5cbG9hZGVyXGljb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2UmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxwYWdlXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm0mcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlvbiZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cc3FsJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmsmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcd2luJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxjZiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cZ3JhcGhpY3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdy
YXBoaWNzXG9wZW50eXBlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFw
aGljc1x0cmFuc2Zvcm1zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW4mcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHhtbCZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilc
b2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
dWdpbnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcd2luJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHN2Z1xncmFwaGljc1xmaWx0ZXJzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmcmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
c3RvcmFnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cd29ya2VycyZxdW90OzsmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cRm9yd2Fy
ZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVv
dDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcaWN1JnF1b3Q7OyZxdW90OyQo
V2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXGljb252JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGli
cmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVz
RGlyKVxpbmNsdWRlXHNxbGl0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5j
bHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5j
bHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVycyZxdW90OzsmcXVvdDsk
KFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmls
aXR5SGVhZGVyc1xHTlVDb21wYXRpYmlsaXR5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxz
dmdcYW5pbWF0aW9uJnF1b3Q7Ig0KKwkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi4mcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXGFjY2Vzc2liaWxpdHlcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2Um
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxjJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxjc3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGVkaXRpbmcmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXG5vdGlmaWNhdGlvbnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHJlbmRlcmluZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHN0eWxl
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xqcyZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cZG9tJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxkb21cZGVmYXVsdCZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caGlzdG9yeSZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5caHRtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caW5zcGVjdG9yJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxsb2FkZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxv
YWRlclxhcHBjYWNoZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmUm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNmJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxsb2FkZXJcaWNvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
cGFnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb24mcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2Vcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxzcWwmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cbmV0d29yayZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3
aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXHRleHQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBo
aWNzXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ceG1sJnF1b3Q7OyZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNlcyZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGx1Z2lucyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3
aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xncmFwaGljcyZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzXGZpbHRlcnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHN2ZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cd21sJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxzdG9yYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3b3JrZXJz
JnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rp
cilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxpY3Um
cXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcaWNvbnYmcXVvdDs7JnF1
b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcc3FsaXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGli
cmFyaWVzRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGli
cmFyaWVzRGlyKVxJbmNsdWRlXENvcmVGb3VuZGF0aW9uXE9TWENvbXBhdGliaWxpdHlIZWFkZXJz
JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXENvcmVGb3VuZGF0aW9u
XE9TWENvbXBhdGliaWxpdHlIZWFkZXJzXEdOVUNvbXBhdGliaWxpdHkmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHN2Z1xhbmltYXRpb24mcXVvdDsiDQogCQlQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz0iX19XSU4zMl9fO1dFQkNPUkVfQ09OVEVYVF9NRU5VUztFTkFCTEVfREFUQUJBU0U7RU5B
QkxFX0RBVEFHUklEO0VOQUJMRV9ET01fU1RPUkFHRTtFTkFCTEVfSUNPTkRBVEFCQVNFO0VOQUJM
RV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7RU5BQkxFX1NWRztFTkFCTEVfU1ZHX0FOSU1BVElP
TjtFTkFCTEVfU1ZHX0FTX0lNQUdFO0VOQUJMRV9TVkdfRk9OVFM7RU5BQkxFX1NWR19GT1JFSUdO
X09CSkVDVDtFTkFCTEVfU1ZHX1VTRTtFTkFCTEVfV09SS0VSUztFTkFCTEVfWFBBVEg7RU5BQkxF
X1hTTFQiDQogCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCiAJCVByZWNvbXBpbGVkSGVhZGVy
VGhyb3VnaD0iV2ViQ29yZVByZWZpeC5oIg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0NTU3NCkKKysrIFdlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MTQsNiArNjE0LDEw
IEBACiAJCTMxQzBGRjRDMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzBG
RjQ2MEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCAqLzsgfTsK
IAkJMzFDMEZGNEQwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzBGRjQ3
MEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQubW0gKi87IH07CiAJ
CTMxQzBGRjRFMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnRJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFD
MEZGNDgwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFs
LmggKi87IH07CisJCTMzOTBDQTU1MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM5
MENBNTEwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5jcHAgKi87IH07CisJ
CTMzOTBDQTU2MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzOTBDQTUyMEZGQzE1N0Iw
MDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaCAqLzsgfTsKKwkJMzM5MENBNTcwRkZDMTU3
QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzOTBDQTUzMEZGQzE1N0IwMDkyMTk2MiAvKiBO
b3RpZmljYXRpb25DZW50ZXIuaWRsICovOyB9OworCQkzMzkwQ0E1ODBGRkMxNTdCMDA5MjE5NjIg
LyogTm90aWZpY2F0aW9uQ29udGVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMzOTBDQTU0MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25D
b250ZW50cy5oICovOyB9OwogCQkzNzFGNEY0MDBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUY0RjNF
MEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3MUY0RjQxMEQyNUI5QUYwMEVDRTBENSAvKiBGb250
RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
NzFGNEYzRjBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuY3BwICovOyB9OwogCQkzNzFGNEZG
QzBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUY0RkZBMEQyNUU3RjMwMEVDRTBENSAv
KiBTZWdtZW50ZWRGb250RGF0YS5oICovOyB9OwpAQCAtNTU0Miw2ICs1NTQ2LDE0IEBACiAJCTMx
QzBGRjQ2MEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxQzBGRjQ3MEU0Q0VGREQwMDdENkZFNSAv
KiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxQzBGRjQ4MEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFu
c2l0aW9uRXZlbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01XZWJLaXRUcmFuc2l0aW9uRXZlbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMzNGNzA0RTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBOb3RpZmljYXRpb24uaWRsOyBwYXRoID0gbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA0
RjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5oOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMzRjcwNTAwRkI0OUNBMjAw
OEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBOb3RpZmljYXRpb24uY3BwOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA1MTBGQjQ5Q0EyMDA4
RTEyQTYgLyogTm90aWZpY2F0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTm90aWZpY2F0aW9uUHJvdmlkZXIuaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzM5MENB
NTEwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOb3RpZmljYXRpb25DZW50ZXIuY3BwOyBwYXRoID0g
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMzkwQ0E1MjBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvbkNlbnRlci5o
OyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzM5MENBNTMwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlv
bkNlbnRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTm90aWZpY2F0aW9uQ2VudGVyLmlk
bDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzM5MENBNTQwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNh
dGlvbkNvbnRlbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNh
dGlvbkNvbnRlbnRzLmg7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRlbnRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUY0RjNFMEQyNUI5QUYwMEVDRTBE
NSAvKiBGb250RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250RGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFGNEYzRjBEMjVCOUFGMDBFQ0Uw
RDUgLyogRm9udERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Rm9udERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFGNEZGQTBEMjVF
N0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2VnbWVudGVkRm9udERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTk0MTQsNiArOTQyNiw3IEBACiAJCQkJOTNFRUMxRUMwOUMyODc3NzAwQzUxNUQxIC8q
IGh0bWwgKi8sCiAJCQkJMUM4MUI5NEQwRTk3MzJEOTAwMjY2RTA3IC8qIGluc3BlY3RvciAqLywK
IAkJCQlCQ0IxNkJGQjA5NzlDMzg3MDA0Njc3NDEgLyogbG9hZGVyICovLAorCQkJCTMzM0Y3MDNE
MEZCNDlDMTYwMDhFMTJBNiAvKiBub3RpZmljYXRpb25zICovLAogCQkJCTY1QkYwMjE4MDk3NDgw
NjMwMEM0MzE5NiAvKiBwYWdlICovLAogCQkJCUJDRjFBNUJBMDk3ODMyMDkwMDYxQTEyMyAvKiBw
bGF0Zm9ybSAqLywKIAkJCQk1RENGODM2OTBENTkxNTc4MDA5NTNCQzYgLyogcGx1Z2lucyAqLywK
QEAgLTk4ODQsNiArOTg5NywyMSBAQAogCQkJbmFtZSA9IGFuaW1hdGlvbjsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTMzM0Y3MDNEMEZCNDlDMTYwMDhFMTJBNiAvKiBub3Rp
ZmljYXRpb25zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQkzMzkwQ0E1MTBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNwcCAqLywK
KwkJCQkzMzkwQ0E1MjBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmggKi8s
CisJCQkJMzM5MENBNTMwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5pZGwg
Ki8sCisJCQkJMzM5MENBNTQwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNvbnRlbnRz
LmggKi8sCisJCQkJMzMzRjcwNEUwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5pZGwg
Ki8sCisJCQkJMzMzRjcwNEYwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5oICovLAor
CQkJCTMzM0Y3MDUwMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uY3BwICovLAorCQkJ
CTMzM0Y3MDUxMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb25Qcm92aWRlci5oICovLAor
CQkJKTsKKwkJCW5hbWUgPSBub3RpZmljYXRpb25zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKIAkJNDQ5MTk1OTAwRkJFMTc1QjAwRDlGODI0IC8qIEV4cG9ydHMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTY5MTcsNiArMTY5NDUsOCBA
QAogCQkJCUJDNzdEMTZDMEZGMTlGNTYwMDcwODg3QiAvKiBKU0RhdGFHcmlkQ29sdW1uTGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCQ0FFMzcwRkYxOTM4NTAwMDc2MkFFIC8qIERhdGFHcmlk
RGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCQ0FFM0QwRkYxOTM5OTAwMDc2MkFF
IC8qIEpTRGF0YUdyaWREYXRhU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMzkwQ0E1NjBG
RkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkzMzkwQ0E1ODBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ29udGVudHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUM1MEQwRTgzMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNw
YWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdEQUFFRjBGRjk2MTVEMDBDRTAxMzggLyogRE9N
RGF0YUdyaWREYXRhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNUE2ODQyMjBGRkFCRTk4
MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNzAyOCw2
ICsxNzA1OCw3IEBACiAJCQkJQkM3N0NEQTMwRkVGRUI1MzAwNzA4ODdCIC8qIEhUTUxEYXRhR3Jp
ZENlbGxFbGVtZW50LmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQkM3N0NGOTkwRkYxNzI0MjAw
NzA4ODdCIC8qIERhdGFHcmlkQ29sdW1uTGlzdC5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCUJD
NzdDRjlGMEZGMTcyQjMwMDcwODg3QiAvKiBEYXRhR3JpZENvbHVtbi5pZGwgaW4gUmVzb3VyY2Vz
ICovLAorCQkJCTMzOTBDQTU3MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIu
aWRsIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE4OTMyLDYgKzE4OTYzLDcgQEAKIAkJCQlCQ0JDQUU1
NDBGRjFBMjlFMDAwNzYyQUUgLyogSlNIVE1MRGF0YUdyaWRFbGVtZW50Q3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDNzdEMUZEMEZGMjhEOUIwMDcwODg3QiAvKiBEYXRhR3JpZENvbHVt
bkxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3N0QyMzkwRkYyOTgwODAwNzA4ODdCIC8q
IERhdGFHcmlkQ29sdW1uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMzOTBDQTU1MEZGQzE1N0Iw
MDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzUw
RDBFODIwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM3REFBRUUwRkY5NjE1RDAwQ0UwMTM4IC8qIERPTURhdGFHcmlkRGF0YVNvdXJj
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNUE2ODQyNDBGRkFCRUFBMDBEMjQ2ODkgLyogU1FM
aXRlRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA0NTU3NCkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0
NCw3IEBACiAjaW5jbHVkZSAiSlNMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkpTTWVzc2FnZUNoYW5u
ZWxDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJK
U05vdGlmaWNhdGlvbkNlbnRlci5oIgogI2luY2x1ZGUgIkpTT3B0aW9uQ29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNX
ZWJLaXRQb2ludENvbnN0cnVjdG9yLmgiCkBAIC01Myw2ICs1NCw3IEBACiAjaW5jbHVkZSAiTG9j
YXRpb24uaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0
LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXIuaCIKQEAgLTM3NCw2ICszNzYsMTkgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6bG9jYXRp
b24oRXhlY1N0YXRlKgogICAgIHJldHVybiBqc0xvY2F0aW9uOwogfQogCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCitKU1ZhbHVlIEpTRE9NV2luZG93Ojpub3RpZmljYXRpb25zKEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKK3sKKyAgICBOb3RpZmljYXRpb25DZW50ZXIqIG5vdGlmaWNhdGlvbnMg
PSBpbXBsKCktPm5vdGlmaWNhdGlvbnMoKTsKKyAgICBpZiAoRE9NT2JqZWN0KiB3cmFwcGVyID0g
Z2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcihleGVjLT5nbG9iYWxEYXRhKCksIG5vdGlmaWNhdGlv
bnMpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKworICAgIEpTTm90aWZpY2F0aW9uQ2VudGVy
KiBqc05vdGlmaWNhdGlvbnMgPSBuZXcgKGV4ZWMpIEpTTm90aWZpY2F0aW9uQ2VudGVyKGdldERP
TVN0cnVjdHVyZTxKU05vdGlmaWNhdGlvbkNlbnRlcj4oZXhlYywgY29uc3RfY2FzdDxKU0RPTVdp
bmRvdyo+KHRoaXMpKSwgbm90aWZpY2F0aW9ucyk7CisgICAgY2FjaGVET01PYmplY3RXcmFwcGVy
KGV4ZWMtPmdsb2JhbERhdGEoKSwgbm90aWZpY2F0aW9ucywganNOb3RpZmljYXRpb25zKTsKKyAg
ICByZXR1cm4ganNOb3RpZmljYXRpb25zOworfQorI2VuZGlmCisKIHZvaWQgSlNET01XaW5kb3c6
OnNldExvY2F0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBGcmFt
ZSogbGV4aWNhbEZyYW1lID0gdG9MZXhpY2FsRnJhbWUoZXhlYyk7CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNEZXNrdG9wTm90aWZpY2F0aW9uc0N1c3RvbS5jcHAJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVza3RvcE5vdGlmaWNhdGlvbnND
dXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIkpTQ3VzdG9tVm9pZENhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNOb3RpZmljYXRp
b24uaCIKKyNpbmNsdWRlICJKU05vdGlmaWNhdGlvbkNlbnRlci5oIgorI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbi5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgorCit1c2luZyBuYW1l
c3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUgSlNOb3RpZmljYXRp
b25DZW50ZXI6OmNyZWF0ZUhUTUxOb3RpZmljYXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBB
cmdMaXN0JiBhcmdzKQoreworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFN0cmluZyB1
cmwgPSBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpOworICAgIEpTVmFsdWUgdmFsdWUgPSB0b0pT
KGV4ZWMsIE5vdGlmaWNhdGlvbjo6Y3JlYXRlKHVybCwgaW1wbCgpLT5jb250ZXh0KCksIGVjLCBp
bXBsKCktPnByb3ZpZGVyKCkpKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAg
IHJldHVybiB2YWx1ZTsKK30KKworSlNWYWx1ZSBKU05vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRl
Tm90aWZpY2F0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBOb3RpZmljYXRpb25Db250ZW50cyBjb250ZW50
cyhhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpLCBh
cmdzLmF0KDIpLnRvU3RyaW5nKGV4ZWMpKTsKKworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IHRvSlMo
ZXhlYywgTm90aWZpY2F0aW9uOjpjcmVhdGUoY29udGVudHMsIGltcGwoKS0+Y29udGV4dCgpLCBl
YywgaW1wbCgpLT5wcm92aWRlcigpKSk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsK
KyAgICByZXR1cm4gdmFsdWU7Cit9CisKK0pTVmFsdWUgSlNOb3RpZmljYXRpb25DZW50ZXI6OmNo
ZWNrUGVybWlzc2lvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7Cisg
ICAgcmV0dXJuIEpTVmFsdWUoZXhlYywgaW1wbCgpLT5jaGVja1Blcm1pc3Npb24oKSk7Cit9CisK
K0pTVmFsdWUgSlNOb3RpZmljYXRpb25DZW50ZXI6OnJlcXVlc3RQZXJtaXNzaW9uKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICAvLyBQZXJtaXNzaW9uIHJlcXVl
c3QgaXMgb25seSB2YWxpZCBmcm9tIHBhZ2UgY29udGV4dC4KKyAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0ID0gaW1wbCgpLT5jb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQtPmlz
V29ya2VyQ29udGV4dCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhF
cnJvcik7CisKKyAgICBpZiAoIWFyZ3MuYXQoMCkuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKKworICAgIFBhc3NSZWZQdHI8SlNDdXN0b21W
b2lkQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNDdXN0b21Wb2lkQ2FsbGJhY2s6OmNyZWF0ZShhcmdz
LmF0KDApLmdldE9iamVjdCgpLCBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5mcmFt
ZSgpKTsKKworICAgIGltcGwoKS0+cmVxdWVzdFBlcm1pc3Npb24oY2FsbGJhY2spOworICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYgLy8gRU5B
QkxFKE5PVElGSUNBVElPTlMpCisKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA0
NTU3NCkKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzMsNiArMTMzLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZXhjZWVkZWREYXRh
YmFzZVF1b3RhKEZyYW1lKiwgY29uc3QgU3RyaW5nJikgeyB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQorICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uUHJvdmlkZXIqIG5vdGlm
aWNhdGlvblByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQorI2VuZGlmCisKICAgICB2aXJ0
dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKikgeyB9
CkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQorCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0
aW9uQ29udGVudHMuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHVybCwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIE5vdGlmaWNhdGlv
blByb3ZpZGVyKiBwcm92aWRlcikKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlz
KQorICAgICwgbV9pc0hUTUwodHJ1ZSkKKyAgICAsIG1faXNTaG93aW5nKGZhbHNlKQorICAgICwg
bV9wcm92aWRlcihwcm92aWRlcikKK3sKKyAgICBpZiAobV9wcm92aWRlci0+Y2hlY2tQZXJtaXNz
aW9uKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpICE9IE5vdGlmaWNhdGlvblByb3ZpZGVyOjpQ
RVJNSVNTSU9OX0FMTE9XRUQpIHsKKyAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX25vdGlmaWNhdGlvblVSTCA9IGNvbnRleHQtPmNvbXBs
ZXRlVVJMKHVybCk7CisgICAgaWYgKHVybC5pc0VtcHR5KCkgfHwgIW1fbm90aWZpY2F0aW9uVVJM
LmlzVmFsaWQoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9Cit9CisKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IE5vdGlmaWNhdGlv
bkNvbnRlbnRzJiBjb250ZW50cywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcikKKyAgICA6IEFj
dGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQorICAgICwgbV9pc0hUTUwoZmFsc2UpCisgICAg
LCBtX2lzU2hvd2luZyhmYWxzZSkKKyAgICAsIG1fY29udGVudHMoY29udGVudHMpCisgICAgLCBt
X3Byb3ZpZGVyKHByb3ZpZGVyKQoreworICAgIGlmIChtX3Byb3ZpZGVyLT5jaGVja1Blcm1pc3Np
b24oY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSkgIT0gTm90aWZpY2F0aW9uUHJvdmlkZXI6OlBF
Uk1JU1NJT05fQUxMT1dFRCkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEtVUkwgaWNvbiA9IGNvbnRleHQtPmNvbXBsZXRlVVJMKGNv
bnRlbnRzLmljb24oKSk7CisgICAgaWYgKCFpY29uLmlzRW1wdHkoKSAmJiAhaWNvbi5pc1ZhbGlk
KCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
fQorCitOb3RpZmljYXRpb246On5Ob3RpZmljYXRpb24oKSAKK3sKK30KKwordm9pZCBOb3RpZmlj
YXRpb246OnNob3coKSAKK3sKKyAgICAvLyBwcmV2ZW50IGRvdWJsZS1zaG93aW5nCisgICAgaWYg
KCFtX2lzU2hvd2luZykKKyAgICAgICAgbV9pc1Nob3dpbmcgPSBtX3Byb3ZpZGVyLT5zaG93KHRo
aXMpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6Y2FuY2VsKCkgCit7CisgICAgaWYgKG1faXNT
aG93aW5nKQorICAgICAgICBtX3Byb3ZpZGVyLT5jYW5jZWwodGhpcyk7Cit9CisKK3ZvaWQgTm90
aWZpY2F0aW9uOjpkaXNwYXRjaERpc3BsYXlFdmVudCgpIAoreyAgIAorICAgIFJlZlB0cjxFdmVu
dD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKCJkaXNwbGF5IiwgZmFsc2UsIHRydWUpOworCisgICAg
aWYgKG1fb25EaXNwbGF5TGlzdGVuZXIpIHsKKyAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlz
KTsKKyAgICAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fb25E
aXNwbGF5TGlzdGVuZXItPmhhbmRsZUV2ZW50KGV2ZW50LmdldCgpLCB0cnVlKTsKKyAgICB9CisK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LnJlbGVh
c2UoKSwgZWMpOworICAgIEFTU0VSVCghZWMpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6ZGlz
cGF0Y2hFcnJvckV2ZW50KCkKK3sgIAorICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgdHJ1ZSk7CisKKyAgICBpZiAo
bV9vbkVycm9yTGlzdGVuZXIpIHsKKyAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAg
ICAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fb25FcnJvckxp
c3RlbmVyLT5oYW5kbGVFdmVudChldmVudC5nZXQoKSwgdHJ1ZSk7CisgICAgfQorCisgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hFdmVudChldmVudC5yZWxlYXNlKCksIGVj
KTsKKyAgICBBU1NFUlQoIWVjKTsKK30KKwordm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xv
c2VFdmVudCgpIAoreyAgIAorICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgdHJ1ZSk7CisKKyAgICBpZiAobV9vbkNs
b3NlTGlzdGVuZXIpIHsKKyAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAg
ZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fb25DbG9zZUxpc3RlbmVy
LT5oYW5kbGVFdmVudChldmVudC5nZXQoKSwgdHJ1ZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hFdmVudChldmVudC5yZWxlYXNlKCksIGVjKTsKKyAg
ICBBU1NFUlQoIWVjKTsKKworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6YWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQoreworICAgIFJlZlB0cjxSZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lcj4gcmVnaXN0ZXJlZExpc3RlbmVyID0gUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6
OmNyZWF0ZShldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICBtX2V2ZW50TGlz
dGVuZXJzLmFwcGVuZChyZWdpc3RlcmVkTGlzdGVuZXIpOworfQorCit2b2lkIE5vdGlmaWNhdGlv
bjo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK3sKKyAgICBzaXplX3Qgc2l6
ZSA9IG1fZXZlbnRMaXN0ZW5lcnMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CisgICAgICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByID0gKm1fZXZl
bnRMaXN0ZW5lcnNbaV07CisgICAgICAgIGlmIChyLmV2ZW50VHlwZSgpID09IGV2ZW50VHlwZSAm
JiByLmxpc3RlbmVyKCkgPT0gbGlzdGVuZXIgJiYgci51c2VDYXB0dXJlKCkgPT0gdXNlQ2FwdHVy
ZSkgeworICAgICAgICAgICAgci5zZXRSZW1vdmVkKHRydWUpOworICAgICAgICAgICAgbV9ldmVu
dExpc3RlbmVycy5yZW1vdmUoaSk7CisgICAgICAgICAgICByZXR1cm47IAorICAgICAgICB9Cisg
ICAgfQorfQorCitib29sIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2
ZW50PiBldmVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXJWZWN0b3IgbGlzdGVuZXJzQ29weSA9IG1fZXZlbnRMaXN0ZW5lcnM7CisgICAgc2l6ZV90
IHNpemUgPSBsaXN0ZW5lcnNDb3B5LnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgeworICAgICAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgciA9ICpsaXN0
ZW5lcnNDb3B5W2ldOworICAgICAgICBpZiAoci5ldmVudFR5cGUoKSA9PSBldmVudC0+dHlwZSgp
ICYmICFyLnJlbW92ZWQoKSkKKyAgICAgICAgICAgIHIubGlzdGVuZXIoKS0+aGFuZGxlRXZlbnQo
ZXZlbnQuZ2V0KCkpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE5vdGlm
aWNhdGlvbjo6ZGlzcGxheSgpCit7CisgICAgZGlzcGF0Y2hEaXNwbGF5RXZlbnQoKTsKK30KKwor
dm9pZCBOb3RpZmljYXRpb246OmVycm9yKCkKK3sKKyAgICBkaXNwYXRjaEVycm9yRXZlbnQoKTsK
K30KKwordm9pZCBOb3RpZmljYXRpb246OmNsb3NlKCkKK3sKKyAgICBkaXNwYXRjaENsb3NlRXZl
bnQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5P
VElGSUNBVElPTlMpCkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTm90aWZpY2F0aW9uX2ggIAorI2RlZmluZSBO
b3RpZmljYXRpb25faAorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAi
QXRvbWljU3RyaW5nSGFzaC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRM
aXN0ZW5lci5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25Qcm92aWRl
ci5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNvbnRlbnRzLmgiCisjaW5jbHVkZSAiUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorbmFtZXNwYWNlIFdl
YkNvcmUgeworCisgICAgY2xhc3MgV29ya2VyQ29udGV4dDsKKworICAgIGNsYXNzIE5vdGlmaWNh
dGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj4sIHB1YmxpYyBBY3RpdmVET01P
YmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCB7IAorICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRp
b25Qcm92aWRlciogcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24o
dXJsLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKTsgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBOb3RpZmljYXRpb25Db250ZW50cyYgY29udGVu
dHMsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBO
b3RpZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3Rp
ZmljYXRpb24oY29udGVudHMsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpOyB9CisgICAgICAgIAor
ICAgICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb24oKTsKKworICAgICAgICB2b2lkIHNob3coKTsK
KyAgICAgICAgdm9pZCBjYW5jZWwoKTsKKyAgICAKKyAgICAgICAgYm9vbCBpc0hUTUwoKSB7IHJl
dHVybiBtX2lzSFRNTDsgfQorICAgICAgICBLVVJMIHVybCgpIHsgcmV0dXJuIG1fbm90aWZpY2F0
aW9uVVJMOyB9CisgICAgICAgIE5vdGlmaWNhdGlvbkNvbnRlbnRzJiBjb250ZW50cygpIHsgcmV0
dXJuIG1fY29udGVudHM7IH0KKworICAgICAgICBFdmVudExpc3RlbmVyKiBvbmRpc3BsYXkoKSBj
b25zdCB7IHJldHVybiBtX29uRGlzcGxheUxpc3RlbmVyLmdldCgpOyB9CisgICAgICAgIHZvaWQg
c2V0T25kaXNwbGF5KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBt
X29uRGlzcGxheUxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVudExpc3Rl
bmVyKiBvbmVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9vbkVycm9yTGlzdGVuZXIuZ2V0KCk7IH0K
KyAgICAgICAgdm9pZCBzZXRPbmVycm9yKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRM
aXN0ZW5lcikgeyBtX29uRXJyb3JMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAg
RXZlbnRMaXN0ZW5lciogb25jbG9zZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25DbG9zZUxpc3RlbmVy
LmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25jbG9zZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbkNsb3NlTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9
CisgICAgCisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPjo6cmVmOworICAg
ICAgICB1c2luZyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj46OmRlcmVmOworICAgIAorICAgICAg
ICAvLyBDYWxsYmFjayBtZXRob2RzIGZvciB0aGUgcHJvdmlkZXIgd2hlbiBldmVudHMgb2NjdXIg
cmVnYXJkaW5nIHRoZSBub3RpZmljYXRpb24uCisgICAgICAgIHZvaWQgZGlzcGxheSgpOworICAg
ICAgICB2b2lkIGVycm9yKCk7CisgICAgICAgIHZvaWQgY2xvc2UoKTsKKworICAgICAgICAvLyBF
dmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQWN0aXZlRE9NT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiwgUGFzc1JlZlB0cjxFdmVudExpc3Rl
bmVyPiwgYm9vbCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYsIEV2ZW50TGlzdGVuZXIqLCBib29sKTsKKyAgICAgICAgdmlydHVh
bCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcm
IHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMs
IE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcik7CisgICAgICAgIE5vdGlmaWNhdGlvbihj
b25zdCBOb3RpZmljYXRpb25Db250ZW50cyYgZmllbGRzLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3Zp
ZGVyKTsKKworICAgICAgICB2b2lkIGRpc3BhdGNoRGlzcGxheUV2ZW50KCk7CisgICAgICAgIHZv
aWQgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50
KCk7CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAgICAgIHZpcnR1YWwg
dm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRl
cmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KKyAgCisgICAgICAgIGJvb2wgbV9pc0hUTUw7
CisgICAgICAgIEtVUkwgbV9ub3RpZmljYXRpb25VUkw7CisgICAgICAgIE5vdGlmaWNhdGlvbkNv
bnRlbnRzIG1fY29udGVudHM7CisKKyAgICAgICAgYm9vbCBtX2lzU2hvd2luZzsKKworICAgICAg
ICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbkRpc3BsYXlMaXN0ZW5lcjsKKyAgICAgICAgUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IG1fb25FcnJvckxpc3RlbmVyOworICAgICAgICBSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gbV9vbkNsb3NlTGlzdGVuZXI7CisgICAgICAgIFJlZ2lzdGVyZWRFdmVudExp
c3RlbmVyVmVjdG9yIG1fZXZlbnRMaXN0ZW5lcnM7CisKKyAgICAgICAgTm90aWZpY2F0aW9uUHJv
dmlkZXIqIG1fcHJvdmlkZXI7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBOb3RpZmljYXRpb25z
X2gKSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCittb2R1bGUgbm90aWZpY2F0aW9ucyB7CisKKyAgICBpbnRlcmZhY2Ug
WworICAgICAgICBDb25kaXRpb25hbD1OT1RJRklDQVRJT05TCisgICAgXSBOb3RpZmljYXRpb24g
eworICAgICAgICB2b2lkIHNob3coKTsKKyAgICAgICAgdm9pZCBjYW5jZWwoKTsKKworICAgICAg
ICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRpc3BsYXk7CisgICAgICAgIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9uZXJyb3I7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
Y2xvc2U7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNlbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNlbnRlci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ2VudGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorCisjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uQ2VudGVyLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUg
IlZvaWRDYWxsYmFjay5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvbkNlbnRlcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRpb25Qcm92aWRlciogcHJvdmlk
ZXIpIAorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKKyAgICAsIG1fbm90aWZpY2F0aW9uUHJvdmlkZXIo
cHJvdmlkZXIpIHt9CisKKworaW50IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y2hlY2tQZXJtaXNzaW9u
KCkgCit7CisgICAgcmV0dXJuIG1fbm90aWZpY2F0aW9uUHJvdmlkZXItPmNoZWNrUGVybWlzc2lv
bihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpOworfQorCit2b2lk
IE5vdGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVzdFBlcm1pc3Npb24oUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+IGNhbGxiYWNrKQoreworICAgIG1fbm90aWZpY2F0aW9uUHJvdmlkZXItPnJlcXVlc3RQ
ZXJtaXNzaW9uKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgY2Fs
bGJhY2spOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
ZW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q2VudGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ2VudGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5vdGlmaWNh
dGlvbkNlbnRlcl9oCisjZGVmaW5lIE5vdGlmaWNhdGlvbkNlbnRlcl9oCisKKyNpbmNsdWRlICJO
b3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OworCisgICAgY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8Tm90aWZpY2F0aW9uQ2VudGVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7IAorICAg
IHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTm90aWZpY2F0aW9uUHJvdmlk
ZXIqIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uQ2VudGVyKGNv
bnRleHQsIHByb3ZpZGVyKSk7IH0KKyAgICAgICAgCisgICAgICAgIFBhc3NSZWZQdHI8Tm90aWZp
Y2F0aW9uPiBjcmVhdGVIVE1MTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgVVJJLCBFeGNlcHRp
b25Db2RlJiBlYykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbjo6
Y3JlYXRlKEtVUkwoVVJJKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBlYywgbV9ub3RpZmlj
YXRpb25Qcm92aWRlcik7CisgICAgICAgIH0KKyAgICAgICAgUGFzc1JlZlB0cjxOb3RpZmljYXRp
b24+IGNyZWF0ZU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb25Db250ZW50cyBjb250ZW50cywgRXhj
ZXB0aW9uQ29kZSYgZWMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBOb3RpZmljYXRp
b246OmNyZWF0ZShjb250ZW50cywgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBlYywgbV9ub3Rp
ZmljYXRpb25Qcm92aWRlcik7CisgICAgICAgIH0KKworICAgICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OyB9CisgICAgICAgIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fbm90aWZpY2F0aW9uUHJvdmlkZXI7IH0KKworICAgICAgICBpbnQgY2hlY2tQZXJtaXNz
aW9uKCk7CisgICAgICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+IGNhbGxiYWNrKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIE5vdGlmaWNhdGlvbkNl
bnRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTm90aWZpY2F0aW9uUHJvdmlkZXIqKTsKKwor
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CisgICAgICAgIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBtX25vdGlmaWNhdGlvblByb3ZpZGVyOwor
ICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJ
RklDQVRJT05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uc19oCkluZGV4OiBXZWJDb3JlL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworbW9kdWxlIG5vdGlmaWNhdGlvbnMgeworCisgICAgaW50ZXJmYWNlIFsK
KyAgICAgICAgQ29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OUworICAgIF0gTm90aWZpY2F0aW9uQ2Vu
dGVyIHsKKyAgICAgICBbUmV0dXJuc05ld10gW0N1c3RvbV0gTm90aWZpY2F0aW9uIGNyZWF0ZUhU
TUxOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIHVybCk7CisgICAgICAgW1JldHVybnNOZXddIFtD
dXN0b21dIE5vdGlmaWNhdGlvbiBjcmVhdGVOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIGljb25V
cmwsIGluIERPTVN0cmluZyB0aXRsZSwgaW4gRE9NU3RyaW5nIGJvZHkpOworCisgICAgICAgW0N1
c3RvbV0gaW50IGNoZWNrUGVybWlzc2lvbigpOworICAgICAgIFtDdXN0b21dIHZvaWQgcmVxdWVz
dFBlcm1pc3Npb24oaW4gVm9pZENhbGxiYWNrIGNhbGxiYWNrKTsKKyAgICB9OworCit9CkluZGV4
OiBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udGVudHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udGVudHMuaAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250ZW50cy5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRpb25Db250ZW50c19o
CisjZGVmaW5lIE5vdGlmaWNhdGlvbkNvbnRlbnRzX2gKKworI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBOb3RpZmljYXRpb25Db250
ZW50cyB7IAorICAgIHB1YmxpYzoKKyAgICAgICAgTm90aWZpY2F0aW9uQ29udGVudHMoKSB7fQor
ICAgICAgICBOb3RpZmljYXRpb25Db250ZW50cyhjb25zdCBTdHJpbmcmIGljb25VcmwsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSkgCisgICAgICAgICAgICA6IG1faWNv
bihpY29uVXJsKQorICAgICAgICAgICAgLCBtX3RpdGxlKHRpdGxlKQorICAgICAgICAgICAgLCBt
X2JvZHkoYm9keSkge30KKworICAgICAgICBTdHJpbmcgaWNvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aWNvbjsgfQorICAgICAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9
CisgICAgICAgIFN0cmluZyBib2R5KCkgY29uc3QgeyByZXR1cm4gbV9ib2R5OyB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBTdHJpbmcgbV9pY29uOworICAgICAgICBTdHJpbmcgbV90aXRsZTsK
KyAgICAgICAgU3RyaW5nIG1fYm9keTsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2VuZGlmIC8vIE5vdGlmaWNh
dGlvbkNvbnRlbnRzX2gKSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Q
cm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25Qcm92aWRlci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvblByb3ZpZGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5v
dGlmaWNhdGlvblByb3ZpZGVyX2gKKyNkZWZpbmUgTm90aWZpY2F0aW9uUHJvdmlkZXJfaAorCisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKKwor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBj
bGFzcyBOb3RpZmljYXRpb247CisgICAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CisgICAgY2xhc3Mg
U3RyaW5nOworICAgIAorICAgIGNsYXNzIE5vdGlmaWNhdGlvblByb3ZpZGVyIHsKKworICAgIHB1
YmxpYzoKKyAgICAgICAgZW51bSBQZXJtaXNzaW9uIHsgCisgICAgICAgICAgICBQRVJNSVNTSU9O
X0FMTE9XRUQsCisgICAgICAgICAgICBQRVJNSVNTSU9OX05PVF9BTExPV0VELAorICAgICAgICAg
ICAgUEVSTUlTU0lPTl9ERU5JRUQKKyAgICAgICAgfTsKKworICAgICAgICB2aXJ0dWFsIH5Ob3Rp
ZmljYXRpb25Qcm92aWRlcigpIHt9CisKKyAgICAgICAgdmlydHVhbCBib29sIHNob3coTm90aWZp
Y2F0aW9uKiBvYmplY3QpID0gMDsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKE5vdGlm
aWNhdGlvbiogb2JqZWN0KSA9IDA7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJt
aXNzaW9uKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBj
YWxsYmFjaykgPSAwOworCisgICAgICAgIHZpcnR1YWwgUGVybWlzc2lvbiBjaGVja1Blcm1pc3Np
b24oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikgPSAwOworICAgIH07CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQorCisjZW5kaWYgLy8g
Tm90aWZpY2F0aW9uUHJvdmlkZXJfaApJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDQ1NTc0KQorKysg
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MSw2ICszOTEsMTMg
QEAgYm9vbCBDaHJvbWU6OnNldEN1cnNvcihQbGF0Zm9ybUN1cnNvckhhbgogICAgIHJldHVybiBt
X2NsaWVudC0+c2V0Q3Vyc29yKGN1cnNvcik7CiB9CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKK05vdGlmaWNhdGlvblByb3ZpZGVyKiBDaHJvbWU6Om5vdGlmaWNhdGlvblByb3ZpZGVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQtPm5vdGlmaWNhdGlvblByb3ZpZGVyKCk7Cit9
CisjZW5kaWYKKwogLy8gLS0tLS0tLS0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkK
SW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
Q2hyb21lLmgJKHJldmlzaW9uIDQ1NTc0KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw2ICs0NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBJbnRSZWN0OwogICAgIGNsYXNzIFBhZ2U7CiAgICAgY2xhc3MgU3RyaW5nOworI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQorICAgIGNsYXNzIE5vdGlmaWNhdGlvblByb3ZpZGVyOworI2VuZGlm
CiAKICAgICBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKICAgICBzdHJ1Y3QgV2luZG93RmVhdHVy
ZXM7CkBAIC0xMjgsNiArMTMxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBmb2N1c05TVmlldyhOU1ZpZXcqKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCisgICAgICAgIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBub3RpZmljYXRpb25Qcm92aWRlcigp
IGNvbnN0OyAKKyNlbmRpZgorCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGFnZSogbV9wYWdlOwog
ICAgICAgICBDaHJvbWVDbGllbnQqIG1fY2xpZW50OwpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2
aXNpb24gNDU1NzQpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYyLDYgKzYyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBHcmFw
aGljc0xheWVyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBjbGFz
cyBOb3RpZmljYXRpb25Qcm92aWRlcjsKKyNlbmRpZgorCiAgICAgY2xhc3MgQ2hyb21lQ2xpZW50
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQoKSA9
IDA7CkBAIC0xNDMsNiArMTQ3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRhc2hib2FyZFJlZ2lvbnNDaGFuZ2VkKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQorICAgICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBu
b3RpZmljYXRpb25Qcm92aWRlcigpIGNvbnN0ID0gMDsKKyNlbmRpZgorCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBwb3B1bGF0ZVZpc2l0ZWRMaW5rcygpOwogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRS
ZWN0IGN1c3RvbUhpZ2hsaWdodFJlY3QoTm9kZSosIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Y29uc3QgRmxvYXRSZWN0JiBsaW5lUmVjdCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24g
NDU1NzQpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzksNiArNzksMTAgQEAKICNpbmNsdWRlICJET01BcHBsaWNhdGlvbkNhY2hlLmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRl
ci5oIgorI2VuZGlmCisKIHVzaW5nIHN0ZDo6bWluOwogdXNpbmcgc3RkOjptYXg7CiAKQEAgLTQ1
Myw2ICs0NTcsMTAgQEAgdm9pZCBET01XaW5kb3c6OmNsZWFyKCkKICAgICAgICAgbV9hcHBsaWNh
dGlvbkNhY2hlLT5kaXNjb25uZWN0RnJhbWUoKTsKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGUgPSAw
OwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBtX25vdGlmaWNhdGlv
bnMgPSAwOworI2VuZGlmCiB9CiAKIFNjcmVlbiogRE9NV2luZG93OjpzY3JlZW4oKSBjb25zdApA
QCAtNTg4LDYgKzU5NiwyOCBAQCBTdG9yYWdlKiBET01XaW5kb3c6OmxvY2FsU3RvcmFnZSgpIGNv
bnN0CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorTm90aWZpY2F0aW9u
Q2VudGVyKiBET01XaW5kb3c6OndlYmtpdE5vdGlmaWNhdGlvbnMoKSBjb25zdAoreworICAgIGlm
IChtX25vdGlmaWNhdGlvbnMpCisgICAgICAgIHJldHVybiBtX25vdGlmaWNhdGlvbnMuZ2V0KCk7
CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGlmICgh
ZG9jdW1lbnQpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFBhZ2UqIHBhZ2UgPSBkb2N1
bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBO
b3RpZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIgPSBwYWdlLT5jaHJvbWUoKS0+bm90aWZpY2F0
aW9uUHJvdmlkZXIoKTsKKyAgICBpZiAocHJvdmlkZXIpIAorICAgICAgICBtX25vdGlmaWNhdGlv
bnMgPSBOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZShkb2N1bWVudCwgcHJvdmlkZXIpOyAgICAK
KyAgICAgIAorICAgIHJldHVybiBtX25vdGlmaWNhdGlvbnMuZ2V0KCk7Cit9CisjZW5kaWYKKwog
dm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2Fn
ZVBvcnQqIG1lc3NhZ2VQb3J0LCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93
KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghbV9mcmFtZSkKSW5kZXg6
IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmgJKHJldmlzaW9uIDQ1NTc0KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3
b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBOYXZpZ2F0b3I7CiAgICAgY2xhc3MgTm9kZTsK
KyAgICBjbGFzcyBOb3RpZmljYXRpb25DZW50ZXI7CiAgICAgY2xhc3MgUG9zdE1lc3NhZ2VUaW1l
cjsKICAgICBjbGFzcyBTY2hlZHVsZWRBY3Rpb247CiAgICAgY2xhc3MgU2NyZWVuOwpAQCAtMTk5
LDYgKzIwMCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERPTUFwcGxpY2F0aW9u
Q2FjaGUqIGFwcGxpY2F0aW9uQ2FjaGUoKSBjb25zdDsKICNlbmRpZgogCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCisgICAgICAgIE5vdGlmaWNhdGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0
aW9ucygpIGNvbnN0OworI2VuZGlmCisKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4s
IERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgcG9zdE1l
c3NhZ2VUaW1lckZpcmVkKFBvc3RNZXNzYWdlVGltZXIqKTsKIApAQCAtNDI0LDYgKzQyOSw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05T
KQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxET01BcHBsaWNhdGlvbkNhY2hlPiBtX2FwcGxpY2F0
aW9uQ2FjaGU7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICAgICAgbXV0
YWJsZSBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBtX25vdGlmaWNhdGlvbnM7CisjZW5kaWYK
IAogICAgICAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lclZlY3RvciBtX2V2ZW50TGlzdGVuZXJz
OwogICAgIH07CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gNDU1NzQpCisrKyBXZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDYgKzE2Myw5IEBAIG1v
ZHVsZSB3aW5kb3cgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU3RvcmFnZSBzZXNzaW9u
U3RvcmFnZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0b3JhZ2UgbG9jYWxTdG9yYWdl
OwogI2VuZGlmCisjaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX05P
VElGSUNBVElPTlMKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDdXN0b21dIE5vdGlmaWNh
dGlvbkNlbnRlciB3ZWJraXROb3RpZmljYXRpb25zOworI2VuZGlmCiAKICAgICAgICAgICAgICAg
ICAgYXR0cmlidXRlIFtSZXBsYWNlYWJsZV0gQ29uc29sZSBjb25zb2xlOwogCkluZGV4OiBXZWJD
b3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlz
aW9uIDQ1NTc0KQorKysgV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzAs
NiArNzAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKFdNTCkKICAgICBjbGFz
cyBXTUxQYWdlU3RhdGU7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBj
bGFzcyBOb3RpZmljYXRpb25Qcm92aWRlcjsKKyNlbmRpZgogCiAgICAgZW51bSBGaW5kRGlyZWN0
aW9uIHsgRmluZERpcmVjdGlvbkZvcndhcmQsIEZpbmREaXJlY3Rpb25CYWNrd2FyZCB9OwogCkBA
IC0yNjMsNiArMjY2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoV01MKQog
ICAgICAgICBPd25QdHI8V01MUGFnZVN0YXRlPiBtX3dtbFBhZ2VTdGF0ZTsKICNlbmRpZgorCisj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgICAgIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBt
X25vdGlmaWNhdGlvblByb3ZpZGVyOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkocmV2aXNpb24gNDU1NzQp
CisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDYgKzUwLDEwIEBACiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaCIKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyNpbmNs
dWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdvcmtlckNvbnRleHQ6OldvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkKiB0aHJlYWQpCkBAIC02NSw3ICs2OSw5IEBA
IFdvcmtlckNvbnRleHQ6OldvcmtlckNvbnRleHQoY29uc3QgS1VSTCYKIFdvcmtlckNvbnRleHQ6
On5Xb3JrZXJDb250ZXh0KCkKIHsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhy
ZWFkLT50aHJlYWRJRCgpKTsKLQorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSAgCisgICAgbV9u
b3RpZmljYXRpb25zLmNsZWFyKCk7CisjZW5kaWYKICAgICBtX3RocmVhZC0+d29ya2VyT2JqZWN0
UHJveHkoKS53b3JrZXJDb250ZXh0RGVzdHJveWVkKCk7CiB9CiAKQEAgLTMxMCw2ICszMTYsMTUg
QEAgdm9pZCBXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKGNvbnN0IAogICAgIH0KIH0KIAor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorTm90aWZpY2F0aW9uQ2VudGVyKiBXb3JrZXJDb250
ZXh0Ojp3ZWJraXROb3RpZmljYXRpb25zKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbm90aWZpY2F0
aW9ucykKKyAgICAgICAgbV9ub3RpZmljYXRpb25zID0gTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3RocmVhZC0+Z2V0Tm90aWZpY2F0aW9uUHJv
dmlkZXIoKSk7CisgICAgcmV0dXJuIG1fbm90aWZpY2F0aW9ucy5nZXQoKTsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKSW5k
ZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAkocmV2aXNpb24gNDU1NzQpCisrKyBXZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKICAg
ICBjbGFzcyBTY2hlZHVsZWRBY3Rpb247CiAgICAgY2xhc3MgV29ya2VyTG9jYXRpb247CiAgICAg
Y2xhc3MgV29ya2VyTmF2aWdhdG9yOwpAQCAtMTEyLDYgKzExMywxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2UoY29uc3QgU3RyaW5nJiwgUGFz
c1JlZlB0cjxNZXNzYWdlUG9ydD4pOwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAg
ICAgIE5vdGlmaWNhdGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0aW9ucygpIGNvbnN0OworI2Vu
ZGlmCisKICAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCBmb3IgR0MgbWFya2luZy4g
U2VlIEpTV29ya2VyQ29udGV4dDo6bWFyaygpIGluCiAgICAgICAgIC8vIEpTV29ya2VyQ29udGV4
dEN1c3RvbS5jcHAuCiAgICAgICAgIFdvcmtlck5hdmlnYXRvciogb3B0aW9uYWxOYXZpZ2F0b3Io
KSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRvci5nZXQoKTsgfQpAQCAtMTQzLDYgKzE0OCw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25t
ZXNzYWdlTGlzdGVuZXI7CiAgICAgICAgIEV2ZW50TGlzdGVuZXJzTWFwIG1fZXZlbnRMaXN0ZW5l
cnM7CiAKKyNpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUworICAgICAgICBtdXRhYmxlIFJlZlB0cjxO
b3RpZmljYXRpb25DZW50ZXI+IG1fbm90aWZpY2F0aW9uczsKKyNlbmRpZgogICAgICAgICBib29s
IG1fY2xvc2luZzsKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCShy
ZXZpc2lvbiA0NTU3NCkKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNiArNzQsMTAgQEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICBi
b29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQogICAgICAgICAgICAgcmFpc2VzKEV2
ZW50RXhjZXB0aW9uKTsKIAorI2lmIGRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpICYmIEVO
QUJMRV9OT1RJRklDQVRJT05TCisgICAgICAgIC8vIE5vdGlmaWNhdGlvbiBpbnRlcmZhY2UKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vdGlmaWNhdGlvbkNlbnRlciB3ZWJraXROb3RpZmlj
YXRpb25zOworI2VuZGlmCiAKICAgICAgICAgLy8gQ29uc3RydWN0b3JzCiAgICAgICAgIGF0dHJp
YnV0ZSBNZXNzYWdlRXZlbnRDb25zdHJ1Y3RvciBNZXNzYWdlRXZlbnQ7CkluZGV4OiBXZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dv
cmtlclRocmVhZC5oCShyZXZpc2lvbiA0NTU3NCkKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBOb3RpZmljYXRpb25Qcm92aWRlcjsK
ICAgICBjbGFzcyBTdHJpbmc7CiAgICAgY2xhc3MgV29ya2VyQ29udGV4dDsKICAgICBjbGFzcyBX
b3JrZXJMb2FkZXJQcm94eTsKQEAgLTU2LDYgKzU3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KCkgY29uc3QgeyBy
ZXR1cm4gbV93b3JrZXJMb2FkZXJQcm94eTsgfQogICAgICAgICBXb3JrZXJPYmplY3RQcm94eSYg
d29ya2VyT2JqZWN0UHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dvcmtlck9iamVjdFByb3h5OyB9
CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICAgICAgdmlydHVhbCBOb3RpZmljYXRp
b25Qcm92aWRlciogZ2V0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKSB7IHJldHVybiBtX25vdGlmaWNh
dGlvblByb3ZpZGVyOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXROb3RpZmljYXRpb25Qcm92
aWRlcihOb3RpZmljYXRpb25Qcm92aWRlciogcHJvdmlkZXIpIHsgbV9ub3RpZmljYXRpb25Qcm92
aWRlciA9IHByb3ZpZGVyOyB9CisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFdvcmtl
clRocmVhZChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJPYmplY3RQcm94eSYpOwog
CkBAIC03MSw2ICs3NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE11dGV4IG1f
dGhyZWFkQ3JlYXRpb25NdXRleDsKIAogICAgICAgICBPd25QdHI8V29ya2VyVGhyZWFkU3RhcnR1
cERhdGE+IG1fc3RhcnR1cERhdGE7CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICAg
ICAgTm90aWZpY2F0aW9uUHJvdmlkZXIqIG1fbm90aWZpY2F0aW9uUHJvdmlkZXI7CisjZW5kaWYK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJLaXRUb29scy9TY3Jp
cHRzL2J1aWxkLXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxk
LXdlYmtpdAkocmV2aXNpb24gNDU1NzQpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdl
YmtpdAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBteSAoJHRocmVlRFJlbmRlcmlu
Z1N1cHBvcnQsICRjaGFubmVsTWVzCiAgICAgJGphdmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQsICRv
ZmZsaW5lV2ViQXBwbGljYXRpb25TdXBwb3J0LCAkc3ZnU3VwcG9ydCwgJHN2Z0FuaW1hdGlvblN1
cHBvcnQsCiAgICAgJHN2Z0FzSW1hZ2VTdXBwb3J0LCAkc3ZnRE9NT2JqQ0JpbmRpbmdzU3VwcG9y
dCwgJHN2Z0ZvbnRzU3VwcG9ydCwgJHN2Z0ZvcmVpZ25PYmplY3RTdXBwb3J0LAogICAgICRzdmdV
c2VTdXBwb3J0LCAkdmlkZW9TdXBwb3J0LCAkd21sU3VwcG9ydCwgJHdvcmtlcnNTdXBwb3J0LCAk
eHBhdGhTdXBwb3J0LCAkeHNsdFN1cHBvcnQsCi0gICAgJGNvdmVyYWdlU3VwcG9ydCk7CisgICAg
JGNvdmVyYWdlU3VwcG9ydCwgJG5vdGlmaWNhdGlvbnNTdXBwb3J0KTsKIAogbXkgQGZlYXR1cmVz
ID0gKAogICAgIHsgb3B0aW9uID0+ICIzZC1yZW5kZXJpbmciLCBkZXNjID0+ICJUb2dnbGUgM0Qg
cmVuZGVyaW5nIHN1cHBvcnQiLApAQCAtODIsNiArODIsOSBAQCBteSBAZmVhdHVyZXMgPSAoCiAg
ICAgeyBvcHRpb24gPT4gImphdmFzY3JpcHQtZGVidWdnZXIiLCBkZXNjID0+ICJUb2dnbGUgSmF2
YVNjcmlwdCBEZWJ1Z2dlci9Qcm9maWxlciBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkamF2YVNj
cmlwdERlYnVnZ2VyU3VwcG9ydCB9LAogCisgICAgeyBvcHRpb24gPT4gIm5vdGlmaWNhdGlvbnMi
LCBkZXNjID0+ICJUb2dnbGUgRGVza3RvcCBOb3RpZmljYXRpb25zIFN1cHBvcnQiLAorICAgICAg
ZGVmaW5lID0+ICJFTkFCTEVfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4g
XCRub3RpZmljYXRpb25zU3VwcG9ydCB9LAorCiAgICAgeyBvcHRpb24gPT4gIm9mZmxpbmUtd2Vi
LWFwcGxpY2F0aW9ucyIsIGRlc2MgPT4gIlRvZ2dsZSBPZmZsaW5lIFdlYiBBcHBsaWNhdGlvbiBT
dXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9O
UyIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRvZmZsaW5lV2ViQXBwbGljYXRpb25TdXBwb3J0
IH0sCiAK
</data>
<flag name="review"
          id="16802"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33345</attachid>
            <date>2009-07-23 10:54:25 -0700</date>
            <delta_ts>2009-07-23 10:58:27 -0700</delta_ts>
            <desc>Notifications API, combined Core and Tests</desc>
            <filename>wkPatchPath232.diff</filename>
            <type>text/plain</type>
            <size>161164</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ2MjcyKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDctMjMgIEpvaG4gR3Jl
Z2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRGVza3RvcCBOb3RpZmljYXRpb25zIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0NjMKKworICAgICAgICBBZGRz
IEVOQUJMRV9OT1RJRklDQVRJT04gZmxhZy4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDA5
LTA3LTIyICBZb25nIExpICA8eW9uZy5saUB0b3JjaG1vYmlsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgR2VvcmdlIFN0YWlrb3MuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gNDYyNjgp
CisrKyBKYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
Zwkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBFTkFCTEVfRklMVEVSUyA9IDsKIEVO
QUJMRV9HRU9MT0NBVElPTiA9IDsKIEVOQUJMRV9JQ09OREFUQUJBU0UgPSBFTkFCTEVfSUNPTkRB
VEFCQVNFOwogRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIgPSBFTkFCTEVfSkFWQVNDUklQVF9E
RUJVR0dFUjsKK0VOQUJMRV9OT1RJRklDQVRJT05TID0gOwogRU5BQkxFX09GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUyA9IEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7CiBFTkFCTEVfUlVC
WSA9IEVOQUJMRV9SVUJZOwogRU5BQkxFX1NIQVJFRF9XT1JLRVJTID0gOwpAQCAtNTcsNCArNTgs
NCBAQCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5B
QkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVT
ID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChF
TkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkg
JChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRB
QkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJf
QVBQTElDQVRJT05TKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChF
TkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0Up
ICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVO
QUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVP
KSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAk
KEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJM
RV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRB
QkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9G
SUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVO
QUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxFX1NIQVJF
RF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxF
X1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkg
JChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XTUwpICQoRU5B
QkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0
Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA0NjI2OCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NDksNiArNTQ5LDEwIEBACiAjZGVmaW5lIEVOQUJM
RV9HRU9MT0NBVElPTiAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJ
T05TKQorI2RlZmluZSBFTkFCTEVfTk9USUZJQ0FUSU9OUyAwCisjZW5kaWYKKwogI2lmICFkZWZp
bmVkKEVOQUJMRV9URVhUX0NBUkVUKQogI2RlZmluZSBFTkFCTEVfVEVYVF9DQVJFVCAxCiAjZW5k
aWYKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiA0NjI3MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTExIEBACisyMDA5LTA3LTIzICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IERlc2t0b3AgTm90aWZpY2F0aW9ucyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI1NDYzCisKKyAgICAgICAgQWRkcyBhbiBpbXBsZW1lbnRhdGlv
biBvZiBkZXNrdG9wIG5vdGlmaWNhdGlvbnMsIGJlaGluZCB0aGUgY29tcGlsZS10aW1lCisgICAg
ICAgIGZsYWcgRU5BQkxFKE5PVElGSUNBVElPTlMpLiAgVGhpcyBjb2RlIHNpbXBseSByZWxheXMg
Y2FsbHMgb24gdGhlIEphdmFTY3JpcHQKKyAgICAgICAgQVBJIHRocm91Z2ggYSBOb3RpZmljYXRp
b25Qcm92aWRlciBpbnRlcmZhY2UsIHdoaWNoIG11c3QgcHJvdmlkZSB0aGUgc2VydmljZXMKKyAg
ICAgICAgdG8gYWN0dWFsbHkgbm90aWZ5IHRoZSB1c2VyIGFuZCBtYW5hZ2UgdGhlIGRlc2t0b3Au
ICBUaGlzIHByb3ZpZGVyIGlzIGluamVjdGVkCisgICAgICAgIGludG8gV2ViS2l0IHRocm91Z2gg
dGhlIENocm9tZUNsaWVudCBmb3Igbm9ybWFsIHBhZ2UgY29udGV4dHMgYW5kIHRocm91Z2ggdGhl
CisgICAgICAgIFdvcmtlclRocmVhZCBmb3Igd29ya2VyIGNvbnRleHRzLgorCisgICAgICAgIEEg
cGVybWlzc2lvbnMgQVBJIGlzIGRlZmluZWQgb24gYSBwZXItb3JpZ2luIGJhc2lzLCB3aGljaCBh
bGxvd3MgYSB3ZWIgcGFnZQorICAgICAgICB0byBjaGVjayBpZiBpdHMgb3JpZ2luIGlzIGFsbG93
ZWQgdG8gc2hvdyBkZXNrdG9wIG5vdGlmaWNhdGlvbnMsIGFuZCB0byByZXF1ZXN0CisgICAgICAg
IHBlcm1pc3Npb24gZm9yIGl0cyBvcmlnaW4uCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5jcHA6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlQ29tbW9uLnZzcHJvcHM6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Rlc2t0b3BOb3RpZmljYXRpb25z
Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU05vdGlmaWNhdGlvbkNlbnRl
cjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNOb3RpZmljYXRpb246
OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb3RpZmljYXRpb246OnJl
bW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjp0b0V2ZW50
VGFyZ2V0KToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRUYXJnZXQ6OnRvTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJn
ZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpFbXB0eUNocm9tZUNsaWVudDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKiBu
b3RpZmljYXRpb25zOiBBZGRlZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb246OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246Om9u
ZGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnNldE9uZGlzcGxheSk6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246Om9uZXJyb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uOjpzZXRPbmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6b25jbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnNldE9u
Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpnZXRBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNsZWFyQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRp
c3BhdGNoRGlzcGxheUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlz
cGF0Y2hFcnJvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0
Y2hDbG9zZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6YWRkRXZlbnRM
aXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnJlbW92ZUV2ZW50TGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpoYW5kbGVFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAq
IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpp
c0hUTUwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjp1cmwpOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjp0b05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b246OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGVy
ZWZFdmVudFRhcmdldCk6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRs
OiBBZGRlZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRp
b25DZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpjaGVja1Bl
cm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpyZXF1ZXN0
UGVybWlzc2lvbik6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZUhUTUxOb3RpZmlj
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVOb3Rp
ZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpjb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNlbnRlcjo6cHJlc2VudGVyKToKKyAg
ICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGw6IEFkZGVkLgorICAg
ICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udGVudHMuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250ZW50czo6Tm90aWZpY2F0aW9uQ29udGVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udGVudHM6Omljb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udGVudHM6OnRpdGxlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbkNvbnRlbnRzOjpib2R5KToKKyAgICAgICAgKiBub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvblByZXNlbnRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlcjo6KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNl
bnRlcjo6fk5vdGlmaWNhdGlvblByZXNlbnRlcik6CisgICAgICAgICogcGFnZS9DaHJvbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpub3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6d2Via2l0Tm90aWZpY2F0aW9u
cyk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5pZGw6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6On5Xb3JrZXJDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OndlYmtpdE5vdGlmaWNhdGlv
bnMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyQ29udGV4dC5pZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6Z2V0Tm90aWZpY2F0aW9uUHJlc2VudGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6c2V0Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyKToKKwogMjAwOS0wNy0yMyAgTWlrZSBGZW50b24gIDxtaWtlLmZlbnRvbkB0b3JjaG1vYmls
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBXZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LmNwcAkocmV2aXNpb24gNDYyNjgpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCw4IEBACiAjaW5jbHVkZSAiSlNOb2RlSXRlcmF0b3Iu
Y3BwIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuY3BwIgogI2luY2x1ZGUgIkpTTm90YXRpb24uY3Bw
IgorI2luY2x1ZGUgIkpTTm90aWZpY2F0aW9uQ2VudGVyLmNwcCIKKyNpbmNsdWRlICJKU05vdGlm
aWNhdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNPdmVyZmxvd0V2ZW50LmNwcCIKICNpbmNsdWRlICJK
U1BsdWdpbi5jcHAiCiAjaW5jbHVkZSAiSlNQbHVnaW5BcnJheS5jcHAiCkluZGV4OiBXZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCShyZXZpc2lvbiA0NjI2OCkKKysrIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQko
d29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYkNvcmUp
L2h0bWwgXAogICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yIFwKICAgICAkKFdlYkNvcmUpL2xvYWRl
ci9hcHBjYWNoZSBcCisgICAgJChXZWJDb3JlKS9ub3RpZmljYXRpb25zIFwKICAgICAkKFdlYkNv
cmUpL3BhZ2UgXAogICAgICQoV2ViQ29yZSkvcGx1Z2lucyBcCiAgICAgJChXZWJDb3JlKS9zdG9y
YWdlIFwKQEAgLTE5MCw2ICsxOTEsOCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBOb2RlSXRlcmF0
b3IgXAogICAgIE5vZGVMaXN0IFwKICAgICBOb3RhdGlvbiBcCisgICAgTm90aWZpY2F0aW9uIFwK
KyAgICBOb3RpZmljYXRpb25DZW50ZXIgXAogICAgIE92ZXJmbG93RXZlbnQgXAogICAgIFBsdWdp
biBcCiAgICAgUGx1Z2luQXJyYXkgXApAQCAtNjc5LDcgKzY4Miw3IEBAIGVuZGlmCiAjIEphdmFT
Y3JpcHQgYmluZGluZ3MKIAogR0VORVJBVEVfQklORElOR1MgPSBwZXJsIC1JICQoV2ViQ29yZSkv
YmluZGluZ3Mvc2NyaXB0cyAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmlu
ZGluZ3MucGwgXAotICAgIC0taW5jbHVkZSBkb20gLS1pbmNsdWRlIGh0bWwgLS1pbmNsdWRlIGNz
cyAtLWluY2x1ZGUgcGFnZSAtLWluY2x1ZGUgeG1sIC0taW5jbHVkZSBzdmcgLS1vdXRwdXREaXIg
LgorICAgIC0taW5jbHVkZSBkb20gLS1pbmNsdWRlIGh0bWwgLS1pbmNsdWRlIGNzcyAtLWluY2x1
ZGUgcGFnZSAtLWluY2x1ZGUgbm90aWZpY2F0aW9ucyAtLWluY2x1ZGUgeG1sIC0taW5jbHVkZSBz
dmcgLS1vdXRwdXREaXIgLgogCiBHRU5FUkFURV9CSU5ESU5HU19TQ1JJUFRTID0gXAogICAgIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbSBcCkluZGV4OiBXZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDQ2
MjY4KQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNiAr
MjUsNyBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZSBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZSBcCiAJLUkk
KHNyY2RpcikvV2ViQ29yZS9sb2FkZXIvaWNvbiBcCisJLUkkKHNyY2RpcikvV2ViQ29yZS9ub3Rp
ZmljYXRpb25zIFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL3BhZ2UgXAogCS1JJChzcmNkaXIpL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24gXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvcGxhdGZvcm0gXApA
QCAtMjMyLDYgKzIzMyw4IEBAIElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9odG1sL1ZvaWRD
YWxsYmFjay5pZGwgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRs
IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmlkbCBcCisJV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwgXAorCVdlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25zLmlkbCBcCiAJV2ViQ29yZS9wYWdlL0JhckluZm8uaWRsIFwKIAlXZWJD
b3JlL3BhZ2UvQ29uc29sZS5pZGwgXAogCVdlYkNvcmUvcGFnZS9Db29yZGluYXRlcy5pZGwgXApA
QCAtMjQ4NCw2ICsyNDg3LDI0IEBAIHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvR2VvbG9jYXRpb25TZXJ2aWNlR3RrLmgKIGVuZGlmICMgRU5EIEVOQUJMRV9H
RU9MT0NBVElPTgogCisjIC0tLS0KKyMgTm90aWZpY2F0aW9ucyBzdXBwb3J0CisjIC0tLS0KK2lm
IEVOQUJMRV9OT1RJRklDQVRJT05TCitGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFC
TEVfTk9USUZJQ0FUSU9OUz0xCisKK3dlYmNvcmVfY3BwZmxhZ3MgKz0gXAorCS1ERU5BQkxFX05P
VElGSUNBVElPTlM9MQorCit3ZWJjb3JlX3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uY3BwIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmggXAorCVdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwIFwK
KwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggXAorCVdlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QcmVzZW50ZXIuaCBcCisJV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNvbnRlbnRzLmgKKworZW5kaWYgIyBFTkQgRU5BQkxFX05PVElG
SUNBVElPTlMKIAogIyAtLS0tCiAjIFNWRyBTdXBwb3J0CkBAIC0zMzQ4LDQgKzMzNjksMyBAQCBk
aXN0X3dlYnJlc291cmNlc19EQVRBID0gXAogCiBDTEVBTkZJTEVTICs9IFwKIAlsaWJXZWJDb3Jl
SlMubGEKLQoKSW5kZXg6IFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwkocmV2aXNpb24gNDYyNjgpCisrKyBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIEVO
QUJMRV9GSUxURVJTID0gOwogRU5BQkxFX0dFT0xPQ0FUSU9OID0gOwogRU5BQkxFX0lDT05EQVRB
QkFTRSA9IEVOQUJMRV9JQ09OREFUQUJBU0U7CiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9
IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSOworRU5BQkxFX05PVElGSUNBVElPTlMgPSA7CiBF
TkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TID0gRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJ
Q0FUSU9OUzsKIEVOQUJMRV9SVUJZID0gRU5BQkxFX1JVQlk7CiBFTkFCTEVfU0hBUkVEX1dPUktF
UlMgPSA7CkBAIC01Nyw0ICs1OCw0IEBAIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktFUlM7
CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xU
OwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NI
QU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQo
RU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElP
TikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAk
KEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxF
X1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQo
RU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVO
QUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZH
X1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XTUwp
ICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRV
UkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNT
QUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfRE9N
X1NUT1JBR0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVf
UlVCWSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZH
X0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNf
QklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNU
KSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMp
ICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxF
X1hTTFQpOwpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lv
biA0NjI2OCkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0i
VkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJta2RpciAyJmd0O05VTCAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVycyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGlu
Z3MmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYj
eDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7
TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hl
YWRlcnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYj
eDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTtta2Rp
ciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZx
dW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsm
I3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjb25maWcuaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2
ZWRTb3VyY2VzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFj
Y2Vzc2liaWxpdHlcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
YWNjZXNzaWJpbGl0eVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5caW5zcGVjdG9yXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXGxvYWRlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxs
b2FkZXJcYXBwY2FjaGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cbG9hZGVyXGFyY2hpdmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5cbG9hZGVyXGFyY2hpdmVcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5cbG9hZGVyXGljb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5caGlzdG9yeVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxoaXN0b3J5XGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGh0bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
Y3NzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFu
aW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxncmFwaGljc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZVwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdp
blwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxu
ZXR3b3JrXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXG5ldHdvcmtcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cbmV0d29ya1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cc3FsXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNhaXJvXGNhaXJvXHNyY1wqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xqc1wqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9uXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2Vcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxwbHVnaW5zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsdWdpbnNcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHJlbmRlcmluZ1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxyZW5kZXJpbmdcc3R5bGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5cZWRpdGluZ1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxkb21cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
eG1sXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1wqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxzdG9yYWdlXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtlcnNcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRp
bmdzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
cGFyc2VyJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFk
ZXJzXG1hc21cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccGNyZVwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xw
Y3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxG
b3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRl
cnNcd3JlY1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1x3cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3Rm
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3
YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hl
YWRlcnNcd3RmXHVuaWNvZGVcaWN1XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYj
eDBEOyYjeDBBOyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAvcyAvZXhjbHVkZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4u
XGluc3BlY3Rvclxmcm9udC1lbmRcKiZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmlu
XFdlYktpdC5yZXNvdXJjZXNcaW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtO
VUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9q
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMg
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxFbmdsaXNoLmxwcm9qXGxvY2FsaXplZFN0cmluZ3MuanMm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxw
cm9qJnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7aWYgZXhpc3QgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGJ1aWxkZmFpbGVkJnF1b3Q7IGRlbCAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
YnVpbGRmYWlsZWQmcXVvdDsmI3gwRDsmI3gwQTsiDQorCQkJCUNvbW1hbmRMaW5lPSJta2RpciAy
Jmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVM
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNcYmluZGluZ3MmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90
OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO21r
ZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9y
d2FyZGluZ0hlYWRlcnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNy
ZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsm
I3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05V
TCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVv
dDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBE
OyYjeDBBOyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjb25m
aWcuaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJD
b3JlXERlcml2ZWRTb3VyY2VzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGFjY2Vzc2liaWxpdHlcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5caW5zcGVjdG9yXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGxvYWRlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxsb2FkZXJcYXBwY2FjaGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGljb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5caGlzdG9yeVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGh0bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5cbm90aWZpY2F0aW9uc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxjc3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cYW5pbWF0aW9uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXNcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNz
XG9wZW50eXBlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXHRleHRcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXG5ldHdvcmtcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cbmV0d29ya1xjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxzcWxcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2Fpcm9cY2Fpcm9cc3JjXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb25cKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW5cKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxlZGl0aW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlx4bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cc3ZnXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3Jh
Z2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cd29ya2Vyc1wq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hl
YWRlcnNcYmluZGluZ3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlclwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1xwYXJzZXImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccnVudGlt
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9y
d2FyZGluZ0hlYWRlcnNcbWFzbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzXHBjcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVy
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3
YXJkaW5nSGVhZGVyc1x3cmVjXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0ZlwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyc1x3dGYmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmlj
b2RlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxG
b3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVc
aWN1JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGluc3BlY3RvciZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4Y2x1ZGVzICZxdW90OyQoUHJv
amVjdERpcilcLi5caW5zcGVjdG9yXGZyb250LWVuZFwqJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTtt
a2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJj
ZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAvcyAvZXhjbHVkZTp4Y29w
eS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXEVuZ2xpc2gubHByb2pcbG9jYWxpemVk
U3RyaW5ncy5qcyZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNv
dXJjZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTtpZiBleGlzdCAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQmcXVvdDsgZGVsICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZxdW90OyYjeDBEOyYjeDBBOyINCiAJCQkvPg0KIAkJPC9D
b25maWd1cmF0aW9uPg0KIAkJPENvbmZpZ3VyYXRpb24NCkBAIC03Mjg2LDYgKzcyODYsMTAyIEBA
CiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2Vi
S2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNOb3RpZmlj
YXRpb24uY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0i
RGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJ
CQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFt
ZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJ
Pg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4N
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJ
CQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
Pg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0
cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNOb3RpZmljYXRpb24u
aCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQo
V2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNOb3Rp
ZmljYXRpb25DZW50ZXIuY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJ
CQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJ
CQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJ
CS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0K
KwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0K
KwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4N
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMy
Ig0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0K
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQo
V2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNOb3Rp
ZmljYXRpb25DZW50ZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlS
ZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNPdmVyZmxvd0V2ZW50LmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24NCkBAIC0yNDEwNCw2ICsyNDIwMCwzNCBAQAogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+
DQogCQk8RmlsdGVyDQorCQkJTmFtZT0ibm90aWZpY2F0aW9ucyINCisJCQk+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxub3RpZmljYXRpb25zXE5vdGlmaWNhdGlvbi5jcHAiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxub3Rp
ZmljYXRpb25zXE5vdGlmaWNhdGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb25DZW50ZXIu
Y3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb25DZW50ZXIuaCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcTm90aWZp
Y2F0aW9uQ29udGVudHMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCiAJCQlOYW1lPSJl
ZGl0aW5nIg0KIAkJCT4NCiAJCQk8RmlsZQ0KQEAgLTI4MzU0LDYgKzI4NDc4LDEwIEBACiAJCQkJ
CT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5k
aW5nc1xqc1xKU0Rlc2t0b3BOb3RpZmljYXRpb25zQ3VzdG9tLmNwcCINCisJCQkJCT4NCisJCQkJ
PC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xK
U0RvY3VtZW50Q3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZUNvbW1vbi52c3Byb3BzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZUNvbW1vbi52c3Byb3BzCShyZXZpc2lvbiA0NjI2
OCkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZUNvbW1vbi52c3Byb3BzCSh3b3Jr
aW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQAogCT4KIAk8VG9vbAogCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKFByb2plY3RE
aXIpLi5cJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLiZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cYWNjZXNzaWJpbGl0eSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJp
bGl0eVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZSZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cYnJpZGdlXGMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNzcyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGluZyZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccmVuZGVyaW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5
bGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxkb20mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVxkZWZhdWx0
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5JnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxodG1sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3ImcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
bG9hZGVyXGFwcGNhY2hlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2
ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2YmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxpY29uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxwYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlvbiZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb24m
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbCZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxuZXR3b3JrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3Jr
XHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2YmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNmb3JtcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cdGV4dCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3Jh
cGhpY3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx4bWwmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxwbHVnaW5zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5z
XHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3NcZmlsdGVycyZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cc3ZnJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3bWwmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtl
cnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rpcilc
aW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwcml2YXRl
JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNj
cmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcaWN1JnF1
b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXGljb252JnF1b3Q7OyZxdW90
OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2Vi
S2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHNxbGl0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVycyZx
dW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxP
U1hDb21wYXRpYmlsaXR5SGVhZGVyc1xHTlVDb21wYXRpYmlsaXR5JnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxzdmdcYW5pbWF0aW9uJnF1b3Q7IgorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPSImcXVvdDskKFByb2plY3REaXIpLi5cJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eSZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXGJyaWRnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXGMmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGNzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGlu
ZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxyZW5kZXJpbmdcc3R5bGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJp
bmRpbmdzXGpzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxkb20mcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGRvbVxkZWZhdWx0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0
b3J5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxpbnNwZWN0b3ImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlciZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9h
ZGVyXGFyY2hpdmVcY2YmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxpY29uJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxub3RpZmljYXRpb25zJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxwYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlv
biZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxh
bmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbCZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVxuZXR3b3JrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxuZXR3b3JrXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2YmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZSZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNmb3JtcyZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxh
dGZvcm1cZ3JhcGhpY3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx4bWwmcXVvdDs7
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxwbHVnaW5zXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3NcZmlsdGVycyZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5cc3ZnJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3bWwmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHdvcmtlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGUmcXVvdDs7
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVk
ZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZh
dGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1
ZGVcaWN1JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXGljb252JnF1
b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZx
dW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHNxbGl0ZSZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5
SGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91
bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVyc1xHTlVDb21wYXRpYmlsaXR5JnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxzdmdcYW5pbWF0aW9uJnF1b3Q7IgogCQlQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz0iX19XSU4zMl9fO1dFQkNPUkVfQ09OVEVYVF9NRU5VUztFTkFCTEVfQ0hBTk5F
TF9NRVNTQUdJTkc7RU5BQkxFX0RBVEFCQVNFO0VOQUJMRV9EQVRBR1JJRDtFTkFCTEVfRE9NX1NU
T1JBR0U7RU5BQkxFX0lDT05EQVRBQkFTRTtFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05T
O0VOQUJMRV9SVUJZO0VOQUJMRV9TVkc7RU5BQkxFX1NWR19BTklNQVRJT047RU5BQkxFX1NWR19B
U19JTUFHRTtFTkFCTEVfU1ZHX0ZPTlRTO0VOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Q7RU5BQkxF
X1NWR19VU0U7RU5BQkxFX1dFQl9TT0NLRVRTO0VOQUJMRV9XT1JLRVJTO0VOQUJMRV9YUEFUSDtF
TkFCTEVfWFNMVCIKIAkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCiAJCVByZWNvbXBpbGVkSGVh
ZGVyVGhyb3VnaD0iV2ViQ29yZVByZWZpeC5oIgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDQ2MjY4KQorKysgV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTYyNiw2ICs2MjYs
MTcgQEAKIAkJMzFDMEZGNEMwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25F
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFD
MEZGNDYwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oICovOyB9
OwogCQkzMUMwRkY0RDBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDMEZG
NDcwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5tbSAqLzsgfTsK
IAkJMzFDMEZGNEUwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudElu
dGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MUMwRkY0ODBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50ZXJu
YWwuaCAqLzsgfTsKKwkJMzM1MDNDOUExMDE3OUE3NDAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvblBy
ZXNlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzM1MDNDOTkxMDE3OUE3NDAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvblByZXNlbnRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTMzNTAzQ0EzMTAx
NzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUwM0M5RjEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNO
b3RpZmljYXRpb24uY3BwICovOyB9OworCQkzMzUwM0NBNDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNO
b3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMzNTAzQ0EwMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5oICovOyB9Owor
CQkzMzUwM0NBNTEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb25DZW50ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM1MDNDQTExMDE3
OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uQ2VudGVyLmNwcCAqLzsgfTsKKwkJMzM1MDND
QTYxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uQ2VudGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUwM0NBMjEwMTc5QUQ3MDAzQjQ3
RTEgLyogSlNOb3RpZmljYXRpb25DZW50ZXIuaCAqLzsgfTsKKwkJMzM1MDNDQzAxMDE3OUMxQTAw
M0I0N0UxIC8qIEpTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM1MDNDQkYxMDE3OUMxQTAwM0I0N0Ux
IC8qIEpTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwICovOyB9OworCQkzMzUwM0NDNzEw
MTdBMUIxMDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzNTAzQ0M2MTAxN0ExQjEwMDNCNDdFMSAvKiBOb3Rp
ZmljYXRpb24uY3BwICovOyB9OworCQkzMzkwQ0E1NTBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZp
Y2F0aW9uQ2VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMzOTBDQTUxMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuY3Bw
ICovOyB9OworCQkzMzkwQ0E1NjBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzkwQ0E1
MjBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmggKi87IH07CisJCTMzOTBD
QTU3MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaWRsIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzkwQ0E1MzBGRkMxNTdCMDA5
MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmlkbCAqLzsgfTsKKwkJMzM5MENBNTgwRkZDMTU3
QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNvbnRlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzkwQ0E1NDBGRkMxNTdCMDA5MjE5NjIgLyogTm90
aWZpY2F0aW9uQ29udGVudHMuaCAqLzsgfTsKIAkJMzcxRjRGNDAwRDI1QjlBRjAwRUNFMEQ1IC8q
IEZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzNzFGNEYzRTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFGNEY0MTBEMjVCOUFGMDBFQ0Uw
RDUgLyogRm9udERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzcxRjRGM0YwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmNwcCAqLzsgfTsK
IAkJMzcxRjRGRkMwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFGNEZGQTBEMjVFN0Yz
MDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERhdGEuaCAqLzsgfTsKQEAgLTU1ODgsNiArNTU5OSwx
OSBAQAogCQkzMUMwRkY0NjBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdlYktpdFRyYW5zaXRp
b25FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUMwRkY0NzBFNENFRkRE
MDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUMwRkY0ODBFNENFRkREMDA3RDZGRTUgLyogRE9N
V2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzMzRjcwNEUwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlv
bi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTm90aWZpY2F0aW9uLmlkbDsgcGF0aCA9IG5v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzMzRjcwNEYwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBOb3RpZmljYXRpb24uaDsgcGF0aCA9IG5vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzNTAzQzk5
MTAxNzlBNzQwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25QcmVzZW50ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGZpbGVF
bmNvZGluZyA9IDQ7IG5hbWUgPSBOb3RpZmljYXRpb25QcmVzZW50ZXIuaDsgcGF0aCA9IG5vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uUHJlc2VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMzNTAzQzlGMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vdGlmaWNhdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzNTAzQ0EwMTAxNzlBRDcwMDNCNDdFMSAvKiBK
U05vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05vdGlm
aWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzUwM0NBMTEwMTc5QUQ3
MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb25DZW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNOb3RpZmljYXRpb25DZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMzUwM0NBMjEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRp
b25DZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb3RpZmljYXRp
b25DZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzM1MDNDQkYxMDE3OUMx
QTAwM0I0N0UxIC8qIEpTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEZXNrdG9wTm90aWZpY2F0aW9uc0N1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzNTAzQ0M2MTAxN0ExQjEwMDNCNDdF
MSAvKiBOb3RpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTm90aWZpY2F0aW9uLmNwcDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzM5MENBNTEwRkZDMTU3QjAwOTIxOTYy
IC8qIE5vdGlmaWNhdGlvbkNlbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBOb3RpZmljYXRpb25DZW50ZXIuY3BwOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzkwQ0E1
MjBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvbkNlbnRlci5oOyBwYXRoID0gbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzM5MENBNTMwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBuYW1lID0gTm90aWZpY2F0aW9uQ2VudGVyLmlkbDsgcGF0aCA9IG5vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzM5MENBNTQwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNvbnRlbnRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvbkNvbnRlbnRzLmg7IHBh
dGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRlbnRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTM3MUY0RjNFMEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250RGF0YS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzNzFGNEYzRjBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udERhdGEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFGNEZGQTBEMjVFN0YzMDBFQ0UwRDUgLyogU2Vn
bWVudGVkRm9udERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VnbWVu
dGVkRm9udERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0ODIsNiArOTUw
Niw3IEBACiAJCQkJOTNFRUMxRUMwOUMyODc3NzAwQzUxNUQxIC8qIGh0bWwgKi8sCiAJCQkJMUM4
MUI5NEQwRTk3MzJEOTAwMjY2RTA3IC8qIGluc3BlY3RvciAqLywKIAkJCQlCQ0IxNkJGQjA5NzlD
Mzg3MDA0Njc3NDEgLyogbG9hZGVyICovLAorCQkJCTMzM0Y3MDNEMEZCNDlDMTYwMDhFMTJBNiAv
KiBub3RpZmljYXRpb25zICovLAogCQkJCTY1QkYwMjE4MDk3NDgwNjMwMEM0MzE5NiAvKiBwYWdl
ICovLAogCQkJCUJDRjFBNUJBMDk3ODMyMDkwMDYxQTEyMyAvKiBwbGF0Zm9ybSAqLywKIAkJCQk1
RENGODM2OTBENTkxNTc4MDA5NTNCQzYgLyogcGx1Z2lucyAqLywKQEAgLTk1NjgsNiArOTU5Myw3
IEBACiAJCQkJQTgzQjc5MTIwQ0NCMDAzRjAwMEIwODI1IC8qIEV2ZW50cyAqLywKIAkJCQlBODNC
NzkwODBDQ0FGRjJCMDAwQjA4MjUgLyogSFRNTCAqLywKIAkJCQkxQzVGQUVDQTBEQ0ZEOEM5MDBE
NThGNzggLyogSW5zcGVjdG9yICovLAorCQkJCTMzNTAzQzlDMTAxNzlBOUEwMDNCNDdFMSAvKiBO
b3RpZmljYXRpb25zICovLAogCQkJCTFBQzIyNjAyMERCNjlFQTcwMDg5QjY2OSAvKiBPZmZsaW5l
ICovLAogCQkJCUE5RDI0N0Y5MEQ3NTdFNDEwMEZERjk1OSAvKiBQbHVnaW5zICovLAogCQkJCUJD
OTg1NDQ2MENEM0RBNUYwMDA2OUJDMSAvKiBSYW5nZXMgKi8sCkBAIC05OTYxLDYgKzk5ODcsMzIg
QEAKIAkJCW5hbWUgPSBhbmltYXRpb247CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OworCQkzMzNGNzAzRDBGQjQ5QzE2MDA4RTEyQTYgLyogbm90aWZpY2F0aW9ucyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMzM1MDNDQzYxMDE3QTFCMTAw
M0I0N0UxIC8qIE5vdGlmaWNhdGlvbi5jcHAgKi8sCisJCQkJMzM1MDNDOTkxMDE3OUE3NDAwM0I0
N0UxIC8qIE5vdGlmaWNhdGlvblByZXNlbnRlci5oICovLAorCQkJCTMzOTBDQTUxMEZGQzE1N0Iw
MDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuY3BwICovLAorCQkJCTMzOTBDQTUyMEZGQzE1
N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaCAqLywKKwkJCQkzMzkwQ0E1MzBGRkMx
NTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmlkbCAqLywKKwkJCQkzMzkwQ0E1NDBG
RkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ29udGVudHMuaCAqLywKKwkJCQkzMzNGNzA0
RTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmlkbCAqLywKKwkJCQkzMzNGNzA0RjBG
QjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi8sCisJCQkpOworCQkJbmFtZSA9IG5v
dGlmaWNhdGlvbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkzMzUwM0M5
QzEwMTc5QTlBMDAzQjQ3RTEgLyogTm90aWZpY2F0aW9ucyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMzM1MDNDOUYxMDE3OUFENzAwM0I0N0UxIC8qIEpT
Tm90aWZpY2F0aW9uLmNwcCAqLywKKwkJCQkzMzUwM0NBMDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNO
b3RpZmljYXRpb24uaCAqLywKKwkJCQkzMzUwM0NBMTEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3Rp
ZmljYXRpb25DZW50ZXIuY3BwICovLAorCQkJCTMzNTAzQ0EyMTAxNzlBRDcwMDNCNDdFMSAvKiBK
U05vdGlmaWNhdGlvbkNlbnRlci5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBOb3RpZmljYXRpb25z
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDQ5MTk1OTAwRkJFMTc1QjAw
RDlGODI0IC8qIEV4cG9ydHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtMTM2MDQsNiArMTM2NTYsNyBAQAogCQlCQzRFREVGNzBDMDhGNDE0MDA3RURENDkg
LyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQkzMzUwM0NCRjEwMTc5QzFBMDAzQjQ3RTEgLyogSlNEZXNrdG9wTm90aWZpY2F0aW9uc0N1c3Rv
bS5jcHAgKi8sCiAJCQkJQkMyRUQ2QkIwQzZCRDJGMDAwOTIwQkZGIC8qIEpTQXR0ckN1c3RvbS5j
cHAgKi8sCiAJCQkJMUE5RUY0NTYwQTFCOTU3RDAwMzMyQjYzIC8qIEpTQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQ3VzdG9tLmNwcCAqLywKIAkJCQk5M0JBNTlCMTBGMkFBNUZFMDA4RThFOTkgLyog
SlNDREFUQVNlY3Rpb25DdXN0b20uY3BwICovLApAQCAtMTcwMjEsNiArMTcwNzQsOCBAQAogCQkJ
CTE1Qzc3MDhEMTAwRDNDNkIwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNUM3NzA5MzEwMEQzQ0E4MDA1QkEyNjcgLyogSlNWYWxpZGl0eVN0YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNUM3NzBBNjEwMEQ0MUNEMDA1QkEyNjcgLyogRE9NVmFsaWRpdHlT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzM5MENBNTYwRkZDMTU3QjAwOTIxOTYyIC8qIE5v
dGlmaWNhdGlvbkNlbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzM5MENBNTgwRkZDMTU3QjAw
OTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNvbnRlbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc0
REEzNzEwMTNGM0Y3MDA3OTg3QUQgLyogUkdCQ29sb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NzREQTQ5MTAxM0Y0NjgwMDc5ODdBRCAvKiBKU1JHQkNvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzNzdDNENERjEwMTRFOUY2MDBCOUFFNDIgLyogUGxhY2Vob2xkZXJEb2N1bWVudC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xNzAyOCw2ICsxNzA4Myw5IEBACiAJCQkJMkVDRjdBRTIxMDE2MkI1ODAw
NDI3REU3IC8qIEVycm9yRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RURCMDNEMTAxNjg0
OTQwMEZFODExMyAvKiBET01PYmplY3RXaXRoU1ZHQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0U1NEZEMzgxMDE2RDlBNjAwOEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQkzMzUwM0M5QTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9u
UHJlc2VudGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMzUwM0NBNDEwMTc5QUQ3MDAzQjQ3RTEg
LyogSlNOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTMzNTAzQ0E2MTAxNzlBRDcw
MDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbkNlbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNzEz
Niw2ICsxNzE5NCw3IEBACiAJCQkJODUxMzZDQTgwQUVENjY1OTAwRjkwQTNEIC8qIHdlc3RSZXNp
emVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QTBDMDUxRkRFMDAxMzlG
NEYgLyogem9vbUluQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0IwQzA1
MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKKwkJCQkz
MzkwQ0E1NzBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBpbiBSZXNv
dXJjZXMgKi8sCiAJCQkJNDFFMUIxRDIwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2Vy
LmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNDFFMUIxRDUwRkY1OTg2OTAwNTc2QjNCIC8qIFNo
YXJlZFdvcmtlci5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCTE1Qzc3MDhDMTAwRDNDNkEwMDVC
QTI2NyAvKiBWYWxpZGl0eVN0YXRlLmlkbCBpbiBSZXNvdXJjZXMgKi8sCkBAIC0xOTA0Nyw2ICsx
OTEwNiw3IEBACiAJCQkJOTNGMTlCMDQwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRV
bmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5
QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMzkwQ0E1NTBGRkMxNTdC
MDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQx
RTFCMUQwMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0MUUxQjFEMzBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQxNUI3QzU3MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3RyYWN0V29y
a2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTkwNjMsNiArMTkxMjMsMTAgQEAKIAkJ
CQkyRUNGN0FEQzEwMTYyQjM4MDA0MjdERTcgLyogSlNFcnJvckV2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJFQ0Y3QUUxMTAxNjJCNTgwMDQyN0RFNyAvKiBFcnJvckV2ZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDQUVGQ0FFMTAxNkNFNEEwMDQwRDM0RSAvKiBET01SR0JDb2xvci5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTMzNTAzQ0EzMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlm
aWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMzUwM0NBNTEwMTc5QUQ3MDAzQjQ3RTEg
LyogSlNOb3RpZmljYXRpb25DZW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzM1MDNDQzAx
MDE3OUMxQTAwM0I0N0UxIC8qIEpTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMzM1MDNDQzcxMDE3QTFCMTAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCShyZXZpc2lvbiA0NjI2OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVk
ZSAiTG9jYXRpb24uaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VQb3J0LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2
ZW50TGlzdGVuZXIuaCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNEZXNrdG9wTm90aWZp
Y2F0aW9uc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rl
c2t0b3BOb3RpZmljYXRpb25zQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEZXNrdG9wTm90aWZpY2F0aW9uc0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSlNDdXN0b21Wb2lkQ2Fs
bGJhY2suaCIKKyNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJKU05vdGlm
aWNhdGlvbi5oIgorI2luY2x1ZGUgIkpTTm90aWZpY2F0aW9uQ2VudGVyLmgiCisjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSBKU05vdGlm
aWNhdGlvbkNlbnRlcjo6cmVxdWVzdFBlcm1pc3Npb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBB
cmdMaXN0JiBhcmdzKQoreworICAgIC8vIFBlcm1pc3Npb24gcmVxdWVzdCBpcyBvbmx5IHZhbGlk
IGZyb20gcGFnZSBjb250ZXh0LgorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQg
PSBpbXBsKCktPmNvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKKworICAgIGlm
ICghYXJncy5hdCgwKS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVj
LCBUeXBlRXJyb3IpOworCisgICAgUGFzc1JlZlB0cjxKU0N1c3RvbVZvaWRDYWxsYmFjaz4gY2Fs
bGJhY2sgPSBKU0N1c3RvbVZvaWRDYWxsYmFjazo6Y3JlYXRlKGFyZ3MuYXQoMCkuZ2V0T2JqZWN0
KCksIHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmZyYW1lKCkpOworCisgICAgaW1w
bCgpLT5yZXF1ZXN0UGVybWlzc2lvbihjYWxsYmFjayk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Cit9CisKK0pTVmFsdWUgSlNOb3RpZmljYXRpb246OmFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KGltcGwoKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisKKyAgICBpZiAoUmVmUHRyPEpTRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIg
PSBnbG9iYWxPYmplY3QtPmZpbmRPckNyZWF0ZUpTRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDEpKSkK
KyAgICAgICAgaW1wbCgpLT5hZGRFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhl
YyksIGxpc3RlbmVyLnJlbGVhc2UoKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOworCisg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlNOb3RpZmljYXRpb246OnJl
bW92ZUV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQor
eworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2Jq
ZWN0KGltcGwoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIWdsb2JhbE9i
amVjdCkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBpZiAoSlNFdmVudExp
c3RlbmVyKiBsaXN0ZW5lciA9IGdsb2JhbE9iamVjdC0+ZmluZEpTRXZlbnRMaXN0ZW5lcihhcmdz
LmF0KDEpKSkKKyAgICAgICAgaW1wbCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCku
dG9TdHJpbmcoZXhlYyksIGxpc3RlbmVyLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CisK
KyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworCit9IC8vIG5hbWVzcGFjZQorCisjZW5k
aWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dFRhcmdldC5jcHAJKHJldmlzaW9uIDQ2MjY4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTEgQEAKICNpbmNsdWRl
ICJTaGFyZWRXb3JrZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisj
aW5jbHVkZSAiSlNOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKKyNl
bmRpZgorCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
MDksNiArMTE0LDExIEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEV2ZW50VGFyZ2UK
ICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgc2hhcmVkV29ya2VyKTsKICNlbmRpZgogCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgaWYgKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9u
ID0gdGFyZ2V0LT50b05vdGlmaWNhdGlvbigpKQorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBu
b3RpZmljYXRpb24pOworI2VuZGlmCisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4ganNOdWxsKCk7CiB9CkBAIC0xNDQsNiArMTU0LDEwIEBAIEV2ZW50VGFyZ2V0KiB0b0V2
ZW50VGFyZ2V0KEpTQzo6SlNWYWx1ZSAKICAgICBDT05WRVJUX1RPX0VWRU5UX1RBUkdFVChTaGFy
ZWRXb3JrZXIpCiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIENPTlZF
UlRfVE9fRVZFTlRfVEFSR0VUKE5vdGlmaWNhdGlvbikKKyNlbmRpZgorCiAgICAgcmV0dXJuIDA7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDQ2MjY4KQorKysgV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDEzIEBAIFNo
YXJlZFdvcmtlciogRXZlbnRUYXJnZXQ6OnRvU2hhcmVkV29ya2UKIH0KICNlbmRpZgogCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCitOb3RpZmljYXRpb24qIEV2ZW50VGFyZ2V0Ojp0b05vdGlm
aWNhdGlvbigpCit7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogI2lmbmRlZiBOREVCVUcK
IHZvaWQgZm9yYmlkRXZlbnREaXNwYXRjaCgpCiB7CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudFRh
cmdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgJKHJldmlzaW9u
IDQ2MjY4KQorKysgV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRXZlbnRMaXN0ZW5l
cjsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBOb2RlOworICAgIGNsYXNzIE5v
dGlmaWNhdGlvbjsKICAgICBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7CiAgICAgY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXI7CkBAIC03Niw2ICs3
NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgU2hhcmVkV29ya2Vy
KiB0b1NoYXJlZFdvcmtlcigpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
KyAgICAgICAgdmlydHVhbCBOb3RpZmljYXRpb24qIHRvTm90aWZpY2F0aW9uKCk7CisjZW5kaWYK
KwogICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkgPSAwOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJl
dmlzaW9uIDQ2MjY4KQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMyw2ICsxMzMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBleGNl
ZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUqLCBjb25zdCBTdHJpbmcmKSB7IH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgdmlydHVhbCBOb3RpZmljYXRpb25QcmVzZW50
ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyNlbmRpZgor
CiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNo
b29zZXI+KSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3Qg
Tm9kZSopIHsgfQpJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkNvbnRlbnRzLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiIAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYg
dXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywg
Tm90aWZpY2F0aW9uUHJlc2VudGVyKiBwcm92aWRlcikKKyAgICA6IEFjdGl2ZURPTU9iamVjdChj
b250ZXh0LCB0aGlzKQorICAgICwgbV9pc0hUTUwodHJ1ZSkKKyAgICAsIG1faXNTaG93aW5nKGZh
bHNlKQorICAgICwgbV9wcmVzZW50ZXIocHJvdmlkZXIpCit7CisgICAgaWYgKG1fcHJlc2VudGVy
LT5jaGVja1Blcm1pc3Npb24oY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSkgIT0gTm90aWZpY2F0
aW9uUHJlc2VudGVyOjpQRVJNSVNTSU9OX0FMTE9XRUQpIHsKKyAgICAgICAgZWMgPSBTRUNVUklU
WV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX25vdGlmaWNhdGlvblVSTCA9
IGNvbnRleHQtPmNvbXBsZXRlVVJMKHVybCk7CisgICAgaWYgKHVybC5pc0VtcHR5KCkgfHwgIW1f
bm90aWZpY2F0aW9uVVJMLmlzVmFsaWQoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNv
bnN0IE5vdGlmaWNhdGlvbkNvbnRlbnRzJiBjb250ZW50cywgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIE5vdGlmaWNhdGlvblByZXNlbnRlciogcHJv
dmlkZXIpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1faXNI
VE1MKGZhbHNlKQorICAgICwgbV9jb250ZW50cyhjb250ZW50cykKKyAgICAsIG1faXNTaG93aW5n
KGZhbHNlKQorICAgICwgbV9wcmVzZW50ZXIocHJvdmlkZXIpCit7CisgICAgaWYgKG1fcHJlc2Vu
dGVyLT5jaGVja1Blcm1pc3Npb24oY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSkgIT0gTm90aWZp
Y2F0aW9uUHJlc2VudGVyOjpQRVJNSVNTSU9OX0FMTE9XRUQpIHsKKyAgICAgICAgZWMgPSBTRUNV
UklUWV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBLVVJMIGljb24gPSBjb250
ZXh0LT5jb21wbGV0ZVVSTChjb250ZW50cy5pY29uKCkpOworICAgIGlmICghaWNvbi5pc0VtcHR5
KCkgJiYgIWljb24uaXNWYWxpZCgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KK30KKworTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKCkgCit7
CisgICAgbV9wcmVzZW50ZXItPm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCh0aGlzKTsKK30K
Kwordm9pZCBOb3RpZmljYXRpb246OnNob3coKSAKK3sKKyAgICAvLyBwcmV2ZW50IGRvdWJsZS1z
aG93aW5nCisgICAgaWYgKCFtX2lzU2hvd2luZykKKyAgICAgICAgbV9pc1Nob3dpbmcgPSBtX3By
ZXNlbnRlci0+c2hvdyh0aGlzKTsKK30KKwordm9pZCBOb3RpZmljYXRpb246OmNhbmNlbCgpIAor
eworICAgIGlmIChtX2lzU2hvd2luZykKKyAgICAgICAgbV9wcmVzZW50ZXItPmNhbmNlbCh0aGlz
KTsKK30KKworRXZlbnRMaXN0ZW5lciogTm90aWZpY2F0aW9uOjpvbmRpc3BsYXkoKSBjb25zdAor
eworICAgIHJldHVybiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKCJkaXNwbGF5Iik7Cit9CisK
K3ZvaWQgTm90aWZpY2F0aW9uOjpzZXRPbmRpc3BsYXkoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiBldmVudExpc3RlbmVyKQoreworICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoImRpc3Bs
YXkiLCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogTm90aWZpY2F0aW9uOjpv
bmVycm9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuZXJyb3JFdmVudCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpzZXRPbmVy
cm9yKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBldmVudExpc3Rl
bmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogTm90aWZpY2F0aW9uOjpvbmNsb3NlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xv
c2VFdmVudCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpzZXRPbmNsb3NlKFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZl
bnRMaXN0ZW5lciogTm90aWZpY2F0aW9uOjpnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdAoreworICAgIGNvbnN0IFJlZ2lzdGVyZWRF
dmVudExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMgPSBtX2V2ZW50TGlzdGVuZXJzOworICAgIHNp
emVfdCBzaXplID0gbGlzdGVuZXJzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgeworICAgICAgICBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgciA9
ICpsaXN0ZW5lcnNbaV07CisgICAgICAgIGlmIChyLmV2ZW50VHlwZSgpID09IGV2ZW50VHlwZSAm
JiByLmxpc3RlbmVyKCktPmlzQXR0cmlidXRlKCkpCisgICAgICAgICAgICByZXR1cm4gci5saXN0
ZW5lcigpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBOb3RpZmljYXRpb246OnNl
dEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpCit7CisgICAgY2xlYXJBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGV2ZW50VHlwZSk7CisgICAgaWYgKGxpc3RlbmVyKQorICAgICAgICBhZGRF
dmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIGZhbHNlKTsKK30KKwordm9pZCBOb3Rp
ZmljYXRpb246OmNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSkKK3sKKyAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lclZlY3RvciogbGlzdGVu
ZXJzID0gJm1fZXZlbnRMaXN0ZW5lcnM7CisgICAgc2l6ZV90IHNpemUgPSBsaXN0ZW5lcnMtPnNp
emUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBS
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgciA9ICpsaXN0ZW5lcnMtPmF0KGkpOworICAgICAgICBp
ZiAoci5ldmVudFR5cGUoKSAhPSBldmVudFR5cGUgfHwgIXIubGlzdGVuZXIoKS0+aXNBdHRyaWJ1
dGUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHIuc2V0UmVtb3ZlZCh0cnVl
KTsKKyAgICAgICAgbGlzdGVuZXJzLT5yZW1vdmUoaSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaERpc3BsYXlFdmVudCgpIAoreyAgIAor
ICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKCJkaXNwbGF5IiwgZmFsc2Us
IHRydWUpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZl
bnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7Cit9CisKK3ZvaWQgTm90aWZpY2F0
aW9uOjpkaXNwYXRjaEVycm9yRXZlbnQoKQoreyAgCisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9
IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LnJlbGVhc2Uo
KSwgZWMpOworICAgIEFTU0VSVCghZWMpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0
Y2hDbG9zZUV2ZW50KCkgCit7ICAgCisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LnJlbGVhc2UoKSwgZWMpOwor
ICAgIEFTU0VSVCghZWMpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6YWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQoreworICAgIFJlZlB0cjxSZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lcj4gcmVnaXN0ZXJlZExpc3RlbmVyID0gUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6
OmNyZWF0ZShldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICBtX2V2ZW50TGlz
dGVuZXJzLmFwcGVuZChyZWdpc3RlcmVkTGlzdGVuZXIpOworfQorCit2b2lkIE5vdGlmaWNhdGlv
bjo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK3sKKyAgICBzaXplX3Qgc2l6
ZSA9IG1fZXZlbnRMaXN0ZW5lcnMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CisgICAgICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByID0gKm1fZXZl
bnRMaXN0ZW5lcnNbaV07CisgICAgICAgIGlmIChyLmV2ZW50VHlwZSgpID09IGV2ZW50VHlwZSAm
JiByLmxpc3RlbmVyKCkgPT0gbGlzdGVuZXIgJiYgci51c2VDYXB0dXJlKCkgPT0gdXNlQ2FwdHVy
ZSkgeworICAgICAgICAgICAgci5zZXRSZW1vdmVkKHRydWUpOworICAgICAgICAgICAgbV9ldmVu
dExpc3RlbmVycy5yZW1vdmUoaSk7CisgICAgICAgICAgICByZXR1cm47IAorICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6aGFuZGxlRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4gZXZlbnQsIGJvb2wgdXNlQ2FwdHVyZSkKK3sKKyAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
clZlY3RvciBsaXN0ZW5lcnNDb3B5ID0gbV9ldmVudExpc3RlbmVyczsKKyAgICBzaXplX3Qgc2l6
ZSA9IGxpc3RlbmVyc0NvcHkuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7CisgICAgICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByID0gKmxpc3RlbmVy
c0NvcHlbaV07CisgICAgICAgIGlmIChyLmV2ZW50VHlwZSgpID09IGV2ZW50LT50eXBlKCkgJiYg
ci51c2VDYXB0dXJlKCkgPT0gdXNlQ2FwdHVyZSAmJiAhci5yZW1vdmVkKCkpCisgICAgICAgICAg
ICByLmxpc3RlbmVyKCktPmhhbmRsZUV2ZW50KGV2ZW50LmdldCgpKTsKKyAgICB9Cit9CisKK2Jv
b2wgTm90aWZpY2F0aW9uOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGluRXZlbnQs
IEV4Y2VwdGlvbkNvZGUmKQoreworICAgIFJlZlB0cjxFdmVudD4gZXZlbnQoaW5FdmVudCk7CisK
KyAgICBldmVudC0+c2V0RXZlbnRQaGFzZShFdmVudDo6QVRfVEFSR0VUKTsKKyAgICBldmVudC0+
c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKworICAgIGhhbmRsZUV2ZW50KGV2ZW50LmdldCgpLCB0
cnVlKTsKKyAgICBpZiAoIWV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSkgeworICAgICAgICBo
YW5kbGVFdmVudChldmVudC5nZXQoKSwgZmFsc2UpOworICAgIH0KKworICAgIHJldHVybiAhZXZl
bnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTm90aWZpY2F0
aW9uX2ggIAorI2RlZmluZSBOb3RpZmljYXRpb25faAorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nSGFzaC5oIgorI2luY2x1ZGUgIkV2ZW50Lmgi
CisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJO
b3RpZmljYXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25Db250ZW50cy5o
IgorI2luY2x1ZGUgIlJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSA8d3RmL093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CisK
KyAgICBjbGFzcyBOb3RpZmljYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXQgeyAKKyAgICBwdWJs
aWM6CisgICAgICAgIHN0YXRpYyBOb3RpZmljYXRpb24qIGNyZWF0ZShjb25zdCBTdHJpbmcmIHVy
bCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIE5v
dGlmaWNhdGlvblByZXNlbnRlciogcHJvdmlkZXIpIHsgcmV0dXJuIG5ldyBOb3RpZmljYXRpb24o
dXJsLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpOyB9CisgICAgICAgIHN0YXRpYyBOb3RpZmljYXRp
b24qIGNyZWF0ZShjb25zdCBOb3RpZmljYXRpb25Db250ZW50cyYgY29udGVudHMsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRpb25Q
cmVzZW50ZXIqIHByb3ZpZGVyKSB7IHJldHVybiBuZXcgTm90aWZpY2F0aW9uKGNvbnRlbnRzLCBj
b250ZXh0LCBlYywgcHJvdmlkZXIpOyB9CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIH5Ob3Rp
ZmljYXRpb24oKTsKKworICAgICAgICB2b2lkIHNob3coKTsKKyAgICAgICAgdm9pZCBjYW5jZWwo
KTsKKyAgICAKKyAgICAgICAgYm9vbCBpc0hUTUwoKSB7IHJldHVybiBtX2lzSFRNTDsgfQorICAg
ICAgICBLVVJMIHVybCgpIHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uVVJMOyB9CisgICAgICAgIE5v
dGlmaWNhdGlvbkNvbnRlbnRzJiBjb250ZW50cygpIHsgcmV0dXJuIG1fY29udGVudHM7IH0KKwor
ICAgICAgICBFdmVudExpc3RlbmVyKiBvbmRpc3BsYXkoKSBjb25zdDsKKyAgICAgICAgdm9pZCBz
ZXRPbmRpc3BsYXkoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKTsKKyAg
ICAgICAgRXZlbnRMaXN0ZW5lciogb25lcnJvcigpIGNvbnN0OworICAgICAgICB2b2lkIHNldE9u
ZXJyb3IoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKTsKKyAgICAgICAg
RXZlbnRMaXN0ZW5lciogb25jbG9zZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldE9uY2xvc2Uo
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKTsKKyAgICAKKyAgICAgICAg
dXNpbmcgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+OjpyZWY7CisgICAgICAgIHVzaW5nIFJlZkNv
dW50ZWQ8Tm90aWZpY2F0aW9uPjo6ZGVyZWY7CisgICAgCisgICAgICAgIC8vIERpc3BhdGNoaW5n
IG9mIGV2ZW50cyBvbiB0aGUgbm90aWZpY2F0aW9uLiAgVGhlIHByZXNlbnRlciBzaG91bGQgY2Fs
bCB0aGVzZSB3aGVuIGV2ZW50cyBvY2N1ci4KKyAgICAgICAgdm9pZCBkaXNwYXRjaERpc3BsYXlF
dmVudCgpOworICAgICAgICB2b2lkIGRpc3BhdGNoRXJyb3JFdmVudCgpOworICAgICAgICB2b2lk
IGRpc3BhdGNoQ2xvc2VFdmVudCgpOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFj
ZQorICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiwg
RXZlbnRMaXN0ZW5lciosIGJvb2wpOworICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2aXJ0dWFsIE5v
dGlmaWNhdGlvbiogdG9Ob3RpZmljYXRpb24oKSB7IHJldHVybiB0aGlzOyB9CisgICAgICAKKyAg
ICBwcml2YXRlOgorICAgICAgICBOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRp
b25QcmVzZW50ZXIqIHByb3ZpZGVyKTsKKyAgICAgICAgTm90aWZpY2F0aW9uKGNvbnN0IE5vdGlm
aWNhdGlvbkNvbnRlbnRzJiBmaWVsZHMsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRpb25QcmVzZW50ZXIqIHByb3ZpZGVyKTsKKwor
ICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAgdmlydHVhbCB2b2lkIHJl
ZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVu
dFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAKKyAgICAgICAgdm9pZCBoYW5kbGVFdmVudChQYXNz
UmVmUHRyPEV2ZW50PiBldmVudCwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICAgICAgRXZlbnRMaXN0
ZW5lciogZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmKSBjb25z
dDsKKyAgICAgICAgdm9pZCBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOworICAgICAgICB2b2lkIGNsZWFyQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmKTsKKworICAgICAgICBib29s
IG1faXNIVE1MOworICAgICAgICBLVVJMIG1fbm90aWZpY2F0aW9uVVJMOworICAgICAgICBOb3Rp
ZmljYXRpb25Db250ZW50cyBtX2NvbnRlbnRzOworCisgICAgICAgIGJvb2wgbV9pc1Nob3dpbmc7
CisKKyAgICAgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXJWZWN0b3IgbV9ldmVudExpc3RlbmVy
czsKKworICAgICAgICBOb3RpZmljYXRpb25QcmVzZW50ZXIqIG1fcHJlc2VudGVyOworICAgIH07
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJ
T05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uc19oCkluZGV4OiBXZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHRo
cmVhZHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9Tk9USUZJQ0FU
SU9OUworICAgIF0gTm90aWZpY2F0aW9uIHsKKyAgICAgICAgdm9pZCBzaG93KCk7CisgICAgICAg
IHZvaWQgY2FuY2VsKCk7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kaXNw
bGF5OworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOworICAgICAgICBh
dHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNsb3NlOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0
IGludGVyZmFjZQorICAgICAgICBbQ3VzdG9tXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9N
U3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
RXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHJl
bW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1
cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAg
ICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3Jl
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKKworI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCisjaW5jbHVkZSAiV29ya2Vy
Q29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05vdGlmaWNhdGlvbkNlbnRlcjo6
Tm90aWZpY2F0aW9uQ2VudGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlm
aWNhdGlvblByZXNlbnRlciogcHJlc2VudGVyKSAKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250
ZXh0LCB0aGlzKQorICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCisgICAg
LCBtX25vdGlmaWNhdGlvblByZXNlbnRlcihwcmVzZW50ZXIpIHt9CisKK2ludCBOb3RpZmljYXRp
b25DZW50ZXI6OmNoZWNrUGVybWlzc2lvbigpIAoreworICAgIHJldHVybiBtX25vdGlmaWNhdGlv
blByZXNlbnRlci0+Y2hlY2tQZXJtaXNzaW9uKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2Vj
dXJpdHlPcmlnaW4oKSk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uQ2VudGVyOjpyZXF1ZXN0UGVy
bWlzc2lvbihQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCit7CisgICAgbV9ub3Rp
ZmljYXRpb25QcmVzZW50ZXItPnJlcXVlc3RQZXJtaXNzaW9uKG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgY2FsbGJhY2spOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKSW5kZXg6IFdlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE5vdGlmaWNhdGlvbkNlbnRlcl9oCisjZGVmaW5lIE5vdGlmaWNh
dGlvbkNlbnRlcl9oCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJOb3Rp
ZmljYXRpb25Db250ZW50cy5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CisKKyAgICBjbGFzcyBOb3RpZmljYXRpb25DZW50ZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxOb3RpZmljYXRpb25DZW50ZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsg
CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50
ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRpb25Q
cmVzZW50ZXIqIHByZXNlbnRlcikgeyByZXR1cm4gYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbkNl
bnRlcihjb250ZXh0LCBwcmVzZW50ZXIpKTsgfQorICAgICAgICAKKyAgICAgICAgTm90aWZpY2F0
aW9uKiBjcmVhdGVIVE1MTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgVVJJLCBFeGNlcHRpb25D
b2RlJiBlYykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbjo6Y3Jl
YXRlKEtVUkwoVVJJKSwgY29udGV4dCgpLCBlYywgcHJlc2VudGVyKCkpOworICAgICAgICB9CisK
KyAgICAgICAgTm90aWZpY2F0aW9uKiBjcmVhdGVOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBp
Y29uVVJJLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIEV4Y2VwdGlv
bkNvZGUmIGVjKQorICAgICAgICB7CisgICAgICAgICAgICBOb3RpZmljYXRpb25Db250ZW50cyBj
b250ZW50cyhpY29uVVJJLCB0aXRsZSwgYm9keSk7CisgICAgICAgICAgICByZXR1cm4gTm90aWZp
Y2F0aW9uOjpjcmVhdGUoY29udGVudHMsIGNvbnRleHQoKSwgZWMsIHByZXNlbnRlcigpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KKyAgICAgICAgTm90aWZpY2F0
aW9uUHJlc2VudGVyKiBwcmVzZW50ZXIoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlvblBy
ZXNlbnRlcjsgfQorCisgICAgICAgIGludCBjaGVja1Blcm1pc3Npb24oKTsKKyAgICAgICAgdm9p
ZCByZXF1ZXN0UGVybWlzc2lvbihQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spOwor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgTm90aWZpY2F0aW9uQ2VudGVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBOb3RpZmljYXRpb25QcmVzZW50ZXIqKTsKKworICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgICAgIE5vdGlmaWNh
dGlvblByZXNlbnRlciogbV9ub3RpZmljYXRpb25QcmVzZW50ZXI7CisgICAgfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNl
bmRpZiAvLyBOb3RpZmljYXRpb25DZW50ZXJfaApJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNlbnRlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK21vZHVsZSB0aHJlYWRzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlv
bmFsPU5PVElGSUNBVElPTlMKKyAgICBdIE5vdGlmaWNhdGlvbkNlbnRlciB7CisgICAgICAgTm90
aWZpY2F0aW9uIGNyZWF0ZUhUTUxOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIHVybCkgcmFpc2Vz
KEV4Y2VwdGlvbik7CisgICAgICAgTm90aWZpY2F0aW9uIGNyZWF0ZU5vdGlmaWNhdGlvbihpbiBE
T01TdHJpbmcgaWNvblVybCwgaW4gRE9NU3RyaW5nIHRpdGxlLCBpbiBET01TdHJpbmcgYm9keSkg
cmFpc2VzKEV4Y2VwdGlvbik7CisKKyAgICAgICBpbnQgY2hlY2tQZXJtaXNzaW9uKCk7CisgICAg
ICAgW0N1c3RvbV0gdm9pZCByZXF1ZXN0UGVybWlzc2lvbihpbiBWb2lkQ2FsbGJhY2sgY2FsbGJh
Y2spOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25Db250ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25Db250ZW50cy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNvbnRlbnRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IE5vdGlmaWNhdGlvbkNvbnRlbnRzX2gKKyNkZWZpbmUgTm90aWZpY2F0aW9uQ29udGVudHNfaAor
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAg
IGNsYXNzIE5vdGlmaWNhdGlvbkNvbnRlbnRzIHsgCisgICAgcHVibGljOgorICAgICAgICBOb3Rp
ZmljYXRpb25Db250ZW50cygpIHt9CisgICAgICAgIE5vdGlmaWNhdGlvbkNvbnRlbnRzKGNvbnN0
IFN0cmluZyYgaWNvblVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5
KSAKKyAgICAgICAgICAgIDogbV9pY29uKGljb25VcmwpCisgICAgICAgICAgICAsIG1fdGl0bGUo
dGl0bGUpCisgICAgICAgICAgICAsIG1fYm9keShib2R5KSB7fQorCisgICAgICAgIFN0cmluZyBp
Y29uKCkgY29uc3QgeyByZXR1cm4gbV9pY29uOyB9CisgICAgICAgIFN0cmluZyB0aXRsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KKyAgICAgICAgU3RyaW5nIGJvZHkoKSBjb25zdCB7IHJl
dHVybiBtX2JvZHk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFN0cmluZyBtX2ljb247Cisg
ICAgICAgIFN0cmluZyBtX3RpdGxlOworICAgICAgICBTdHJpbmcgbV9ib2R5OworICAgIH07CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05T
KQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uQ29udGVudHNfaApJbmRleDogV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvblByZXNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QcmVzZW50ZXIuaAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QcmVzZW50ZXIuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgTm90aWZpY2F0aW9uUHJlc2VudGVyX2gKKyNkZWZpbmUg
Tm90aWZpY2F0aW9uUHJlc2VudGVyX2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgTm90aWZpY2F0aW9uOworICAgIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOworICAgIGNsYXNzIFN0cmluZzsKKyAgICAKKyAgICBjbGFzcyBOb3Rp
ZmljYXRpb25QcmVzZW50ZXIgeworCisgICAgcHVibGljOgorICAgICAgICBlbnVtIFBlcm1pc3Np
b24geyAKKyAgICAgICAgICAgIFBFUk1JU1NJT05fQUxMT1dFRCwgICAgIC8vIFVzZXIgaGFzIGFs
bG93ZWQgbm90aWZpY2F0aW9ucworICAgICAgICAgICAgUEVSTUlTU0lPTl9OT1RfQUxMT1dFRCwg
Ly8gVXNlciBoYXMgbm90IHlldCBhbGxvd2VkCisgICAgICAgICAgICBQRVJNSVNTSU9OX0RFTklF
RCAgICAgICAvLyBVc2VyIGhhcyBleHBsaWN0bHkgZGVuaWVkIHBlcm1pc3Npb24KKyAgICAgICAg
fTsKKworICAgICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25QcmVzZW50ZXIoKSB7fQorCisgICAg
ICAgIC8vIFJlcXVlc3RzIHRoYXQgYSBub3RpZmljYXRpb24gYmUgc2hvd24uCisgICAgICAgIHZp
cnR1YWwgYm9vbCBzaG93KE5vdGlmaWNhdGlvbiogb2JqZWN0KSA9IDA7CisKKyAgICAgICAgLy8g
UmVxdWVzdHMgdGhhdCBhIG5vdGlmaWNhdGlvbiB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gc2hvd24g
YmUgY2FuY2VsZWQuCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoTm90aWZpY2F0aW9uKiBv
YmplY3QpID0gMDsKKworICAgICAgICAvLyBJbmZvcm1zIHRoZSBwcmVzZW50ZXIgdGhhdCBhIE5v
dGlmaWNhdGlvbiBvYmplY3QgaGFzIGJlZW4gZGVzdHJveWVkIAorICAgICAgICAvLyAoc3VjaCBh
cyBieSBhIHBhZ2UgdHJhbnNpdGlvbikuICBUaGUgcHJlc2VudGVyIG1heSBjb250aW51ZSBzaG93
aW5nCisgICAgICAgIC8vIHRoZSBub3RpZmljYXRpb24sIGJ1dCBtdXN0IG5vdCBhdHRlbXB0IHRv
IGNhbGwgdGhlIGV2ZW50IGhhbmRsZXJzLgorICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0
aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiogb2JqZWN0KSA9IDA7CisKKyAgICAgICAg
Ly8gUmVxdWVzdHMgdXNlciBwZXJtaXNzaW9uIHRvIHNob3cgZGVza3RvcCBub3RpZmljYXRpb25z
IGZyb20gYSBwYXJ0aWN1bGFyCisgICAgICAgIC8vIG9yaWdpbi4gIFRoZSBjYWxsYmFjayBwYXJh
bWV0ZXIgc2hvdWxkIGJlIHJ1biB3aGVuIHRoZSB1c2VyIGhhcworICAgICAgICAvLyBtYWRlIGEg
ZGVjaXNpb24uCisgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTZWN1cml0
eU9yaWdpbiogb3JpZ2luLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spID0gMDsK
KworICAgICAgICAvLyBDaGVja3MgdGhlIGN1cnJlbnQgbGV2ZWwgb2YgcGVybWlzc2lvbi4KKyAg
ICAgICAgdmlydHVhbCBQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihTZWN1cml0eU9yaWdpbiog
b3JpZ2luKSA9IDA7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBOb3RpZmljYXRpb25QcmVzZW50
ZXJfaApJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDQ2MjY4KQorKysgV2ViQ29yZS9wYWdlL0Nocm9t
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMyw2ICs0MDMsMTMgQEAgYm9vbCBDaHJvbWU6OnNl
dEN1cnNvcihQbGF0Zm9ybUN1cnNvckhhbgogICAgIHJldHVybiBtX2NsaWVudC0+c2V0Q3Vyc29y
KGN1cnNvcik7CiB9CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK05vdGlmaWNhdGlvblBy
ZXNlbnRlciogQ2hyb21lOjpub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NsaWVudC0+bm90aWZpY2F0aW9uUHJlc2VudGVyKCk7Cit9CisjZW5kaWYKKwogLy8g
LS0tLS0tLS0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKSW5kZXg6IFdlYkNvcmUv
cGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHJldmlz
aW9uIDQ2MjY4KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw2ICs0NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRSZWN0OwogICAg
IGNsYXNzIFBhZ2U7CiAgICAgY2xhc3MgU3RyaW5nOworI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQorICAgIGNsYXNzIE5vdGlmaWNhdGlvblByZXNlbnRlcjsKKyNlbmRpZgogCiAgICAgc3RydWN0
IEZyYW1lTG9hZFJlcXVlc3Q7CiAgICAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwpAQCAtMTI4LDYg
KzEzMSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZm9jdXNOU1ZpZXco
TlNWaWV3Kik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICBO
b3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0OyAKKyNl
bmRpZgorCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAgICBDaHJv
bWVDbGllbnQqIG1fY2xpZW50OwpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNDYyNjgp
CisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYg
KzYyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBHcmFwaGljc0xheWVyOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBjbGFzcyBOb3RpZmljYXRp
b25QcmVzZW50ZXI7CisjZW5kaWYKKwogICAgIGNsYXNzIENocm9tZUNsaWVudCB7CiAgICAgcHVi
bGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hyb21lRGVzdHJveWVkKCkgPSAwOwpAQCAtMTQz
LDYgKzE0NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
YXNoYm9hcmRSZWdpb25zQ2hhbmdlZCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKKyAgICAgICAgdmlydHVhbCBOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlv
blByZXNlbnRlcigpIGNvbnN0ID0gMDsKKyNlbmRpZgorCiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
b3B1bGF0ZVZpc2l0ZWRMaW5rcygpOwogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGN1c3Rv
bUhpZ2hsaWdodFJlY3QoTm9kZSosIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgRmxv
YXRSZWN0JiBsaW5lUmVjdCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gNDYyNjgpCisr
KyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzks
MTAgQEAKICNpbmNsdWRlICJET01BcHBsaWNhdGlvbkNhY2hlLmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgorI2Vu
ZGlmCisKIHVzaW5nIHN0ZDo6bWluOwogdXNpbmcgc3RkOjptYXg7CiAKQEAgLTQ1Myw2ICs0NTcs
MTAgQEAgdm9pZCBET01XaW5kb3c6OmNsZWFyKCkKICAgICAgICAgbV9hcHBsaWNhdGlvbkNhY2hl
LT5kaXNjb25uZWN0RnJhbWUoKTsKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGUgPSAwOwogI2VuZGlm
CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBtX25vdGlmaWNhdGlvbnMgPSAwOwor
I2VuZGlmCiB9CiAKIFNjcmVlbiogRE9NV2luZG93OjpzY3JlZW4oKSBjb25zdApAQCAtNTkyLDYg
KzYwMCwyOCBAQCBTdG9yYWdlKiBET01XaW5kb3c6OmxvY2FsU3RvcmFnZSgpIGNvbnN0CiB9CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorTm90aWZpY2F0aW9uQ2VudGVyKiBE
T01XaW5kb3c6OndlYmtpdE5vdGlmaWNhdGlvbnMoKSBjb25zdAoreworICAgIGlmIChtX25vdGlm
aWNhdGlvbnMpCisgICAgICAgIHJldHVybiBtX25vdGlmaWNhdGlvbnMuZ2V0KCk7CisKKyAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQp
CisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFn
ZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBOb3RpZmljYXRp
b25QcmVzZW50ZXIqIHByb3ZpZGVyID0gcGFnZS0+Y2hyb21lKCktPm5vdGlmaWNhdGlvblByZXNl
bnRlcigpOworICAgIGlmIChwcm92aWRlcikgCisgICAgICAgIG1fbm90aWZpY2F0aW9ucyA9IE5v
dGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKGRvY3VtZW50LCBwcm92aWRlcik7ICAgIAorICAgICAg
CisgICAgcmV0dXJuIG1fbm90aWZpY2F0aW9ucy5nZXQoKTsKK30KKyNlbmRpZgorCiB2b2lkIERP
TVdpbmRvdzo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlUG9ydCog
bWVzc2FnZVBvcnQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJj
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQpJbmRleDogV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aAkocmV2aXNpb24gNDYyNjgpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDYgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE1l
c3NhZ2VQb3J0OwogICAgIGNsYXNzIE5hdmlnYXRvcjsKICAgICBjbGFzcyBOb2RlOworICAgIGNs
YXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKICAgICBjbGFzcyBQb3N0TWVzc2FnZVRpbWVyOwogICAg
IGNsYXNzIFNjaGVkdWxlZEFjdGlvbjsKICAgICBjbGFzcyBTY3JlZW47CkBAIC0xOTksNiArMjAw
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRE9NQXBwbGljYXRpb25DYWNoZSog
YXBwbGljYXRpb25DYWNoZSgpIGNvbnN0OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKKyAgICAgICAgTm90aWZpY2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRpb25zKCkg
Y29uc3Q7CisjZW5kaWYKKwogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgTWVzc2FnZVBvcnQqLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2lu
ZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZVRp
bWVyRmlyZWQoUG9zdE1lc3NhZ2VUaW1lciopOwogCkBAIC00MjQsNiArNDI5LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAg
ICAgIG11dGFibGUgUmVmUHRyPERPTUFwcGxpY2F0aW9uQ2FjaGU+IG1fYXBwbGljYXRpb25DYWNo
ZTsKICNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICBtdXRhYmxlIFJl
ZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IG1fbm90aWZpY2F0aW9uczsKKyNlbmRpZgogCiAgICAg
ICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyVmVjdG9yIG1fZXZlbnRMaXN0ZW5lcnM7CiAgICAg
fTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiA0NjI2OCkKKysrIFdlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiArMTYzLDkgQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdG9yYWdlIHNlc3Npb25TdG9yYWdl
OwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU3RvcmFnZSBsb2NhbFN0b3JhZ2U7CiAjZW5k
aWYKKyNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTk9USUZJQ0FU
SU9OUworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm90aWZpY2F0aW9uQ2VudGVyIHdlYmtp
dE5vdGlmaWNhdGlvbnM7CisjZW5kaWYKIAogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW1Jl
cGxhY2VhYmxlXSBDb25zb2xlIGNvbnNvbGU7CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gNDYyNjgpCisrKyBX
ZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoV01MKQogICAgIGNsYXNzIFdNTFBhZ2VTdGF0ZTsK
ICNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIGNsYXNzIE5vdGlmaWNhdGlv
blByZXNlbnRlcjsKKyNlbmRpZgogCiAgICAgZW51bSBGaW5kRGlyZWN0aW9uIHsgRmluZERpcmVj
dGlvbkZvcndhcmQsIEZpbmREaXJlY3Rpb25CYWNrd2FyZCB9OwogCkBAIC0yNjMsNiArMjY2LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoV01MKQogICAgICAgICBPd25QdHI8
V01MUGFnZVN0YXRlPiBtX3dtbFBhZ2VTdGF0ZTsKICNlbmRpZgorCisjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCisgICAgICAgIE5vdGlmaWNhdGlvblByZXNlbnRlciogbV9ub3RpZmljYXRpb25Q
cmVzZW50ZXI7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA0NjI2OCkKKysrIFdlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsMTAg
QEAKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbkNlbnRlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV29ya2VyQ29u
dGV4dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBXb3JrZXJUaHJlYWQqIHRocmVhZCkKQEAgLTY1LDcgKzY5LDkgQEAgV29ya2VyQ29udGV4
dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJMJgogV29ya2VyQ29udGV4dDo6fldvcmtlckNvbnRl
eHQoKQogewogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90aHJlYWQtPnRocmVhZElE
KCkpOwotCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpICAKKyAgICBtX25vdGlmaWNhdGlvbnMu
Y2xlYXIoKTsKKyNlbmRpZgogICAgIG1fdGhyZWFkLT53b3JrZXJPYmplY3RQcm94eSgpLndvcmtl
ckNvbnRleHREZXN0cm95ZWQoKTsKIH0KIApAQCAtMzEwLDYgKzMxNiwxNSBAQCB2b2lkIFdvcmtl
ckNvbnRleHQ6OmltcG9ydFNjcmlwdHMoY29uc3QgCiAgICAgfQogfQogCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCitOb3RpZmljYXRpb25DZW50ZXIqIFdvcmtlckNvbnRleHQ6OndlYmtpdE5v
dGlmaWNhdGlvbnMoKSBjb25zdAoreworICAgIGlmICghbV9ub3RpZmljYXRpb25zKQorICAgICAg
ICBtX25vdGlmaWNhdGlvbnMgPSBOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZShzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIG1fdGhyZWFkLT5nZXROb3RpZmljYXRpb25QcmVzZW50ZXIoKSk7Cisg
ICAgcmV0dXJuIG1fbm90aWZpY2F0aW9ucy5nZXQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKSW5kZXg6IFdlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnRleHQuaAkocmV2aXNpb24gNDYyNjgpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorICAgIGNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKICAgICBjbGFzcyBTY2hl
ZHVsZWRBY3Rpb247CiAgICAgY2xhc3MgV29ya2VyTG9jYXRpb247CiAgICAgY2xhc3MgV29ya2Vy
TmF2aWdhdG9yOwpAQCAtMTE0LDYgKzExNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2UoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxNZXNz
YWdlUG9ydD4pOwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgICAgIE5vdGlmaWNh
dGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0aW9ucygpIGNvbnN0OworI2VuZGlmCisKICAgICAg
ICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCBmb3IgR0MgbWFya2luZy4gU2VlIEpTV29ya2Vy
Q29udGV4dDo6bWFyaygpIGluCiAgICAgICAgIC8vIEpTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAu
CiAgICAgICAgIFdvcmtlck5hdmlnYXRvciogb3B0aW9uYWxOYXZpZ2F0b3IoKSBjb25zdCB7IHJl
dHVybiBtX25hdmlnYXRvci5nZXQoKTsgfQpAQCAtMTQ2LDYgKzE1MSw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25tZXNzYWdlTGlzdGVu
ZXI7CiAgICAgICAgIEV2ZW50TGlzdGVuZXJzTWFwIG1fZXZlbnRMaXN0ZW5lcnM7CiAKKyNpZiBF
TkFCTEVfTk9USUZJQ0FUSU9OUworICAgICAgICBtdXRhYmxlIFJlZlB0cjxOb3RpZmljYXRpb25D
ZW50ZXI+IG1fbm90aWZpY2F0aW9uczsKKyNlbmRpZgogICAgICAgICBib29sIG1fY2xvc2luZzsK
ICAgICB9OwogCkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCShyZXZpc2lvbiA0NjI2
OCkKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNzQsNiArNzQsMTAgQEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICBib29sZWFuIGRpc3Bh
dGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQogICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9u
KTsKIAorI2lmIGRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklD
QVRJT05TCisgICAgICAgIC8vIE5vdGlmaWNhdGlvbiBpbnRlcmZhY2UKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIE5vdGlmaWNhdGlvbkNlbnRlciB3ZWJraXROb3RpZmljYXRpb25zOworI2Vu
ZGlmCiAKICAgICAgICAgLy8gQ29uc3RydWN0b3JzCiAgICAgICAgIGF0dHJpYnV0ZSBNZXNzYWdl
RXZlbnRDb25zdHJ1Y3RvciBNZXNzYWdlRXZlbnQ7CkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5o
CShyZXZpc2lvbiA0NjI2OCkKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
Y2xhc3MgS1VSTDsKKyAgICBjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXI7CiAgICAgY2xhc3Mg
U3RyaW5nOwogICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CiAgICAgY2xhc3MgV29ya2VyTG9hZGVy
UHJveHk7CkBAIC01Niw2ICs1NywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdv
cmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29y
a2VyTG9hZGVyUHJveHk7IH0KICAgICAgICAgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVj
dFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJPYmplY3RQcm94eTsgfQogCisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCisgICAgICAgIE5vdGlmaWNhdGlvblByZXNlbnRlciogZ2V0Tm90
aWZpY2F0aW9uUHJlc2VudGVyKCkgeyByZXR1cm4gbV9ub3RpZmljYXRpb25QcmVzZW50ZXI7IH0K
KyAgICAgICAgdm9pZCBzZXROb3RpZmljYXRpb25QcmVzZW50ZXIoTm90aWZpY2F0aW9uUHJlc2Vu
dGVyKiBwcmVzZW50ZXIpIHsgbV9ub3RpZmljYXRpb25QcmVzZW50ZXIgPSBwcmVzZW50ZXI7IH0K
KyNlbmRpZgorCiAgICAgcHJpdmF0ZToKICAgICAgICAgV29ya2VyVGhyZWFkKGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3Jr
ZXJMb2FkZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5Jik7CiAKQEAgLTcxLDYgKzc3LDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgTXV0ZXggbV90aHJlYWRDcmVhdGlvbk11dGV4
OwogCiAgICAgICAgIE93blB0cjxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4gbV9zdGFydHVwRGF0
YTsKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICBOb3RpZmljYXRpb25QcmVz
ZW50ZXIqIG1fbm90aWZpY2F0aW9uUHJlc2VudGVyOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ2MjcyKQorKysgV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0wNy0yMyAgSm9o
biBHcmVnZyAgPGpvaG5ueWdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBEZXNrdG9wIE5vdGlmaWNhdGlvbnMgQVBJCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTY0MworCisgICAgICAg
IEFkZHMgRU5BQkxFX05PVElGSUNBVElPTiBmbGFnLgorCisgICAgICAgICogQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMDktMDctMjAgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCklu
ZGV4OiBXZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcJKHJldmlzaW9uIDQ2MjY4KQorKysgV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBFTkFC
TEVfRklMVEVSUyA9IDsKIEVOQUJMRV9HRU9MT0NBVElPTiA9IDsKIEVOQUJMRV9JQ09OREFUQUJB
U0UgPSBFTkFCTEVfSUNPTkRBVEFCQVNFOwogRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIgPSBF
TkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUjsKK0VOQUJMRV9OT1RJRklDQVRJT05TID0gOwogRU5B
QkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyA9IEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNB
VElPTlM7CiBFTkFCTEVfUlVCWSA9IEVOQUJMRV9SVUJZOwogRU5BQkxFX1NIQVJFRF9XT1JLRVJT
ID0gOwpAQCAtNTcsNCArNTgsNCBAQCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwog
RU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsK
IAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFO
TkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVO
QUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04p
ICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChF
TkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9T
SEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVO
QUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFC
TEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19V
U0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV01MKSAk
KEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJF
X0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FH
SU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RPTV9T
VE9SQUdFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVf
SUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9OT1RJ
RklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1JV
QlkpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19B
TklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJ
TkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkg
JChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAk
KEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9Y
U0xUKTsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93
aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA0NjI3MikKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMDktMDctMjMgIEpvaG4gR3JlZ2cgIDxq
b2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRGVza3RvcCBOb3RpZmljYXRpb25zIEFQSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2NDMKKworICAgICAgICBBZGRzIHRlc3Qg
aG9va3MgZm9yIG5vdGlmaWNhdGlvbiBmZWF0dXJlcyB0byBXZWJDb3JlU3VwcG9ydCBmb3IKKyAg
ICAgICAgdXNlIGluIER1bXBSZW5kZXJUcmVlLgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2Vi
RGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5pZGw6IEFkZGVkLgorICAgICAgICAqIEludGVy
ZmFjZXMvSVdlYlVJRGVsZWdhdGUuaWRsOgorICAgICAgICAqIEludGVyZmFjZXMvV2ViS2l0Lmlk
bDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViQ2hyb21lQ2xpZW50OjpXZWJDaHJvbWVDbGllbnQpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50Ojpub3Rp
ZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BO
b3RpZmljYXRpb25zRGVsZWdhdGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKE5vdGlmaWNhdGlvbkNP
TVdyYXBwZXI6OmNyZWF0ZSk6CisgICAgICAgIChOb3RpZmljYXRpb25DT01XcmFwcGVyOjpOb3Rp
ZmljYXRpb25DT01XcmFwcGVyKToKKyAgICAgICAgKE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6OlF1
ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6OkFkZFJlZik6
CisgICAgICAgIChOb3RpZmljYXRpb25DT01XcmFwcGVyOjpSZWxlYXNlKToKKyAgICAgICAgKE5v
dGlmaWNhdGlvbkNPTVdyYXBwZXI6OmlzSFRNTCk6CisgICAgICAgIChOb3RpZmljYXRpb25DT01X
cmFwcGVyOjpjb250ZW50c1VSTCk6CisgICAgICAgIChOb3RpZmljYXRpb25DT01XcmFwcGVyOjpp
Y29uVVJMKToKKyAgICAgICAgKE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6OnRpdGxlKToKKyAgICAg
ICAgKE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6OnRleHQpOgorICAgICAgICAoTm90aWZpY2F0aW9u
Q09NV3JhcHBlcjo6bm90aWZ5RGlzcGxheSk6CisgICAgICAgIChOb3RpZmljYXRpb25DT01XcmFw
cGVyOjpub3RpZnlFcnJvcik6CisgICAgICAgIChOb3RpZmljYXRpb25DT01XcmFwcGVyOjpub3Rp
ZnlDbG9zZSk6CisgICAgICAgIChXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOjpXZWJE
ZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlKToKKyAgICAgICAgKFdlYkRlc2t0b3BOb3RpZmlj
YXRpb25zRGVsZWdhdGU6OnNob3cpOgorICAgICAgICAoV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNE
ZWxlZ2F0ZTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdh
dGU6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCk6CisgICAgICAgIChXZWJEZXNrdG9wTm90
aWZpY2F0aW9uc0RlbGVnYXRlOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJEZXNr
dG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOjpjaGVja1Blcm1pc3Npb24pOgorICAgICAgICAoV2Vi
RGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZTo6bm90aWZpY2F0aW9uRGVsZWdhdGUpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaDog
QWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRGVsZWdhdGUuaDoK
KyAgICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpkZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVn
YXRlKToKKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL0ludGVyZmFjZXMudmNwcm9qOgorICAgICAg
ICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJvajoKKwogMjAwOS0wNy0yMiAgVGFrZXNoaSBZ
b3NoaW5vICA8dHlvc2hpbm9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KSW5kZXg6IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRGVza3RvcE5vdGlmaWNh
dGlvbnNEZWxlZ2F0ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lX
ZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYktp
dC93aW4vSW50ZXJmYWNlcy9JV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5pZGwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBET19OT19JTVBPUlRTCitpbXBvcnQg
Im9haWRsLmlkbCI7CitpbXBvcnQgIm9jaWRsLmlkbCI7CisjZW5kaWYKKworLyohCisgICAgQGNh
dGVnb3J5IFdlYkRlc2t0b3BOb3RpZmljYXRpb24KKyAgICBAZGlzY3Vzc2lvbiBBIGNsYXNzIHRo
YXQgcmVwcmVzZW50cyBhIG5vdGlmaWNhdGlvbiBiZWluZyBzaG93bgorICAgIG9uIHRoZSB1c2Vy
J3MgZGVza3RvcC4gIEl0IHByb3ZpZGVzIHRoZSBjb250ZW50cyBvZiB0aGUgbm90aWZpY2F0aW9u
CisgICAgYW5kIHJlY2VpdmVzIGV2ZW50cyByZWxhdGVkIHRvIHRoZSBkaXNwbGF5LgorICAgIEBp
bnRlcmZhY2UgTlNPYmplY3QgKFdlYkRlc2t0b3BOb3RpZmljYXRpb25Qcm92aWRlcikKKyovCitb
CisgICAgb2JqZWN0LAorICAgIG9sZWF1dG9tYXRpb24sCisgICAgdXVpZCgwQTBBQUZBOC1DNjk4
LTRjZmYtQkQyOC0zOTYxNDYyMkVFQTQpLAorICAgIHBvaW50ZXJfZGVmYXVsdCh1bmlxdWUpCitd
CitpbnRlcmZhY2UgSVdlYkRlc2t0b3BOb3RpZmljYXRpb24gOiBJVW5rbm93bgoreworICAgIEhS
RVNVTFQgaXNIVE1MKFtvdXQsIHJldHZhbF0gQk9PTCogcmVzdWx0KTsKKyAgICBIUkVTVUxUIGNv
bnRlbnRzVVJMKFtvdXQsIHJldHZhbF0gQlNUUiogcmVzdWx0KTsKKyAgICBIUkVTVUxUIGljb25V
UkwoW291dCwgcmV0dmFsXSBCU1RSKiByZXN1bHQpOworICAgIEhSRVNVTFQgdGl0bGUoW291dCwg
cmV0dmFsXSBCU1RSKiByZXN1bHQpOworICAgIEhSRVNVTFQgdGV4dChbb3V0LCByZXR2YWxdIEJT
VFIqIHJlc3VsdCk7CisKKyAgICBIUkVTVUxUIG5vdGlmeURpc3BsYXkoKTsKKyAgICBIUkVTVUxU
IG5vdGlmeUVycm9yKCk7CisgICAgSFJFU1VMVCBub3RpZnlDbG9zZShbaW5dIEJPT0wgeHBsaWNp
dCk7Cit9CisKKy8qIQorICAgIEBjYXRlZ29yeSBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVn
YXRlCisgICAgQGRpc2N1c3Npb24gQSBjbGFzcyB0aGF0IGltcGxlbWVudHMgV2ViRGVza3RvcE5v
dGlmaWNhdGlvblByb3ZpZGVyIHByb3ZpZGVzCisgICAgbWV0aG9kcyB0aGF0IG1heSBiZSB1c2Vk
IGJ5IEphdmFzY3JpcHQgdG8gZGlzcGxheSBub3RpZmljYXRpb25zICgidG9hc3RzIikKKyAgICBv
biB0aGUgdXNlcidzIGRlc2t0b3AuCisgICAgQGludGVyZmFjZSBOU09iamVjdCAoV2ViRGVza3Rv
cE5vdGlmaWNhdGlvblByb3ZpZGVyKQorKi8KK1sKKyAgICBvYmplY3QsCisgICAgb2xlYXV0b21h
dGlvbiwKKyAgICB1dWlkKDA5REEwNzNFLTM4QjMtNDY2YS05ODI4LUIyOTE1RkREMkVDQiksCisg
ICAgcG9pbnRlcl9kZWZhdWx0KHVuaXF1ZSkKK10KKworaW50ZXJmYWNlIElXZWJEZXNrdG9wTm90
aWZpY2F0aW9uc0RlbGVnYXRlIDogSVVua25vd24KK3sKKyAgICAvKiEKKyAgICAgICAgQG1ldGhv
ZCBzaG93RGVza3RvcE5vdGlmaWNhdGlvbjoKKyAgICAgICAgQGFic3RyYWN0IFNob3cgYSBub3Rp
ZmljYXRpb24uCisgICAgICAgIEBwYXJhbSBub3RpZmljYXRpb24gVGhlIE5vdGlmaWNhdGlvbiB0
byBiZSBzaG93bi4KKyAgICAqLworICAgIEhSRVNVTFQgc2hvd0Rlc2t0b3BOb3RpZmljYXRpb24o
W2luXSBJV2ViRGVza3RvcE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKTsKKworICAgIC8qIQor
ICAgICAgICBAbWV0aG9kIGNhbmNlbERlc2t0b3BOb3RpZmljYXRpb246CisgICAgICAgIEBhYnN0
cmFjdCBDYW5jZWwgc2hvd2luZyBhIG5vdGlmaWNhdGlvbiAob3IgdGFrZSBpdCBkb3duIGlmIGl0
J3Mgc2hvd24pLgorICAgICAgICBAcGFyYW0gbm90aWZpY2F0aW9uIFRoZSBOb3RpZmljYXRpb24g
dG8gYmUgY2FuY2VsZWQuCisgICAgKi8KKyAgICBIUkVTVUxUIGNhbmNlbERlc2t0b3BOb3RpZmlj
YXRpb24oW2luXSBJV2ViRGVza3RvcE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKTsKKworICAg
IC8qIQorICAgICAgICBAbWV0aG9kIG5vdGlmaWNhdGlvbkRlc3Ryb3llZDoKKyAgICAgICAgQGFi
c3RyYWN0IE5vdGlmeSB0aGUgcHJlc2VudGVyIHRoYXQgdGhlIG9iamVjdCBoYXMgYmVlbiBkZXN0
cm95ZWQuICBUaGUKKyAgICAgICAgbm90aWZpY2F0aW9uIG5lZWQgbm90IGJlIHVuLXNob3duLCBi
dXQgZXZlbnRzIHNob3VsZCBub3QgYmUgaW52b2tlZC4KKyAgICAgICAgQHBhcmFtIG5vdGlmaWNh
dGlvbiBUaGUgTm90aWZpY2F0aW9uIHRoYXQgd2FzIGRlc3Ryb3llZC4KKyAgICAqLworICAgIEhS
RVNVTFQgbm90aWZpY2F0aW9uRGVzdHJveWVkKFtpbl0gSVdlYkRlc2t0b3BOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbik7CisKKyAgICAvKiEKKyAgICAgICAgQG1ldGhvZCBjaGVja05vdGlmaWNh
dGlvblBlcm1pc3Npb246CisgICAgICAgIEBhYnN0cmFjdCBTZWUgaWYgdGhlIG9yaWdpbiBjb250
ZXh0IGlzIGFsbG93ZWQgdG8gc2hvdyBub3RpZmljYXRpb25zLgorICAgICAgICBAcGFyYW0gb3Jp
Z2luIFRoZSBvcmlnaW4gdG8gYmUgY2hlY2tlZC4KKyAgICAgICAgQHBhcmFtIHJlc3VsdCBBIHZh
bHVlIGZyb20gV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI6OlBlcm1pc3Npb24gZW51bS4K
KyAgICAqLworICAgIEhSRVNVTFQgY2hlY2tOb3RpZmljYXRpb25QZXJtaXNzaW9uKFtpbl0gQlNU
UiBvcmlnaW4sIFtvdXQsIHJldHZhbF0gaW50KiByZXN1bHQpOworCisgICAgLyohCisgICAgICAg
IEBtZXRob2QgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb246CisgICAgICAgIEBhYnN0cmFj
dCBSZXF1ZXN0IHBlcm1pc3Npb24gdG8gc2hvdyBub3RpZmljYXRpb25zIG9uIGEgZ2l2ZW4gb3Jp
Z2luLgorICAgICAgICBAcGFyYW0gb3JpZ2luIFRoZSBvcmlnaW4gdG8gYmUgcmVxdWVzdGVkLgor
ICAgICovCisgICAgSFJFU1VMVCByZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbihbaW5dIEJT
VFIgb3JpZ2luKTsKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC93aW4vSW50ZXJmYWNl
cy9JV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5pZGwKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDog
c3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJV
SURlbGVnYXRlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlVJ
RGVsZWdhdGUuaWRsCShyZXZpc2lvbiA0NjI2OCkKKysrIFdlYktpdC93aW4vSW50ZXJmYWNlcy9J
V2ViVUlEZWxlZ2F0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTc1NSw0ICs3NTUsNiBAQCBpbnRl
cmZhY2UgSVdlYlVJRGVsZWdhdGUgOiBJVW5rbm93bgogICAgIEhSRVNVTFQgcGFpbnRDdXN0b21T
Y3JvbGxiYXIoW2luXSBJV2ViVmlldyogd2ViVmlldywgW2luXSBIREMgaERDLCBbaW5dIFJFQ1Qg
cmVjdCwgW2luXSBXZWJTY3JvbGxCYXJDb250cm9sU2l6ZSBzaXplLCBbaW5dIFdlYlNjcm9sbGJh
ckNvbnRyb2xTdGF0ZSBzdGF0ZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
aW5dIFdlYlNjcm9sbGJhckNvbnRyb2xQYXJ0IHByZXNzZWRQYXJ0LCBbaW5dIEJPT0wgdmVydGlj
YWwsIFtpbl0gZmxvYXQgdmFsdWUsIFtpbl0gZmxvYXQgcHJvcG9ydGlvbiwgW2luXSBXZWJTY3Jv
bGxiYXJDb250cm9sUGFydE1hc2sgcGFydHMpOwogICAgIEhSRVNVTFQgcGFpbnRDdXN0b21TY3Jv
bGxDb3JuZXIoW2luXSBJV2ViVmlldyogd2ViVmlldywgW2luXSBIREMgaERDLCBbaW5dIFJFQ1Qg
cmVjdCk7CisKKyAgICBIUkVTVUxUIGRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUoW291dCwg
cmV0dmFsXSBJV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZSoqIHJlc3VsdCk7CiB9Cklu
ZGV4OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAkocmV2aXNpb24gNDYyNjgpCisrKyBXZWJLaXQv
d2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsNyBA
QCBpbXBvcnQgIm9jaWRsLmlkbCI7CiAjaW5jbHVkZSAiSVdlYkNvcmVTdGF0aXN0aWNzLmlkbCIK
ICNpbmNsdWRlICJJV2ViRGF0YVNvdXJjZS5pZGwiCiAjaW5jbHVkZSAiSVdlYkRhdGFiYXNlTWFu
YWdlci5pZGwiCisjaW5jbHVkZSAiSVdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaWRs
IgogI2luY2x1ZGUgIklXZWJEb2N1bWVudC5pZGwiCiAjaW5jbHVkZSAiSVdlYkRvd25sb2FkLmlk
bCIKICNpbmNsdWRlICJJV2ViRWRpdGluZ0RlbGVnYXRlLmlkbCIKSW5kZXg6IFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDQ2MjY4KQor
KysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRl
ICJXZWJIaXN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViTXV0YWJsZVVSTFJlcXVlc3QuaCIKKyNpbmNs
dWRlICJXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgiCiAjaW5jbHVkZSAiV2ViU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjcHJhZ21hIHdhcm5pbmcocHVz
aCwgMCkKQEAgLTU4LDYgKzU5LDkgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhGaWxlUGF0aHNM
aXN0U2l6ZQogCiBXZWJDaHJvbWVDbGllbnQ6OldlYkNocm9tZUNsaWVudChXZWJWaWV3KiB3ZWJW
aWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
CisgICAgLCBtX25vdGlmaWNhdGlvbnNEZWxlZ2F0ZShuZXcgV2ViRGVza3RvcE5vdGlmaWNhdGlv
bnNEZWxlZ2F0ZSh3ZWJWaWV3KSkKKyNlbmRpZgogewogfQogCkluZGV4OiBXZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDQ2MjY4KQorKysgV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjksOCArMjksMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzRGlyZWN0aW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogY2xhc3MgV2ViVmlldzsKK2NsYXNzIFdl
YkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU7CiAKIGludGVyZmFjZSBJV2ViVUlEZWxlZ2F0
ZTsKIApAQCAtMTI3LDggKzEyOSwxNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29y
ZTo6R2VvbG9jYXRpb24qKTsKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHZpcnR1
YWwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIo
KSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvblBy
ZXNlbnRlcio+KG1fbm90aWZpY2F0aW9uc0RlbGVnYXRlLmdldCgpKTsgfQorI2VuZGlmCisKIHBy
aXZhdGU6CiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiB1aURlbGVnYXRlKCk7CiAKICAgICBX
ZWJWaWV3KiBtX3dlYlZpZXc7CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBPd25Q
dHI8V2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZT4gbV9ub3RpZmljYXRpb25zRGVsZWdh
dGU7CisjZW5kaWYKIH07CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0
b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25z
RGVsZWdhdGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgiCisjaW5j
bHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJXZWJWaWV3LmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9CU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK2NsYXNzIE5vdGlmaWNhdGlvbkNPTVdyYXBwZXIgOiBw
dWJsaWMgSVdlYkRlc2t0b3BOb3RpZmljYXRpb24geworcHVibGljOgorICAgIHN0YXRpYyBOb3Rp
ZmljYXRpb25DT01XcmFwcGVyKiBjcmVhdGUoTm90aWZpY2F0aW9uKiBpbm5lcikgeyByZXR1cm4g
bmV3IE5vdGlmaWNhdGlvbkNPTVdyYXBwZXIoaW5uZXIpOyB9CisgICAKKyAgICAvLyBJVW5rbm93
bgorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShS
RUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRI
T0RDQUxMVFlQRSBBZGRSZWYoKTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBF
IFJlbGVhc2UoKTsKKworICAgIC8vIElXZWJEZXNrdG9wTm90aWZpY2F0aW9uCisgICAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBpc0hUTUwoQk9PTCogcmVzdWx0KTsKKyAgICBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGNvbnRlbnRzVVJMKEJTVFIqIHJlc3VsdCk7CisgICAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBpY29uVVJMKEJTVFIqIHJlc3VsdCk7CisgICAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSB0aXRsZShCU1RSKiByZXN1bHQpOworICAgIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgdGV4dChCU1RSKiByZXN1bHQpOworICAgIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgbm90aWZ5RGlzcGxheSgpOworICAgIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm90aWZ5
RXJyb3IoKTsKKyAgICBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vdGlmeUNsb3NlKEJPT0wg
eHBsaWNpdCk7CisKK3ByaXZhdGU6CisgICAgTm90aWZpY2F0aW9uQ09NV3JhcHBlcihOb3RpZmlj
YXRpb24qIGlubmVyKSA6IG1fcmVmQ291bnQoMSksIG1faW5uZXIoaW5uZXIpIHt9CisKKyAgICBp
bnQgbV9yZWZDb3VudDsKKyAgICBOb3RpZmljYXRpb24qIG1faW5uZXI7Cit9OworCitIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6OlF1ZXJ5SW50ZXJmYWNl
KFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQoreworICAgICpwcHZPYmplY3QgPSAwOwor
ICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVVua25vd24pKQorICAgICAgICAqcHB2T2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uQ09NV3JhcHBlcio+KHRoaXMpOworICAgIGVs
c2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JV2ViRGVza3RvcE5vdGlmaWNhdGlvbikpCisg
ICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxOb3RpZmljYXRpb25DT01XcmFwcGVyKj4o
dGhpcyk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gRV9OT0lOVEVSRkFDRTsKKworICAgIEFk
ZFJlZigpOworICAgIHJldHVybiBTX09LOworfQorCitVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBO
b3RpZmljYXRpb25DT01XcmFwcGVyOjpBZGRSZWYoKQoreyAKKyAgICByZXR1cm4gKyttX3JlZkNv
dW50OyAKK30KKworVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgTm90aWZpY2F0aW9uQ09NV3JhcHBl
cjo6UmVsZWFzZSgpCit7CisgICAgVUxPTkcgbmV3UmVmID0gLS1tX3JlZkNvdW50OworICAgIGlm
ICghbmV3UmVmKQorICAgICAgICBkZWxldGUodGhpcyk7CisgICAgcmV0dXJuIG5ld1JlZjsKK30K
KworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBOb3RpZmljYXRpb25DT01XcmFwcGVyOjppc0hU
TUwoQk9PTCogcmVzdWx0KQoreworICAgICpyZXN1bHQgPSBtX2lubmVyLT5pc0hUTUwoKTsKKyAg
ICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBOb3RpZmljYXRp
b25DT01XcmFwcGVyOjpjb250ZW50c1VSTChCU1RSKiByZXN1bHQpCit7CisgICAgKnJlc3VsdCA9
IEJTdHJpbmcobV9pbm5lci0+dXJsKCkpLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gU19PSzsKK30K
KworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBOb3RpZmljYXRpb25DT01XcmFwcGVyOjppY29u
VVJMKEJTVFIqIHJlc3VsdCkKK3sKKyAgICAqcmVzdWx0ID0gQlN0cmluZyhtX2lubmVyLT5jb250
ZW50cygpLmljb24oKSkucmVsZWFzZSgpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6OnRpdGxlKEJTVFIqIHJl
c3VsdCkKK3sKKyAgICAqcmVzdWx0ID0gQlN0cmluZyhtX2lubmVyLT5jb250ZW50cygpLnRpdGxl
KCkpLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBOb3RpZmljYXRpb25DT01XcmFwcGVyOjp0ZXh0KEJTVFIqIHJlc3VsdCkKK3sKKyAg
ICAqcmVzdWx0ID0gQlN0cmluZyhtX2lubmVyLT5jb250ZW50cygpLmJvZHkoKSkucmVsZWFzZSgp
OworICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIE5vdGlm
aWNhdGlvbkNPTVdyYXBwZXI6Om5vdGlmeURpc3BsYXkoKQoreworICAgIG1faW5uZXItPmRpc3Bh
dGNoRGlzcGxheUV2ZW50KCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgTm90aWZpY2F0aW9uQ09NV3JhcHBlcjo6bm90aWZ5RXJyb3IoKQoreworICAg
IG1faW5uZXItPmRpc3BhdGNoRXJyb3JFdmVudCgpOworICAgIHJldHVybiBTX09LOworfQorCitI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6Om5vdGlmeUNs
b3NlKEJPT0wgeHBsaWNpdCkKK3sKKyAgICBtX2lubmVyLT5kaXNwYXRjaENsb3NlRXZlbnQoKTsK
KyAgICByZXR1cm4gU19PSzsKK30KKworV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZTo6
V2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZShXZWJWaWV3KiB3ZWJWaWV3KQorICAgIDog
bV93ZWJWaWV3KHdlYlZpZXcpCit7Cit9CisKK2Jvb2wgV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNE
ZWxlZ2F0ZTo6c2hvdyhOb3RpZmljYXRpb24qIG9iamVjdCkKK3sKKyAgICBub3RpZmljYXRpb25E
ZWxlZ2F0ZSgpLT5zaG93RGVza3RvcE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb25DT01XcmFwcGVy
OjpjcmVhdGUob2JqZWN0KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViRGVza3Rv
cE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZTo6Y2FuY2VsKE5vdGlmaWNhdGlvbiogb2JqZWN0KQorewor
ICAgIG5vdGlmaWNhdGlvbkRlbGVnYXRlKCktPmNhbmNlbERlc2t0b3BOb3RpZmljYXRpb24oTm90
aWZpY2F0aW9uQ09NV3JhcHBlcjo6Y3JlYXRlKG9iamVjdCkpOworfQorCit2b2lkIFdlYkRlc2t0
b3BOb3RpZmljYXRpb25zRGVsZWdhdGU6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3Rp
ZmljYXRpb24qIG9iamVjdCkKK3sKKyAgICBub3RpZmljYXRpb25EZWxlZ2F0ZSgpLT5ub3RpZmlj
YXRpb25EZXN0cm95ZWQoTm90aWZpY2F0aW9uQ09NV3JhcHBlcjo6Y3JlYXRlKG9iamVjdCkpOwor
fQorCit2b2lkIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU6OnJlcXVlc3RQZXJtaXNz
aW9uKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxs
YmFjaykKK3sKKyAgICBCU3RyaW5nIG9yZyhvcmlnaW4tPnRvU3RyaW5nKCkpOworICAgIG5vdGlm
aWNhdGlvbkRlbGVnYXRlKCktPnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uKG9yZyk7Cit9
CisKK05vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbiBXZWJEZXNrdG9wTm90aWZpY2F0
aW9uc0RlbGVnYXRlOjpjaGVja1Blcm1pc3Npb24oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sg
IAorICAgIGludCBvdXQ7CisgICAgQlN0cmluZyBvcmcob3JpZ2luLT50b1N0cmluZygpKTsKKyAg
ICBub3RpZmljYXRpb25EZWxlZ2F0ZSgpLT5jaGVja05vdGlmaWNhdGlvblBlcm1pc3Npb24ob3Jn
LCAmb3V0KTsKKyAgICByZXR1cm4gKE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbikg
b3V0OworfQorCitDT01QdHI8SVdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU+IFdlYkRl
c2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU6Om5vdGlmaWNhdGlvbkRlbGVnYXRlKCkKK3sKKyAg
ICBDT01QdHI8SVdlYlVJRGVsZWdhdGU+IHVpOworICAgIG1fd2ViVmlldy0+dWlEZWxlZ2F0ZSgm
dWkpOworICAgIAorICAgIENPTVB0cjxJV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZT4g
ZGVsZWdhdGU7CisgICAgdWktPmRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUoJmRlbGVnYXRl
KTsKKyAgICAKKyAgICByZXR1cm4gZGVsZWdhdGU7Cit9CisKKyNlbmRpZiAgLy8gRU5BQkxFKE5P
VElGSUNBVElPTlMpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6
IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCShyZXZp
c2lvbiAwKQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0
aW9uc0RlbGVnYXRlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8V2Vi
Q29yZS9DT01QdHIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbi5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uUHJlc2VudGVyLmg+CisKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKKworaW50ZXJmYWNlIElXZWJEZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOwor
CitjbGFzcyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlIDogcHVibGljIFdlYkNvcmU6
Ok5vdGlmaWNhdGlvblByZXNlbnRlciB7CitwdWJsaWM6CisgICAgV2ViRGVza3RvcE5vdGlmaWNh
dGlvbnNEZWxlZ2F0ZShXZWJWaWV3KiB2aWV3KTsKKworICAgIC8qIFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlciBpbnRlcmZhY2UgKi8KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdyhXZWJDb3Jl
OjpOb3RpZmljYXRpb24qIG9iamVjdCk7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbChXZWJDb3Jl
OjpOb3RpZmljYXRpb24qIG9iamVjdCk7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbk9i
amVjdERlc3Ryb3llZChXZWJDb3JlOjpOb3RpZmljYXRpb24qIG9iamVjdCk7CisgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4s
IFBhc3NSZWZQdHI8V2ViQ29yZTo6Vm9pZENhbGxiYWNrPiBjYWxsYmFjayk7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNz
aW9uKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pOworCitwcml2YXRlOgorICAgIENP
TVB0cjxJV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZT4gbm90aWZpY2F0aW9uRGVsZWdh
dGUoKTsKKyAgICAKKyAgICBXZWJWaWV3KiBtX3dlYlZpZXc7Cit9OworCisjZW5kaWYKClByb3Bl
cnR5IGNoYW5nZXMgb246IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlm
aWNhdGlvbnNEZWxlZ2F0ZS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsg
KgoKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRGVsZWdhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckRl
bGVnYXRlLmgJKHJldmlzaW9uIDQ2MjY4KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjQsNiArMzI0LDkgQEAg
cHVibGljOg0KICAgICAgICAgLyogW2luXSAqLyBIREMgaERDLA0KICAgICAgICAgLyogW2luXSAq
LyBSRUNUIHJlY3QpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQ0KIA0KKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZSggDQorICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRl
ICoqcmVzdWx0KSB7IHJldHVybiBFX05PVElNUEw7IH0NCisNCiBwcml2YXRlOg0KICAgICBXZWJJ
bnNwZWN0b3JEZWxlZ2F0ZSgpOw0KIA0KSW5kZXg6IFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9J
bnRlcmZhY2VzLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYktpdC52Y3Byb2ov
SW50ZXJmYWNlcy52Y3Byb2oJKHJldmlzaW9uIDQ2MjY4KQorKysgV2ViS2l0L3dpbi9XZWJLaXQu
dmNwcm9qL0ludGVyZmFjZXMudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00OTIsNiArNDkyLDE4
IEBACiAJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJPC9GaWxlPg0KIAkJPEZpbGUNCisJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXEludGVyZmFjZXNcSVdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdh
dGUuaWRsIg0KKwkJCT4NCisJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJTmFtZT0iRGVidWd8
V2luMzIiDQorCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQk+DQorCQkJCTxUb29s
DQorCQkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQkvPg0KKwkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQk8L0ZpbGU+DQorCQk8RmlsZQ0KIAkJCVJlbGF0aXZlUGF0aD0iLi5cSW50ZXJmYWNl
c1xJV2ViRG9jdW1lbnQuaWRsIg0KIAkJCT4NCiAJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkluZGV4
OiBXZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJvagkocmV2aXNpb24gNDYyNjgpCisr
KyBXZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjA1OCw2ICsyMDU4LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYkNvcmVTdXBwb3J0XFdlYkRlc2t0b3BOb3RpZmljYXRpb25z
RGVsZWdhdGUuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cV2ViQ29yZVN1cHBvcnRcV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0
ZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5cV2ViQ29yZVN1cHBvcnRcV2ViRHJhZ0NsaWVudC5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+
DQpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gNDYyNzIpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAwOS0wNy0yMyAgSm9obiBHcmVnZyAgPGpv
aG5ueWdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZGVza3RvcCBub3RpZmljYXRpb25zIEFQSSB0byBE
dW1wUmVuZGVyVHJlZSwKKyAgICAgICAgYW5kIHN1cHBvcnQgZm9yIEVOQUJMRV9OT1RJRklDQVRJ
T05TIGZsYWcgdG8gYnVpbGQtd2Via2l0LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9u
UGVybWlzc2lvbkNhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0
aWNGdW5jdGlvbnMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmdyYW50RGVza3Rv
cE5vdGlmaWNhdGlvblBlcm1pc3Npb24pOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmNoZWNrRGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24pOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
d2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI6OkRSVERlc2t0b3BOb3RpZmljYXRpb25Q
cmVzZW50ZXIpOgorICAgICAgICAoRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UXVl
cnlJbnRlcmZhY2UpOgorICAgICAgICAoRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcjo6
QWRkUmVmKToKKyAgICAgICAgKERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI6OlJlbGVh
c2UpOgorICAgICAgICAoRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcjo6c2hvd0Rlc2t0
b3BOb3RpZmljYXRpb24pOgorICAgICAgICAoRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRl
cjo6Y2FuY2VsRGVza3RvcE5vdGlmaWNhdGlvbik6CisgICAgICAgIChEUlREZXNrdG9wTm90aWZp
Y2F0aW9uUHJlc2VudGVyOjpub3RpZmljYXRpb25EZXN0cm95ZWQpOgorICAgICAgICAoRFJURGVz
a3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcjo6Y2hlY2tOb3RpZmljYXRpb25QZXJtaXNzaW9uKToK
KyAgICAgICAgKERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI6OnJlcXVlc3ROb3RpZmlj
YXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRFJURGVza3Rv
cE5vdGlmaWNhdGlvblByZXNlbnRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS93aW4vRHVtcFJlbmRlclRyZWUudmNwcm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dp
bi9VSURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFVJRGVsZWdhdGU6OlVJRGVsZWdhdGUpOgorICAg
ICAgICAoVUlEZWxlZ2F0ZTo6ZGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZSk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBTY3JpcHRzL2J1
aWxkLXdlYmtpdDoKKwogMjAwOS0wNy0yMyAgRWxpIEZpZGxlciAgPGVsaS5maWRsZXJAdG9yY2ht
b2JpbGUuY29tPgogCiAgICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFRyZWF0LgpJbmRleDogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gNDYyNjgpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0NCw2ICszNDQsMTkgQEAgc3Rh
dGljIEpTVmFsdWVSZWYgZXhlY0NvbW1hbmRDYWxsYmFjayhKUwogICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgZ3JhbnREZXNr
dG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICAvLyBIYXMgV2luZG93cyBpbXBsZW1lbnRhdGlvbgorICAgIGlmIChhcmd1
bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2Fz
dDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7
CisKKyAgICBjb250cm9sbGVyLT5ncmFudERlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uKEpT
VmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBOVUxMKSk7CisgICAgICAg
IAorICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGlj
IEpTVmFsdWVSZWYgaXNDb21tYW5kRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgTWFjIGltcGxlbWVudGF0aW9uLgpAQCAtODg5LDYgKzkw
Miw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAg
eyAiZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkIiwgZWxlbWVudERvZXNB
dXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
ZW5jb2RlSG9zdE5hbWUiLCBlbmNvZGVIb3N0TmFtZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgImV4ZWNDb21tYW5kIiwgZXhlY0NvbW1hbmRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7
ICJncmFudERlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uIiwgZ3JhbnREZXNrdG9wTm90aWZp
Y2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sIAogICAgICAgICB7ICJpc0NvbW1hbmRF
bmFibGVkIiwgaXNDb21tYW5kRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImtl
ZXBXZWJIaXN0b3J5Iiwga2VlcFdlYkhpc3RvcnlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJub3RpZnlEb25lIiwgbm90aWZ5RG9uZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkBAIC05NjIsMyArOTc2
LDIwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnF1ZXVlUmVsb2FkKCkKIHsKICAgICBX
b3JrUXVldWU6OnNoYXJlZCgpLT5xdWV1ZShuZXcgUmVsb2FkSXRlbSk7CiB9CisKK3ZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmdyYW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNT
dHJpbmdSZWYgb3JpZ2luKQoreworICAgIG1fZGVza3RvcE5vdGlmaWNhdGlvbkFsbG93ZWRPcmln
aW5zLnB1c2hfYmFjayhKU1N0cmluZ1JldGFpbihvcmlnaW4pKTsKK30KKworYm9vbCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6Y2hlY2tEZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbihKU1N0cmlu
Z1JlZiBvcmlnaW4pCit7CisgICAgc3RkOjp2ZWN0b3I8SlNTdHJpbmdSZWY+OjppdGVyYXRvciBp
OworICAgIGZvciAoaSA9IG1fZGVza3RvcE5vdGlmaWNhdGlvbkFsbG93ZWRPcmlnaW5zLmJlZ2lu
KCk7CisgICAgICAgICBpICE9IG1fZGVza3RvcE5vdGlmaWNhdGlvbkFsbG93ZWRPcmlnaW5zLmVu
ZCgpOworICAgICAgICAgKytpKSB7CisgICAgICAgIGlmIChKU1N0cmluZ0lzRXF1YWwoKmksIG9y
aWdpbikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCShyZXZpc2lvbiA0NjI2OCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KIAog
Y2xhc3MgTGF5b3V0VGVzdENvbnRyb2xsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxMYXlvdXRUZXN0
Q29udHJvbGxlcj4gewogcHVibGljOgpAQCAtODEsNiArODIsOSBAQCBwdWJsaWM6CiAgICAgc2l6
ZV90IHdlYkhpc3RvcnlJdGVtQ291bnQoKTsKICAgICBpbnQgd2luZG93Q291bnQoKTsKICAgICAK
KyAgICB2b2lkIGdyYW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYg
b3JpZ2luKTsKKyAgICBib29sIGNoZWNrRGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNT
dHJpbmdSZWYgb3JpZ2luKTsKKwogICAgIGJvb2wgZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JF
bGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIGlkKTsKIAogICAgIGJvb2wgZHVtcEFzVGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fZHVtcEFzVGV4dDsgfQpAQCAtMTk2LDYgKzIwMCw5IEBAIHByaXZhdGU6
CiAgICAgc3RkOjpzdHJpbmcgbV90ZXN0UGF0aE9yVVJMOwogICAgIHN0ZDo6c3RyaW5nIG1fZXhw
ZWN0ZWRQaXhlbEhhc2g7ICAgIC8vIGVtcHR5IHN0cmluZyBpZiBubyBoYXNoCiAgICAgCisgICAg
Ly8gb3JpZ2lucyB3aGljaCBoYXZlIGJlZW4gZ3JhbnRlZCBkZXNrdG9wIG5vdGlmaWNhdGlvbiBh
Y2Nlc3MKKyAgICBzdGQ6OnZlY3RvcjxKU1N0cmluZ1JlZj4gbV9kZXNrdG9wTm90aWZpY2F0aW9u
QWxsb3dlZE9yaWdpbnM7CisgICAgCiAgICAgc3RhdGljIEpTQ2xhc3NSZWYgZ2V0SlNDbGFzcygp
OwogICAgIHN0YXRpYyBKU1N0YXRpY1ZhbHVlKiBzdGF0aWNWYWx1ZXMoKTsKICAgICBzdGF0aWMg
SlNTdGF0aWNGdW5jdGlvbiogc3RhdGljRnVuY3Rpb25zKCk7CkluZGV4OiBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERlc2t0b3BOb3Rp
ZmljYXRpb25QcmVzZW50ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJl
c2VudGVyLmgiCisKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgorI2luY2x1ZGUgIkxheW91
dFRlc3RDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZkJTVFIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL05vdGlmaWNhdGlvblByZXNlbnRlci5oPgorCitEUlREZXNrdG9wTm90aWZpY2F0
aW9uUHJlc2VudGVyOjpEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyKCkKKyAgICA6IG1f
cmVmQ291bnQoMSkge30gCisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRFJURGVza3RvcE5v
dGlmaWNhdGlvblByZXNlbnRlcjo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBw
cHZPYmplY3QpCit7CisgICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKElzRXF1YWxHVUlEKHJp
aWQsIElJRF9JVW5rbm93bikpCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxEUlRE
ZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyKj4odGhpcyk7CisgICAgZWxzZSBpZiAoSXNFcXVh
bEdVSUQocmlpZCwgSUlEX0lXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlKSkKKyAgICAg
ICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50
ZXIqPih0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBFX05PSU5URVJGQUNFOworCisg
ICAgQWRkUmVmKCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK1VMT05HIFNURE1FVEhPRENBTExU
WVBFIERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI6OkFkZFJlZigpCit7CisgICAgcmV0
dXJuICsrbV9yZWZDb3VudDsKK30KKworVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgRFJURGVza3Rv
cE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UmVsZWFzZSgpCit7CisgICAgVUxPTkcgbmV3UmVmID0g
LS1tX3JlZkNvdW50OworICAgIGlmICghbmV3UmVmKQorICAgICAgICBkZWxldGUodGhpcyk7CisK
KyAgICByZXR1cm4gbmV3UmVmOworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERSVERl
c2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI6OnNob3dEZXNrdG9wTm90aWZpY2F0aW9uKAorICAg
IC8qIFtpbl0gKi8gSVdlYkRlc2t0b3BOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAg
ICBCU1RSIHRpdGxlLCB0ZXh0LCB1cmw7CisgICAgQk9PTCBodG1sOworCisgICAgaWYgKCFub3Rp
ZmljYXRpb24tPmlzSFRNTCgmaHRtbCkgJiYgaHRtbCkgeworICAgICAgICBub3RpZmljYXRpb24t
PmNvbnRlbnRzVVJMKCZ1cmwpOyAgICAKKyAgICAgICAgcHJpbnRmKCJERVNLVE9QIE5PVElGSUNB
VElPTjogY29udGVudHMgYXQgJVNcbiIsIHVybCA/IHVybCA6IEwiIik7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgbm90aWZpY2F0aW9uLT5pY29uVVJMKCZ1cmwpOworICAgICAgICBub3RpZmljYXRp
b24tPnRpdGxlKCZ0aXRsZSk7CisgICAgICAgIG5vdGlmaWNhdGlvbi0+dGV4dCgmdGV4dCk7Cisg
ICAgICAgIHByaW50ZigiREVTS1RPUCBOT1RJRklDQVRJT046IGljb24gJVMsIHRpdGxlICVTLCB0
ZXh0ICVTXG4iLCAKKyAgICAgICAgICAgIHVybCA/IHVybCA6IEwiIiwgCisgICAgICAgICAgICB0
aXRsZSA/IHRpdGxlIDogTCIiLCAKKyAgICAgICAgICAgIHRleHQgPyB0ZXh0IDogTCIiKTsKKyAg
ICB9CisKKyAgICAvLyBJbiB0aGlzIHN0dWIgaW1wbGVtZW50YXRpb24sIHRoZSBub3RpZmljYXRp
b24gaXMgZGlzcGxheWVkIGltbWVkaWF0ZWx5OworICAgIC8vIHdlIGRpc3BhdGNoIHRoZSBkaXNw
bGF5IGV2ZW50IHRvIG1pbWljIHRoYXQuCisgICAgbm90aWZpY2F0aW9uLT5ub3RpZnlEaXNwbGF5
KCk7CisKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBE
UlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOjpjYW5jZWxEZXNrdG9wTm90aWZpY2F0aW9u
KAorICAgIC8qIFtpbl0gKi8gSVdlYkRlc2t0b3BOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikK
K3sKKyAgICBCU1RSIGlkZW50aWZpZXI7CisgICAgQk9PTCBodG1sOworICAgIG5vdGlmaWNhdGlv
bi0+aXNIVE1MKCZodG1sKTsKKyAgICBpZiAoaHRtbCkKKyAgICAgICAgbm90aWZpY2F0aW9uLT5j
b250ZW50c1VSTCgmaWRlbnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBub3RpZmljYXRpb24t
PnRpdGxlKCZpZGVudGlmaWVyKTsKKworICAgIHByaW50ZigiREVTS1RPUCBOT1RJRklDQVRJT04g
Q0xPU0VEOiAlU1xuIiwgaWRlbnRpZmllciA/IGlkZW50aWZpZXIgOiBMIiIpOworICAgIG5vdGlm
aWNhdGlvbi0+bm90aWZ5Q2xvc2UoZmFsc2UpOworCisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcjo6
bm90aWZpY2F0aW9uRGVzdHJveWVkKAorICAgIC8qIFtpbl0gKi8gSVdlYkRlc2t0b3BOb3RpZmlj
YXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICAvLyBTaW5jZSBpbiB0aGVzZSB0ZXN0cyBldmVu
dHMgaGFwcGVuIGltbWVkaWF0ZWx5LCB3ZSBkb24ndCBob2xkIG9uIHRvCisgICAgLy8gTm90aWZp
Y2F0aW9uIHBvaW50ZXJzLiAgU28gdGhlcmUncyBubyBjbGVhbnVwIHRvIGRvLgorICAgIHJldHVy
biBTX09LOworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERSVERlc2t0b3BOb3RpZmlj
YXRpb25QcmVzZW50ZXI6OmNoZWNrTm90aWZpY2F0aW9uUGVybWlzc2lvbigKKyAgICAgICAgLyog
W2luXSAqLyBCU1RSIG9yaWdpbiwgCisgICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gaW50KiBy
ZXN1bHQpCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgSlNTdHJpbmdSZWYganNP
cmlnaW4gPSBKU1N0cmluZ0NyZWF0ZVdpdGhCU1RSKG9yaWdpbik7CisgICAgYm9vbCBhbGxvd2Vk
ID0gOjpnTGF5b3V0VGVzdENvbnRyb2xsZXItPmNoZWNrRGVza3RvcE5vdGlmaWNhdGlvblBlcm1p
c3Npb24oanNPcmlnaW4pOworCisgICAgaWYgKGFsbG93ZWQpCisgICAgICAgICpyZXN1bHQgPSBX
ZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBFUk1JU1NJT05fQUxMT1dFRDsKKyAgICBl
bHNlCisgICAgICAgICpyZXN1bHQgPSBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBF
Uk1JU1NJT05fREVOSUVEOworCisgICAgSlNTdHJpbmdSZWxlYXNlKGpzT3JpZ2luKTsKKyNlbmRp
ZgorICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERSVERl
c2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI6OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9u
KAorICAgICAgICAvKiBbaW5dICovIEJTVFIgb3JpZ2luKQoreworICAgIHByaW50ZigiREVTS1RP
UCBOT1RJRklDQVRJT04gUEVSTUlTU0lPTiBSRVFVRVNURUQ6ICVTXG4iLCBvcmlnaW4gPyBvcmln
aW4gOiBMIiIpOworICAgIHJldHVybiBTX09LOworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50
ZXIuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2Vu
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERl
c2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIw
MDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAK
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERSVERl
c2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXJfaAorI2RlZmluZSBEUlREZXNrdG9wTm90aWZpY2F0
aW9uUHJlc2VudGVyX2gKKworI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQuaD4KKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d2luZGVmLmg+CisKK2NsYXNzIERSVERlc2t0b3BOb3Rp
ZmljYXRpb25QcmVzZW50ZXIgOiBwdWJsaWMgSVdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdh
dGUgeworcHVibGljOgorICAgIERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIoKTsKKwor
ICAgIC8vIElVbmtub3duCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1
ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFs
IFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZih2b2lkKTsKKyAgICB2aXJ0dWFsIFVMT05H
IFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2Uodm9pZCk7CisKKyAgICAvLyBJV2ViRGVza3RvcE5v
dGlmaWNhdGlvbnNEZWxlZ2F0ZQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzaG93RGVza3RvcE5vdGlmaWNhdGlvbigKKyAgICAgICAgLyogW2luXSAqLyBJV2ViRGVza3Rv
cE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKTsKKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBjYW5jZWxEZXNrdG9wTm90aWZpY2F0aW9uKAorICAgICAgICAvKiBbaW5d
ICovIElXZWJEZXNrdG9wTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pOworCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vdGlmaWNhdGlvbkRlc3Ryb3llZCgKKyAgICAg
ICAgLyogW2luXSAqLyBJV2ViRGVza3RvcE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKTsKKwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjaGVja05vdGlmaWNhdGlvblBl
cm1pc3Npb24oCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBvcmlnaW4sIAorICAgICAgICAvKiBb
b3V0LCByZXR2YWxdICovIGludCogcmVzdWx0KTsKKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSByZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbigKKyAgICAgICAgLyog
W2luXSAqLyBCU1RSIG9yaWdpbik7CisKK3ByaXZhdGU6CisgICAgVUxPTkcgbV9yZWZDb3VudDsK
K307CisKKyNlbmRpZgoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuaApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS52Y3Byb2oJKHJldmlzaW9uIDQ2MjY4
KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLnZjcHJv
agkod29ya2luZyBjb3B5KQpAQCAtNDMyLDYgKzQzMiwxNCBAQAogCQkJTmFtZT0iRGVsZWdhdGVz
Ig0KIAkJCT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii5cRFJURGVza3RvcE5vdGlm
aWNhdGlvblByZXNlbnRlci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIuXERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuaCINCisJ
CQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii5cRWRpdGlu
Z0RlbGVnYXRlLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCShyZXZpc2lvbiA0NjI2OCkKKysr
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRyYWdnaW5nSW5mby5oIgogI2luY2x1
ZGUgIkV2ZW50U2VuZGVyLmgiCiAjaW5jbHVkZSAiTGF5b3V0VGVzdENvbnRyb2xsZXIuaCIKKyNp
bmNsdWRlICJEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCiAKICNpbmNsdWRlIDxX
ZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgpAQCAtMTU1LDYgKzE1
Niw3IEBAIHZvaWQgRFJUVW5kb01hbmFnZXI6OnVuZG8oKQogVUlEZWxlZ2F0ZTo6VUlEZWxlZ2F0
ZSgpCiAgICAgOiBtX3JlZkNvdW50KDEpCiAgICAgLCBtX3VuZG9NYW5hZ2VyKG5ldyBEUlRVbmRv
TWFuYWdlcikKKyAgICAsIG1fZGVza3RvcE5vdGlmaWNhdGlvbnMobmV3IERSVERlc2t0b3BOb3Rp
ZmljYXRpb25QcmVzZW50ZXIpCiB7CiAgICAgbV9mcmFtZS5ib3R0b20gPSAwOwogICAgIG1fZnJh
bWUudG9wID0gMDsKQEAgLTYwNCwzICs2MDYsOSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFVJRGVsZWdhdGU6OnNlCiAgICAgICAgIHByaW50ZigiVUkgREVMRUdBVEUgU1RBVFVTIENBTExC
QUNLOiBzZXRTdGF0dXNUZXh0OiVTXG4iLCB0ZXh0ID8gdGV4dCA6IEwiIik7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgVUlEZWxlZ2F0ZTo6ZGVza3Rv
cE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZShJV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZSoq
IHJlc3VsdCkKK3sKKyAgICBtX2Rlc2t0b3BOb3RpZmljYXRpb25zLmNvcHlSZWZUbyhyZXN1bHQp
OworICAgIHJldHVybiBTX09LOworfQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL1VJRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vVUlEZWxlZ2F0ZS5oCShyZXZpc2lvbiA0NjI2OCkKKysrIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSwx
MyBAQAogI2lmbmRlZiBVSURlbGVnYXRlX2gKICNkZWZpbmUgVUlEZWxlZ2F0ZV9oCiAKKyNpbmNs
dWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQuaD4KICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d2luZGVmLmg+CiAKIGNsYXNzIERSVFVuZG9N
YW5hZ2VyOworY2xhc3MgRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcjsKIAogY2xhc3Mg
VUlEZWxlZ2F0ZSA6IHB1YmxpYyBJV2ViVUlEZWxlZ2F0ZSwgSVdlYlVJRGVsZWdhdGVQcml2YXRl
IHsKIHB1YmxpYzoKQEAgLTM5OSwxMSArNDAxLDE2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0RpZEludmFsaWRhdGUoIAogICAgICAg
ICAvKiBbaW5dICovIElXZWJWaWV3ICpzZW5kZXIpOwogCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUoCisgICAgICAgIC8q
IFtvdXRdICovIElXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlKiogcmVzdWx0KTsKKwog
ICAgIFVMT05HICAgICAgICAgICAgICAgICAgIG1fcmVmQ291bnQ7CiAKIHByaXZhdGU6CiAgICAg
UkVDVCBtX2ZyYW1lOwogICAgIE93blB0cjxEUlRVbmRvTWFuYWdlcj4gbV91bmRvTWFuYWdlcjsK
KworICAgIENPTVB0cjxJV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZT4gbV9kZXNrdG9w
Tm90aWZpY2F0aW9uczsKIH07CiAKICNlbmRpZgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9i
dWlsZC13ZWJraXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJr
aXQJKHJldmlzaW9uIDQ2MjY4KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgbXkgKCR0aHJlZURSZW5kZXJpbmdTdXBw
b3J0LCAkY2hhbm5lbE1lcwogICAgICRqYXZhU2NyaXB0RGVidWdnZXJTdXBwb3J0LCAkb2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uU3VwcG9ydCwgJHJ1YnlTdXBwb3J0LCAkc2hhcmVkV29ya2Vyc1N1cHBv
cnQsIAogICAgICRzdmdTdXBwb3J0LCAkc3ZnQW5pbWF0aW9uU3VwcG9ydCwgJHN2Z0FzSW1hZ2VT
dXBwb3J0LCAkc3ZnRE9NT2JqQ0JpbmRpbmdzU3VwcG9ydCwgJHN2Z0ZvbnRzU3VwcG9ydCwKICAg
ICAkc3ZnRm9yZWlnbk9iamVjdFN1cHBvcnQsICRzdmdVc2VTdXBwb3J0LCAkdmlkZW9TdXBwb3J0
LCAkd2ViU29ja2V0c1N1cHBvcnQsICR3bWxTdXBwb3J0LCAkd29ya2Vyc1N1cHBvcnQsCi0gICAg
JHhwYXRoU3VwcG9ydCwgJHhzbHRTdXBwb3J0LCAkY292ZXJhZ2VTdXBwb3J0KTsKKyAgICAkeHBh
dGhTdXBwb3J0LCAkeHNsdFN1cHBvcnQsICRjb3ZlcmFnZVN1cHBvcnQsICRub3RpZmljYXRpb25z
U3VwcG9ydCk7CiAKIG15IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAiM2QtcmVuZGVy
aW5nIiwgZGVzYyA9PiAiVG9nZ2xlIDNEIHJlbmRlcmluZyBzdXBwb3J0IiwKQEAgLTgyLDYgKzgy
LDkgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICJqYXZhc2NyaXB0LWRlYnVn
Z2VyIiwgZGVzYyA9PiAiVG9nZ2xlIEphdmFTY3JpcHQgRGVidWdnZXIvUHJvZmlsZXIgc3VwcG9y
dCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSIiwgZGVmYXVs
dCA9PiAxLCB2YWx1ZSA9PiBcJGphdmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQgfSwKIAorICAgIHsg
b3B0aW9uID0+ICJub3RpZmljYXRpb25zIiwgZGVzYyA9PiAiVG9nZ2xlIERlc2t0b3AgTm90aWZp
Y2F0aW9ucyBTdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05PVElGSUNBVElPTlMi
LCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkbm90aWZpY2F0aW9uc1N1cHBvcnQgfSwKKwogICAg
IHsgb3B0aW9uID0+ICJvZmZsaW5lLXdlYi1hcHBsaWNhdGlvbnMiLCBkZXNjID0+ICJUb2dnbGUg
T2ZmbGluZSBXZWIgQXBwbGljYXRpb24gU3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkb2Zm
bGluZVdlYkFwcGxpY2F0aW9uU3VwcG9ydCB9LAogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NjI3MikK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDA5LTA3LTIzICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlc2t0b3AgTm90aWZpY2F0
aW9ucyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1NDYzCisKKyAgICAgICAgQWRkaW5nIGxheW91dCB0ZXN0cyBmb3IgZGVza3RvcCBub3RpZmlj
YXRpb25zLiAgQ3VycmVudGx5IHRoZXNlCisgICAgICAgIGFyZSBhbGwgZGlzYWJsZWQgYmVjYXVz
ZSB0aGUgZmxhZyBmb3IgdGhpcyBmZWF0dXJlIGlzIHNldCB0byAwLgorCisgICAgICAgICogZmFz
dC9ub3RpZmljYXRpb25zOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L25vdGlmaWNhdGlvbnMvbm90
aWZpY2F0aW9ucy1jaGVjay1wZXJtaXNzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtY2hlY2stcGVybWlzc2lvbi5odG1s
LWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgIC0gVmFsaWRhdGVzIHRoYXQgY2hlY2tpbmcgcGVy
bWlzc2lvbiBmb3Igbm90aWZpY2F0aW9ucyB3b3JrcyBjb3JyZWN0bHkuCisgICAgICAgICogZmFz
dC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZGlzcGxheS1jbG9zZS1ldmVudHMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9u
cy1kaXNwbGF5LWNsb3NlLWV2ZW50cy5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgIC0g
VmFsaWRhdGVzIHRoYXQgdGhlIGRpc3BsYXkgYW5kIGNsb3NlIGV2ZW50cyBhcmUgZmlyZWQgY29y
cmVjdGx5LgorICAgICAgICAqIGZhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWRvdWJs
ZS1zaG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ub3RpZmljYXRpb25z
L25vdGlmaWNhdGlvbnMtZG91YmxlLXNob3cuaHRtbC1kaXNhYmxlZDogQWRkZWQuCisgICAgICAg
ICAtIFZhbGlkYXRlcyB0aGF0IHRoZSBzYW1lIG5vdGlmaWNhdGlvbiBvYmplY3QgY2Fubm90IGJl
IHNob3duIHR3aWNlLgorICAgICAgICAqIGZhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25z
LXJlcXVlc3QtcGVybWlzc2lvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXJlcXVlc3QtcGVybWlzc2lvbi5odG1sLWRpc2Fi
bGVkOiBBZGRlZC4KKyAgICAgICAgIC0gVmFsaWRhdGVzIHRoYXQgcmVxdWVzdGluZyBwZXJtaXNz
aW9uIHdvcmtzIGNvcnJlY3RseS4KKyAgICAgICAgKiBmYXN0L25vdGlmaWNhdGlvbnMvbm90aWZp
Y2F0aW9ucy13aXRoLXBlcm1pc3Npb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy13aXRoLXBlcm1pc3Npb24uaHRtbC1kaXNh
YmxlZDogQWRkZWQuCisgICAgICAgICAtIFZhbGlkYXRlcyB0aGF0LCB3aXRoIHBlcm1pc3Npb24s
IHNob3dpbmcgYSBub3RpZmljYXRpb24gd29ya3MgY29ycmVjdGx5LgorICAgICAgICAqIGZhc3Qv
bm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXdpdGhvdXQtcGVybWlzc2lvbi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXdp
dGhvdXQtcGVybWlzc2lvbi5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgIC0gVmFsaWRh
dGVzIHRoYXQsIHdpdGhvdXQgcGVybWlzc2lvbiwgc2hvd2luZyBhIG5vdGlmaWNhdGlvbiBmYWls
cy4KKwogMjAwOS0wNy0yMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWNoZWNrLXBlcm1pc3Npb24t
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9u
cy9ub3RpZmljYXRpb25zLWNoZWNrLXBlcm1pc3Npb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtY2hlY2st
cGVybWlzc2lvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorQ2hl
Y2tpbmcgcGVybWlzc2lvbi4uLgorCitQQVNTOiBQZXJtaXNzaW9uIG5vdCBncmFudGVkLgorUEFT
UzogUGVybWlzc2lvbiBncmFudGVkLgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNh
dGlvbnMvbm90aWZpY2F0aW9ucy1jaGVjay1wZXJtaXNzaW9uLmh0bWwtZGlzYWJsZWQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtY2hl
Y2stcGVybWlzc2lvbi5odG1sLWRpc2FibGVkCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtY2hlY2stcGVybWlzc2lvbi5odG1sLWRp
c2FibGVkCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAg
ICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICAgICAgeworICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBydW5UZXN0cygpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmICghd2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMpIHsKKyAg
ICAgICAgICAgICAgICBsb2coIkZBSUw6IE5vIHdlYmtpdE5vdGlmaWNhdGlvbnMgaW50ZXJmYWNl
ISIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgTiA9IHdp
bmRvdy53ZWJraXROb3RpZmljYXRpb25zLmNoZWNrUGVybWlzc2lvbigpOworICAgICAgICAgICAg
aWYgKE4gIT0gMCkgeworICAgICAgICAgICAgICAgIGxvZygiUEFTUzogUGVybWlzc2lvbiBub3Qg
Z3JhbnRlZC4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nKCJG
QUlMOiBQZXJtaXNzaW9uIHNob3VsZG4ndCBiZSBncmFudGVkLiIpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZ3JhbnREZXNrdG9wTm90
aWZpY2F0aW9uUGVybWlzc2lvbigiZmlsZTovLyIpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBOID0gd2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMuY2hlY2tQZXJt
aXNzaW9uKCk7CisgICAgICAgICAgICBpZiAoTiA9PSAwKSB7CisgICAgICAgICAgICAgICAgbG9n
KCJQQVNTOiBQZXJtaXNzaW9uIGdyYW50ZWQuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGxvZygiRkFJTDogUGVybWlzc2lvbiBub3QgZ3JhbnRlZC4iKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5D
aGVja2luZyBwZXJtaXNzaW9uLi4uPC9wPgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK3J1blRlc3RzKCk7Cis8L3NjcmlwdD4KKworPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlm
aWNhdGlvbnMtZGlzcGxheS1jbG9zZS1ldmVudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWRpc3BsYXktY2xv
c2UtZXZlbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
bm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWRpc3BsYXktY2xvc2UtZXZlbnRzLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitERVNLVE9QIE5PVElGSUNBVElPTjog
aWNvbiBodHRwOi8vbG9jYWxob3N0L215X2ljb24ucG5nLCB0aXRsZSBOZXcgRS1tYWlsLCB0ZXh0
IE1lZXQgbWUgdG9uaWdodCBhdCA4IQorREVTS1RPUCBOT1RJRklDQVRJT04gQ0xPU0VEOiBOZXcg
RS1tYWlsCitTZW5kaW5nIG5vdGlmaWNhdGlvbnMgd2l0aCBwZXJtaXNzaW9uLi4uCisKK1BBU1M6
IGRpc3BsYXkgZXZlbnQgaW52b2tlZC4KK1BBU1M6IGNsb3NlIGV2ZW50IGludm9rZWQuCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWRpc3BsYXkt
Y2xvc2UtZXZlbnRzLmh0bWwtZGlzYWJsZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZGlzcGxheS1jbG9zZS1ldmVudHMuaHRtbC1k
aXNhYmxlZAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9u
b3RpZmljYXRpb25zLWRpc3BsYXktY2xvc2UtZXZlbnRzLmh0bWwtZGlzYWJsZWQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGZ1bmN0aW9uIGxvZyht
ZXNzYWdlKQorICAgICAgICB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmdyYW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24oImZpbGU6
Ly8iKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghd2luZG93LndlYmtpdE5vdGlmaWNh
dGlvbnMpIHsKKyAgICAgICAgICAgICAgICBsb2coIkZBSUw6IE5vIHdlYmtpdE5vdGlmaWNhdGlv
bnMgaW50ZXJmYWNlISIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICB2YXIgTiA9IHdpbmRvdy53ZWJraXROb3RpZmljYXRpb25zLmNyZWF0ZU5vdGlmaWNhdGlvbigi
aHR0cDovL2xvY2FsaG9zdC9teV9pY29uLnBuZyIsICJOZXcgRS1tYWlsIiwgIk1lZXQgbWUgdG9u
aWdodCBhdCA4ISIpOworICAgICAgICAgICAgTi5vbmRpc3BsYXkgPSBmdW5jdGlvbigpIHsgbG9n
KCJQQVNTOiBkaXNwbGF5IGV2ZW50IGludm9rZWQuIik7IH0KKyAgICAgICAgICAgIE4ub25jbG9z
ZSA9IGZ1bmN0aW9uKCkgeyBsb2coIlBBU1M6IGNsb3NlIGV2ZW50IGludm9rZWQuIik7IH0KKyAg
ICAgICAgICAgIE4uc2hvdygpOworICAgICAgICAgICAgTi5jYW5jZWwoKTsKKyAgICAgICAgfQor
ICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5TZW5kaW5nIG5vdGlmaWNhdGlvbnMg
d2l0aCBwZXJtaXNzaW9uLi4uPC9wPgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4gICAgCisgICAg
Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitydW5UZXN0cygpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMv
bm90aWZpY2F0aW9ucy1kb3VibGUtc2hvdy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZG91YmxlLXNob3ctZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25z
L25vdGlmaWNhdGlvbnMtZG91YmxlLXNob3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQgQEAKK0RFU0tUT1AgTk9USUZJQ0FUSU9OOiBpY29uIGh0dHA6Ly9sb2NhbGhvc3Qv
bXlfaWNvbi5wbmcsIHRpdGxlIE5ldyBFLW1haWwsIHRleHQgTWVldCBtZSB0b25pZ2h0IGF0IDgh
CitTZW5kaW5nIG5vdGlmaWNhdGlvbnMuLi4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L25v
dGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1kb3VibGUtc2hvdy5odG1sLWRpc2FibGVkCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWRv
dWJsZS1zaG93Lmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1kb3VibGUtc2hvdy5odG1sLWRpc2FibGVkCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgICBmdW5jdGlv
biBsb2cobWVzc2FnZSkKKyAgICAgICAgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBydW5UZXN0cygpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ncmFudERlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9u
KCJmaWxlOi8vIik7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXdpbmRvdy53ZWJraXRO
b3RpZmljYXRpb25zKSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBObyB3ZWJraXROb3Rp
ZmljYXRpb25zIGludGVyZmFjZSEiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgdmFyIE4gPSB3aW5kb3cud2Via2l0Tm90aWZpY2F0aW9ucy5jcmVhdGVOb3RpZmlj
YXRpb24oImh0dHA6Ly9sb2NhbGhvc3QvbXlfaWNvbi5wbmciLCAiTmV3IEUtbWFpbCIsICJNZWV0
IG1lIHRvbmlnaHQgYXQgOCEiKTsKKyAgICAgICAgICAgIE4uc2hvdygpOworICAgICAgICAgICAg
Ti5zaG93KCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+
U2VuZGluZyBub3RpZmljYXRpb25zLi4uPC9wPgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4gICAg
CisgICAgCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitydW5UZXN0cygpOworPC9z
Y3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvbm90aWZp
Y2F0aW9ucy9ub3RpZmljYXRpb25zLWV2ZW50LXN0b3AtcHJvcGFnYXRpb24tZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRp
b25zLWV2ZW50LXN0b3AtcHJvcGFnYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZXZlbnQtc3RvcC1w
cm9wYWdhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorREVT
S1RPUCBOT1RJRklDQVRJT046IGljb24gaHR0cDovL2xvY2FsaG9zdC9teV9pY29uLnBuZywgdGl0
bGUgTmV3IEUtbWFpbCwgdGV4dCBNZWV0IG1lIHRvbmlnaHQgYXQgOCEKK0RFU0tUT1AgTk9USUZJ
Q0FUSU9OIENMT1NFRDogTmV3IEUtbWFpbAorU2VuZGluZyBub3RpZmljYXRpb25zIHdpdGggcGVy
bWlzc2lvbi4uLgorCitQQVNTOiBhZGRFdmVudExpc3RlbmVyKGRpc3BsYXkpIGNhcHR1cmUgY2Fs
bGJhY2sgaW52b2tlZAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90
aWZpY2F0aW9ucy1ldmVudC1zdG9wLXByb3BhZ2F0aW9uLmh0bWwtZGlzYWJsZWQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZXZlbnQt
c3RvcC1wcm9wYWdhdGlvbi5odG1sLWRpc2FibGVkCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZXZlbnQtc3RvcC1wcm9wYWdhdGlv
bi5odG1sLWRpc2FibGVkCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgorICAgICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICAgICAgeworICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsg
Ijxicj4iOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBydW5UZXN0cygp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ncmFudERlc2t0b3BOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uKCJmaWxlOi8vIik7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoIXdpbmRvdy53ZWJraXROb3RpZmljYXRpb25zKSB7CisgICAgICAgICAgICAgICAgbG9nKCJG
QUlMOiBObyB3ZWJraXROb3RpZmljYXRpb25zIGludGVyZmFjZSEiKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIE4gPSB3aW5kb3cud2Via2l0Tm90aWZpY2F0
aW9ucy5jcmVhdGVOb3RpZmljYXRpb24oImh0dHA6Ly9sb2NhbGhvc3QvbXlfaWNvbi5wbmciLCAi
TmV3IEUtbWFpbCIsICJNZWV0IG1lIHRvbmlnaHQgYXQgOCEiKTsKKyAgICAgICAgICAgIE4uYWRk
RXZlbnRMaXN0ZW5lcigiZGlzcGxheSIsIGZ1bmN0aW9uKGUpIHsgbG9nKCJQQVNTOiBhZGRFdmVu
dExpc3RlbmVyKGRpc3BsYXkpIG5vbi1jYXB0dXJlIGNhbGxiYWNrIGludm9rZWQiKTsgfSk7Cisg
ICAgICAgICAgICBOLm9uZGlzcGxheSA9ICAgICAgICAgICAgICAgICBmdW5jdGlvbihlKSB7IGxv
ZygiUEFTUzogb25kaXNwbGF5IGF0dHJpYnV0ZSBldmVudCBjYWxsYmFjayBpbnZva2VkLiIpOyB9
CisgICAgICAgICAgICBOLmFkZEV2ZW50TGlzdGVuZXIoImRpc3BsYXkiLCBmdW5jdGlvbihlKSB7
IGxvZygiUEFTUzogYWRkRXZlbnRMaXN0ZW5lcihkaXNwbGF5KSBjYXB0dXJlIGNhbGxiYWNrIGlu
dm9rZWQiKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgfSwgdHJ1ZSApOworICAgICAgICAgICAgTi5z
aG93KCk7CisgICAgICAgICAgICBOLmNhbmNlbCgpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlNlbmRpbmcgbm90aWZpY2F0aW9ucyB3aXRoIHBlcm1pc3Np
b24uLi48L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PiAgICAKKyAgICAKKzxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KK3J1blRlc3RzKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25z
LW11bHRpLWV2ZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtbXVsdGktZXZlbnRzLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRp
b25zLW11bHRpLWV2ZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAg
QEAKK0RFU0tUT1AgTk9USUZJQ0FUSU9OOiBpY29uIGh0dHA6Ly9sb2NhbGhvc3QvbXlfaWNvbi5w
bmcsIHRpdGxlIE5ldyBFLW1haWwsIHRleHQgTWVldCBtZSB0b25pZ2h0IGF0IDghCitERVNLVE9Q
IE5PVElGSUNBVElPTiBDTE9TRUQ6IE5ldyBFLW1haWwKK1NlbmRpbmcgbm90aWZpY2F0aW9ucyB3
aXRoIHBlcm1pc3Npb24uLi4KKworUEFTUzogYWRkRXZlbnRMaXN0ZW5lcihjbG9zZSkgY2FwdHVy
ZSBjYWxsYmFjayAjMSBpbnZva2VkCitQQVNTOiBhZGRFdmVudExpc3RlbmVyKGNsb3NlKSBjYXB0
dXJlIGNhbGxiYWNrICMyIGludm9rZWQKK1BBU1M6IGFkZEV2ZW50TGlzdGVuZXIoY2xvc2UpIGNh
bGxiYWNrICMxIGludm9rZWQKK1BBU1M6IG9uY2xvc2UgYXR0cmlidXRlIGV2ZW50IGNhbGxiYWNr
IGludm9rZWQuCitQQVNTOiBhZGRFdmVudExpc3RlbmVyKGNsb3NlKSBjYWxsYmFjayAjMyBpbnZv
a2VkCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25z
LW11bHRpLWV2ZW50cy5odG1sLWRpc2FibGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLW11bHRpLWV2ZW50cy5odG1sLWRpc2FibGVk
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNh
dGlvbnMtbXVsdGktZXZlbnRzLmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorICAgICAg
ICB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJI
VE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1
bmN0aW9uIHJ1blRlc3RzKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmdyYW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24oImZpbGU6Ly8iKTsKKyAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmICghd2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMpIHsKKyAgICAg
ICAgICAgICAgICBsb2coIkZBSUw6IE5vIHdlYmtpdE5vdGlmaWNhdGlvbnMgaW50ZXJmYWNlISIp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgTiA9IHdpbmRv
dy53ZWJraXROb3RpZmljYXRpb25zLmNyZWF0ZU5vdGlmaWNhdGlvbigiaHR0cDovL2xvY2FsaG9z
dC9teV9pY29uLnBuZyIsICJOZXcgRS1tYWlsIiwgIk1lZXQgbWUgdG9uaWdodCBhdCA4ISIpOwor
ICAgICAgICAgICAgTi5hZGRFdmVudExpc3RlbmVyKCJjbG9zZSIsIGZ1bmN0aW9uKCkgeyBsb2co
IlBBU1M6IGFkZEV2ZW50TGlzdGVuZXIoY2xvc2UpIGNhbGxiYWNrICMxIGludm9rZWQiKTsgfSk7
CisgICAgICAgICAgICBOLm9uY2xvc2UgPSAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGxv
ZygiUEFTUzogb25jbG9zZSBhdHRyaWJ1dGUgZXZlbnQgY2FsbGJhY2sgaW52b2tlZC4iKTsgfQor
ICAgICAgICAgICAgTi5hZGRFdmVudExpc3RlbmVyKCJjbG9zZSIsIGZ1bmN0aW9uKCkgeyBsb2co
IlBBU1M6IGFkZEV2ZW50TGlzdGVuZXIoY2xvc2UpIGNhcHR1cmUgY2FsbGJhY2sgIzEgaW52b2tl
ZCIpOyB9LCB0cnVlICk7CisgICAgICAgICAgICBOLmFkZEV2ZW50TGlzdGVuZXIoImNsb3NlIiwg
ZnVuY3Rpb24oKSB7IGxvZygiUEFTUzogYWRkRXZlbnRMaXN0ZW5lcihjbG9zZSkgY2FwdHVyZSBj
YWxsYmFjayAjMiBpbnZva2VkIik7IH0sIHRydWUgKTsKKyAgICAgICAgICAgIE4uYWRkRXZlbnRM
aXN0ZW5lcigiY2xvc2UiLCBmdW5jdGlvbigpIHsgbG9nKCJQQVNTOiBhZGRFdmVudExpc3RlbmVy
KGNsb3NlKSBjYWxsYmFjayAjMyBpbnZva2VkIik7IH0pOworICAgICAgICAgICAgTi5zaG93KCk7
CisgICAgICAgICAgICBOLmNhbmNlbCgpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPlNlbmRpbmcgbm90aWZpY2F0aW9ucyB3aXRoIHBlcm1pc3Npb24uLi48
L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PiAgICAKKyAgICAKKzxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KK3J1blRlc3RzKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXJlcXVl
c3QtcGVybWlzc2lvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtcmVxdWVzdC1wZXJtaXNzaW9uLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3Rp
ZmljYXRpb25zLXJlcXVlc3QtcGVybWlzc2lvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNCBAQAorREVTS1RPUCBOT1RJRklDQVRJT04gUEVSTUlTU0lPTiBSRVFVRVNURUQ6
IGZpbGU6Ly8KK1JlcXVlc3Rpbmcgbm90aWZpY2F0aW9uIHBlcm1pc3Npb24uLi4KKworCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1yZXF1ZXN0LXBl
cm1pc3Npb24uaHRtbC1kaXNhYmxlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L25v
dGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1yZXF1ZXN0LXBlcm1pc3Npb24uaHRtbC1kaXNhYmxl
ZAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmlj
YXRpb25zLXJlcXVlc3QtcGVybWlzc2lvbi5odG1sLWRpc2FibGVkCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkK
KyAgICAgICAgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIp
LmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBmdW5jdGlvbiBydW5UZXN0cygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgh
d2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgICAgICAgICBsb2coIkZBSUw6
IE5vIHdlYmtpdE5vdGlmaWNhdGlvbnMgaW50ZXJmYWNlISIpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICB2YXIgTiA9IHdpbmRvdy53ZWJraXROb3RpZmljYXRpb25z
LnJlcXVlc3RQZXJtaXNzaW9uKAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBsb2coIlBB
U1M6IFBlcm1pc3Npb24gY2FsbGJhY2sgaW52b2tlZC4iKTsgfQorICAgICAgICAgICAgKTsKKyAg
ICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHA+UmVxdWVzdGlu
ZyBub3RpZmljYXRpb24gcGVybWlzc2lvbi4uLjwvcD4KKyAgICAKKyAgICAKKzxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KK3J1blRlc3RzKCk7Cis8L3NjcmlwdD4KKworPGRpdiBpZD0i
cmVzdWx0Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
bm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXdpdGgtcGVybWlzc2lvbi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlv
bnMtd2l0aC1wZXJtaXNzaW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXdpdGgtcGVybWlzc2lvbi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorREVTS1RPUCBOT1RJRklDQVRJ
T046IGNvbnRlbnRzIGF0IGh0dHA6Ly9sb2NhbGhvc3QvbXlfbm90aWZpY2F0aW9uLmh0bWwKK0RF
U0tUT1AgTk9USUZJQ0FUSU9OOiBpY29uIGh0dHA6Ly9sb2NhbGhvc3QvbXlfaWNvbi5wbmcsIHRp
dGxlIE5ldyBFLW1haWwsIHRleHQgTWVldCBtZSB0b25pZ2h0IGF0IDghCitTZW5kaW5nIG5vdGlm
aWNhdGlvbnMgd2l0aCBwZXJtaXNzaW9uLi4uCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9u
b3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtd2l0aC1wZXJtaXNzaW9uLmh0bWwtZGlzYWJsZWQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlv
bnMtd2l0aC1wZXJtaXNzaW9uLmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy13aXRoLXBlcm1pc3Npb24uaHRt
bC1kaXNhYmxlZAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAg
ICAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+
IjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZ3JhbnREZXNrdG9wTm90aWZpY2F0
aW9uUGVybWlzc2lvbigiZmlsZTovLyIpOworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCF3
aW5kb3cud2Via2l0Tm90aWZpY2F0aW9ucykgeworICAgICAgICAgICAgICAgIGxvZygiRkFJTDog
Tm8gd2Via2l0Tm90aWZpY2F0aW9ucyBpbnRlcmZhY2UhIik7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIHZhciBOID0gd2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMu
Y3JlYXRlSFRNTE5vdGlmaWNhdGlvbigiaHR0cDovL2xvY2FsaG9zdC9teV9ub3RpZmljYXRpb24u
aHRtbCIpOworICAgICAgICAgICAgTi5zaG93KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IHZhciBNID0gd2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMuY3JlYXRlTm90aWZpY2F0aW9uKCJo
dHRwOi8vbG9jYWxob3N0L215X2ljb24ucG5nIiwgIk5ldyBFLW1haWwiLCAiTWVldCBtZSB0b25p
Z2h0IGF0IDghIik7CisgICAgICAgICAgICBNLnNob3coKTsKKyAgICAgICAgfQorICAgIDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5TZW5kaW5nIG5vdGlmaWNhdGlvbnMgd2l0aCBwZXJt
aXNzaW9uLi4uPC9wPgorICAgIAorICAgIAorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgorcnVuVGVzdHMoKTsKKzwvc2NyaXB0PgorCis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlm
aWNhdGlvbnMtd2l0aG91dC1wZXJtaXNzaW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy13aXRob3V0LXBlcm1p
c3Npb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ub3Rp
ZmljYXRpb25zL25vdGlmaWNhdGlvbnMtd2l0aG91dC1wZXJtaXNzaW9uLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitTZW5kaW5nIG5vdGlmaWNhdGlvbnMgd2l0aG91
dCBwZXJtaXNzaW9uLi4uCisKK1BBU1M6IEV4Y2VwdGlvbiB0aHJvd24uCisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXdpdGhvdXQtcGVybWlzc2lv
bi5odG1sLWRpc2FibGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0
aW9ucy9ub3RpZmljYXRpb25zLXdpdGhvdXQtcGVybWlzc2lvbi5odG1sLWRpc2FibGVkCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMt
d2l0aG91dC1wZXJtaXNzaW9uLmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorICAgICAg
ICB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJI
VE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1
bmN0aW9uIHJ1blRlc3RzKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIC8vIE5PIFBFUk1JU1NJT04gbGF5
b3V0VGVzdENvbnRyb2xsZXIuZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbigiZmls
ZTovLyIpOworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCF3aW5kb3cud2Via2l0Tm90aWZp
Y2F0aW9ucykgeworICAgICAgICAgICAgICAgIGxvZygiRkFJTDogTm8gd2Via2l0Tm90aWZpY2F0
aW9ucyBpbnRlcmZhY2UhIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICAgICAgdmFyIE4gPSB3aW5kb3cud2Via2l0Tm90aWZpY2F0
aW9ucy5jcmVhdGVOb3RpZmljYXRpb24oImh0dHA6Ly9sb2NhbGhvc3QvbXlfaWNvbi5wbmciLCAi
TmV3IEUtbWFpbCIsICJNZWV0IG1lIHRvbmlnaHQgYXQgOCEiKTsKKyAgICAgICAgICAgICAgICBO
LnNob3coKTsKKyAgICAgICAgICAgICAgICBsb2coIkZBSUw6IFNob3VsZCBoYXZlIHRocm93biBz
ZWN1cml0eSBleGNlcHRpb24uIik7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
ICAgICAgICAgbG9nKCJQQVNTOiBFeGNlcHRpb24gdGhyb3duLiIpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlNlbmRpbmcgbm90
aWZpY2F0aW9ucyB3aXRob3V0IHBlcm1pc3Npb24uLi48L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPjwv
ZGl2PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitydW5UZXN0cygpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33346</attachid>
            <date>2009-07-23 10:58:27 -0700</date>
            <delta_ts>2009-08-11 02:19:10 -0700</delta_ts>
            <desc>Notifications API, combined Core and Tests</desc>
            <filename>wkPatchPath232.diff</filename>
            <type>text/plain</type>
            <size>160251</size>
            <attacher name="John Gregg">johnnyg</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ2MjcyKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDctMjMgIEpvaG4gR3Jl
Z2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRGVza3RvcCBOb3RpZmljYXRpb25zIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0NjMKKworICAgICAgICBBZGRz
IEVOQUJMRV9OT1RJRklDQVRJT04gZmxhZy4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDA5
LTA3LTIyICBZb25nIExpICA8eW9uZy5saUB0b3JjaG1vYmlsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgR2VvcmdlIFN0YWlrb3MuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gNDYyNjgp
CisrKyBKYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
Zwkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBFTkFCTEVfRklMVEVSUyA9IDsKIEVO
QUJMRV9HRU9MT0NBVElPTiA9IDsKIEVOQUJMRV9JQ09OREFUQUJBU0UgPSBFTkFCTEVfSUNPTkRB
VEFCQVNFOwogRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIgPSBFTkFCTEVfSkFWQVNDUklQVF9E
RUJVR0dFUjsKK0VOQUJMRV9OT1RJRklDQVRJT05TID0gOwogRU5BQkxFX09GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUyA9IEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7CiBFTkFCTEVfUlVC
WSA9IEVOQUJMRV9SVUJZOwogRU5BQkxFX1NIQVJFRF9XT1JLRVJTID0gOwpAQCAtNTcsNCArNTgs
NCBAQCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5B
QkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVT
ID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChF
TkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkg
JChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRB
QkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZGTElORV9XRUJf
QVBQTElDQVRJT05TKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChF
TkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0Up
ICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVO
QUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVP
KSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAk
KEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJM
RV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRB
QkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9G
SUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVO
QUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxFX1NIQVJF
RF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxF
X1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkg
JChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XTUwpICQoRU5B
QkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0
Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA0NjI2OCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NDksNiArNTQ5LDEwIEBACiAjZGVmaW5lIEVOQUJM
RV9HRU9MT0NBVElPTiAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJ
T05TKQorI2RlZmluZSBFTkFCTEVfTk9USUZJQ0FUSU9OUyAwCisjZW5kaWYKKwogI2lmICFkZWZp
bmVkKEVOQUJMRV9URVhUX0NBUkVUKQogI2RlZmluZSBFTkFCTEVfVEVYVF9DQVJFVCAxCiAjZW5k
aWYKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiA0NjI3MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTExIEBACisyMDA5LTA3LTIzICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IERlc2t0b3AgTm90aWZpY2F0aW9ucyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI1NDYzCisKKyAgICAgICAgQWRkcyBhbiBpbXBsZW1lbnRhdGlv
biBvZiBkZXNrdG9wIG5vdGlmaWNhdGlvbnMsIGJlaGluZCB0aGUgY29tcGlsZS10aW1lCisgICAg
ICAgIGZsYWcgRU5BQkxFKE5PVElGSUNBVElPTlMpLiAgVGhpcyBjb2RlIHNpbXBseSByZWxheXMg
Y2FsbHMgb24gdGhlIEphdmFTY3JpcHQKKyAgICAgICAgQVBJIHRocm91Z2ggYSBOb3RpZmljYXRp
b25Qcm92aWRlciBpbnRlcmZhY2UsIHdoaWNoIG11c3QgcHJvdmlkZSB0aGUgc2VydmljZXMKKyAg
ICAgICAgdG8gYWN0dWFsbHkgbm90aWZ5IHRoZSB1c2VyIGFuZCBtYW5hZ2UgdGhlIGRlc2t0b3Au
ICBUaGlzIHByb3ZpZGVyIGlzIGluamVjdGVkCisgICAgICAgIGludG8gV2ViS2l0IHRocm91Z2gg
dGhlIENocm9tZUNsaWVudCBmb3Igbm9ybWFsIHBhZ2UgY29udGV4dHMgYW5kIHRocm91Z2ggdGhl
CisgICAgICAgIFdvcmtlclRocmVhZCBmb3Igd29ya2VyIGNvbnRleHRzLgorCisgICAgICAgIEEg
cGVybWlzc2lvbnMgQVBJIGlzIGRlZmluZWQgb24gYSBwZXItb3JpZ2luIGJhc2lzLCB3aGljaCBh
bGxvd3MgYSB3ZWIgcGFnZQorICAgICAgICB0byBjaGVjayBpZiBpdHMgb3JpZ2luIGlzIGFsbG93
ZWQgdG8gc2hvdyBkZXNrdG9wIG5vdGlmaWNhdGlvbnMsIGFuZCB0byByZXF1ZXN0CisgICAgICAg
IHBlcm1pc3Npb24gZm9yIGl0cyBvcmlnaW4uCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5jcHA6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlQ29tbW9uLnZzcHJvcHM6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Rlc2t0b3BOb3RpZmljYXRpb25z
Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU05vdGlmaWNhdGlvbkNlbnRl
cjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNOb3RpZmljYXRpb246
OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb3RpZmljYXRpb246OnJl
bW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjp0b0V2ZW50
VGFyZ2V0KToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRUYXJnZXQ6OnRvTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJn
ZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpFbXB0eUNocm9tZUNsaWVudDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKiBu
b3RpZmljYXRpb25zOiBBZGRlZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb246OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246Om9u
ZGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnNldE9uZGlzcGxheSk6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246Om9uZXJyb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uOjpzZXRPbmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6b25jbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnNldE9u
Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpnZXRBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNsZWFyQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRp
c3BhdGNoRGlzcGxheUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlz
cGF0Y2hFcnJvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0
Y2hDbG9zZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6YWRkRXZlbnRM
aXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnJlbW92ZUV2ZW50TGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpoYW5kbGVFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAq
IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpp
c0hUTUwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjp1cmwpOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjp0b05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b246OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGVy
ZWZFdmVudFRhcmdldCk6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRs
OiBBZGRlZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRp
b25DZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpjaGVja1Bl
cm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpyZXF1ZXN0
UGVybWlzc2lvbik6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZUhUTUxOb3RpZmlj
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVOb3Rp
ZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpjb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNlbnRlcjo6cHJlc2VudGVyKToKKyAg
ICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGw6IEFkZGVkLgorICAg
ICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udGVudHMuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250ZW50czo6Tm90aWZpY2F0aW9uQ29udGVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udGVudHM6Omljb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udGVudHM6OnRpdGxlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbkNvbnRlbnRzOjpib2R5KToKKyAgICAgICAgKiBub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvblByZXNlbnRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlcjo6KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNl
bnRlcjo6fk5vdGlmaWNhdGlvblByZXNlbnRlcik6CisgICAgICAgICogcGFnZS9DaHJvbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpub3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6d2Via2l0Tm90aWZpY2F0aW9u
cyk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5pZGw6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6On5Xb3JrZXJDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OndlYmtpdE5vdGlmaWNhdGlv
bnMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyQ29udGV4dC5pZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6Z2V0Tm90aWZpY2F0aW9uUHJlc2VudGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6c2V0Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyKToKKwogMjAwOS0wNy0yMyAgTWlrZSBGZW50b24gIDxtaWtlLmZlbnRvbkB0b3JjaG1vYmls
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBXZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LmNwcAkocmV2aXNpb24gNDYyNjgpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCw4IEBACiAjaW5jbHVkZSAiSlNOb2RlSXRlcmF0b3Iu
Y3BwIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuY3BwIgogI2luY2x1ZGUgIkpTTm90YXRpb24uY3Bw
IgorI2luY2x1ZGUgIkpTTm90aWZpY2F0aW9uQ2VudGVyLmNwcCIKKyNpbmNsdWRlICJKU05vdGlm
aWNhdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNPdmVyZmxvd0V2ZW50LmNwcCIKICNpbmNsdWRlICJK
U1BsdWdpbi5jcHAiCiAjaW5jbHVkZSAiSlNQbHVnaW5BcnJheS5jcHAiCkluZGV4OiBXZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCShyZXZpc2lvbiA0NjI2OCkKKysrIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQko
d29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYkNvcmUp
L2h0bWwgXAogICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yIFwKICAgICAkKFdlYkNvcmUpL2xvYWRl
ci9hcHBjYWNoZSBcCisgICAgJChXZWJDb3JlKS9ub3RpZmljYXRpb25zIFwKICAgICAkKFdlYkNv
cmUpL3BhZ2UgXAogICAgICQoV2ViQ29yZSkvcGx1Z2lucyBcCiAgICAgJChXZWJDb3JlKS9zdG9y
YWdlIFwKQEAgLTE5MCw2ICsxOTEsOCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBOb2RlSXRlcmF0
b3IgXAogICAgIE5vZGVMaXN0IFwKICAgICBOb3RhdGlvbiBcCisgICAgTm90aWZpY2F0aW9uIFwK
KyAgICBOb3RpZmljYXRpb25DZW50ZXIgXAogICAgIE92ZXJmbG93RXZlbnQgXAogICAgIFBsdWdp
biBcCiAgICAgUGx1Z2luQXJyYXkgXApAQCAtNjc5LDcgKzY4Miw3IEBAIGVuZGlmCiAjIEphdmFT
Y3JpcHQgYmluZGluZ3MKIAogR0VORVJBVEVfQklORElOR1MgPSBwZXJsIC1JICQoV2ViQ29yZSkv
YmluZGluZ3Mvc2NyaXB0cyAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmlu
ZGluZ3MucGwgXAotICAgIC0taW5jbHVkZSBkb20gLS1pbmNsdWRlIGh0bWwgLS1pbmNsdWRlIGNz
cyAtLWluY2x1ZGUgcGFnZSAtLWluY2x1ZGUgeG1sIC0taW5jbHVkZSBzdmcgLS1vdXRwdXREaXIg
LgorICAgIC0taW5jbHVkZSBkb20gLS1pbmNsdWRlIGh0bWwgLS1pbmNsdWRlIGNzcyAtLWluY2x1
ZGUgcGFnZSAtLWluY2x1ZGUgbm90aWZpY2F0aW9ucyAtLWluY2x1ZGUgeG1sIC0taW5jbHVkZSBz
dmcgLS1vdXRwdXREaXIgLgogCiBHRU5FUkFURV9CSU5ESU5HU19TQ1JJUFRTID0gXAogICAgIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbSBcCkluZGV4OiBXZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDQ2
MjY4KQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNiAr
MjUsNyBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZSBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZSBcCiAJLUkk
KHNyY2RpcikvV2ViQ29yZS9sb2FkZXIvaWNvbiBcCisJLUkkKHNyY2RpcikvV2ViQ29yZS9ub3Rp
ZmljYXRpb25zIFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL3BhZ2UgXAogCS1JJChzcmNkaXIpL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24gXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvcGxhdGZvcm0gXApA
QCAtMjMyLDYgKzIzMyw4IEBAIElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9odG1sL1ZvaWRD
YWxsYmFjay5pZGwgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRs
IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmlkbCBcCisJV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwgXAorCVdlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25zLmlkbCBcCiAJV2ViQ29yZS9wYWdlL0JhckluZm8uaWRsIFwKIAlXZWJD
b3JlL3BhZ2UvQ29uc29sZS5pZGwgXAogCVdlYkNvcmUvcGFnZS9Db29yZGluYXRlcy5pZGwgXApA
QCAtMjQ4NCw2ICsyNDg3LDI0IEBAIHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvR2VvbG9jYXRpb25TZXJ2aWNlR3RrLmgKIGVuZGlmICMgRU5EIEVOQUJMRV9H
RU9MT0NBVElPTgogCisjIC0tLS0KKyMgTm90aWZpY2F0aW9ucyBzdXBwb3J0CisjIC0tLS0KK2lm
IEVOQUJMRV9OT1RJRklDQVRJT05TCitGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFC
TEVfTk9USUZJQ0FUSU9OUz0xCisKK3dlYmNvcmVfY3BwZmxhZ3MgKz0gXAorCS1ERU5BQkxFX05P
VElGSUNBVElPTlM9MQorCit3ZWJjb3JlX3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uY3BwIFwKKwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmggXAorCVdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwIFwK
KwlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggXAorCVdlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QcmVzZW50ZXIuaCBcCisJV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNvbnRlbnRzLmgKKworZW5kaWYgIyBFTkQgRU5BQkxFX05PVElG
SUNBVElPTlMKIAogIyAtLS0tCiAjIFNWRyBTdXBwb3J0CkBAIC0zMzQ4LDQgKzMzNjksMyBAQCBk
aXN0X3dlYnJlc291cmNlc19EQVRBID0gXAogCiBDTEVBTkZJTEVTICs9IFwKIAlsaWJXZWJDb3Jl
SlMubGEKLQoKSW5kZXg6IFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwkocmV2aXNpb24gNDYyNjgpCisrKyBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIEVO
QUJMRV9GSUxURVJTID0gOwogRU5BQkxFX0dFT0xPQ0FUSU9OID0gOwogRU5BQkxFX0lDT05EQVRB
QkFTRSA9IEVOQUJMRV9JQ09OREFUQUJBU0U7CiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9
IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSOworRU5BQkxFX05PVElGSUNBVElPTlMgPSA7CiBF
TkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TID0gRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJ
Q0FUSU9OUzsKIEVOQUJMRV9SVUJZID0gRU5BQkxFX1JVQlk7CiBFTkFCTEVfU0hBUkVEX1dPUktF
UlMgPSA7CkBAIC01Nyw0ICs1OCw0IEBAIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktFUlM7
CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xU
OwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NI
QU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQo
RU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElP
TikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAk
KEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxF
X1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQo
RU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVO
QUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZH
X1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XTUwp
ICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRV
UkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNT
QUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfRE9N
X1NUT1JBR0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVf
UlVCWSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZH
X0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNf
QklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNU
KSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMp
ICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxF
X1hTTFQpOwpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lv
biA0NjI2OCkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0i
VkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJta2RpciAyJmd0O05VTCAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVycyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGlu
Z3MmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYj
eDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7
TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hl
YWRlcnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYj
eDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTtta2Rp
ciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZx
dW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsm
I3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjb25maWcuaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2
ZWRTb3VyY2VzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFj
Y2Vzc2liaWxpdHlcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
YWNjZXNzaWJpbGl0eVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5caW5zcGVjdG9yXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXGxvYWRlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxs
b2FkZXJcYXBwY2FjaGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cbG9hZGVyXGFyY2hpdmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5cbG9hZGVyXGFyY2hpdmVcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5cbG9hZGVyXGljb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5caGlzdG9yeVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxoaXN0b3J5XGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGh0bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
Y3NzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFu
aW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxncmFwaGljc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZVwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdp
blwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxu
ZXR3b3JrXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXG5ldHdvcmtcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cbmV0d29ya1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cc3FsXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNhaXJvXGNhaXJvXHNyY1wqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xqc1wqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9uXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2Vcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxwbHVnaW5zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsdWdpbnNcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHJlbmRlcmluZ1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxyZW5kZXJpbmdcc3R5bGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5cZWRpdGluZ1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxkb21cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
eG1sXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1wqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxzdG9yYWdlXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtlcnNcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRp
bmdzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
cGFyc2VyJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFk
ZXJzXG1hc21cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccGNyZVwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xw
Y3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxG
b3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRl
cnNcd3JlY1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1x3cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3Rm
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3
YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hl
YWRlcnNcd3RmXHVuaWNvZGVcaWN1XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYj
eDBEOyYjeDBBOyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAvcyAvZXhjbHVkZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4u
XGluc3BlY3Rvclxmcm9udC1lbmRcKiZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmlu
XFdlYktpdC5yZXNvdXJjZXNcaW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtO
VUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9q
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMg
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxFbmdsaXNoLmxwcm9qXGxvY2FsaXplZFN0cmluZ3MuanMm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxw
cm9qJnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7aWYgZXhpc3QgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGJ1aWxkZmFpbGVkJnF1b3Q7IGRlbCAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
YnVpbGRmYWlsZWQmcXVvdDsmI3gwRDsmI3gwQTsiDQorCQkJCUNvbW1hbmRMaW5lPSJta2RpciAy
Jmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVM
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNcYmluZGluZ3MmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90
OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO21r
ZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9y
d2FyZGluZ0hlYWRlcnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNy
ZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsm
I3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05V
TCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVv
dDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBE
OyYjeDBBOyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjb25m
aWcuaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJD
b3JlXERlcml2ZWRTb3VyY2VzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGFjY2Vzc2liaWxpdHlcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5caW5zcGVjdG9yXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGxvYWRlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxsb2FkZXJcYXBwY2FjaGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGljb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5caGlzdG9yeVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGh0bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5cbm90aWZpY2F0aW9uc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxjc3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cYW5pbWF0aW9uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXNcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNz
XG9wZW50eXBlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXHRleHRcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXG5ldHdvcmtcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cbmV0d29ya1xjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxzcWxcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2Fpcm9cY2Fpcm9cc3JjXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb25cKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW5cKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxlZGl0aW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlx4bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cc3ZnXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3Jh
Z2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cd29ya2Vyc1wq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hl
YWRlcnNcYmluZGluZ3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlclwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1xwYXJzZXImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccnVudGlt
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9y
d2FyZGluZ0hlYWRlcnNcbWFzbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzXHBjcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVy
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3
YXJkaW5nSGVhZGVyc1x3cmVjXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0ZlwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyc1x3dGYmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmlj
b2RlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxG
b3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVc
aWN1JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGluc3BlY3RvciZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4Y2x1ZGVzICZxdW90OyQoUHJv
amVjdERpcilcLi5caW5zcGVjdG9yXGZyb250LWVuZFwqJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTtt
a2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJj
ZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAvcyAvZXhjbHVkZTp4Y29w
eS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXEVuZ2xpc2gubHByb2pcbG9jYWxpemVk
U3RyaW5ncy5qcyZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNv
dXJjZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTtpZiBleGlzdCAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQmcXVvdDsgZGVsICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZxdW90OyYjeDBEOyYjeDBBOyINCiAJCQkvPg0KIAkJPC9D
b25maWd1cmF0aW9uPg0KIAkJPENvbmZpZ3VyYXRpb24NCkBAIC03Mjg2LDYgKzcyODYsMTAyIEBA
CiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2Vi
S2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNOb3RpZmlj
YXRpb24uY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0i
RGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJ
CQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFt
ZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJ
Pg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4N
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJ
CQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
Pg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0
cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNOb3RpZmljYXRpb24u
aCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQo
V2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNOb3Rp
ZmljYXRpb25DZW50ZXIuY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJ
CQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJ
CQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJ
CS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0K
KwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0K
KwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4N
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMy
Ig0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0K
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQo
V2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNOb3Rp
ZmljYXRpb25DZW50ZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlS
ZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNPdmVyZmxvd0V2ZW50LmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24NCkBAIC0yNDEwNCw2ICsyNDIwMCwzNCBAQAogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+
DQogCQk8RmlsdGVyDQorCQkJTmFtZT0ibm90aWZpY2F0aW9ucyINCisJCQk+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxub3RpZmljYXRpb25zXE5vdGlmaWNhdGlvbi5jcHAiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxub3Rp
ZmljYXRpb25zXE5vdGlmaWNhdGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb25DZW50ZXIu
Y3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb25DZW50ZXIuaCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcTm90aWZp
Y2F0aW9uQ29udGVudHMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCiAJCQlOYW1lPSJl
ZGl0aW5nIg0KIAkJCT4NCiAJCQk8RmlsZQ0KQEAgLTI4MzU0LDYgKzI4NDc4LDEwIEBACiAJCQkJ
CT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5k
aW5nc1xqc1xKU0Rlc2t0b3BOb3RpZmljYXRpb25zQ3VzdG9tLmNwcCINCisJCQkJCT4NCisJCQkJ
PC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xK
U0RvY3VtZW50Q3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZUNvbW1vbi52c3Byb3BzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZUNvbW1vbi52c3Byb3BzCShyZXZpc2lvbiA0NjI2
OCkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZUNvbW1vbi52c3Byb3BzCSh3b3Jr
aW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQAogCT4KIAk8VG9vbAogCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKFByb2plY3RE
aXIpLi5cJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLiZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cYWNjZXNzaWJpbGl0eSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJp
bGl0eVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZSZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cYnJpZGdlXGMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNzcyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGluZyZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccmVuZGVyaW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5
bGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxkb20mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVxkZWZhdWx0
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5JnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxodG1sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3ImcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
bG9hZGVyXGFwcGNhY2hlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2
ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2YmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxpY29uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxwYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlvbiZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb24m
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbCZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxuZXR3b3JrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3Jr
XHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2YmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNmb3JtcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cdGV4dCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3Jh
cGhpY3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx4bWwmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxwbHVnaW5zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5z
XHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3NcZmlsdGVycyZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cc3ZnJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3bWwmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtl
cnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rpcilc
aW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwcml2YXRl
JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNj
cmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcaWN1JnF1
b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXGljb252JnF1b3Q7OyZxdW90
OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2Vi
S2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHNxbGl0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVycyZx
dW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxP
U1hDb21wYXRpYmlsaXR5SGVhZGVyc1xHTlVDb21wYXRpYmlsaXR5JnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxzdmdcYW5pbWF0aW9uJnF1b3Q7IgorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPSImcXVvdDskKFByb2plY3REaXIpLi5cJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eSZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXGJyaWRnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXGMmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGNzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGlu
ZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxyZW5kZXJpbmdcc3R5bGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJp
bmRpbmdzXGpzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxkb20mcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGRvbVxkZWZhdWx0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0
b3J5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxpbnNwZWN0b3ImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlciZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9h
ZGVyXGFyY2hpdmVcY2YmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxpY29uJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxub3RpZmljYXRpb25zJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxwYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlv
biZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxh
bmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbCZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVxuZXR3b3JrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxuZXR3b3JrXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2YmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZSZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNmb3JtcyZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxh
dGZvcm1cZ3JhcGhpY3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx4bWwmcXVvdDs7
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxwbHVnaW5zXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3NcZmlsdGVycyZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5cc3ZnJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3bWwmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHdvcmtlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGUmcXVvdDs7
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVk
ZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZh
dGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1
ZGVcaWN1JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXGljb252JnF1
b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZx
dW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHNxbGl0ZSZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5
SGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91
bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVyc1xHTlVDb21wYXRpYmlsaXR5JnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxzdmdcYW5pbWF0aW9uJnF1b3Q7IgogCQlQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz0iX19XSU4zMl9fO1dFQkNPUkVfQ09OVEVYVF9NRU5VUztFTkFCTEVfQ0hBTk5F
TF9NRVNTQUdJTkc7RU5BQkxFX0RBVEFCQVNFO0VOQUJMRV9EQVRBR1JJRDtFTkFCTEVfRE9NX1NU
T1JBR0U7RU5BQkxFX0lDT05EQVRBQkFTRTtFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05T
O0VOQUJMRV9SVUJZO0VOQUJMRV9TVkc7RU5BQkxFX1NWR19BTklNQVRJT047RU5BQkxFX1NWR19B
U19JTUFHRTtFTkFCTEVfU1ZHX0ZPTlRTO0VOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Q7RU5BQkxF
X1NWR19VU0U7RU5BQkxFX1dFQl9TT0NLRVRTO0VOQUJMRV9XT1JLRVJTO0VOQUJMRV9YUEFUSDtF
TkFCTEVfWFNMVCIKIAkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCiAJCVByZWNvbXBpbGVkSGVh
ZGVyVGhyb3VnaD0iV2ViQ29yZVByZWZpeC5oIgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDQ2MjY4KQorKysgV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTYyNiw2ICs2MjYs
MTcgQEAKIAkJMzFDMEZGNEMwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25F
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFD
MEZGNDYwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oICovOyB9
OwogCQkzMUMwRkY0RDBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDMEZG
NDcwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5tbSAqLzsgfTsK
IAkJMzFDMEZGNEUwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudElu
dGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MUMwRkY0ODBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50ZXJu
YWwuaCAqLzsgfTsKKwkJMzM1MDNDOUExMDE3OUE3NDAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvblBy
ZXNlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzM1MDNDOTkxMDE3OUE3NDAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvblByZXNlbnRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTMzNTAzQ0EzMTAx
NzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUwM0M5RjEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNO
b3RpZmljYXRpb24uY3BwICovOyB9OworCQkzMzUwM0NBNDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNO
b3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMzNTAzQ0EwMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5oICovOyB9Owor
CQkzMzUwM0NBNTEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb25DZW50ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM1MDNDQTExMDE3
OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uQ2VudGVyLmNwcCAqLzsgfTsKKwkJMzM1MDND
QTYxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uQ2VudGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUwM0NBMjEwMTc5QUQ3MDAzQjQ3
RTEgLyogSlNOb3RpZmljYXRpb25DZW50ZXIuaCAqLzsgfTsKKwkJMzM1MDNDQzAxMDE3OUMxQTAw
M0I0N0UxIC8qIEpTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM1MDNDQkYxMDE3OUMxQTAwM0I0N0Ux
IC8qIEpTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwICovOyB9OworCQkzMzUwM0NDNzEw
MTdBMUIxMDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzNTAzQ0M2MTAxN0ExQjEwMDNCNDdFMSAvKiBOb3Rp
ZmljYXRpb24uY3BwICovOyB9OworCQkzMzkwQ0E1NTBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZp
Y2F0aW9uQ2VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMzOTBDQTUxMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuY3Bw
ICovOyB9OworCQkzMzkwQ0E1NjBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzkwQ0E1
MjBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmggKi87IH07CisJCTMzOTBD
QTU3MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaWRsIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzkwQ0E1MzBGRkMxNTdCMDA5
MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmlkbCAqLzsgfTsKKwkJMzM5MENBNTgwRkZDMTU3
QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNvbnRlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzkwQ0E1NDBGRkMxNTdCMDA5MjE5NjIgLyogTm90
aWZpY2F0aW9uQ29udGVudHMuaCAqLzsgfTsKIAkJMzcxRjRGNDAwRDI1QjlBRjAwRUNFMEQ1IC8q
IEZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzNzFGNEYzRTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFGNEY0MTBEMjVCOUFGMDBFQ0Uw
RDUgLyogRm9udERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzcxRjRGM0YwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmNwcCAqLzsgfTsK
IAkJMzcxRjRGRkMwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFGNEZGQTBEMjVFN0Yz
MDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERhdGEuaCAqLzsgfTsKQEAgLTU1ODgsNiArNTU5OSwx
OSBAQAogCQkzMUMwRkY0NjBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdlYktpdFRyYW5zaXRp
b25FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUMwRkY0NzBFNENFRkRE
MDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUMwRkY0ODBFNENFRkREMDA3RDZGRTUgLyogRE9N
V2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzMzRjcwNEUwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlv
bi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTm90aWZpY2F0aW9uLmlkbDsgcGF0aCA9IG5v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzMzRjcwNEYwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBOb3RpZmljYXRpb24uaDsgcGF0aCA9IG5vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzNTAzQzk5
MTAxNzlBNzQwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25QcmVzZW50ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGZpbGVF
bmNvZGluZyA9IDQ7IG5hbWUgPSBOb3RpZmljYXRpb25QcmVzZW50ZXIuaDsgcGF0aCA9IG5vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uUHJlc2VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMzNTAzQzlGMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vdGlmaWNhdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzNTAzQ0EwMTAxNzlBRDcwMDNCNDdFMSAvKiBK
U05vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05vdGlm
aWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzUwM0NBMTEwMTc5QUQ3
MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb25DZW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNOb3RpZmljYXRpb25DZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMzUwM0NBMjEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRp
b25DZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb3RpZmljYXRp
b25DZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzM1MDNDQkYxMDE3OUMx
QTAwM0I0N0UxIC8qIEpTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEZXNrdG9wTm90aWZpY2F0aW9uc0N1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzNTAzQ0M2MTAxN0ExQjEwMDNCNDdF
MSAvKiBOb3RpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTm90aWZpY2F0aW9uLmNwcDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzM5MENBNTEwRkZDMTU3QjAwOTIxOTYy
IC8qIE5vdGlmaWNhdGlvbkNlbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBOb3RpZmljYXRpb25DZW50ZXIuY3BwOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzkwQ0E1
MjBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvbkNlbnRlci5oOyBwYXRoID0gbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzM5MENBNTMwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBuYW1lID0gTm90aWZpY2F0aW9uQ2VudGVyLmlkbDsgcGF0aCA9IG5vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzM5MENBNTQwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNvbnRlbnRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvbkNvbnRlbnRzLmg7IHBh
dGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRlbnRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTM3MUY0RjNFMEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250RGF0YS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzNzFGNEYzRjBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udERhdGEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFGNEZGQTBEMjVFN0YzMDBFQ0UwRDUgLyogU2Vn
bWVudGVkRm9udERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VnbWVu
dGVkRm9udERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0ODIsNiArOTUw
Niw3IEBACiAJCQkJOTNFRUMxRUMwOUMyODc3NzAwQzUxNUQxIC8qIGh0bWwgKi8sCiAJCQkJMUM4
MUI5NEQwRTk3MzJEOTAwMjY2RTA3IC8qIGluc3BlY3RvciAqLywKIAkJCQlCQ0IxNkJGQjA5NzlD
Mzg3MDA0Njc3NDEgLyogbG9hZGVyICovLAorCQkJCTMzM0Y3MDNEMEZCNDlDMTYwMDhFMTJBNiAv
KiBub3RpZmljYXRpb25zICovLAogCQkJCTY1QkYwMjE4MDk3NDgwNjMwMEM0MzE5NiAvKiBwYWdl
ICovLAogCQkJCUJDRjFBNUJBMDk3ODMyMDkwMDYxQTEyMyAvKiBwbGF0Zm9ybSAqLywKIAkJCQk1
RENGODM2OTBENTkxNTc4MDA5NTNCQzYgLyogcGx1Z2lucyAqLywKQEAgLTk1NjgsNiArOTU5Myw3
IEBACiAJCQkJQTgzQjc5MTIwQ0NCMDAzRjAwMEIwODI1IC8qIEV2ZW50cyAqLywKIAkJCQlBODNC
NzkwODBDQ0FGRjJCMDAwQjA4MjUgLyogSFRNTCAqLywKIAkJCQkxQzVGQUVDQTBEQ0ZEOEM5MDBE
NThGNzggLyogSW5zcGVjdG9yICovLAorCQkJCTMzNTAzQzlDMTAxNzlBOUEwMDNCNDdFMSAvKiBO
b3RpZmljYXRpb25zICovLAogCQkJCTFBQzIyNjAyMERCNjlFQTcwMDg5QjY2OSAvKiBPZmZsaW5l
ICovLAogCQkJCUE5RDI0N0Y5MEQ3NTdFNDEwMEZERjk1OSAvKiBQbHVnaW5zICovLAogCQkJCUJD
OTg1NDQ2MENEM0RBNUYwMDA2OUJDMSAvKiBSYW5nZXMgKi8sCkBAIC05OTYxLDYgKzk5ODcsMzIg
QEAKIAkJCW5hbWUgPSBhbmltYXRpb247CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OworCQkzMzNGNzAzRDBGQjQ5QzE2MDA4RTEyQTYgLyogbm90aWZpY2F0aW9ucyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMzM1MDNDQzYxMDE3QTFCMTAw
M0I0N0UxIC8qIE5vdGlmaWNhdGlvbi5jcHAgKi8sCisJCQkJMzM1MDNDOTkxMDE3OUE3NDAwM0I0
N0UxIC8qIE5vdGlmaWNhdGlvblByZXNlbnRlci5oICovLAorCQkJCTMzOTBDQTUxMEZGQzE1N0Iw
MDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuY3BwICovLAorCQkJCTMzOTBDQTUyMEZGQzE1
N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaCAqLywKKwkJCQkzMzkwQ0E1MzBGRkMx
NTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmlkbCAqLywKKwkJCQkzMzkwQ0E1NDBG
RkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ29udGVudHMuaCAqLywKKwkJCQkzMzNGNzA0
RTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmlkbCAqLywKKwkJCQkzMzNGNzA0RjBG
QjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi8sCisJCQkpOworCQkJbmFtZSA9IG5v
dGlmaWNhdGlvbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkzMzUwM0M5
QzEwMTc5QTlBMDAzQjQ3RTEgLyogTm90aWZpY2F0aW9ucyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMzM1MDNDOUYxMDE3OUFENzAwM0I0N0UxIC8qIEpT
Tm90aWZpY2F0aW9uLmNwcCAqLywKKwkJCQkzMzUwM0NBMDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNO
b3RpZmljYXRpb24uaCAqLywKKwkJCQkzMzUwM0NBMTEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3Rp
ZmljYXRpb25DZW50ZXIuY3BwICovLAorCQkJCTMzNTAzQ0EyMTAxNzlBRDcwMDNCNDdFMSAvKiBK
U05vdGlmaWNhdGlvbkNlbnRlci5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBOb3RpZmljYXRpb25z
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDQ5MTk1OTAwRkJFMTc1QjAw
RDlGODI0IC8qIEV4cG9ydHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtMTM2MDQsNiArMTM2NTYsNyBAQAogCQlCQzRFREVGNzBDMDhGNDE0MDA3RURENDkg
LyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQkzMzUwM0NCRjEwMTc5QzFBMDAzQjQ3RTEgLyogSlNEZXNrdG9wTm90aWZpY2F0aW9uc0N1c3Rv
bS5jcHAgKi8sCiAJCQkJQkMyRUQ2QkIwQzZCRDJGMDAwOTIwQkZGIC8qIEpTQXR0ckN1c3RvbS5j
cHAgKi8sCiAJCQkJMUE5RUY0NTYwQTFCOTU3RDAwMzMyQjYzIC8qIEpTQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQ3VzdG9tLmNwcCAqLywKIAkJCQk5M0JBNTlCMTBGMkFBNUZFMDA4RThFOTkgLyog
SlNDREFUQVNlY3Rpb25DdXN0b20uY3BwICovLApAQCAtMTcwMjEsNiArMTcwNzQsOCBAQAogCQkJ
CTE1Qzc3MDhEMTAwRDNDNkIwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNUM3NzA5MzEwMEQzQ0E4MDA1QkEyNjcgLyogSlNWYWxpZGl0eVN0YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNUM3NzBBNjEwMEQ0MUNEMDA1QkEyNjcgLyogRE9NVmFsaWRpdHlT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzM5MENBNTYwRkZDMTU3QjAwOTIxOTYyIC8qIE5v
dGlmaWNhdGlvbkNlbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzM5MENBNTgwRkZDMTU3QjAw
OTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNvbnRlbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc0
REEzNzEwMTNGM0Y3MDA3OTg3QUQgLyogUkdCQ29sb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NzREQTQ5MTAxM0Y0NjgwMDc5ODdBRCAvKiBKU1JHQkNvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzNzdDNENERjEwMTRFOUY2MDBCOUFFNDIgLyogUGxhY2Vob2xkZXJEb2N1bWVudC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xNzAyOCw2ICsxNzA4Myw5IEBACiAJCQkJMkVDRjdBRTIxMDE2MkI1ODAw
NDI3REU3IC8qIEVycm9yRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RURCMDNEMTAxNjg0
OTQwMEZFODExMyAvKiBET01PYmplY3RXaXRoU1ZHQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0U1NEZEMzgxMDE2RDlBNjAwOEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQkzMzUwM0M5QTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9u
UHJlc2VudGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMzUwM0NBNDEwMTc5QUQ3MDAzQjQ3RTEg
LyogSlNOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTMzNTAzQ0E2MTAxNzlBRDcw
MDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbkNlbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNzEz
Niw2ICsxNzE5NCw3IEBACiAJCQkJODUxMzZDQTgwQUVENjY1OTAwRjkwQTNEIC8qIHdlc3RSZXNp
emVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QTBDMDUxRkRFMDAxMzlG
NEYgLyogem9vbUluQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0IwQzA1
MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKKwkJCQkz
MzkwQ0E1NzBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBpbiBSZXNv
dXJjZXMgKi8sCiAJCQkJNDFFMUIxRDIwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2Vy
LmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNDFFMUIxRDUwRkY1OTg2OTAwNTc2QjNCIC8qIFNo
YXJlZFdvcmtlci5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCTE1Qzc3MDhDMTAwRDNDNkEwMDVC
QTI2NyAvKiBWYWxpZGl0eVN0YXRlLmlkbCBpbiBSZXNvdXJjZXMgKi8sCkBAIC0xOTA0Nyw2ICsx
OTEwNiw3IEBACiAJCQkJOTNGMTlCMDQwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRV
bmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5
QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMzkwQ0E1NTBGRkMxNTdC
MDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQx
RTFCMUQwMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0MUUxQjFEMzBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQxNUI3QzU3MEZGNTk4RTYwMDY3NzBGNyAvKiBKU0Fic3RyYWN0V29y
a2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTkwNjMsNiArMTkxMjMsMTAgQEAKIAkJ
CQkyRUNGN0FEQzEwMTYyQjM4MDA0MjdERTcgLyogSlNFcnJvckV2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJFQ0Y3QUUxMTAxNjJCNTgwMDQyN0RFNyAvKiBFcnJvckV2ZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDQUVGQ0FFMTAxNkNFNEEwMDQwRDM0RSAvKiBET01SR0JDb2xvci5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTMzNTAzQ0EzMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlm
aWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMzUwM0NBNTEwMTc5QUQ3MDAzQjQ3RTEg
LyogSlNOb3RpZmljYXRpb25DZW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzM1MDNDQzAx
MDE3OUMxQTAwM0I0N0UxIC8qIEpTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMzM1MDNDQzcxMDE3QTFCMTAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCShyZXZpc2lvbiA0NjI2OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVk
ZSAiTG9jYXRpb24uaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VQb3J0LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2
ZW50TGlzdGVuZXIuaCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNEZXNrdG9wTm90aWZp
Y2F0aW9uc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rl
c2t0b3BOb3RpZmljYXRpb25zQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEZXNrdG9wTm90aWZpY2F0aW9uc0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSlNDdXN0b21Wb2lkQ2Fs
bGJhY2suaCIKKyNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJKU05vdGlm
aWNhdGlvbi5oIgorI2luY2x1ZGUgIkpTTm90aWZpY2F0aW9uQ2VudGVyLmgiCisjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSBKU05vdGlm
aWNhdGlvbkNlbnRlcjo6cmVxdWVzdFBlcm1pc3Npb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBB
cmdMaXN0JiBhcmdzKQoreworICAgIC8vIFBlcm1pc3Npb24gcmVxdWVzdCBpcyBvbmx5IHZhbGlk
IGZyb20gcGFnZSBjb250ZXh0LgorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQg
PSBpbXBsKCktPmNvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKKworICAgIGlm
ICghYXJncy5hdCgwKS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVj
LCBUeXBlRXJyb3IpOworCisgICAgUGFzc1JlZlB0cjxKU0N1c3RvbVZvaWRDYWxsYmFjaz4gY2Fs
bGJhY2sgPSBKU0N1c3RvbVZvaWRDYWxsYmFjazo6Y3JlYXRlKGFyZ3MuYXQoMCkuZ2V0T2JqZWN0
KCksIHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmZyYW1lKCkpOworCisgICAgaW1w
bCgpLT5yZXF1ZXN0UGVybWlzc2lvbihjYWxsYmFjayk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Cit9CisKK0pTVmFsdWUgSlNOb3RpZmljYXRpb246OmFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KGltcGwoKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisKKyAgICBpZiAoUmVmUHRyPEpTRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIg
PSBnbG9iYWxPYmplY3QtPmZpbmRPckNyZWF0ZUpTRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDEpKSkK
KyAgICAgICAgaW1wbCgpLT5hZGRFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhl
YyksIGxpc3RlbmVyLnJlbGVhc2UoKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOworCisg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlNOb3RpZmljYXRpb246OnJl
bW92ZUV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQor
eworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2Jq
ZWN0KGltcGwoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIWdsb2JhbE9i
amVjdCkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBpZiAoSlNFdmVudExp
c3RlbmVyKiBsaXN0ZW5lciA9IGdsb2JhbE9iamVjdC0+ZmluZEpTRXZlbnRMaXN0ZW5lcihhcmdz
LmF0KDEpKSkKKyAgICAgICAgaW1wbCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCku
dG9TdHJpbmcoZXhlYyksIGxpc3RlbmVyLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CisK
KyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworCit9IC8vIG5hbWVzcGFjZQorCisjZW5k
aWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dFRhcmdldC5jcHAJKHJldmlzaW9uIDQ2MjY4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTEgQEAKICNpbmNsdWRl
ICJTaGFyZWRXb3JrZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisj
aW5jbHVkZSAiSlNOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKKyNl
bmRpZgorCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
MDksNiArMTE0LDExIEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEV2ZW50VGFyZ2UK
ICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgc2hhcmVkV29ya2VyKTsKICNlbmRpZgogCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgaWYgKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9u
ID0gdGFyZ2V0LT50b05vdGlmaWNhdGlvbigpKQorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBu
b3RpZmljYXRpb24pOworI2VuZGlmCisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4ganNOdWxsKCk7CiB9CkBAIC0xNDQsNiArMTU0LDEwIEBAIEV2ZW50VGFyZ2V0KiB0b0V2
ZW50VGFyZ2V0KEpTQzo6SlNWYWx1ZSAKICAgICBDT05WRVJUX1RPX0VWRU5UX1RBUkdFVChTaGFy
ZWRXb3JrZXIpCiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIENPTlZF
UlRfVE9fRVZFTlRfVEFSR0VUKE5vdGlmaWNhdGlvbikKKyNlbmRpZgorCiAgICAgcmV0dXJuIDA7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDQ2MjY4KQorKysgV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDEzIEBAIFNo
YXJlZFdvcmtlciogRXZlbnRUYXJnZXQ6OnRvU2hhcmVkV29ya2UKIH0KICNlbmRpZgogCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCitOb3RpZmljYXRpb24qIEV2ZW50VGFyZ2V0Ojp0b05vdGlm
aWNhdGlvbigpCit7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogI2lmbmRlZiBOREVCVUcK
IHZvaWQgZm9yYmlkRXZlbnREaXNwYXRjaCgpCiB7CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudFRh
cmdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgJKHJldmlzaW9u
IDQ2MjY4KQorKysgV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRXZlbnRMaXN0ZW5l
cjsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBOb2RlOworICAgIGNsYXNzIE5v
dGlmaWNhdGlvbjsKICAgICBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7CiAgICAgY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXI7CkBAIC03Niw2ICs3
NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgU2hhcmVkV29ya2Vy
KiB0b1NoYXJlZFdvcmtlcigpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
KyAgICAgICAgdmlydHVhbCBOb3RpZmljYXRpb24qIHRvTm90aWZpY2F0aW9uKCk7CisjZW5kaWYK
KwogICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkgPSAwOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJl
dmlzaW9uIDQ2MjY4KQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMyw2ICsxMzMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBleGNl
ZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUqLCBjb25zdCBTdHJpbmcmKSB7IH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgdmlydHVhbCBOb3RpZmljYXRpb25QcmVzZW50
ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyNlbmRpZgor
CiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNo
b29zZXI+KSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3Qg
Tm9kZSopIHsgfQpJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkNvbnRlbnRzLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiIAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYg
dXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywg
Tm90aWZpY2F0aW9uUHJlc2VudGVyKiBwcm92aWRlcikKKyAgICA6IEFjdGl2ZURPTU9iamVjdChj
b250ZXh0LCB0aGlzKQorICAgICwgbV9pc0hUTUwodHJ1ZSkKKyAgICAsIG1faXNTaG93aW5nKGZh
bHNlKQorICAgICwgbV9wcmVzZW50ZXIocHJvdmlkZXIpCit7CisgICAgaWYgKG1fcHJlc2VudGVy
LT5jaGVja1Blcm1pc3Npb24oY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSkgIT0gTm90aWZpY2F0
aW9uUHJlc2VudGVyOjpQRVJNSVNTSU9OX0FMTE9XRUQpIHsKKyAgICAgICAgZWMgPSBTRUNVUklU
WV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX25vdGlmaWNhdGlvblVSTCA9
IGNvbnRleHQtPmNvbXBsZXRlVVJMKHVybCk7CisgICAgaWYgKHVybC5pc0VtcHR5KCkgfHwgIW1f
bm90aWZpY2F0aW9uVVJMLmlzVmFsaWQoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNv
bnN0IE5vdGlmaWNhdGlvbkNvbnRlbnRzJiBjb250ZW50cywgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIE5vdGlmaWNhdGlvblByZXNlbnRlciogcHJv
dmlkZXIpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1faXNI
VE1MKGZhbHNlKQorICAgICwgbV9jb250ZW50cyhjb250ZW50cykKKyAgICAsIG1faXNTaG93aW5n
KGZhbHNlKQorICAgICwgbV9wcmVzZW50ZXIocHJvdmlkZXIpCit7CisgICAgaWYgKG1fcHJlc2Vu
dGVyLT5jaGVja1Blcm1pc3Npb24oY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSkgIT0gTm90aWZp
Y2F0aW9uUHJlc2VudGVyOjpQRVJNSVNTSU9OX0FMTE9XRUQpIHsKKyAgICAgICAgZWMgPSBTRUNV
UklUWV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBLVVJMIGljb24gPSBjb250
ZXh0LT5jb21wbGV0ZVVSTChjb250ZW50cy5pY29uKCkpOworICAgIGlmICghaWNvbi5pc0VtcHR5
KCkgJiYgIWljb24uaXNWYWxpZCgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KK30KKworTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKCkgCit7
CisgICAgbV9wcmVzZW50ZXItPm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCh0aGlzKTsKK30K
Kwordm9pZCBOb3RpZmljYXRpb246OnNob3coKSAKK3sKKyAgICAvLyBwcmV2ZW50IGRvdWJsZS1z
aG93aW5nCisgICAgaWYgKCFtX2lzU2hvd2luZykKKyAgICAgICAgbV9pc1Nob3dpbmcgPSBtX3By
ZXNlbnRlci0+c2hvdyh0aGlzKTsKK30KKwordm9pZCBOb3RpZmljYXRpb246OmNhbmNlbCgpIAor
eworICAgIGlmIChtX2lzU2hvd2luZykKKyAgICAgICAgbV9wcmVzZW50ZXItPmNhbmNlbCh0aGlz
KTsKK30KKworRXZlbnRMaXN0ZW5lciogTm90aWZpY2F0aW9uOjpvbmRpc3BsYXkoKSBjb25zdAor
eworICAgIHJldHVybiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKCJkaXNwbGF5Iik7Cit9CisK
K3ZvaWQgTm90aWZpY2F0aW9uOjpzZXRPbmRpc3BsYXkoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiBldmVudExpc3RlbmVyKQoreworICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoImRpc3Bs
YXkiLCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogTm90aWZpY2F0aW9uOjpv
bmVycm9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuZXJyb3JFdmVudCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpzZXRPbmVy
cm9yKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBldmVudExpc3Rl
bmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogTm90aWZpY2F0aW9uOjpvbmNsb3NlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xv
c2VFdmVudCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpzZXRPbmNsb3NlKFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZl
bnRMaXN0ZW5lciogTm90aWZpY2F0aW9uOjpnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdAoreworICAgIGNvbnN0IFJlZ2lzdGVyZWRF
dmVudExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMgPSBtX2V2ZW50TGlzdGVuZXJzOworICAgIHNp
emVfdCBzaXplID0gbGlzdGVuZXJzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgeworICAgICAgICBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgciA9
ICpsaXN0ZW5lcnNbaV07CisgICAgICAgIGlmIChyLmV2ZW50VHlwZSgpID09IGV2ZW50VHlwZSAm
JiByLmxpc3RlbmVyKCktPmlzQXR0cmlidXRlKCkpCisgICAgICAgICAgICByZXR1cm4gci5saXN0
ZW5lcigpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBOb3RpZmljYXRpb246OnNl
dEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpCit7CisgICAgY2xlYXJBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGV2ZW50VHlwZSk7CisgICAgaWYgKGxpc3RlbmVyKQorICAgICAgICBhZGRF
dmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIGZhbHNlKTsKK30KKwordm9pZCBOb3Rp
ZmljYXRpb246OmNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSkKK3sKKyAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lclZlY3RvciogbGlzdGVu
ZXJzID0gJm1fZXZlbnRMaXN0ZW5lcnM7CisgICAgc2l6ZV90IHNpemUgPSBsaXN0ZW5lcnMtPnNp
emUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBS
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgciA9ICpsaXN0ZW5lcnMtPmF0KGkpOworICAgICAgICBp
ZiAoci5ldmVudFR5cGUoKSAhPSBldmVudFR5cGUgfHwgIXIubGlzdGVuZXIoKS0+aXNBdHRyaWJ1
dGUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHIuc2V0UmVtb3ZlZCh0cnVl
KTsKKyAgICAgICAgbGlzdGVuZXJzLT5yZW1vdmUoaSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaERpc3BsYXlFdmVudCgpIAoreyAgIAor
ICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKCJkaXNwbGF5IiwgZmFsc2Us
IHRydWUpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZl
bnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7Cit9CisKK3ZvaWQgTm90aWZpY2F0
aW9uOjpkaXNwYXRjaEVycm9yRXZlbnQoKQoreyAgCisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9
IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LnJlbGVhc2Uo
KSwgZWMpOworICAgIEFTU0VSVCghZWMpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0
Y2hDbG9zZUV2ZW50KCkgCit7ICAgCisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LnJlbGVhc2UoKSwgZWMpOwor
ICAgIEFTU0VSVCghZWMpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6YWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQoreworICAgIFJlZlB0cjxSZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lcj4gcmVnaXN0ZXJlZExpc3RlbmVyID0gUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6
OmNyZWF0ZShldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICBtX2V2ZW50TGlz
dGVuZXJzLmFwcGVuZChyZWdpc3RlcmVkTGlzdGVuZXIpOworfQorCit2b2lkIE5vdGlmaWNhdGlv
bjo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK3sKKyAgICBzaXplX3Qgc2l6
ZSA9IG1fZXZlbnRMaXN0ZW5lcnMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CisgICAgICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByID0gKm1fZXZl
bnRMaXN0ZW5lcnNbaV07CisgICAgICAgIGlmIChyLmV2ZW50VHlwZSgpID09IGV2ZW50VHlwZSAm
JiByLmxpc3RlbmVyKCkgPT0gbGlzdGVuZXIgJiYgci51c2VDYXB0dXJlKCkgPT0gdXNlQ2FwdHVy
ZSkgeworICAgICAgICAgICAgci5zZXRSZW1vdmVkKHRydWUpOworICAgICAgICAgICAgbV9ldmVu
dExpc3RlbmVycy5yZW1vdmUoaSk7CisgICAgICAgICAgICByZXR1cm47IAorICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6aGFuZGxlRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4gZXZlbnQsIGJvb2wgdXNlQ2FwdHVyZSkKK3sKKyAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
clZlY3RvciBsaXN0ZW5lcnNDb3B5ID0gbV9ldmVudExpc3RlbmVyczsKKyAgICBzaXplX3Qgc2l6
ZSA9IGxpc3RlbmVyc0NvcHkuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7CisgICAgICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByID0gKmxpc3RlbmVy
c0NvcHlbaV07CisgICAgICAgIGlmIChyLmV2ZW50VHlwZSgpID09IGV2ZW50LT50eXBlKCkgJiYg
ci51c2VDYXB0dXJlKCkgPT0gdXNlQ2FwdHVyZSAmJiAhci5yZW1vdmVkKCkpCisgICAgICAgICAg
ICByLmxpc3RlbmVyKCktPmhhbmRsZUV2ZW50KGV2ZW50LmdldCgpKTsKKyAgICB9Cit9CisKK2Jv
b2wgTm90aWZpY2F0aW9uOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGluRXZlbnQs
IEV4Y2VwdGlvbkNvZGUmKQoreworICAgIFJlZlB0cjxFdmVudD4gZXZlbnQoaW5FdmVudCk7CisK
KyAgICBldmVudC0+c2V0RXZlbnRQaGFzZShFdmVudDo6QVRfVEFSR0VUKTsKKyAgICBldmVudC0+
c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKworICAgIGhhbmRsZUV2ZW50KGV2ZW50LmdldCgpLCB0
cnVlKTsKKyAgICBpZiAoIWV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSkgeworICAgICAgICBo
YW5kbGVFdmVudChldmVudC5nZXQoKSwgZmFsc2UpOworICAgIH0KKworICAgIHJldHVybiAhZXZl
bnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCkluZGV4OiBXZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTm90aWZpY2F0
aW9uX2ggIAorI2RlZmluZSBOb3RpZmljYXRpb25faAorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nSGFzaC5oIgorI2luY2x1ZGUgIkV2ZW50Lmgi
CisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJO
b3RpZmljYXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25Db250ZW50cy5o
IgorI2luY2x1ZGUgIlJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSA8d3RmL093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CisK
KyAgICBjbGFzcyBOb3RpZmljYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXQgeyAKKyAgICBwdWJs
aWM6CisgICAgICAgIHN0YXRpYyBOb3RpZmljYXRpb24qIGNyZWF0ZShjb25zdCBTdHJpbmcmIHVy
bCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIE5v
dGlmaWNhdGlvblByZXNlbnRlciogcHJvdmlkZXIpIHsgcmV0dXJuIG5ldyBOb3RpZmljYXRpb24o
dXJsLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpOyB9CisgICAgICAgIHN0YXRpYyBOb3RpZmljYXRp
b24qIGNyZWF0ZShjb25zdCBOb3RpZmljYXRpb25Db250ZW50cyYgY29udGVudHMsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRpb25Q
cmVzZW50ZXIqIHByb3ZpZGVyKSB7IHJldHVybiBuZXcgTm90aWZpY2F0aW9uKGNvbnRlbnRzLCBj
b250ZXh0LCBlYywgcHJvdmlkZXIpOyB9CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIH5Ob3Rp
ZmljYXRpb24oKTsKKworICAgICAgICB2b2lkIHNob3coKTsKKyAgICAgICAgdm9pZCBjYW5jZWwo
KTsKKyAgICAKKyAgICAgICAgYm9vbCBpc0hUTUwoKSB7IHJldHVybiBtX2lzSFRNTDsgfQorICAg
ICAgICBLVVJMIHVybCgpIHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uVVJMOyB9CisgICAgICAgIE5v
dGlmaWNhdGlvbkNvbnRlbnRzJiBjb250ZW50cygpIHsgcmV0dXJuIG1fY29udGVudHM7IH0KKwor
ICAgICAgICBFdmVudExpc3RlbmVyKiBvbmRpc3BsYXkoKSBjb25zdDsKKyAgICAgICAgdm9pZCBz
ZXRPbmRpc3BsYXkoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKTsKKyAg
ICAgICAgRXZlbnRMaXN0ZW5lciogb25lcnJvcigpIGNvbnN0OworICAgICAgICB2b2lkIHNldE9u
ZXJyb3IoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKTsKKyAgICAgICAg
RXZlbnRMaXN0ZW5lciogb25jbG9zZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldE9uY2xvc2Uo
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKTsKKyAgICAKKyAgICAgICAg
dXNpbmcgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+OjpyZWY7CisgICAgICAgIHVzaW5nIFJlZkNv
dW50ZWQ8Tm90aWZpY2F0aW9uPjo6ZGVyZWY7CisgICAgCisgICAgICAgIC8vIERpc3BhdGNoaW5n
IG9mIGV2ZW50cyBvbiB0aGUgbm90aWZpY2F0aW9uLiAgVGhlIHByZXNlbnRlciBzaG91bGQgY2Fs
bCB0aGVzZSB3aGVuIGV2ZW50cyBvY2N1ci4KKyAgICAgICAgdm9pZCBkaXNwYXRjaERpc3BsYXlF
dmVudCgpOworICAgICAgICB2b2lkIGRpc3BhdGNoRXJyb3JFdmVudCgpOworICAgICAgICB2b2lk
IGRpc3BhdGNoQ2xvc2VFdmVudCgpOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFj
ZQorICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiwg
RXZlbnRMaXN0ZW5lciosIGJvb2wpOworICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2aXJ0dWFsIE5v
dGlmaWNhdGlvbiogdG9Ob3RpZmljYXRpb24oKSB7IHJldHVybiB0aGlzOyB9CisgICAgICAKKyAg
ICBwcml2YXRlOgorICAgICAgICBOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRp
b25QcmVzZW50ZXIqIHByb3ZpZGVyKTsKKyAgICAgICAgTm90aWZpY2F0aW9uKGNvbnN0IE5vdGlm
aWNhdGlvbkNvbnRlbnRzJiBmaWVsZHMsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEV4Y2VwdGlvbkNvZGUmIGVjLCBOb3RpZmljYXRpb25QcmVzZW50ZXIqIHByb3ZpZGVyKTsKKwor
ICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAgdmlydHVhbCB2b2lkIHJl
ZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVu
dFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAKKyAgICAgICAgdm9pZCBoYW5kbGVFdmVudChQYXNz
UmVmUHRyPEV2ZW50PiBldmVudCwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICAgICAgRXZlbnRMaXN0
ZW5lciogZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmKSBjb25z
dDsKKyAgICAgICAgdm9pZCBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOworICAgICAgICB2b2lkIGNsZWFyQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmKTsKKworICAgICAgICBib29s
IG1faXNIVE1MOworICAgICAgICBLVVJMIG1fbm90aWZpY2F0aW9uVVJMOworICAgICAgICBOb3Rp
ZmljYXRpb25Db250ZW50cyBtX2NvbnRlbnRzOworCisgICAgICAgIGJvb2wgbV9pc1Nob3dpbmc7
CisKKyAgICAgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXJWZWN0b3IgbV9ldmVudExpc3RlbmVy
czsKKworICAgICAgICBOb3RpZmljYXRpb25QcmVzZW50ZXIqIG1fcHJlc2VudGVyOworICAgIH07
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJ
T05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uc19oCkluZGV4OiBXZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHRo
cmVhZHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9Tk9USUZJQ0FU
SU9OUworICAgIF0gTm90aWZpY2F0aW9uIHsKKyAgICAgICAgdm9pZCBzaG93KCk7CisgICAgICAg
IHZvaWQgY2FuY2VsKCk7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kaXNw
bGF5OworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOworICAgICAgICBh
dHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNsb3NlOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0
IGludGVyZmFjZQorICAgICAgICBbQ3VzdG9tXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9N
U3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
RXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHJl
bW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1
cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAg
ICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3Jl
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKKworI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCisjaW5jbHVkZSAiV29ya2Vy
Q29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05vdGlmaWNhdGlvbkNlbnRlcjo6
Tm90aWZpY2F0aW9uQ2VudGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlm
aWNhdGlvblByZXNlbnRlciogcHJlc2VudGVyKSAKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250
ZXh0LCB0aGlzKQorICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCisgICAg
LCBtX25vdGlmaWNhdGlvblByZXNlbnRlcihwcmVzZW50ZXIpIHt9CisKK2ludCBOb3RpZmljYXRp
b25DZW50ZXI6OmNoZWNrUGVybWlzc2lvbigpIAoreworICAgIHJldHVybiBtX25vdGlmaWNhdGlv
blByZXNlbnRlci0+Y2hlY2tQZXJtaXNzaW9uKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2Vj
dXJpdHlPcmlnaW4oKSk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uQ2VudGVyOjpyZXF1ZXN0UGVy
bWlzc2lvbihQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCit7CisgICAgbV9ub3Rp
ZmljYXRpb25QcmVzZW50ZXItPnJlcXVlc3RQZXJtaXNzaW9uKG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgY2FsbGJhY2spOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKSW5kZXg6IFdlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE5vdGlmaWNhdGlvbkNlbnRlcl9oCisjZGVmaW5lIE5vdGlmaWNh
dGlvbkNlbnRlcl9oCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJOb3Rp
ZmljYXRpb25Db250ZW50cy5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CisKKyAgICBjbGFzcyBOb3RpZmljYXRpb25DZW50ZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxOb3RpZmljYXRpb25DZW50ZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsg
CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50
ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRpb25Q
cmVzZW50ZXIqIHByZXNlbnRlcikgeyByZXR1cm4gYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbkNl
bnRlcihjb250ZXh0LCBwcmVzZW50ZXIpKTsgfQorICAgICAgICAKKyAgICAgICAgTm90aWZpY2F0
aW9uKiBjcmVhdGVIVE1MTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgVVJJLCBFeGNlcHRpb25D
b2RlJiBlYykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbjo6Y3Jl
YXRlKEtVUkwoVVJJKSwgY29udGV4dCgpLCBlYywgcHJlc2VudGVyKCkpOworICAgICAgICB9CisK
KyAgICAgICAgTm90aWZpY2F0aW9uKiBjcmVhdGVOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBp
Y29uVVJJLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIEV4Y2VwdGlv
bkNvZGUmIGVjKQorICAgICAgICB7CisgICAgICAgICAgICBOb3RpZmljYXRpb25Db250ZW50cyBj
b250ZW50cyhpY29uVVJJLCB0aXRsZSwgYm9keSk7CisgICAgICAgICAgICByZXR1cm4gTm90aWZp
Y2F0aW9uOjpjcmVhdGUoY29udGVudHMsIGNvbnRleHQoKSwgZWMsIHByZXNlbnRlcigpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KKyAgICAgICAgTm90aWZpY2F0
aW9uUHJlc2VudGVyKiBwcmVzZW50ZXIoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlvblBy
ZXNlbnRlcjsgfQorCisgICAgICAgIGludCBjaGVja1Blcm1pc3Npb24oKTsKKyAgICAgICAgdm9p
ZCByZXF1ZXN0UGVybWlzc2lvbihQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spOwor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgTm90aWZpY2F0aW9uQ2VudGVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBOb3RpZmljYXRpb25QcmVzZW50ZXIqKTsKKworICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgICAgIE5vdGlmaWNh
dGlvblByZXNlbnRlciogbV9ub3RpZmljYXRpb25QcmVzZW50ZXI7CisgICAgfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNl
bmRpZiAvLyBOb3RpZmljYXRpb25DZW50ZXJfaApJbmRleDogV2ViQ29yZS9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNlbnRlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK21vZHVsZSB0aHJlYWRzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlv
bmFsPU5PVElGSUNBVElPTlMKKyAgICBdIE5vdGlmaWNhdGlvbkNlbnRlciB7CisgICAgICAgTm90
aWZpY2F0aW9uIGNyZWF0ZUhUTUxOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIHVybCkgcmFpc2Vz
KEV4Y2VwdGlvbik7CisgICAgICAgTm90aWZpY2F0aW9uIGNyZWF0ZU5vdGlmaWNhdGlvbihpbiBE
T01TdHJpbmcgaWNvblVybCwgaW4gRE9NU3RyaW5nIHRpdGxlLCBpbiBET01TdHJpbmcgYm9keSkg
cmFpc2VzKEV4Y2VwdGlvbik7CisKKyAgICAgICBpbnQgY2hlY2tQZXJtaXNzaW9uKCk7CisgICAg
ICAgW0N1c3RvbV0gdm9pZCByZXF1ZXN0UGVybWlzc2lvbihpbiBWb2lkQ2FsbGJhY2sgY2FsbGJh
Y2spOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25Db250ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25Db250ZW50cy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNvbnRlbnRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IE5vdGlmaWNhdGlvbkNvbnRlbnRzX2gKKyNkZWZpbmUgTm90aWZpY2F0aW9uQ29udGVudHNfaAor
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAg
IGNsYXNzIE5vdGlmaWNhdGlvbkNvbnRlbnRzIHsgCisgICAgcHVibGljOgorICAgICAgICBOb3Rp
ZmljYXRpb25Db250ZW50cygpIHt9CisgICAgICAgIE5vdGlmaWNhdGlvbkNvbnRlbnRzKGNvbnN0
IFN0cmluZyYgaWNvblVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5
KSAKKyAgICAgICAgICAgIDogbV9pY29uKGljb25VcmwpCisgICAgICAgICAgICAsIG1fdGl0bGUo
dGl0bGUpCisgICAgICAgICAgICAsIG1fYm9keShib2R5KSB7fQorCisgICAgICAgIFN0cmluZyBp
Y29uKCkgY29uc3QgeyByZXR1cm4gbV9pY29uOyB9CisgICAgICAgIFN0cmluZyB0aXRsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KKyAgICAgICAgU3RyaW5nIGJvZHkoKSBjb25zdCB7IHJl
dHVybiBtX2JvZHk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFN0cmluZyBtX2ljb247Cisg
ICAgICAgIFN0cmluZyBtX3RpdGxlOworICAgICAgICBTdHJpbmcgbV9ib2R5OworICAgIH07CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05T
KQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uQ29udGVudHNfaApJbmRleDogV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvblByZXNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QcmVzZW50ZXIuaAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QcmVzZW50ZXIuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgTm90aWZpY2F0aW9uUHJlc2VudGVyX2gKKyNkZWZpbmUg
Tm90aWZpY2F0aW9uUHJlc2VudGVyX2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgTm90aWZpY2F0aW9uOworICAgIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOworICAgIGNsYXNzIFN0cmluZzsKKyAgICAKKyAgICBjbGFzcyBOb3Rp
ZmljYXRpb25QcmVzZW50ZXIgeworCisgICAgcHVibGljOgorICAgICAgICBlbnVtIFBlcm1pc3Np
b24geyAKKyAgICAgICAgICAgIFBFUk1JU1NJT05fQUxMT1dFRCwgICAgIC8vIFVzZXIgaGFzIGFs
bG93ZWQgbm90aWZpY2F0aW9ucworICAgICAgICAgICAgUEVSTUlTU0lPTl9OT1RfQUxMT1dFRCwg
Ly8gVXNlciBoYXMgbm90IHlldCBhbGxvd2VkCisgICAgICAgICAgICBQRVJNSVNTSU9OX0RFTklF
RCAgICAgICAvLyBVc2VyIGhhcyBleHBsaWN0bHkgZGVuaWVkIHBlcm1pc3Npb24KKyAgICAgICAg
fTsKKworICAgICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25QcmVzZW50ZXIoKSB7fQorCisgICAg
ICAgIC8vIFJlcXVlc3RzIHRoYXQgYSBub3RpZmljYXRpb24gYmUgc2hvd24uCisgICAgICAgIHZp
cnR1YWwgYm9vbCBzaG93KE5vdGlmaWNhdGlvbiogb2JqZWN0KSA9IDA7CisKKyAgICAgICAgLy8g
UmVxdWVzdHMgdGhhdCBhIG5vdGlmaWNhdGlvbiB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gc2hvd24g
YmUgY2FuY2VsZWQuCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoTm90aWZpY2F0aW9uKiBv
YmplY3QpID0gMDsKKworICAgICAgICAvLyBJbmZvcm1zIHRoZSBwcmVzZW50ZXIgdGhhdCBhIE5v
dGlmaWNhdGlvbiBvYmplY3QgaGFzIGJlZW4gZGVzdHJveWVkIAorICAgICAgICAvLyAoc3VjaCBh
cyBieSBhIHBhZ2UgdHJhbnNpdGlvbikuICBUaGUgcHJlc2VudGVyIG1heSBjb250aW51ZSBzaG93
aW5nCisgICAgICAgIC8vIHRoZSBub3RpZmljYXRpb24sIGJ1dCBtdXN0IG5vdCBhdHRlbXB0IHRv
IGNhbGwgdGhlIGV2ZW50IGhhbmRsZXJzLgorICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0
aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiogb2JqZWN0KSA9IDA7CisKKyAgICAgICAg
Ly8gUmVxdWVzdHMgdXNlciBwZXJtaXNzaW9uIHRvIHNob3cgZGVza3RvcCBub3RpZmljYXRpb25z
IGZyb20gYSBwYXJ0aWN1bGFyCisgICAgICAgIC8vIG9yaWdpbi4gIFRoZSBjYWxsYmFjayBwYXJh
bWV0ZXIgc2hvdWxkIGJlIHJ1biB3aGVuIHRoZSB1c2VyIGhhcworICAgICAgICAvLyBtYWRlIGEg
ZGVjaXNpb24uCisgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTZWN1cml0
eU9yaWdpbiogb3JpZ2luLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spID0gMDsK
KworICAgICAgICAvLyBDaGVja3MgdGhlIGN1cnJlbnQgbGV2ZWwgb2YgcGVybWlzc2lvbi4KKyAg
ICAgICAgdmlydHVhbCBQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihTZWN1cml0eU9yaWdpbiog
b3JpZ2luKSA9IDA7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBOb3RpZmljYXRpb25QcmVzZW50
ZXJfaApJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDQ2MjY4KQorKysgV2ViQ29yZS9wYWdlL0Nocm9t
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMyw2ICs0MDMsMTMgQEAgYm9vbCBDaHJvbWU6OnNl
dEN1cnNvcihQbGF0Zm9ybUN1cnNvckhhbgogICAgIHJldHVybiBtX2NsaWVudC0+c2V0Q3Vyc29y
KGN1cnNvcik7CiB9CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK05vdGlmaWNhdGlvblBy
ZXNlbnRlciogQ2hyb21lOjpub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NsaWVudC0+bm90aWZpY2F0aW9uUHJlc2VudGVyKCk7Cit9CisjZW5kaWYKKwogLy8g
LS0tLS0tLS0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKSW5kZXg6IFdlYkNvcmUv
cGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHJldmlz
aW9uIDQ2MjY4KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw2ICs0NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRSZWN0OwogICAg
IGNsYXNzIFBhZ2U7CiAgICAgY2xhc3MgU3RyaW5nOworI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQorICAgIGNsYXNzIE5vdGlmaWNhdGlvblByZXNlbnRlcjsKKyNlbmRpZgogCiAgICAgc3RydWN0
IEZyYW1lTG9hZFJlcXVlc3Q7CiAgICAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwpAQCAtMTI4LDYg
KzEzMSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZm9jdXNOU1ZpZXco
TlNWaWV3Kik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICBO
b3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0OyAKKyNl
bmRpZgorCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAgICBDaHJv
bWVDbGllbnQqIG1fY2xpZW50OwpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNDYyNjgp
CisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYg
KzYyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBHcmFwaGljc0xheWVyOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBjbGFzcyBOb3RpZmljYXRp
b25QcmVzZW50ZXI7CisjZW5kaWYKKwogICAgIGNsYXNzIENocm9tZUNsaWVudCB7CiAgICAgcHVi
bGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hyb21lRGVzdHJveWVkKCkgPSAwOwpAQCAtMTQz
LDYgKzE0NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
YXNoYm9hcmRSZWdpb25zQ2hhbmdlZCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKKyAgICAgICAgdmlydHVhbCBOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlv
blByZXNlbnRlcigpIGNvbnN0ID0gMDsKKyNlbmRpZgorCiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
b3B1bGF0ZVZpc2l0ZWRMaW5rcygpOwogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGN1c3Rv
bUhpZ2hsaWdodFJlY3QoTm9kZSosIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgRmxv
YXRSZWN0JiBsaW5lUmVjdCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gNDYyNjgpCisr
KyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzks
MTAgQEAKICNpbmNsdWRlICJET01BcHBsaWNhdGlvbkNhY2hlLmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgorI2Vu
ZGlmCisKIHVzaW5nIHN0ZDo6bWluOwogdXNpbmcgc3RkOjptYXg7CiAKQEAgLTQ1Myw2ICs0NTcs
MTAgQEAgdm9pZCBET01XaW5kb3c6OmNsZWFyKCkKICAgICAgICAgbV9hcHBsaWNhdGlvbkNhY2hl
LT5kaXNjb25uZWN0RnJhbWUoKTsKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGUgPSAwOwogI2VuZGlm
CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBtX25vdGlmaWNhdGlvbnMgPSAwOwor
I2VuZGlmCiB9CiAKIFNjcmVlbiogRE9NV2luZG93OjpzY3JlZW4oKSBjb25zdApAQCAtNTkyLDYg
KzYwMCwyOCBAQCBTdG9yYWdlKiBET01XaW5kb3c6OmxvY2FsU3RvcmFnZSgpIGNvbnN0CiB9CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorTm90aWZpY2F0aW9uQ2VudGVyKiBE
T01XaW5kb3c6OndlYmtpdE5vdGlmaWNhdGlvbnMoKSBjb25zdAoreworICAgIGlmIChtX25vdGlm
aWNhdGlvbnMpCisgICAgICAgIHJldHVybiBtX25vdGlmaWNhdGlvbnMuZ2V0KCk7CisKKyAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQp
CisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFn
ZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBOb3RpZmljYXRp
b25QcmVzZW50ZXIqIHByb3ZpZGVyID0gcGFnZS0+Y2hyb21lKCktPm5vdGlmaWNhdGlvblByZXNl
bnRlcigpOworICAgIGlmIChwcm92aWRlcikgCisgICAgICAgIG1fbm90aWZpY2F0aW9ucyA9IE5v
dGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKGRvY3VtZW50LCBwcm92aWRlcik7ICAgIAorICAgICAg
CisgICAgcmV0dXJuIG1fbm90aWZpY2F0aW9ucy5nZXQoKTsKK30KKyNlbmRpZgorCiB2b2lkIERP
TVdpbmRvdzo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlUG9ydCog
bWVzc2FnZVBvcnQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJj
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQpJbmRleDogV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aAkocmV2aXNpb24gNDYyNjgpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDYgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE1l
c3NhZ2VQb3J0OwogICAgIGNsYXNzIE5hdmlnYXRvcjsKICAgICBjbGFzcyBOb2RlOworICAgIGNs
YXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKICAgICBjbGFzcyBQb3N0TWVzc2FnZVRpbWVyOwogICAg
IGNsYXNzIFNjaGVkdWxlZEFjdGlvbjsKICAgICBjbGFzcyBTY3JlZW47CkBAIC0xOTksNiArMjAw
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRE9NQXBwbGljYXRpb25DYWNoZSog
YXBwbGljYXRpb25DYWNoZSgpIGNvbnN0OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKKyAgICAgICAgTm90aWZpY2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRpb25zKCkg
Y29uc3Q7CisjZW5kaWYKKwogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgTWVzc2FnZVBvcnQqLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2lu
ZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZVRp
bWVyRmlyZWQoUG9zdE1lc3NhZ2VUaW1lciopOwogCkBAIC00MjQsNiArNDI5LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAg
ICAgIG11dGFibGUgUmVmUHRyPERPTUFwcGxpY2F0aW9uQ2FjaGU+IG1fYXBwbGljYXRpb25DYWNo
ZTsKICNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICBtdXRhYmxlIFJl
ZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IG1fbm90aWZpY2F0aW9uczsKKyNlbmRpZgogCiAgICAg
ICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyVmVjdG9yIG1fZXZlbnRMaXN0ZW5lcnM7CiAgICAg
fTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiA0NjI2OCkKKysrIFdlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiArMTYzLDkgQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdG9yYWdlIHNlc3Npb25TdG9yYWdl
OwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU3RvcmFnZSBsb2NhbFN0b3JhZ2U7CiAjZW5k
aWYKKyNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTk9USUZJQ0FU
SU9OUworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm90aWZpY2F0aW9uQ2VudGVyIHdlYmtp
dE5vdGlmaWNhdGlvbnM7CisjZW5kaWYKIAogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW1Jl
cGxhY2VhYmxlXSBDb25zb2xlIGNvbnNvbGU7CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gNDYyNjgpCisrKyBX
ZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoV01MKQogICAgIGNsYXNzIFdNTFBhZ2VTdGF0ZTsK
ICNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIGNsYXNzIE5vdGlmaWNhdGlv
blByZXNlbnRlcjsKKyNlbmRpZgogCiAgICAgZW51bSBGaW5kRGlyZWN0aW9uIHsgRmluZERpcmVj
dGlvbkZvcndhcmQsIEZpbmREaXJlY3Rpb25CYWNrd2FyZCB9OwogCkBAIC0yNjMsNiArMjY2LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoV01MKQogICAgICAgICBPd25QdHI8
V01MUGFnZVN0YXRlPiBtX3dtbFBhZ2VTdGF0ZTsKICNlbmRpZgorCisjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCisgICAgICAgIE5vdGlmaWNhdGlvblByZXNlbnRlciogbV9ub3RpZmljYXRpb25Q
cmVzZW50ZXI7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA0NjI2OCkKKysrIFdlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsMTAg
QEAKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbkNlbnRlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV29ya2VyQ29u
dGV4dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBXb3JrZXJUaHJlYWQqIHRocmVhZCkKQEAgLTY1LDcgKzY5LDkgQEAgV29ya2VyQ29udGV4
dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJMJgogV29ya2VyQ29udGV4dDo6fldvcmtlckNvbnRl
eHQoKQogewogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90aHJlYWQtPnRocmVhZElE
KCkpOwotCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpICAKKyAgICBtX25vdGlmaWNhdGlvbnMu
Y2xlYXIoKTsKKyNlbmRpZgogICAgIG1fdGhyZWFkLT53b3JrZXJPYmplY3RQcm94eSgpLndvcmtl
ckNvbnRleHREZXN0cm95ZWQoKTsKIH0KIApAQCAtMzEwLDYgKzMxNiwxNSBAQCB2b2lkIFdvcmtl
ckNvbnRleHQ6OmltcG9ydFNjcmlwdHMoY29uc3QgCiAgICAgfQogfQogCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCitOb3RpZmljYXRpb25DZW50ZXIqIFdvcmtlckNvbnRleHQ6OndlYmtpdE5v
dGlmaWNhdGlvbnMoKSBjb25zdAoreworICAgIGlmICghbV9ub3RpZmljYXRpb25zKQorICAgICAg
ICBtX25vdGlmaWNhdGlvbnMgPSBOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZShzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIG1fdGhyZWFkLT5nZXROb3RpZmljYXRpb25QcmVzZW50ZXIoKSk7Cisg
ICAgcmV0dXJuIG1fbm90aWZpY2F0aW9ucy5nZXQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKSW5kZXg6IFdlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnRleHQuaAkocmV2aXNpb24gNDYyNjgpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorICAgIGNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKICAgICBjbGFzcyBTY2hl
ZHVsZWRBY3Rpb247CiAgICAgY2xhc3MgV29ya2VyTG9jYXRpb247CiAgICAgY2xhc3MgV29ya2Vy
TmF2aWdhdG9yOwpAQCAtMTE0LDYgKzExNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2UoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxNZXNz
YWdlUG9ydD4pOwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgICAgIE5vdGlmaWNh
dGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0aW9ucygpIGNvbnN0OworI2VuZGlmCisKICAgICAg
ICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCBmb3IgR0MgbWFya2luZy4gU2VlIEpTV29ya2Vy
Q29udGV4dDo6bWFyaygpIGluCiAgICAgICAgIC8vIEpTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAu
CiAgICAgICAgIFdvcmtlck5hdmlnYXRvciogb3B0aW9uYWxOYXZpZ2F0b3IoKSBjb25zdCB7IHJl
dHVybiBtX25hdmlnYXRvci5nZXQoKTsgfQpAQCAtMTQ2LDYgKzE1MSw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25tZXNzYWdlTGlzdGVu
ZXI7CiAgICAgICAgIEV2ZW50TGlzdGVuZXJzTWFwIG1fZXZlbnRMaXN0ZW5lcnM7CiAKKyNpZiBF
TkFCTEVfTk9USUZJQ0FUSU9OUworICAgICAgICBtdXRhYmxlIFJlZlB0cjxOb3RpZmljYXRpb25D
ZW50ZXI+IG1fbm90aWZpY2F0aW9uczsKKyNlbmRpZgogICAgICAgICBib29sIG1fY2xvc2luZzsK
ICAgICB9OwogCkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCShyZXZpc2lvbiA0NjI2
OCkKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNzQsNiArNzQsMTAgQEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICBib29sZWFuIGRpc3Bh
dGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQogICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9u
KTsKIAorI2lmIGRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklD
QVRJT05TCisgICAgICAgIC8vIE5vdGlmaWNhdGlvbiBpbnRlcmZhY2UKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIE5vdGlmaWNhdGlvbkNlbnRlciB3ZWJraXROb3RpZmljYXRpb25zOworI2Vu
ZGlmCiAKICAgICAgICAgLy8gQ29uc3RydWN0b3JzCiAgICAgICAgIGF0dHJpYnV0ZSBNZXNzYWdl
RXZlbnRDb25zdHJ1Y3RvciBNZXNzYWdlRXZlbnQ7CkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5o
CShyZXZpc2lvbiA0NjI2OCkKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
Y2xhc3MgS1VSTDsKKyAgICBjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXI7CiAgICAgY2xhc3Mg
U3RyaW5nOwogICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CiAgICAgY2xhc3MgV29ya2VyTG9hZGVy
UHJveHk7CkBAIC01Niw2ICs1NywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdv
cmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29y
a2VyTG9hZGVyUHJveHk7IH0KICAgICAgICAgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVj
dFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJPYmplY3RQcm94eTsgfQogCisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCisgICAgICAgIE5vdGlmaWNhdGlvblByZXNlbnRlciogZ2V0Tm90
aWZpY2F0aW9uUHJlc2VudGVyKCkgeyByZXR1cm4gbV9ub3RpZmljYXRpb25QcmVzZW50ZXI7IH0K
KyAgICAgICAgdm9pZCBzZXROb3RpZmljYXRpb25QcmVzZW50ZXIoTm90aWZpY2F0aW9uUHJlc2Vu
dGVyKiBwcmVzZW50ZXIpIHsgbV9ub3RpZmljYXRpb25QcmVzZW50ZXIgPSBwcmVzZW50ZXI7IH0K
KyNlbmRpZgorCiAgICAgcHJpdmF0ZToKICAgICAgICAgV29ya2VyVGhyZWFkKGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3Jr
ZXJMb2FkZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5Jik7CiAKQEAgLTcxLDYgKzc3LDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgTXV0ZXggbV90aHJlYWRDcmVhdGlvbk11dGV4
OwogCiAgICAgICAgIE93blB0cjxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4gbV9zdGFydHVwRGF0
YTsKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICBOb3RpZmljYXRpb25QcmVz
ZW50ZXIqIG1fbm90aWZpY2F0aW9uUHJlc2VudGVyOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ2MjcyKQorKysgV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0wNy0yMyAgSm9o
biBHcmVnZyAgPGpvaG5ueWdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBEZXNrdG9wIE5vdGlmaWNhdGlvbnMgQVBJCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTY0MworCisgICAgICAg
IEFkZHMgRU5BQkxFX05PVElGSUNBVElPTiBmbGFnLgorCisgICAgICAgICogQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMDktMDctMjAgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCklu
ZGV4OiBXZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcJKHJldmlzaW9uIDQ2MjY4KQorKysgV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBFTkFC
TEVfRklMVEVSUyA9IDsKIEVOQUJMRV9HRU9MT0NBVElPTiA9IDsKIEVOQUJMRV9JQ09OREFUQUJB
U0UgPSBFTkFCTEVfSUNPTkRBVEFCQVNFOwogRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIgPSBF
TkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUjsKK0VOQUJMRV9OT1RJRklDQVRJT05TID0gOwogRU5B
QkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyA9IEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNB
VElPTlM7CiBFTkFCTEVfUlVCWSA9IEVOQUJMRV9SVUJZOwogRU5BQkxFX1NIQVJFRF9XT1JLRVJT
ID0gOwpAQCAtNTcsNCArNTgsNCBAQCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwog
RU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsK
IAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFO
TkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVO
QUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04p
ICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChF
TkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9T
SEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVO
QUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFC
TEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19V
U0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV01MKSAk
KEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJF
X0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FH
SU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RPTV9T
VE9SQUdFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVf
SUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9OT1RJ
RklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1JV
QlkpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19B
TklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJ
TkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkg
JChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAk
KEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9Y
U0xUKTsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93
aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA0NjI3MikKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMDktMDctMjMgIEpvaG4gR3JlZ2cgIDxq
b2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRGVza3RvcCBOb3RpZmljYXRpb25zIEFQSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2NDMKKworICAgICAgICBBZGRzIHRlc3Qg
aG9va3MgZm9yIG5vdGlmaWNhdGlvbiBmZWF0dXJlcyB0byBXZWJDb3JlU3VwcG9ydCBmb3IKKyAg
ICAgICAgdXNlIGluIER1bXBSZW5kZXJUcmVlLgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2Vi
RGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5pZGw6IEFkZGVkLgorICAgICAgICAqIEludGVy
ZmFjZXMvSVdlYlVJRGVsZWdhdGUuaWRsOgorICAgICAgICAqIEludGVyZmFjZXMvV2ViS2l0Lmlk
bDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViQ2hyb21lQ2xpZW50OjpXZWJDaHJvbWVDbGllbnQpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50Ojpub3Rp
ZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BO
b3RpZmljYXRpb25zRGVsZWdhdGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKE5vdGlmaWNhdGlvbkNP
TVdyYXBwZXI6OmNyZWF0ZSk6CisgICAgICAgIChOb3RpZmljYXRpb25DT01XcmFwcGVyOjpOb3Rp
ZmljYXRpb25DT01XcmFwcGVyKToKKyAgICAgICAgKE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6OlF1
ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6OkFkZFJlZik6
CisgICAgICAgIChOb3RpZmljYXRpb25DT01XcmFwcGVyOjpSZWxlYXNlKToKKyAgICAgICAgKE5v
dGlmaWNhdGlvbkNPTVdyYXBwZXI6OmlzSFRNTCk6CisgICAgICAgIChOb3RpZmljYXRpb25DT01X
cmFwcGVyOjpjb250ZW50c1VSTCk6CisgICAgICAgIChOb3RpZmljYXRpb25DT01XcmFwcGVyOjpp
Y29uVVJMKToKKyAgICAgICAgKE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6OnRpdGxlKToKKyAgICAg
ICAgKE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6OnRleHQpOgorICAgICAgICAoTm90aWZpY2F0aW9u
Q09NV3JhcHBlcjo6bm90aWZ5RGlzcGxheSk6CisgICAgICAgIChOb3RpZmljYXRpb25DT01XcmFw
cGVyOjpub3RpZnlFcnJvcik6CisgICAgICAgIChOb3RpZmljYXRpb25DT01XcmFwcGVyOjpub3Rp
ZnlDbG9zZSk6CisgICAgICAgIChXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOjpXZWJE
ZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlKToKKyAgICAgICAgKFdlYkRlc2t0b3BOb3RpZmlj
YXRpb25zRGVsZWdhdGU6OnNob3cpOgorICAgICAgICAoV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNE
ZWxlZ2F0ZTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdh
dGU6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCk6CisgICAgICAgIChXZWJEZXNrdG9wTm90
aWZpY2F0aW9uc0RlbGVnYXRlOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJEZXNr
dG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOjpjaGVja1Blcm1pc3Npb24pOgorICAgICAgICAoV2Vi
RGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZTo6bm90aWZpY2F0aW9uRGVsZWdhdGUpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaDog
QWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRGVsZWdhdGUuaDoK
KyAgICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpkZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVn
YXRlKToKKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL0ludGVyZmFjZXMudmNwcm9qOgorICAgICAg
ICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJvajoKKwogMjAwOS0wNy0yMiAgVGFrZXNoaSBZ
b3NoaW5vICA8dHlvc2hpbm9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KSW5kZXg6IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRGVza3RvcE5vdGlmaWNh
dGlvbnNEZWxlZ2F0ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lX
ZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYktp
dC93aW4vSW50ZXJmYWNlcy9JV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5pZGwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBET19OT19JTVBPUlRTCitpbXBvcnQg
Im9haWRsLmlkbCI7CitpbXBvcnQgIm9jaWRsLmlkbCI7CisjZW5kaWYKKworLyohCisgICAgQGNh
dGVnb3J5IFdlYkRlc2t0b3BOb3RpZmljYXRpb24KKyAgICBAZGlzY3Vzc2lvbiBBIGNsYXNzIHRo
YXQgcmVwcmVzZW50cyBhIG5vdGlmaWNhdGlvbiBiZWluZyBzaG93bgorICAgIG9uIHRoZSB1c2Vy
J3MgZGVza3RvcC4gIEl0IHByb3ZpZGVzIHRoZSBjb250ZW50cyBvZiB0aGUgbm90aWZpY2F0aW9u
CisgICAgYW5kIHJlY2VpdmVzIGV2ZW50cyByZWxhdGVkIHRvIHRoZSBkaXNwbGF5LgorICAgIEBp
bnRlcmZhY2UgTlNPYmplY3QgKFdlYkRlc2t0b3BOb3RpZmljYXRpb25Qcm92aWRlcikKKyovCitb
CisgICAgb2JqZWN0LAorICAgIG9sZWF1dG9tYXRpb24sCisgICAgdXVpZCgwQTBBQUZBOC1DNjk4
LTRjZmYtQkQyOC0zOTYxNDYyMkVFQTQpLAorICAgIHBvaW50ZXJfZGVmYXVsdCh1bmlxdWUpCitd
CitpbnRlcmZhY2UgSVdlYkRlc2t0b3BOb3RpZmljYXRpb24gOiBJVW5rbm93bgoreworICAgIEhS
RVNVTFQgaXNIVE1MKFtvdXQsIHJldHZhbF0gQk9PTCogcmVzdWx0KTsKKyAgICBIUkVTVUxUIGNv
bnRlbnRzVVJMKFtvdXQsIHJldHZhbF0gQlNUUiogcmVzdWx0KTsKKyAgICBIUkVTVUxUIGljb25V
UkwoW291dCwgcmV0dmFsXSBCU1RSKiByZXN1bHQpOworICAgIEhSRVNVTFQgdGl0bGUoW291dCwg
cmV0dmFsXSBCU1RSKiByZXN1bHQpOworICAgIEhSRVNVTFQgdGV4dChbb3V0LCByZXR2YWxdIEJT
VFIqIHJlc3VsdCk7CisKKyAgICBIUkVTVUxUIG5vdGlmeURpc3BsYXkoKTsKKyAgICBIUkVTVUxU
IG5vdGlmeUVycm9yKCk7CisgICAgSFJFU1VMVCBub3RpZnlDbG9zZShbaW5dIEJPT0wgeHBsaWNp
dCk7Cit9CisKKy8qIQorICAgIEBjYXRlZ29yeSBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVn
YXRlCisgICAgQGRpc2N1c3Npb24gQSBjbGFzcyB0aGF0IGltcGxlbWVudHMgV2ViRGVza3RvcE5v
dGlmaWNhdGlvblByb3ZpZGVyIHByb3ZpZGVzCisgICAgbWV0aG9kcyB0aGF0IG1heSBiZSB1c2Vk
IGJ5IEphdmFzY3JpcHQgdG8gZGlzcGxheSBub3RpZmljYXRpb25zICgidG9hc3RzIikKKyAgICBv
biB0aGUgdXNlcidzIGRlc2t0b3AuCisgICAgQGludGVyZmFjZSBOU09iamVjdCAoV2ViRGVza3Rv
cE5vdGlmaWNhdGlvblByb3ZpZGVyKQorKi8KK1sKKyAgICBvYmplY3QsCisgICAgb2xlYXV0b21h
dGlvbiwKKyAgICB1dWlkKDA5REEwNzNFLTM4QjMtNDY2YS05ODI4LUIyOTE1RkREMkVDQiksCisg
ICAgcG9pbnRlcl9kZWZhdWx0KHVuaXF1ZSkKK10KKworaW50ZXJmYWNlIElXZWJEZXNrdG9wTm90
aWZpY2F0aW9uc0RlbGVnYXRlIDogSVVua25vd24KK3sKKyAgICAvKiEKKyAgICAgICAgQG1ldGhv
ZCBzaG93RGVza3RvcE5vdGlmaWNhdGlvbjoKKyAgICAgICAgQGFic3RyYWN0IFNob3cgYSBub3Rp
ZmljYXRpb24uCisgICAgICAgIEBwYXJhbSBub3RpZmljYXRpb24gVGhlIE5vdGlmaWNhdGlvbiB0
byBiZSBzaG93bi4KKyAgICAqLworICAgIEhSRVNVTFQgc2hvd0Rlc2t0b3BOb3RpZmljYXRpb24o
W2luXSBJV2ViRGVza3RvcE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKTsKKworICAgIC8qIQor
ICAgICAgICBAbWV0aG9kIGNhbmNlbERlc2t0b3BOb3RpZmljYXRpb246CisgICAgICAgIEBhYnN0
cmFjdCBDYW5jZWwgc2hvd2luZyBhIG5vdGlmaWNhdGlvbiAob3IgdGFrZSBpdCBkb3duIGlmIGl0
J3Mgc2hvd24pLgorICAgICAgICBAcGFyYW0gbm90aWZpY2F0aW9uIFRoZSBOb3RpZmljYXRpb24g
dG8gYmUgY2FuY2VsZWQuCisgICAgKi8KKyAgICBIUkVTVUxUIGNhbmNlbERlc2t0b3BOb3RpZmlj
YXRpb24oW2luXSBJV2ViRGVza3RvcE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKTsKKworICAg
IC8qIQorICAgICAgICBAbWV0aG9kIG5vdGlmaWNhdGlvbkRlc3Ryb3llZDoKKyAgICAgICAgQGFi
c3RyYWN0IE5vdGlmeSB0aGUgcHJlc2VudGVyIHRoYXQgdGhlIG9iamVjdCBoYXMgYmVlbiBkZXN0
cm95ZWQuICBUaGUKKyAgICAgICAgbm90aWZpY2F0aW9uIG5lZWQgbm90IGJlIHVuLXNob3duLCBi
dXQgZXZlbnRzIHNob3VsZCBub3QgYmUgaW52b2tlZC4KKyAgICAgICAgQHBhcmFtIG5vdGlmaWNh
dGlvbiBUaGUgTm90aWZpY2F0aW9uIHRoYXQgd2FzIGRlc3Ryb3llZC4KKyAgICAqLworICAgIEhS
RVNVTFQgbm90aWZpY2F0aW9uRGVzdHJveWVkKFtpbl0gSVdlYkRlc2t0b3BOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbik7CisKKyAgICAvKiEKKyAgICAgICAgQG1ldGhvZCBjaGVja05vdGlmaWNh
dGlvblBlcm1pc3Npb246CisgICAgICAgIEBhYnN0cmFjdCBTZWUgaWYgdGhlIG9yaWdpbiBjb250
ZXh0IGlzIGFsbG93ZWQgdG8gc2hvdyBub3RpZmljYXRpb25zLgorICAgICAgICBAcGFyYW0gb3Jp
Z2luIFRoZSBvcmlnaW4gdG8gYmUgY2hlY2tlZC4KKyAgICAgICAgQHBhcmFtIHJlc3VsdCBBIHZh
bHVlIGZyb20gV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI6OlBlcm1pc3Npb24gZW51bS4K
KyAgICAqLworICAgIEhSRVNVTFQgY2hlY2tOb3RpZmljYXRpb25QZXJtaXNzaW9uKFtpbl0gQlNU
UiBvcmlnaW4sIFtvdXQsIHJldHZhbF0gaW50KiByZXN1bHQpOworCisgICAgLyohCisgICAgICAg
IEBtZXRob2QgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb246CisgICAgICAgIEBhYnN0cmFj
dCBSZXF1ZXN0IHBlcm1pc3Npb24gdG8gc2hvdyBub3RpZmljYXRpb25zIG9uIGEgZ2l2ZW4gb3Jp
Z2luLgorICAgICAgICBAcGFyYW0gb3JpZ2luIFRoZSBvcmlnaW4gdG8gYmUgcmVxdWVzdGVkLgor
ICAgICovCisgICAgSFJFU1VMVCByZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbihbaW5dIEJT
VFIgb3JpZ2luKTsKK30KSW5kZXg6IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVUlEZWxlZ2F0
ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJVSURlbGVnYXRl
LmlkbAkocmV2aXNpb24gNDYyNjgpCisrKyBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlVJRGVs
ZWdhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC03NTUsNCArNzU1LDYgQEAgaW50ZXJmYWNlIElX
ZWJVSURlbGVnYXRlIDogSVVua25vd24KICAgICBIUkVTVUxUIHBhaW50Q3VzdG9tU2Nyb2xsYmFy
KFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gSERDIGhEQywgW2luXSBSRUNUIHJlY3QsIFtp
bl0gV2ViU2Nyb2xsQmFyQ29udHJvbFNpemUgc2l6ZSwgW2luXSBXZWJTY3JvbGxiYXJDb250cm9s
U3RhdGUgc3RhdGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luXSBXZWJT
Y3JvbGxiYXJDb250cm9sUGFydCBwcmVzc2VkUGFydCwgW2luXSBCT09MIHZlcnRpY2FsLCBbaW5d
IGZsb2F0IHZhbHVlLCBbaW5dIGZsb2F0IHByb3BvcnRpb24sIFtpbl0gV2ViU2Nyb2xsYmFyQ29u
dHJvbFBhcnRNYXNrIHBhcnRzKTsKICAgICBIUkVTVUxUIHBhaW50Q3VzdG9tU2Nyb2xsQ29ybmVy
KFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gSERDIGhEQywgW2luXSBSRUNUIHJlY3QpOwor
CisgICAgSFJFU1VMVCBkZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlKFtvdXQsIHJldHZhbF0g
SVdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUqKiByZXN1bHQpOwogfQpJbmRleDogV2Vi
S2l0L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9J
bnRlcmZhY2VzL1dlYktpdC5pZGwJKHJldmlzaW9uIDQ2MjY4KQorKysgV2ViS2l0L3dpbi9JbnRl
cmZhY2VzL1dlYktpdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAgaW1wb3J0
ICJvY2lkbC5pZGwiOwogI2luY2x1ZGUgIklXZWJDb3JlU3RhdGlzdGljcy5pZGwiCiAjaW5jbHVk
ZSAiSVdlYkRhdGFTb3VyY2UuaWRsIgogI2luY2x1ZGUgIklXZWJEYXRhYmFzZU1hbmFnZXIuaWRs
IgorI2luY2x1ZGUgIklXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmlkbCIKICNpbmNs
dWRlICJJV2ViRG9jdW1lbnQuaWRsIgogI2luY2x1ZGUgIklXZWJEb3dubG9hZC5pZGwiCiAjaW5j
bHVkZSAiSVdlYkVkaXRpbmdEZWxlZ2F0ZS5pZGwiCkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiA0NjI2OCkKKysrIFdlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViSGlz
dG9yeS5oIgogI2luY2x1ZGUgIldlYk11dGFibGVVUkxSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2Vi
RGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIldlYlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDApCkBA
IC01OCw2ICs1OSw5IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4RmlsZVBhdGhzTGlzdFNpemUK
IAogV2ViQ2hyb21lQ2xpZW50OjpXZWJDaHJvbWVDbGllbnQoV2ViVmlldyogd2ViVmlldykKICAg
ICA6IG1fd2ViVmlldyh3ZWJWaWV3KQorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgICwg
bV9ub3RpZmljYXRpb25zRGVsZWdhdGUobmV3IFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdh
dGUod2ViVmlldykpCisjZW5kaWYKIHsKIH0KIApJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiA0NjI2OCkKKysrIFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDgg
KzI5LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0RpcmVjdGlvbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIGNsYXNzIFdlYlZpZXc7CitjbGFzcyBXZWJEZXNrdG9w
Tm90aWZpY2F0aW9uc0RlbGVnYXRlOwogCiBpbnRlcmZhY2UgSVdlYlVJRGVsZWdhdGU7CiAKQEAg
LTEyNyw4ICsxMjksMTYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RHZW9s
b2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xv
Y2F0aW9uKik7CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3Qg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXIq
PihtX25vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5nZXQoKSk7IH0KKyNlbmRpZgorCiBwcml2YXRlOgog
ICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZT4gdWlEZWxlZ2F0ZSgpOwogCiAgICAgV2ViVmlldyog
bV93ZWJWaWV3OworCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgT3duUHRyPFdlYkRl
c2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU+IG1fbm90aWZpY2F0aW9uc0RlbGVnYXRlOworI2Vu
ZGlmCiB9OwpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZp
Y2F0aW9uc0RlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRl
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oIgorI2luY2x1ZGUgIldl
YlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQlN0cmluZy5oPgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCitjbGFzcyBOb3RpZmljYXRpb25DT01XcmFwcGVyIDogcHVibGljIElX
ZWJEZXNrdG9wTm90aWZpY2F0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTm90aWZpY2F0aW9u
Q09NV3JhcHBlciogY3JlYXRlKE5vdGlmaWNhdGlvbiogaW5uZXIpIHsgcmV0dXJuIG5ldyBOb3Rp
ZmljYXRpb25DT01XcmFwcGVyKGlubmVyKTsgfQorICAgCisgICAgLy8gSVVua25vd24KKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJp
aWQsIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZ
UEUgQWRkUmVmKCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNl
KCk7CisKKyAgICAvLyBJV2ViRGVza3RvcE5vdGlmaWNhdGlvbgorICAgIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgaXNIVE1MKEJPT0wqIHJlc3VsdCk7CisgICAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBjb250ZW50c1VSTChCU1RSKiByZXN1bHQpOworICAgIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgaWNvblVSTChCU1RSKiByZXN1bHQpOworICAgIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgdGl0bGUoQlNUUiogcmVzdWx0KTsKKyAgICBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHRleHQoQlNUUiogcmVzdWx0KTsKKyAgICBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vdGlm
eURpc3BsYXkoKTsKKyAgICBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vdGlmeUVycm9yKCk7
CisgICAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub3RpZnlDbG9zZShCT09MIHhwbGljaXQp
OworCitwcml2YXRlOgorICAgIE5vdGlmaWNhdGlvbkNPTVdyYXBwZXIoTm90aWZpY2F0aW9uKiBp
bm5lcikgOiBtX3JlZkNvdW50KDEpLCBtX2lubmVyKGlubmVyKSB7fQorCisgICAgaW50IG1fcmVm
Q291bnQ7CisgICAgTm90aWZpY2F0aW9uKiBtX2lubmVyOworfTsKKworSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBOb3RpZmljYXRpb25DT01XcmFwcGVyOjpRdWVyeUludGVyZmFjZShSRUZJSUQg
cmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK3sKKyAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAo
SXNFcXVhbEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkKKyAgICAgICAgKnBwdk9iamVjdCA9IHN0
YXRpY19jYXN0PE5vdGlmaWNhdGlvbkNPTVdyYXBwZXIqPih0aGlzKTsKKyAgICBlbHNlIGlmIChJ
c0VxdWFsR1VJRChyaWlkLCBJSURfSVdlYkRlc2t0b3BOb3RpZmljYXRpb24pKQorICAgICAgICAq
cHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uQ09NV3JhcHBlcio+KHRoaXMpOwor
ICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CisKKyAgICBBZGRSZWYoKTsK
KyAgICByZXR1cm4gU19PSzsKK30KKworVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgTm90aWZpY2F0
aW9uQ09NV3JhcHBlcjo6QWRkUmVmKCkKK3sgCisgICAgcmV0dXJuICsrbV9yZWZDb3VudDsgCit9
CisKK1VMT05HIFNURE1FVEhPRENBTExUWVBFIE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6OlJlbGVh
c2UoKQoreworICAgIFVMT05HIG5ld1JlZiA9IC0tbV9yZWZDb3VudDsKKyAgICBpZiAoIW5ld1Jl
ZikKKyAgICAgICAgZGVsZXRlKHRoaXMpOworICAgIHJldHVybiBuZXdSZWY7Cit9CisKK0hSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgTm90aWZpY2F0aW9uQ09NV3JhcHBlcjo6aXNIVE1MKEJPT0wq
IHJlc3VsdCkKK3sKKyAgICAqcmVzdWx0ID0gbV9pbm5lci0+aXNIVE1MKCk7CisgICAgcmV0dXJu
IFNfT0s7Cit9CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgTm90aWZpY2F0aW9uQ09NV3Jh
cHBlcjo6Y29udGVudHNVUkwoQlNUUiogcmVzdWx0KQoreworICAgICpyZXN1bHQgPSBCU3RyaW5n
KG1faW5uZXItPnVybCgpKS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgTm90aWZpY2F0aW9uQ09NV3JhcHBlcjo6aWNvblVSTChCU1RS
KiByZXN1bHQpCit7CisgICAgKnJlc3VsdCA9IEJTdHJpbmcobV9pbm5lci0+Y29udGVudHMoKS5p
Y29uKCkpLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBOb3RpZmljYXRpb25DT01XcmFwcGVyOjp0aXRsZShCU1RSKiByZXN1bHQpCit7
CisgICAgKnJlc3VsdCA9IEJTdHJpbmcobV9pbm5lci0+Y29udGVudHMoKS50aXRsZSgpKS5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Tm90aWZpY2F0aW9uQ09NV3JhcHBlcjo6dGV4dChCU1RSKiByZXN1bHQpCit7CisgICAgKnJlc3Vs
dCA9IEJTdHJpbmcobV9pbm5lci0+Y29udGVudHMoKS5ib2R5KCkpLnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBOb3RpZmljYXRpb25D
T01XcmFwcGVyOjpub3RpZnlEaXNwbGF5KCkKK3sKKyAgICBtX2lubmVyLT5kaXNwYXRjaERpc3Bs
YXlFdmVudCgpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6Om5vdGlmeUVycm9yKCkKK3sKKyAgICBtX2lubmVy
LT5kaXNwYXRjaEVycm9yRXZlbnQoKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBOb3RpZmljYXRpb25DT01XcmFwcGVyOjpub3RpZnlDbG9zZShCT09M
IHhwbGljaXQpCit7CisgICAgbV9pbm5lci0+ZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CisgICAgcmV0
dXJuIFNfT0s7Cit9CisKK1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU6OldlYkRlc2t0
b3BOb3RpZmljYXRpb25zRGVsZWdhdGUoV2ViVmlldyogd2ViVmlldykKKyAgICA6IG1fd2ViVmll
dyh3ZWJWaWV3KQoreworfQorCitib29sIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU6
OnNob3coTm90aWZpY2F0aW9uKiBvYmplY3QpCit7CisgICAgbm90aWZpY2F0aW9uRGVsZWdhdGUo
KS0+c2hvd0Rlc2t0b3BOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uQ09NV3JhcHBlcjo6Y3JlYXRl
KG9iamVjdCkpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYkRlc2t0b3BOb3RpZmlj
YXRpb25zRGVsZWdhdGU6OmNhbmNlbChOb3RpZmljYXRpb24qIG9iamVjdCkKK3sKKyAgICBub3Rp
ZmljYXRpb25EZWxlZ2F0ZSgpLT5jYW5jZWxEZXNrdG9wTm90aWZpY2F0aW9uKE5vdGlmaWNhdGlv
bkNPTVdyYXBwZXI6OmNyZWF0ZShvYmplY3QpKTsKK30KKwordm9pZCBXZWJEZXNrdG9wTm90aWZp
Y2F0aW9uc0RlbGVnYXRlOjpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9u
KiBvYmplY3QpCit7CisgICAgbm90aWZpY2F0aW9uRGVsZWdhdGUoKS0+bm90aWZpY2F0aW9uRGVz
dHJveWVkKE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6OmNyZWF0ZShvYmplY3QpKTsKK30KKwordm9p
ZCBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOjpyZXF1ZXN0UGVybWlzc2lvbihTZWN1
cml0eU9yaWdpbiogb3JpZ2luLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCit7
CisgICAgQlN0cmluZyBvcmcob3JpZ2luLT50b1N0cmluZygpKTsKKyAgICBub3RpZmljYXRpb25E
ZWxlZ2F0ZSgpLT5yZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbihvcmcpOworfQorCitOb3Rp
ZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24gV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxl
Z2F0ZTo6Y2hlY2tQZXJtaXNzaW9uKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7ICAKKyAgICBp
bnQgb3V0OworICAgIEJTdHJpbmcgb3JnKG9yaWdpbi0+dG9TdHJpbmcoKSk7CisgICAgbm90aWZp
Y2F0aW9uRGVsZWdhdGUoKS0+Y2hlY2tOb3RpZmljYXRpb25QZXJtaXNzaW9uKG9yZywgJm91dCk7
CisgICAgcmV0dXJuIChOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24pIG91dDsKK30K
KworQ09NUHRyPElXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlPiBXZWJEZXNrdG9wTm90
aWZpY2F0aW9uc0RlbGVnYXRlOjpub3RpZmljYXRpb25EZWxlZ2F0ZSgpCit7CisgICAgQ09NUHRy
PElXZWJVSURlbGVnYXRlPiB1aTsKKyAgICBtX3dlYlZpZXctPnVpRGVsZWdhdGUoJnVpKTsKKyAg
ICAKKyAgICBDT01QdHI8SVdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU+IGRlbGVnYXRl
OworICAgIHVpLT5kZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlKCZkZWxlZ2F0ZSk7CisgICAg
CisgICAgcmV0dXJuIGRlbGVnYXRlOworfQorCisjZW5kaWYgIC8vIEVOQUJMRShOT1RJRklDQVRJ
T05TKQpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0
aW9uc0RlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmlj
YXRpb25QcmVzZW50ZXIuaD4KKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorCitpbnRlcmZh
Y2UgSVdlYkRlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI7CisKK2NsYXNzIFdlYkRlc2t0b3BO
b3RpZmljYXRpb25zRGVsZWdhdGUgOiBwdWJsaWMgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyIHsKK3B1YmxpYzoKKyAgICBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlKFdlYlZp
ZXcqIHZpZXcpOworCisgICAgLyogV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyIGludGVy
ZmFjZSAqLworICAgIHZpcnR1YWwgYm9vbCBzaG93KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiogb2Jq
ZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiogb2Jq
ZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbiogb2JqZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1p
c3Npb24oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlcjo6UGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4qIG9yaWdpbik7CisKK3ByaXZhdGU6CisgICAgQ09NUHRyPElXZWJEZXNrdG9wTm90
aWZpY2F0aW9uc0RlbGVnYXRlPiBub3RpZmljYXRpb25EZWxlZ2F0ZSgpOworICAgIAorICAgIFdl
YlZpZXcqIG1fd2ViVmlldzsKK307CisKKyNlbmRpZgpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRGVsZWdhdGUuaAkocmV2aXNpb24gNDYyNjgpCisr
KyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckRlbGVnYXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyNCw2ICszMjQsOSBAQCBwdWJsaWM6DQogICAgICAgICAvKiBbaW5dICov
IEhEQyBoREMsDQogICAgICAgICAvKiBbaW5dICovIFJFQ1QgcmVjdCkgeyByZXR1cm4gRV9OT1RJ
TVBMOyB9DQogDQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZXNrdG9w
Tm90aWZpY2F0aW9uc0RlbGVnYXRlKCANCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVdl
YkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUgKipyZXN1bHQpIHsgcmV0dXJuIEVfTk9USU1Q
TDsgfQ0KKw0KIHByaXZhdGU6DQogICAgIFdlYkluc3BlY3RvckRlbGVnYXRlKCk7DQogDQpJbmRl
eDogV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL0ludGVyZmFjZXMudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9JbnRlcmZhY2VzLnZjcHJvagkocmV2aXNpb24g
NDYyNjgpCisrKyBXZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovSW50ZXJmYWNlcy52Y3Byb2oJKHdv
cmtpbmcgY29weSkKQEAgLTQ5Miw2ICs0OTIsMTggQEAKIAkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
DQogCQk8L0ZpbGU+DQogCQk8RmlsZQ0KKwkJCVJlbGF0aXZlUGF0aD0iLi5cSW50ZXJmYWNlc1xJ
V2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5pZGwiDQorCQkJPg0KKwkJCTxGaWxlQ29u
ZmlndXJhdGlvbg0KKwkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiDQorCQkJCT4NCisJCQkJPFRvb2wNCisJCQkJCU5hbWU9IlZDTUlETFRvb2wiDQor
CQkJCS8+DQorCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCTwvRmlsZT4NCisJCTxGaWxlDQog
CQkJUmVsYXRpdmVQYXRoPSIuLlxJbnRlcmZhY2VzXElXZWJEb2N1bWVudC5pZGwiDQogCQkJPg0K
IAkJCTxGaWxlQ29uZmlndXJhdGlvbg0KSW5kZXg6IFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9X
ZWJLaXQudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJL
aXQudmNwcm9qCShyZXZpc2lvbiA0NjI2OCkKKysrIFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9X
ZWJLaXQudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMDU4LDYgKzIwNTgsMTQgQEAKIAkJCQk+
DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViQ29yZVN1
cHBvcnRcV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5jcHAiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJDb3JlU3VwcG9ydFxX
ZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJDb3JlU3VwcG9ydFxXZWJEcmFnQ2xp
ZW50LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NjI3MikK
KysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDA5LTA3LTIzICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBk
ZXNrdG9wIG5vdGlmaWNhdGlvbnMgQVBJIHRvIER1bXBSZW5kZXJUcmVlLAorICAgICAgICBhbmQg
c3VwcG9ydCBmb3IgRU5BQkxFX05PVElGSUNBVElPTlMgZmxhZyB0byBidWlsZC13ZWJraXQuCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChncmFudERlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2spOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6Z3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbik6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2hlY2tEZXNrdG9wTm90aWZpY2F0aW9uUGVy
bWlzc2lvbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblBy
ZXNlbnRlci5jcHA6IEFkZGVkLgorICAgICAgICAoRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNl
bnRlcjo6RFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcik6CisgICAgICAgIChEUlREZXNr
dG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOjpRdWVyeUludGVyZmFjZSk6CisgICAgICAgIChEUlRE
ZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOjpBZGRSZWYpOgorICAgICAgICAoRFJURGVza3Rv
cE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UmVsZWFzZSk6CisgICAgICAgIChEUlREZXNrdG9wTm90
aWZpY2F0aW9uUHJlc2VudGVyOjpzaG93RGVza3RvcE5vdGlmaWNhdGlvbik6CisgICAgICAgIChE
UlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOjpjYW5jZWxEZXNrdG9wTm90aWZpY2F0aW9u
KToKKyAgICAgICAgKERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI6Om5vdGlmaWNhdGlv
bkRlc3Ryb3llZCk6CisgICAgICAgIChEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOjpj
aGVja05vdGlmaWNhdGlvblBlcm1pc3Npb24pOgorICAgICAgICAoRFJURGVza3RvcE5vdGlmaWNh
dGlvblByZXNlbnRlcjo6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24pOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3dpbi9EUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyLmg6IEFk
ZGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS52Y3Byb2o6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwOgorICAgICAgICAo
VUlEZWxlZ2F0ZTo6VUlEZWxlZ2F0ZSk6CisgICAgICAgIChVSURlbGVnYXRlOjpkZXNrdG9wTm90
aWZpY2F0aW9uc0RlbGVnYXRlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxl
Z2F0ZS5oOgorICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OgorCiAyMDA5LTA3LTIzICBF
bGkgRmlkbGVyICA8ZWxpLmZpZGxlckB0b3JjaG1vYmlsZS5jb20+CiAKICAgICAgICAgIFJldmll
d2VkIGJ5IEFkYW0gVHJlYXQuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA0NjI2OCkKKysrIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQ0LDYgKzM0NCwxOSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBleGVjQ29tbWFuZENh
bGxiYWNrKEpTCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQog
CitzdGF0aWMgSlNWYWx1ZVJlZiBncmFudERlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIC8vIEhhcyBXaW5kb3dz
IGltcGxlbWVudGF0aW9uCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJv
bGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNP
YmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKworICAgIGNvbnRyb2xsZXItPmdyYW50RGVz
a3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBh
cmd1bWVudHNbMF0sIE5VTEwpKTsKKyAgICAgICAgCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBpc0NvbW1hbmRFbmFibGVk
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBNYWMg
aW1wbGVtZW50YXRpb24uCkBAIC04ODksNiArOTAyLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5
b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZv
ckVsZW1lbnRXaXRoSWQiLCBlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWRD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbmNvZGVIb3N0TmFtZSIsIGVuY29kZUhvc3RO
YW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZXhlY0NvbW1hbmQiLCBleGVjQ29tbWFu
ZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImdyYW50RGVza3RvcE5vdGlmaWNhdGlvblBl
cm1pc3Npb24iLCBncmFudERlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwgCiAgICAgICAgIHsgImlzQ29tbWFuZEVuYWJsZWQiLCBpc0NvbW1hbmRFbmFibGVkQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAia2VlcFdlYkhpc3RvcnkiLCBrZWVwV2ViSGlzdG9y
eUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm5vdGlmeURvbmUiLCBub3RpZnlEb25lQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKQEAgLTk2MiwzICs5NzYsMjAgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6cXVldWVSZWxvYWQoKQogewogICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1ZXVlKG5l
dyBSZWxvYWRJdGVtKTsKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Z3JhbnREZXNr
dG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbihKU1N0cmluZ1JlZiBvcmlnaW4pCit7CisgICAgbV9k
ZXNrdG9wTm90aWZpY2F0aW9uQWxsb3dlZE9yaWdpbnMucHVzaF9iYWNrKEpTU3RyaW5nUmV0YWlu
KG9yaWdpbikpOworfQorCitib29sIExheW91dFRlc3RDb250cm9sbGVyOjpjaGVja0Rlc2t0b3BO
b3RpZmljYXRpb25QZXJtaXNzaW9uKEpTU3RyaW5nUmVmIG9yaWdpbikKK3sKKyAgICBzdGQ6OnZl
Y3RvcjxKU1N0cmluZ1JlZj46Oml0ZXJhdG9yIGk7CisgICAgZm9yIChpID0gbV9kZXNrdG9wTm90
aWZpY2F0aW9uQWxsb3dlZE9yaWdpbnMuYmVnaW4oKTsKKyAgICAgICAgIGkgIT0gbV9kZXNrdG9w
Tm90aWZpY2F0aW9uQWxsb3dlZE9yaWdpbnMuZW5kKCk7CisgICAgICAgICArK2kpIHsKKyAgICAg
ICAgaWYgKEpTU3RyaW5nSXNFcXVhbCgqaSwgb3JpZ2luKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CkluZGV4OiBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDQ2MjY4
KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTT2JqZWN0UmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDxz
dHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgogCiBjbGFzcyBMYXlvdXRUZXN0Q29udHJvbGxlciA6
IHB1YmxpYyBSZWZDb3VudGVkPExheW91dFRlc3RDb250cm9sbGVyPiB7CiBwdWJsaWM6CkBAIC04
MSw2ICs4Miw5IEBAIHB1YmxpYzoKICAgICBzaXplX3Qgd2ViSGlzdG9yeUl0ZW1Db3VudCgpOwog
ICAgIGludCB3aW5kb3dDb3VudCgpOwogICAgIAorICAgIHZvaWQgZ3JhbnREZXNrdG9wTm90aWZp
Y2F0aW9uUGVybWlzc2lvbihKU1N0cmluZ1JlZiBvcmlnaW4pOworICAgIGJvb2wgY2hlY2tEZXNr
dG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbihKU1N0cmluZ1JlZiBvcmlnaW4pOworCiAgICAgYm9v
bCBlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQoSlNTdHJpbmdSZWYgaWQp
OwogCiAgICAgYm9vbCBkdW1wQXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9kdW1wQXNUZXh0OyB9
CkBAIC0xOTYsNiArMjAwLDkgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnN0cmluZyBtX3Rlc3RQYXRo
T3JVUkw7CiAgICAgc3RkOjpzdHJpbmcgbV9leHBlY3RlZFBpeGVsSGFzaDsgICAgLy8gZW1wdHkg
c3RyaW5nIGlmIG5vIGhhc2gKICAgICAKKyAgICAvLyBvcmlnaW5zIHdoaWNoIGhhdmUgYmVlbiBn
cmFudGVkIGRlc2t0b3Agbm90aWZpY2F0aW9uIGFjY2VzcworICAgIHN0ZDo6dmVjdG9yPEpTU3Ry
aW5nUmVmPiBtX2Rlc2t0b3BOb3RpZmljYXRpb25BbGxvd2VkT3JpZ2luczsKKyAgICAKICAgICBz
dGF0aWMgSlNDbGFzc1JlZiBnZXRKU0NsYXNzKCk7CiAgICAgc3RhdGljIEpTU3RhdGljVmFsdWUq
IHN0YXRpY1ZhbHVlcygpOwogICAgIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uKiBzdGF0aWNGdW5j
dGlvbnMoKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREZXNrdG9w
Tm90aWZpY2F0aW9uUHJlc2VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlci5jcHAJKHJldmlz
aW9uIDApCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGVza3RvcE5vdGlm
aWNhdGlvblByZXNlbnRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIkRSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKKworI2luY2x1ZGUgIkR1bXBS
ZW5kZXJUcmVlLmgiCisjaW5jbHVkZSAiTGF5b3V0VGVzdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTU3RyaW5nUmVmQlNUUi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uUHJlc2Vu
dGVyLmg+CisKK0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI6OkRSVERlc2t0b3BOb3Rp
ZmljYXRpb25QcmVzZW50ZXIoKQorICAgIDogbV9yZWZDb3VudCgxKSB7fSAKKworSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOjpRdWVyeUlu
dGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK3sKKyAgICAqcHB2T2JqZWN0
ID0gMDsKKyAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkKKyAgICAgICAg
KnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIq
Pih0aGlzKTsKKyAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVdlYkRlc2t0b3BO
b3RpZmljYXRpb25zRGVsZWdhdGUpKQorICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8
RFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcio+KHRoaXMpOworICAgIGVsc2UKKyAgICAg
ICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CisKKyAgICBBZGRSZWYoKTsKKyAgICByZXR1cm4gU19P
SzsKK30KKworVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgRFJURGVza3RvcE5vdGlmaWNhdGlvblBy
ZXNlbnRlcjo6QWRkUmVmKCkKK3sKKyAgICByZXR1cm4gKyttX3JlZkNvdW50OworfQorCitVTE9O
RyBTVERNRVRIT0RDQUxMVFlQRSBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOjpSZWxl
YXNlKCkKK3sKKyAgICBVTE9ORyBuZXdSZWYgPSAtLW1fcmVmQ291bnQ7CisgICAgaWYgKCFuZXdS
ZWYpCisgICAgICAgIGRlbGV0ZSh0aGlzKTsKKworICAgIHJldHVybiBuZXdSZWY7Cit9CisKK0hS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcjo6
c2hvd0Rlc2t0b3BOb3RpZmljYXRpb24oCisgICAgLyogW2luXSAqLyBJV2ViRGVza3RvcE5vdGlm
aWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIEJTVFIgdGl0bGUsIHRleHQsIHVybDsKKyAg
ICBCT09MIGh0bWw7CisKKyAgICBpZiAoIW5vdGlmaWNhdGlvbi0+aXNIVE1MKCZodG1sKSAmJiBo
dG1sKSB7CisgICAgICAgIG5vdGlmaWNhdGlvbi0+Y29udGVudHNVUkwoJnVybCk7ICAgIAorICAg
ICAgICBwcmludGYoIkRFU0tUT1AgTk9USUZJQ0FUSU9OOiBjb250ZW50cyBhdCAlU1xuIiwgdXJs
ID8gdXJsIDogTCIiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBub3RpZmljYXRpb24tPmljb25V
UkwoJnVybCk7CisgICAgICAgIG5vdGlmaWNhdGlvbi0+dGl0bGUoJnRpdGxlKTsKKyAgICAgICAg
bm90aWZpY2F0aW9uLT50ZXh0KCZ0ZXh0KTsKKyAgICAgICAgcHJpbnRmKCJERVNLVE9QIE5PVElG
SUNBVElPTjogaWNvbiAlUywgdGl0bGUgJVMsIHRleHQgJVNcbiIsIAorICAgICAgICAgICAgdXJs
ID8gdXJsIDogTCIiLCAKKyAgICAgICAgICAgIHRpdGxlID8gdGl0bGUgOiBMIiIsIAorICAgICAg
ICAgICAgdGV4dCA/IHRleHQgOiBMIiIpOworICAgIH0KKworICAgIC8vIEluIHRoaXMgc3R1YiBp
bXBsZW1lbnRhdGlvbiwgdGhlIG5vdGlmaWNhdGlvbiBpcyBkaXNwbGF5ZWQgaW1tZWRpYXRlbHk7
CisgICAgLy8gd2UgZGlzcGF0Y2ggdGhlIGRpc3BsYXkgZXZlbnQgdG8gbWltaWMgdGhhdC4KKyAg
ICBub3RpZmljYXRpb24tPm5vdGlmeURpc3BsYXkoKTsKKworICAgIHJldHVybiBTX09LOworfQor
CitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50
ZXI6OmNhbmNlbERlc2t0b3BOb3RpZmljYXRpb24oCisgICAgLyogW2luXSAqLyBJV2ViRGVza3Rv
cE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIEJTVFIgaWRlbnRpZmllcjsKKyAg
ICBCT09MIGh0bWw7CisgICAgbm90aWZpY2F0aW9uLT5pc0hUTUwoJmh0bWwpOworICAgIGlmICho
dG1sKQorICAgICAgICBub3RpZmljYXRpb24tPmNvbnRlbnRzVVJMKCZpZGVudGlmaWVyKTsKKyAg
ICBlbHNlCisgICAgICAgIG5vdGlmaWNhdGlvbi0+dGl0bGUoJmlkZW50aWZpZXIpOworCisgICAg
cHJpbnRmKCJERVNLVE9QIE5PVElGSUNBVElPTiBDTE9TRUQ6ICVTXG4iLCBpZGVudGlmaWVyID8g
aWRlbnRpZmllciA6IEwiIik7CisgICAgbm90aWZpY2F0aW9uLT5ub3RpZnlDbG9zZShmYWxzZSk7
CisKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBEUlRE
ZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOjpub3RpZmljYXRpb25EZXN0cm95ZWQoCisgICAg
LyogW2luXSAqLyBJV2ViRGVza3RvcE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAg
IC8vIFNpbmNlIGluIHRoZXNlIHRlc3RzIGV2ZW50cyBoYXBwZW4gaW1tZWRpYXRlbHksIHdlIGRv
bid0IGhvbGQgb24gdG8KKyAgICAvLyBOb3RpZmljYXRpb24gcG9pbnRlcnMuICBTbyB0aGVyZSdz
IG5vIGNsZWFudXAgdG8gZG8uCisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcjo6Y2hlY2tOb3RpZmlj
YXRpb25QZXJtaXNzaW9uKAorICAgICAgICAvKiBbaW5dICovIEJTVFIgb3JpZ2luLCAKKyAgICAg
ICAgLyogW291dCwgcmV0dmFsXSAqLyBpbnQqIHJlc3VsdCkKK3sKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKKyAgICBKU1N0cmluZ1JlZiBqc09yaWdpbiA9IEpTU3RyaW5nQ3JlYXRlV2l0aEJT
VFIob3JpZ2luKTsKKyAgICBib29sIGFsbG93ZWQgPSA6OmdMYXlvdXRUZXN0Q29udHJvbGxlci0+
Y2hlY2tEZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbihqc09yaWdpbik7CisKKyAgICBpZiAo
YWxsb3dlZCkKKyAgICAgICAgKnJlc3VsdCA9IFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRl
cjo6UEVSTUlTU0lPTl9BTExPV0VEOworICAgIGVsc2UKKyAgICAgICAgKnJlc3VsdCA9IFdlYkNv
cmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlcjo6UEVSTUlTU0lPTl9ERU5JRUQ7CisKKyAgICBKU1N0
cmluZ1JlbGVhc2UoanNPcmlnaW4pOworI2VuZGlmCisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcjo6
cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24oCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBv
cmlnaW4pCit7CisgICAgcHJpbnRmKCJERVNLVE9QIE5PVElGSUNBVElPTiBQRVJNSVNTSU9OIFJF
UVVFU1RFRDogJVNcbiIsIG9yaWdpbiA/IG9yaWdpbiA6IEwiIik7CisgICAgcmV0dXJuIFNfT0s7
Cit9CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGVza3RvcE5vdGlm
aWNhdGlvblByZXNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyLmgJKHJldmlzaW9uIDApCisr
KyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblBy
ZXNlbnRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyX2gKKyNkZWZpbmUgRFJURGVz
a3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcl9oCisKKyNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Lmg+
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHdpbmRlZi5oPgorCitjbGFzcyBE
UlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyIDogcHVibGljIElXZWJEZXNrdG9wTm90aWZp
Y2F0aW9uc0RlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJl
c2VudGVyKCk7CisKKyAgICAvLyBJVW5rbm93bgorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7
CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7CisgICAg
dmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworCisgICAgLy8g
SVdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2hvd0Rlc2t0b3BOb3RpZmljYXRpb24oCisgICAgICAgIC8qIFtpbl0g
Ki8gSVdlYkRlc2t0b3BOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbik7CisKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuY2VsRGVza3RvcE5vdGlmaWNhdGlvbigKKyAg
ICAgICAgLyogW2luXSAqLyBJV2ViRGVza3RvcE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKTsK
KworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub3RpZmljYXRpb25EZXN0
cm95ZWQoCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYkRlc2t0b3BOb3RpZmljYXRpb24qIG5vdGlm
aWNhdGlvbik7CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hlY2tO
b3RpZmljYXRpb25QZXJtaXNzaW9uKAorICAgICAgICAvKiBbaW5dICovIEJTVFIgb3JpZ2luLCAK
KyAgICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBpbnQqIHJlc3VsdCk7CisKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24o
CisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBvcmlnaW4pOworCitwcml2YXRlOgorICAgIFVMT05H
IG1fcmVmQ291bnQ7Cit9OworCisjZW5kaWYKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLnZjcHJvagkocmV2aXNpb24gNDYyNjgp
CisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC00MzIsNiArNDMyLDE0IEBACiAJCQlOYW1lPSJEZWxlZ2F0ZXMi
DQogCQkJPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLlxEUlREZXNrdG9wTm90aWZp
Y2F0aW9uUHJlc2VudGVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii5cRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlci5oIg0KKwkJ
CQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLlxFZGl0aW5n
RGVsZWdhdGUuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDQ2MjY4KQorKysg
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRHJhZ2dpbmdJbmZvLmgiCiAjaW5jbHVk
ZSAiRXZlbnRTZW5kZXIuaCIKICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIkRSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKIAogI2luY2x1ZGUgPFdl
YkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CkBAIC0xNTUsNiArMTU2
LDcgQEAgdm9pZCBEUlRVbmRvTWFuYWdlcjo6dW5kbygpCiBVSURlbGVnYXRlOjpVSURlbGVnYXRl
KCkKICAgICA6IG1fcmVmQ291bnQoMSkKICAgICAsIG1fdW5kb01hbmFnZXIobmV3IERSVFVuZG9N
YW5hZ2VyKQorICAgICwgbV9kZXNrdG9wTm90aWZpY2F0aW9ucyhuZXcgRFJURGVza3RvcE5vdGlm
aWNhdGlvblByZXNlbnRlcikKIHsKICAgICBtX2ZyYW1lLmJvdHRvbSA9IDA7CiAgICAgbV9mcmFt
ZS50b3AgPSAwOwpAQCAtNjA0LDMgKzYwNiw5IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
VUlEZWxlZ2F0ZTo6c2UKICAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBTVEFUVVMgQ0FMTEJB
Q0s6IHNldFN0YXR1c1RleHQ6JVNcbiIsIHRleHQgPyB0ZXh0IDogTCIiKTsKICAgICByZXR1cm4g
U19PSzsKIH0KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBVSURlbGVnYXRlOjpkZXNrdG9w
Tm90aWZpY2F0aW9uc0RlbGVnYXRlKElXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlKiog
cmVzdWx0KQoreworICAgIG1fZGVza3RvcE5vdGlmaWNhdGlvbnMuY29weVJlZlRvKHJlc3VsdCk7
CisgICAgcmV0dXJuIFNfT0s7Cit9CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93
aW4vVUlEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9VSURlbGVnYXRlLmgJKHJldmlzaW9uIDQ2MjY4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL1VJRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDEz
IEBACiAjaWZuZGVmIFVJRGVsZWdhdGVfaAogI2RlZmluZSBVSURlbGVnYXRlX2gKIAorI2luY2x1
ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dlYktpdC5oPgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3aW5kZWYuaD4KIAogY2xhc3MgRFJUVW5kb01h
bmFnZXI7CitjbGFzcyBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOwogCiBjbGFzcyBV
SURlbGVnYXRlIDogcHVibGljIElXZWJVSURlbGVnYXRlLCBJV2ViVUlEZWxlZ2F0ZVByaXZhdGUg
ewogcHVibGljOgpAQCAtMzk5LDExICs0MDEsMTYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3RGlkSW52YWxpZGF0ZSggCiAgICAgICAg
IC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlcik7CiAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZSgKKyAgICAgICAgLyog
W291dF0gKi8gSVdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUqKiByZXN1bHQpOworCiAg
ICAgVUxPTkcgICAgICAgICAgICAgICAgICAgbV9yZWZDb3VudDsKIAogcHJpdmF0ZToKICAgICBS
RUNUIG1fZnJhbWU7CiAgICAgT3duUHRyPERSVFVuZG9NYW5hZ2VyPiBtX3VuZG9NYW5hZ2VyOwor
CisgICAgQ09NUHRyPElXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlPiBtX2Rlc2t0b3BO
b3RpZmljYXRpb25zOwogfTsKIAogI2VuZGlmCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL2J1
aWxkLXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtp
dAkocmV2aXNpb24gNDYyNjgpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAko
d29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBteSAoJHRocmVlRFJlbmRlcmluZ1N1cHBv
cnQsICRjaGFubmVsTWVzCiAgICAgJGphdmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQsICRvZmZsaW5l
V2ViQXBwbGljYXRpb25TdXBwb3J0LCAkcnVieVN1cHBvcnQsICRzaGFyZWRXb3JrZXJzU3VwcG9y
dCwgCiAgICAgJHN2Z1N1cHBvcnQsICRzdmdBbmltYXRpb25TdXBwb3J0LCAkc3ZnQXNJbWFnZVN1
cHBvcnQsICRzdmdET01PYmpDQmluZGluZ3NTdXBwb3J0LCAkc3ZnRm9udHNTdXBwb3J0LAogICAg
ICRzdmdGb3JlaWduT2JqZWN0U3VwcG9ydCwgJHN2Z1VzZVN1cHBvcnQsICR2aWRlb1N1cHBvcnQs
ICR3ZWJTb2NrZXRzU3VwcG9ydCwgJHdtbFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKLSAgICAk
eHBhdGhTdXBwb3J0LCAkeHNsdFN1cHBvcnQsICRjb3ZlcmFnZVN1cHBvcnQpOworICAgICR4cGF0
aFN1cHBvcnQsICR4c2x0U3VwcG9ydCwgJGNvdmVyYWdlU3VwcG9ydCwgJG5vdGlmaWNhdGlvbnNT
dXBwb3J0KTsKIAogbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICIzZC1yZW5kZXJp
bmciLCBkZXNjID0+ICJUb2dnbGUgM0QgcmVuZGVyaW5nIHN1cHBvcnQiLApAQCAtODIsNiArODIs
OSBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gImphdmFzY3JpcHQtZGVidWdn
ZXIiLCBkZXNjID0+ICJUb2dnbGUgSmF2YVNjcmlwdCBEZWJ1Z2dlci9Qcm9maWxlciBzdXBwb3J0
IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIiLCBkZWZhdWx0
ID0+IDEsIHZhbHVlID0+IFwkamF2YVNjcmlwdERlYnVnZ2VyU3VwcG9ydCB9LAogCisgICAgeyBv
cHRpb24gPT4gIm5vdGlmaWNhdGlvbnMiLCBkZXNjID0+ICJUb2dnbGUgRGVza3RvcCBOb3RpZmlj
YXRpb25zIFN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTk9USUZJQ0FUSU9OUyIs
IGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRub3RpZmljYXRpb25zU3VwcG9ydCB9LAorCiAgICAg
eyBvcHRpb24gPT4gIm9mZmxpbmUtd2ViLWFwcGxpY2F0aW9ucyIsIGRlc2MgPT4gIlRvZ2dsZSBP
ZmZsaW5lIFdlYiBBcHBsaWNhdGlvbiBTdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxF
X09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRvZmZs
aW5lV2ViQXBwbGljYXRpb25TdXBwb3J0IH0sCiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ2MjcyKQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMDktMDctMjMgIEpvaG4gR3JlZ2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVza3RvcCBOb3RpZmljYXRp
b25zIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjU0NjMKKworICAgICAgICBBZGRpbmcgbGF5b3V0IHRlc3RzIGZvciBkZXNrdG9wIG5vdGlmaWNh
dGlvbnMuICBDdXJyZW50bHkgdGhlc2UKKyAgICAgICAgYXJlIGFsbCBkaXNhYmxlZCBiZWNhdXNl
IHRoZSBmbGFnIGZvciB0aGlzIGZlYXR1cmUgaXMgc2V0IHRvIDAuCisKKyAgICAgICAgKiBmYXN0
L25vdGlmaWNhdGlvbnM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvbm90aWZpY2F0aW9ucy9ub3Rp
ZmljYXRpb25zLWNoZWNrLXBlcm1pc3Npb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1jaGVjay1wZXJtaXNzaW9uLmh0bWwt
ZGlzYWJsZWQ6IEFkZGVkLgorICAgICAgICAgLSBWYWxpZGF0ZXMgdGhhdCBjaGVja2luZyBwZXJt
aXNzaW9uIGZvciBub3RpZmljYXRpb25zIHdvcmtzIGNvcnJlY3RseS4KKyAgICAgICAgKiBmYXN0
L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1kaXNwbGF5LWNsb3NlLWV2ZW50cy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25z
LWRpc3BsYXktY2xvc2UtZXZlbnRzLmh0bWwtZGlzYWJsZWQ6IEFkZGVkLgorICAgICAgICAgLSBW
YWxpZGF0ZXMgdGhhdCB0aGUgZGlzcGxheSBhbmQgY2xvc2UgZXZlbnRzIGFyZSBmaXJlZCBjb3Jy
ZWN0bHkuCisgICAgICAgICogZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZG91Ymxl
LXNob3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L25vdGlmaWNhdGlvbnMv
bm90aWZpY2F0aW9ucy1kb3VibGUtc2hvdy5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAg
IC0gVmFsaWRhdGVzIHRoYXQgdGhlIHNhbWUgbm90aWZpY2F0aW9uIG9iamVjdCBjYW5ub3QgYmUg
c2hvd24gdHdpY2UuCisgICAgICAgICogZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMt
cmVxdWVzdC1wZXJtaXNzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9u
b3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtcmVxdWVzdC1wZXJtaXNzaW9uLmh0bWwtZGlzYWJs
ZWQ6IEFkZGVkLgorICAgICAgICAgLSBWYWxpZGF0ZXMgdGhhdCByZXF1ZXN0aW5nIHBlcm1pc3Np
b24gd29ya3MgY29ycmVjdGx5LgorICAgICAgICAqIGZhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmlj
YXRpb25zLXdpdGgtcGVybWlzc2lvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXdpdGgtcGVybWlzc2lvbi5odG1sLWRpc2Fi
bGVkOiBBZGRlZC4KKyAgICAgICAgIC0gVmFsaWRhdGVzIHRoYXQsIHdpdGggcGVybWlzc2lvbiwg
c2hvd2luZyBhIG5vdGlmaWNhdGlvbiB3b3JrcyBjb3JyZWN0bHkuCisgICAgICAgICogZmFzdC9u
b3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtd2l0aG91dC1wZXJtaXNzaW9uLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtd2l0
aG91dC1wZXJtaXNzaW9uLmh0bWwtZGlzYWJsZWQ6IEFkZGVkLgorICAgICAgICAgLSBWYWxpZGF0
ZXMgdGhhdCwgd2l0aG91dCBwZXJtaXNzaW9uLCBzaG93aW5nIGEgbm90aWZpY2F0aW9uIGZhaWxz
LgorCiAyMDA5LTA3LTIzICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtY2hlY2stcGVybWlzc2lvbi1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25z
L25vdGlmaWNhdGlvbnMtY2hlY2stcGVybWlzc2lvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1jaGVjay1w
ZXJtaXNzaW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACitDaGVj
a2luZyBwZXJtaXNzaW9uLi4uCisKK1BBU1M6IFBlcm1pc3Npb24gbm90IGdyYW50ZWQuCitQQVNT
OiBQZXJtaXNzaW9uIGdyYW50ZWQuCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0
aW9ucy9ub3RpZmljYXRpb25zLWNoZWNrLXBlcm1pc3Npb24uaHRtbC1kaXNhYmxlZAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1jaGVj
ay1wZXJtaXNzaW9uLmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1jaGVjay1wZXJtaXNzaW9uLmh0bWwtZGlz
YWJsZWQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAg
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorICAgICAgICB7CisgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKCF3aW5kb3cud2Via2l0Tm90aWZpY2F0aW9ucykgeworICAg
ICAgICAgICAgICAgIGxvZygiRkFJTDogTm8gd2Via2l0Tm90aWZpY2F0aW9ucyBpbnRlcmZhY2Uh
Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBOID0gd2lu
ZG93LndlYmtpdE5vdGlmaWNhdGlvbnMuY2hlY2tQZXJtaXNzaW9uKCk7CisgICAgICAgICAgICBp
ZiAoTiAhPSAwKSB7CisgICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBQZXJtaXNzaW9uIG5vdCBn
cmFudGVkLiIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb2coIkZB
SUw6IFBlcm1pc3Npb24gc2hvdWxkbid0IGJlIGdyYW50ZWQuIik7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ncmFudERlc2t0b3BOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uKCJmaWxlOi8vIik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIE4gPSB3aW5kb3cud2Via2l0Tm90aWZpY2F0aW9ucy5jaGVja1Blcm1p
c3Npb24oKTsKKyAgICAgICAgICAgIGlmIChOID09IDApIHsKKyAgICAgICAgICAgICAgICBsb2co
IlBBU1M6IFBlcm1pc3Npb24gZ3JhbnRlZC4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgbG9nKCJGQUlMOiBQZXJtaXNzaW9uIG5vdCBncmFudGVkLiIpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPkNo
ZWNraW5nIHBlcm1pc3Npb24uLi48L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorcnVuVGVzdHMoKTsKKzwvc2NyaXB0PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZp
Y2F0aW9ucy1kaXNwbGF5LWNsb3NlLWV2ZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZGlzcGxheS1jbG9z
ZS1ldmVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9u
b3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZGlzcGxheS1jbG9zZS1ldmVudHMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK0RFU0tUT1AgTk9USUZJQ0FUSU9OOiBp
Y29uIGh0dHA6Ly9sb2NhbGhvc3QvbXlfaWNvbi5wbmcsIHRpdGxlIE5ldyBFLW1haWwsIHRleHQg
TWVldCBtZSB0b25pZ2h0IGF0IDghCitERVNLVE9QIE5PVElGSUNBVElPTiBDTE9TRUQ6IE5ldyBF
LW1haWwKK1NlbmRpbmcgbm90aWZpY2F0aW9ucyB3aXRoIHBlcm1pc3Npb24uLi4KKworUEFTUzog
ZGlzcGxheSBldmVudCBpbnZva2VkLgorUEFTUzogY2xvc2UgZXZlbnQgaW52b2tlZC4KKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZGlzcGxheS1j
bG9zZS1ldmVudHMuaHRtbC1kaXNhYmxlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1kaXNwbGF5LWNsb3NlLWV2ZW50cy5odG1sLWRp
c2FibGVkCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25v
dGlmaWNhdGlvbnMtZGlzcGxheS1jbG9zZS1ldmVudHMuaHRtbC1kaXNhYmxlZAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAgZnVuY3Rpb24gbG9nKG1l
c3NhZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbigiZmlsZTov
LyIpOworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCF3aW5kb3cud2Via2l0Tm90aWZpY2F0
aW9ucykgeworICAgICAgICAgICAgICAgIGxvZygiRkFJTDogTm8gd2Via2l0Tm90aWZpY2F0aW9u
cyBpbnRlcmZhY2UhIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IHZhciBOID0gd2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMuY3JlYXRlTm90aWZpY2F0aW9uKCJo
dHRwOi8vbG9jYWxob3N0L215X2ljb24ucG5nIiwgIk5ldyBFLW1haWwiLCAiTWVldCBtZSB0b25p
Z2h0IGF0IDghIik7CisgICAgICAgICAgICBOLm9uZGlzcGxheSA9IGZ1bmN0aW9uKCkgeyBsb2co
IlBBU1M6IGRpc3BsYXkgZXZlbnQgaW52b2tlZC4iKTsgfQorICAgICAgICAgICAgTi5vbmNsb3Nl
ID0gZnVuY3Rpb24oKSB7IGxvZygiUEFTUzogY2xvc2UgZXZlbnQgaW52b2tlZC4iKTsgfQorICAg
ICAgICAgICAgTi5zaG93KCk7CisgICAgICAgICAgICBOLmNhbmNlbCgpOworICAgICAgICB9Cisg
ICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlNlbmRpbmcgbm90aWZpY2F0aW9ucyB3
aXRoIHBlcm1pc3Npb24uLi48L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PiAgICAKKyAgICAK
KzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK3J1blRlc3RzKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9u
b3RpZmljYXRpb25zLWRvdWJsZS1zaG93LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1kb3VibGUtc2hvdy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMv
bm90aWZpY2F0aW9ucy1kb3VibGUtc2hvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNCBAQAorREVTS1RPUCBOT1RJRklDQVRJT046IGljb24gaHR0cDovL2xvY2FsaG9zdC9t
eV9pY29uLnBuZywgdGl0bGUgTmV3IEUtbWFpbCwgdGV4dCBNZWV0IG1lIHRvbmlnaHQgYXQgOCEK
K1NlbmRpbmcgbm90aWZpY2F0aW9ucy4uLgorCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvbm90
aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWRvdWJsZS1zaG93Lmh0bWwtZGlzYWJsZWQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtZG91
YmxlLXNob3cuaHRtbC1kaXNhYmxlZAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
bm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWRvdWJsZS1zaG93Lmh0bWwtZGlzYWJsZWQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGZ1bmN0aW9u
IGxvZyhtZXNzYWdlKQorICAgICAgICB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmdyYW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24o
ImZpbGU6Ly8iKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghd2luZG93LndlYmtpdE5v
dGlmaWNhdGlvbnMpIHsKKyAgICAgICAgICAgICAgICBsb2coIkZBSUw6IE5vIHdlYmtpdE5vdGlm
aWNhdGlvbnMgaW50ZXJmYWNlISIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICB2YXIgTiA9IHdpbmRvdy53ZWJraXROb3RpZmljYXRpb25zLmNyZWF0ZU5vdGlmaWNh
dGlvbigiaHR0cDovL2xvY2FsaG9zdC9teV9pY29uLnBuZyIsICJOZXcgRS1tYWlsIiwgIk1lZXQg
bWUgdG9uaWdodCBhdCA4ISIpOworICAgICAgICAgICAgTi5zaG93KCk7CisgICAgICAgICAgICBO
LnNob3coKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5T
ZW5kaW5nIG5vdGlmaWNhdGlvbnMuLi48L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PiAgICAK
KyAgICAKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK3J1blRlc3RzKCk7Cis8L3Nj
cmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmlj
YXRpb25zL25vdGlmaWNhdGlvbnMtZXZlbnQtc3RvcC1wcm9wYWdhdGlvbi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlv
bnMtZXZlbnQtc3RvcC1wcm9wYWdhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1ldmVudC1zdG9wLXBy
b3BhZ2F0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitERVNL
VE9QIE5PVElGSUNBVElPTjogaWNvbiBodHRwOi8vbG9jYWxob3N0L215X2ljb24ucG5nLCB0aXRs
ZSBOZXcgRS1tYWlsLCB0ZXh0IE1lZXQgbWUgdG9uaWdodCBhdCA4IQorREVTS1RPUCBOT1RJRklD
QVRJT04gQ0xPU0VEOiBOZXcgRS1tYWlsCitTZW5kaW5nIG5vdGlmaWNhdGlvbnMgd2l0aCBwZXJt
aXNzaW9uLi4uCisKK1BBU1M6IGFkZEV2ZW50TGlzdGVuZXIoZGlzcGxheSkgY2FwdHVyZSBjYWxs
YmFjayBpbnZva2VkCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3Rp
ZmljYXRpb25zLWV2ZW50LXN0b3AtcHJvcGFnYXRpb24uaHRtbC1kaXNhYmxlZAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1ldmVudC1z
dG9wLXByb3BhZ2F0aW9uLmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1ldmVudC1zdG9wLXByb3BhZ2F0aW9u
Lmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisgICAgICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorICAgICAgICB7CisgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAi
PGJyPiI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmdyYW50RGVza3RvcE5vdGlm
aWNhdGlvblBlcm1pc3Npb24oImZpbGU6Ly8iKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
ICghd2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgICAgICAgICBsb2coIkZB
SUw6IE5vIHdlYmtpdE5vdGlmaWNhdGlvbnMgaW50ZXJmYWNlISIpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgTiA9IHdpbmRvdy53ZWJraXROb3RpZmljYXRp
b25zLmNyZWF0ZU5vdGlmaWNhdGlvbigiaHR0cDovL2xvY2FsaG9zdC9teV9pY29uLnBuZyIsICJO
ZXcgRS1tYWlsIiwgIk1lZXQgbWUgdG9uaWdodCBhdCA4ISIpOworICAgICAgICAgICAgTi5hZGRF
dmVudExpc3RlbmVyKCJkaXNwbGF5IiwgZnVuY3Rpb24oZSkgeyBsb2coIlBBU1M6IGFkZEV2ZW50
TGlzdGVuZXIoZGlzcGxheSkgbm9uLWNhcHR1cmUgY2FsbGJhY2sgaW52b2tlZCIpOyB9KTsKKyAg
ICAgICAgICAgIE4ub25kaXNwbGF5ID0gICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUpIHsgbG9n
KCJQQVNTOiBvbmRpc3BsYXkgYXR0cmlidXRlIGV2ZW50IGNhbGxiYWNrIGludm9rZWQuIik7IH0K
KyAgICAgICAgICAgIE4uYWRkRXZlbnRMaXN0ZW5lcigiZGlzcGxheSIsIGZ1bmN0aW9uKGUpIHsg
bG9nKCJQQVNTOiBhZGRFdmVudExpc3RlbmVyKGRpc3BsYXkpIGNhcHR1cmUgY2FsbGJhY2sgaW52
b2tlZCIpOyBlLnN0b3BQcm9wYWdhdGlvbigpOyB9LCB0cnVlICk7CisgICAgICAgICAgICBOLnNo
b3coKTsKKyAgICAgICAgICAgIE4uY2FuY2VsKCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHA+U2VuZGluZyBub3RpZmljYXRpb25zIHdpdGggcGVybWlzc2lv
bi4uLjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+ICAgIAorICAgIAorPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorcnVuVGVzdHMoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMt
bXVsdGktZXZlbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1tdWx0aS1ldmVudHMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlv
bnMtbXVsdGktZXZlbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBA
QAorREVTS1RPUCBOT1RJRklDQVRJT046IGljb24gaHR0cDovL2xvY2FsaG9zdC9teV9pY29uLnBu
ZywgdGl0bGUgTmV3IEUtbWFpbCwgdGV4dCBNZWV0IG1lIHRvbmlnaHQgYXQgOCEKK0RFU0tUT1Ag
Tk9USUZJQ0FUSU9OIENMT1NFRDogTmV3IEUtbWFpbAorU2VuZGluZyBub3RpZmljYXRpb25zIHdp
dGggcGVybWlzc2lvbi4uLgorCitQQVNTOiBhZGRFdmVudExpc3RlbmVyKGNsb3NlKSBjYXB0dXJl
IGNhbGxiYWNrICMxIGludm9rZWQKK1BBU1M6IGFkZEV2ZW50TGlzdGVuZXIoY2xvc2UpIGNhcHR1
cmUgY2FsbGJhY2sgIzIgaW52b2tlZAorUEFTUzogYWRkRXZlbnRMaXN0ZW5lcihjbG9zZSkgY2Fs
bGJhY2sgIzEgaW52b2tlZAorUEFTUzogb25jbG9zZSBhdHRyaWJ1dGUgZXZlbnQgY2FsbGJhY2sg
aW52b2tlZC4KK1BBU1M6IGFkZEV2ZW50TGlzdGVuZXIoY2xvc2UpIGNhbGxiYWNrICMzIGludm9r
ZWQKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMt
bXVsdGktZXZlbnRzLmh0bWwtZGlzYWJsZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtbXVsdGktZXZlbnRzLmh0bWwtZGlzYWJsZWQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0
aW9ucy1tdWx0aS1ldmVudHMuaHRtbC1kaXNhYmxlZAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhU
TUwgKz0gbWVzc2FnZSArICI8YnI+IjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVu
Y3Rpb24gcnVuVGVzdHMoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
Z3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbigiZmlsZTovLyIpOworICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKCF3aW5kb3cud2Via2l0Tm90aWZpY2F0aW9ucykgeworICAgICAg
ICAgICAgICAgIGxvZygiRkFJTDogTm8gd2Via2l0Tm90aWZpY2F0aW9ucyBpbnRlcmZhY2UhIik7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBOID0gd2luZG93
LndlYmtpdE5vdGlmaWNhdGlvbnMuY3JlYXRlTm90aWZpY2F0aW9uKCJodHRwOi8vbG9jYWxob3N0
L215X2ljb24ucG5nIiwgIk5ldyBFLW1haWwiLCAiTWVldCBtZSB0b25pZ2h0IGF0IDghIik7Cisg
ICAgICAgICAgICBOLmFkZEV2ZW50TGlzdGVuZXIoImNsb3NlIiwgZnVuY3Rpb24oKSB7IGxvZygi
UEFTUzogYWRkRXZlbnRMaXN0ZW5lcihjbG9zZSkgY2FsbGJhY2sgIzEgaW52b2tlZCIpOyB9KTsK
KyAgICAgICAgICAgIE4ub25jbG9zZSA9ICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgbG9n
KCJQQVNTOiBvbmNsb3NlIGF0dHJpYnV0ZSBldmVudCBjYWxsYmFjayBpbnZva2VkLiIpOyB9Cisg
ICAgICAgICAgICBOLmFkZEV2ZW50TGlzdGVuZXIoImNsb3NlIiwgZnVuY3Rpb24oKSB7IGxvZygi
UEFTUzogYWRkRXZlbnRMaXN0ZW5lcihjbG9zZSkgY2FwdHVyZSBjYWxsYmFjayAjMSBpbnZva2Vk
Iik7IH0sIHRydWUgKTsKKyAgICAgICAgICAgIE4uYWRkRXZlbnRMaXN0ZW5lcigiY2xvc2UiLCBm
dW5jdGlvbigpIHsgbG9nKCJQQVNTOiBhZGRFdmVudExpc3RlbmVyKGNsb3NlKSBjYXB0dXJlIGNh
bGxiYWNrICMyIGludm9rZWQiKTsgfSwgdHJ1ZSApOworICAgICAgICAgICAgTi5hZGRFdmVudExp
c3RlbmVyKCJjbG9zZSIsIGZ1bmN0aW9uKCkgeyBsb2coIlBBU1M6IGFkZEV2ZW50TGlzdGVuZXIo
Y2xvc2UpIGNhbGxiYWNrICMzIGludm9rZWQiKTsgfSk7CisgICAgICAgICAgICBOLnNob3coKTsK
KyAgICAgICAgICAgIE4uY2FuY2VsKCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHA+U2VuZGluZyBub3RpZmljYXRpb25zIHdpdGggcGVybWlzc2lvbi4uLjwv
cD4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+ICAgIAorICAgIAorPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorcnVuVGVzdHMoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtcmVxdWVz
dC1wZXJtaXNzaW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1yZXF1ZXN0LXBlcm1pc3Npb24tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlm
aWNhdGlvbnMtcmVxdWVzdC1wZXJtaXNzaW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0IEBACitERVNLVE9QIE5PVElGSUNBVElPTiBQRVJNSVNTSU9OIFJFUVVFU1RFRDog
ZmlsZTovLworUmVxdWVzdGluZyBub3RpZmljYXRpb24gcGVybWlzc2lvbi4uLgorCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXJlcXVlc3QtcGVy
bWlzc2lvbi5odG1sLWRpc2FibGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvbm90
aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXJlcXVlc3QtcGVybWlzc2lvbi5odG1sLWRpc2FibGVk
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNh
dGlvbnMtcmVxdWVzdC1wZXJtaXNzaW9uLmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQor
ICAgICAgICB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iiku
aW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCF3
aW5kb3cud2Via2l0Tm90aWZpY2F0aW9ucykgeworICAgICAgICAgICAgICAgIGxvZygiRkFJTDog
Tm8gd2Via2l0Tm90aWZpY2F0aW9ucyBpbnRlcmZhY2UhIik7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIHZhciBOID0gd2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMu
cmVxdWVzdFBlcm1pc3Npb24oCisgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGxvZygiUEFT
UzogUGVybWlzc2lvbiBjYWxsYmFjayBpbnZva2VkLiIpOyB9CisgICAgICAgICAgICApOworICAg
ICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cD5SZXF1ZXN0aW5n
IG5vdGlmaWNhdGlvbiBwZXJtaXNzaW9uLi4uPC9wPgorICAgIAorICAgIAorPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorcnVuVGVzdHMoKTsKKzwvc2NyaXB0PgorCis8ZGl2IGlkPSJy
ZXN1bHQiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9u
b3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtd2l0aC1wZXJtaXNzaW9uLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9u
cy13aXRoLXBlcm1pc3Npb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtd2l0aC1wZXJtaXNzaW9uLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACitERVNLVE9QIE5PVElGSUNBVElP
TjogY29udGVudHMgYXQgaHR0cDovL2xvY2FsaG9zdC9teV9ub3RpZmljYXRpb24uaHRtbAorREVT
S1RPUCBOT1RJRklDQVRJT046IGljb24gaHR0cDovL2xvY2FsaG9zdC9teV9pY29uLnBuZywgdGl0
bGUgTmV3IEUtbWFpbCwgdGV4dCBNZWV0IG1lIHRvbmlnaHQgYXQgOCEKK1NlbmRpbmcgbm90aWZp
Y2F0aW9ucyB3aXRoIHBlcm1pc3Npb24uLi4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L25v
dGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy13aXRoLXBlcm1pc3Npb24uaHRtbC1kaXNhYmxlZAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9u
cy13aXRoLXBlcm1pc3Npb24uaHRtbC1kaXNhYmxlZAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXdpdGgtcGVybWlzc2lvbi5odG1s
LWRpc2FibGVkCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAg
ICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICAgICAgeworICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4i
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBydW5UZXN0cygpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ncmFudERlc2t0b3BOb3RpZmljYXRp
b25QZXJtaXNzaW9uKCJmaWxlOi8vIik7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXdp
bmRvdy53ZWJraXROb3RpZmljYXRpb25zKSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBO
byB3ZWJraXROb3RpZmljYXRpb25zIGludGVyZmFjZSEiKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgdmFyIE4gPSB3aW5kb3cud2Via2l0Tm90aWZpY2F0aW9ucy5j
cmVhdGVIVE1MTm90aWZpY2F0aW9uKCJodHRwOi8vbG9jYWxob3N0L215X25vdGlmaWNhdGlvbi5o
dG1sIik7CisgICAgICAgICAgICBOLnNob3coKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
dmFyIE0gPSB3aW5kb3cud2Via2l0Tm90aWZpY2F0aW9ucy5jcmVhdGVOb3RpZmljYXRpb24oImh0
dHA6Ly9sb2NhbGhvc3QvbXlfaWNvbi5wbmciLCAiTmV3IEUtbWFpbCIsICJNZWV0IG1lIHRvbmln
aHQgYXQgOCEiKTsKKyAgICAgICAgICAgIE0uc2hvdygpOworICAgICAgICB9CisgICAgPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlNlbmRpbmcgbm90aWZpY2F0aW9ucyB3aXRoIHBlcm1p
c3Npb24uLi48L3A+CisgICAgCisgICAgCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CitydW5UZXN0cygpOworPC9zY3JpcHQ+CisKKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZp
Y2F0aW9ucy13aXRob3V0LXBlcm1pc3Npb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXdpdGhvdXQtcGVybWlz
c2lvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L25vdGlm
aWNhdGlvbnMvbm90aWZpY2F0aW9ucy13aXRob3V0LXBlcm1pc3Npb24tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1NlbmRpbmcgbm90aWZpY2F0aW9ucyB3aXRob3V0
IHBlcm1pc3Npb24uLi4KKworUEFTUzogRXhjZXB0aW9uIHRocm93bi4KKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtd2l0aG91dC1wZXJtaXNzaW9u
Lmh0bWwtZGlzYWJsZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ub3RpZmljYXRp
b25zL25vdGlmaWNhdGlvbnMtd2l0aG91dC1wZXJtaXNzaW9uLmh0bWwtZGlzYWJsZWQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy13
aXRob3V0LXBlcm1pc3Npb24uaHRtbC1kaXNhYmxlZAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhU
TUwgKz0gbWVzc2FnZSArICI8YnI+IjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVu
Y3Rpb24gcnVuVGVzdHMoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgLy8gTk8gUEVSTUlTU0lPTiBsYXlv
dXRUZXN0Q29udHJvbGxlci5ncmFudERlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uKCJmaWxl
Oi8vIik7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXdpbmRvdy53ZWJraXROb3RpZmlj
YXRpb25zKSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBObyB3ZWJraXROb3RpZmljYXRp
b25zIGludGVyZmFjZSEiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB2YXIgTiA9IHdpbmRvdy53ZWJraXROb3RpZmljYXRp
b25zLmNyZWF0ZU5vdGlmaWNhdGlvbigiaHR0cDovL2xvY2FsaG9zdC9teV9pY29uLnBuZyIsICJO
ZXcgRS1tYWlsIiwgIk1lZXQgbWUgdG9uaWdodCBhdCA4ISIpOworICAgICAgICAgICAgICAgIE4u
c2hvdygpOworICAgICAgICAgICAgICAgIGxvZygiRkFJTDogU2hvdWxkIGhhdmUgdGhyb3duIHNl
Y3VyaXR5IGV4Y2VwdGlvbi4iKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgICAgICBsb2coIlBBU1M6IEV4Y2VwdGlvbiB0aHJvd24uIik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+U2VuZGluZyBub3Rp
ZmljYXRpb25zIHdpdGhvdXQgcGVybWlzc2lvbi4uLjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+PC9k
aXY+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK3J1blRlc3RzKCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="17642"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>