<?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>135973</bug_id>
          
          <creation_ts>2014-08-15 05:17:48 -0700</creation_ts>
          <short_desc>[GStreamer] Do not automatically show PackageKit codec installation notifications</short_desc>
          <delta_ts>2015-08-07 02:51:49 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>144099</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>bugzilla</cc>
    
    <cc>cgarcia</cc>
    
    <cc>kalevlember</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>pnormand</cc>
    
    <cc>slomo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1029323</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2014-08-15 05:17:48 -0700</bug_when>
    <thetext>I don&apos;t see the point of using PackageKit codec installation dialogs:

* Distros that include patent-encumbered codecs in their repos, like Debian and Ubuntu, typically install them all by default, so the dialogs do not appear and are not needed.
* Distros that do not install patent-encumbered codecs by default, like Red Hat and SUSE distros, do not include them in their repos, so the dialogs always fail to find the needed codec.

I&apos;m not sure there&apos;s any situation where this dialog is actually helpful, unless used in combination with an alternate package source (rpmfusion for Fedora, Packman for openSUSE), but instructions on how to install the alternate package source typically also include instructions on how to install all the codecs you want.

These dialogs are a bad user experience for several reasons outlined at [1]. Please either do not show these dialogs ever, or only show the dialog if you can predict that codec installation will succeed, or make it possible to disable at compile time.

[1] https://bugzilla.gnome.org/show_bug.cgi?id=726326</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029328</commentid>
    <comment_count>1</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-08-15 05:44:23 -0700</bug_when>
    <thetext>Sebastian, what do you think about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052510</commentid>
    <comment_count>2</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2014-12-04 11:06:26 -0800</bug_when>
    <thetext>See my comment there: https://bugzilla.gnome.org/show_bug.cgi?id=726326#c4


I think from a WebKit point of view it would be good if the codec installer is not popped up immediately... but instead a hint is given to the browser. Then the browser can show something unintrusive in the UI (like Firefox does currently). And only when the user clicks on that, the codec installer would be started... which then would need some feedback mechanism in WebKit to allow the application to notify about the user agreeing to install some codecs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052571</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2014-12-04 14:29:13 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I think from a WebKit point of view it would be good if the codec installer
&gt; is not popped up immediately... but instead a hint is given to the browser.

Absolutely; we should use a signal and let the browser handle it how it wants. For Epiphany I think we&apos;ll use an info bar (for now; probably info bars will be replaced with in-app notifications in the future) to ask the user to install the codec; that would be much better than the pop-up dialog.

The default behavior should probably be to do nothing and fail to play the video; it *could* be to run the codec installer, but the pop-up dialog is going to be replaced with GNOME Software in the near future, and it would be undesirable for a web browser to launch GNOME Software every time I visit a page with multimedia. (I don&apos;t really care what&apos;s default, though.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053026</commentid>
    <comment_count>4</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2014-12-06 09:39:06 -0800</bug_when>
    <thetext>The main problem I see here is that you don&apos;t want to have Epiphany (or other apps using WebKitGTK) to depend on GStreamer directly just for this. And also you don&apos;t want to expose the fact that WebKitGTK is actually using GStreamer for media stuff.

So you would need two things here:
a) a signal that tells Epiphany that codecs or $stuff is missing (I assume you could use the same mechanism to complain about e.g. missing Flash plugin or Java or Hangouts or whatever). This signal would pass some information about what is missing to the app so it can show something to the user if it wants to, and some opaque data structure.
b) a method on WebKit somewhere that can be called with this opaque data structure to actually trigger installation of the missing things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053027</commentid>
    <comment_count>5</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2014-12-06 09:39:51 -0800</bug_when>
    <thetext>And this opaque data structure would also contain enough information for WebKit to restart/reload whatever needed these codecs/plugins/$stuff once the installation was successful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069850</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-02-17 09:26:29 -0800</bug_when>
    <thetext>Lowering the priority of this since it&apos;s a significant amount of work to implement, and because in GNOME 3.16 we will no longer pop up the codec installation dialog, but will instead just display a notification in the notification area. It would still be nice to use an info bar in the browser instead of the notification, as we are doing with Totem. That means implementing Sebastian&apos;s suggestion in comment #4, but we won&apos;t suck if we don&apos;t do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110145</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-17 09:30:03 -0700</bug_when>
    <thetext>Adding API for this requires to move the plugins installation to the UI process, so this depends on bug #144099.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112384</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-27 01:25:31 -0700</bug_when>
    <thetext>I think we can use the permission request API for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112411</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-07-27 07:44:44 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I think we can use the permission request API for this.

Great idea; I hadn&apos;t considered that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112433</commentid>
    <comment_count>10</comment_count>
      <attachid>257566</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-27 10:11:18 -0700</bug_when>
    <thetext>Created attachment 257566
Patch

This patch adds new GTK+ API without unit tests, because I don&apos;t think it&apos;s possible to test this. It depends on gst plugins installed  on the host. It&apos;s handled by the MiniBrowser, so it can be tested manually with MB.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112692</commentid>
    <comment_count>11</comment_count>
      <attachid>257639</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-28 01:43:33 -0700</bug_when>
    <thetext>Created attachment 257639
Updated patch

Fixed and added missing api docs and added a unit test, by removing plugins from the registry as suggested by Philippe (thanks!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112694</commentid>
    <comment_count>12</comment_count>
      <attachid>257639</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-28 01:57:35 -0700</bug_when>
    <thetext>Comment on attachment 257639
Updated patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:203
&gt; +    webkit_settings_set_enable_developer_extras(webkit_web_view_get_settings(test-&gt;m_webView), TRUE);

This is not needed, I added it just for debugging and forgot to remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112861</commentid>
    <comment_count>13</comment_count>
      <attachid>257639</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-07-28 14:10:12 -0700</bug_when>
    <thetext>Comment on attachment 257639
Updated patch

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

I think there are two ways we can go with this API, for applications that want custom prompts:

1) Applications should DENY the permission request and handle the plugin installation themselves: link to GStreamer, create their own GstInstallPluginsContext, show their own confirmation request, then call gst_install_plugins_context_set_confirm_search() (note that&apos;s new is GStreamer 1.6) to disable the confirmation notification. In this case, there is one missing piece to the API: a way to trigger gst_update_registry() in the web process, and then have the web process start playing the media. I think with the API as you have it, Epiphany would need to destroy the web view and make a new one after plugin installation in order to make the media play successfully.

2) Applications should call some function to tell WebKit that the plugin installation should affirmatively be run without any further user interaction and then APPROVE the permission request. Then we don&apos;t have the problem above, and applications don&apos;t have to mess with GStreamer themselves. E.g. webkit_install_missing_media_plugins_permission_request_should_request_user_confirmation(). I think this is the way to go.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequest.cpp:120
&gt; +    // Default behaviour when no decision has been made is denying the request.

OK, I know deny is the default behavior for all existing permission requests, but in this case I think Allow would be a better default: since we replaced the super annoying pop-up dialog with a desktop notification, it&apos;s no longer harmful for applications to display codec notifications by default, and indeed the notification is intended to be displayed by default for applications that don&apos;t do something else themselves. But if the application wants to do something better, like we do for Epiphany, then the app can handle the permission request itself. This is sufficiently different from a web site accessing your location or taking control of your webcam, where deny by default is obviously the right thing to do, that it makes sense to break the pattern of denying all requests by default.

I&apos;m not opposed to adding the API and defaulting to deny if that&apos;s what you want to do, though. I want the API either way. :D

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequest.cpp:144
&gt; + * Gets the details about the missing plugins provided by the media backend when a media couldn&apos;t be played.

Are we trying to avoid reference to GStreamer in the API? Seems like it would be good to mention how to use details.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequest.cpp:146
&gt; + * Returns: a string with the details provided by the media backend, or %NULL if the media backend didn&apos;t provide any details

(nullable)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequest.h:62
&gt; +webkit_install_missing_media_plugins_permission_request_get_details (WebKitInstallMissingMediaPluginsPermissionRequest *request);

Thinking about the API... could we generalize this to WebKitInstallMissingPluginsPermissionRequest? We&apos;d only support GStreamer plugins for now, but in the future we could hook up support to tell browsers to install more things:

WEBKIT_API const gchar *
webkit_install_missing_plugins_permission_request_get_details(WebKitInstallMissingPluginsPermissionRequest *request);

WEBKIT_API WebKitMissingPluginType
webkit_install_missing_plugins_permission_request_get_type(WebKitInstallMissingPluginsPermissionRequest *request);

enum WebKitMissingPluginType {
    WEBKIT_MISSING_GSTREAMER_PLUGIN,
    WEBKIT_MISSING_FLASH_PLUGIN,
    WEBKIT_MISSING_JAVA_PLUGIN,
};

Without needing to add a new PermissionRequest class for each thing. Maybe the _get_details() function would only make sense for GStreamer codecs, though....

&gt; Source/WebKit2/UIProcess/gstreamer/InstallMissingMediaPluginsPermissionRequest.cpp:36
&gt; +InstallMissingMediaPluginsPermissionRequest::InstallMissingMediaPluginsPermissionRequest(WebPageProxy&amp; page,  const String&amp; details)

Extra space after the comma

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp:307
&gt; +    } else if (!g_strcmp0(methodName, &quot;RemoveAVPluginsFromGSTRegistry&quot;)) {

Ha, nice test!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112863</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-07-28 14:14:00 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Thinking about the API... could we generalize this to
&gt; WebKitInstallMissingPluginsPermissionRequest? We&apos;d only support GStreamer
&gt; plugins for now, but in the future we could hook up support to tell browsers
&gt; to install more things:

Hm, I wrote this considering approach (1) above, before I realized approach (2) would be possible. I&apos;m not sure this makes sense in combination with approach (2), which I think is better, since WebKit would need to use GStreamer for plugin installation, but PackageKit for Flash/Java, which it doesn&apos;t currently know about. In approach (1) that would be up to the application, so having the same WebKit API for them all makes more sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112896</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-07-28 15:24:00 -0700</bug_when>
    <thetext>(In reply to comment #13) 
&gt; 2) Applications should call some function to tell WebKit that the plugin
&gt; installation should affirmatively be run without any further user
&gt; interaction and then APPROVE the permission request. Then we don&apos;t have the
&gt; problem above, and applications don&apos;t have to mess with GStreamer
&gt; themselves. E.g.
&gt; webkit_install_missing_media_plugins_permission_request_should_request_user_c
&gt; onfirmation(). I think this is the way to go.

But maybe that can&apos;t use the permission request API, because it would need to be possible to handle it asynchronously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113072</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-29 05:17:00 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Comment on attachment 257639 [details]
&gt; Updated patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=257639&amp;action=review
&gt; 
&gt; I think there are two ways we can go with this API, for applications that
&gt; want custom prompts:
&gt; 
&gt; 1) Applications should DENY the permission request and handle the plugin
&gt; installation themselves: link to GStreamer, create their own
&gt; GstInstallPluginsContext, show their own confirmation request, then call
&gt; gst_install_plugins_context_set_confirm_search() (note that&apos;s new is
&gt; GStreamer 1.6) to disable the confirmation notification. In this case, there
&gt; is one missing piece to the API: a way to trigger gst_update_registry() in
&gt; the web process, and then have the web process start playing the media. I
&gt; think with the API as you have it, Epiphany would need to destroy the web
&gt; view and make a new one after plugin installation in order to make the media
&gt; play successfully.
&gt; 
&gt; 2) Applications should call some function to tell WebKit that the plugin
&gt; installation should affirmatively be run without any further user
&gt; interaction and then APPROVE the permission request. Then we don&apos;t have the
&gt; problem above, and applications don&apos;t have to mess with GStreamer
&gt; themselves. E.g.
&gt; webkit_install_missing_media_plugins_permission_request_should_request_user_c
&gt; onfirmation(). I think this is the way to go.

I think you are mixing two different (but related) things here. One thing is the permission request API to avoid launching the installer automatically, and another one is allowing applications to handle the plugin installation themselves. Those would be different APIs. This patch is only for the first thing. For the second thing we could add a signal to the web view (install-missing-media-plugin) that will be emitted after the permission request and only when the user allowed the request. If the signal is not handled (returns FALSE) then we launch the installer as we currently do, otherwise we don&apos;t do anything. The signal would have a request object with a method to be called by the application to complete the request, that will send the message back to the web process to reset the pipeline. That&apos;s how our API works in other cases, see the notifications API for example.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequest.cpp:120
&gt; &gt; +    // Default behaviour when no decision has been made is denying the request.
&gt; 
&gt; OK, I know deny is the default behavior for all existing permission
&gt; requests, but in this case I think Allow would be a better default: since we
&gt; replaced the super annoying pop-up dialog with a desktop notification, it&apos;s
&gt; no longer harmful for applications to display codec notifications by
&gt; default, and indeed the notification is intended to be displayed by default
&gt; for applications that don&apos;t do something else themselves. But if the
&gt; application wants to do something better, like we do for Epiphany, then the
&gt; app can handle the permission request itself. This is sufficiently different
&gt; from a web site accessing your location or taking control of your webcam,
&gt; where deny by default is obviously the right thing to do, that it makes
&gt; sense to break the pattern of denying all requests by default.
&gt; 
&gt; I&apos;m not opposed to adding the API and defaulting to deny if that&apos;s what you
&gt; want to do, though. I want the API either way. :D

No, I think it makes sense to default to allow in this particular case. I could keep the deny as default when the page client returns false, and allow in the GTK+ API.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequest.cpp:144
&gt; &gt; + * Gets the details about the missing plugins provided by the media backend when a media couldn&apos;t be played.
&gt; 
&gt; Are we trying to avoid reference to GStreamer in the API? Seems like it
&gt; would be good to mention how to use details.

Yes, I tried to avoid using GStreame, using media backend instead. I don&apos;t even know how to explain what the details are :-P

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequest.cpp:146
&gt; &gt; + * Returns: a string with the details provided by the media backend, or %NULL if the media backend didn&apos;t provide any details
&gt; 
&gt; (nullable)

Ok, allow-none until we can bump the g-i requirements

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequest.h:62
&gt; &gt; +webkit_install_missing_media_plugins_permission_request_get_details (WebKitInstallMissingMediaPluginsPermissionRequest *request);
&gt; 
&gt; Thinking about the API... could we generalize this to
&gt; WebKitInstallMissingPluginsPermissionRequest? We&apos;d only support GStreamer
&gt; plugins for now, but in the future we could hook up support to tell browsers
&gt; to install more things:
&gt; 
&gt; WEBKIT_API const gchar *
&gt; webkit_install_missing_plugins_permission_request_get_details(WebKitInstallMi
&gt; ssingPluginsPermissionRequest *request);
&gt; 
&gt; WEBKIT_API WebKitMissingPluginType
&gt; webkit_install_missing_plugins_permission_request_get_type(WebKitInstallMissi
&gt; ngPluginsPermissionRequest *request);
&gt; 
&gt; enum WebKitMissingPluginType {
&gt;     WEBKIT_MISSING_GSTREAMER_PLUGIN,
&gt;     WEBKIT_MISSING_FLASH_PLUGIN,
&gt;     WEBKIT_MISSING_JAVA_PLUGIN,
&gt; };
&gt; 
&gt; Without needing to add a new PermissionRequest class for each thing. Maybe
&gt; the _get_details() function would only make sense for GStreamer codecs,
&gt; though....

Those other things are not even handled by WebKit, and I don&apos;t think we want to handle them in Web-Kit either. Once we have a better plugins API, the application could have enough information about the missing plugin not loaded to run package config itself when the missing plugin button is clicked, for example. And we don&apos;t need any permission request, since it will be handled by the application in response to a user action. Not having flash or java installed is indeed a feature, so I won&apos;t make things easier for the user to install them :-D

&gt; &gt; Source/WebKit2/UIProcess/gstreamer/InstallMissingMediaPluginsPermissionRequest.cpp:36
&gt; &gt; +InstallMissingMediaPluginsPermissionRequest::InstallMissingMediaPluginsPermissionRequest(WebPageProxy&amp; page,  const String&amp; details)
&gt; 
&gt; Extra space after the comma

oops, good catch.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp:307
&gt; &gt; +    } else if (!g_strcmp0(methodName, &quot;RemoveAVPluginsFromGSTRegistry&quot;)) {
&gt; 
&gt; Ha, nice test!

Thanks, phil told me how to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113107</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-07-29 10:24:19 -0700</bug_when>
    <thetext>OK, I agree!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114169</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-08-03 05:32:51 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #13)
&gt; &gt; Comment on attachment 257639 [details]
&gt; &gt; Updated patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=257639&amp;action=review
&gt; &gt; 
&gt; &gt; I think there are two ways we can go with this API, for applications that
&gt; &gt; want custom prompts:
&gt; &gt; 
&gt; &gt; 1) Applications should DENY the permission request and handle the plugin
&gt; &gt; installation themselves: link to GStreamer, create their own
&gt; &gt; GstInstallPluginsContext, show their own confirmation request, then call
&gt; &gt; gst_install_plugins_context_set_confirm_search() (note that&apos;s new is
&gt; &gt; GStreamer 1.6) to disable the confirmation notification. In this case, there
&gt; &gt; is one missing piece to the API: a way to trigger gst_update_registry() in
&gt; &gt; the web process, and then have the web process start playing the media. I
&gt; &gt; think with the API as you have it, Epiphany would need to destroy the web
&gt; &gt; view and make a new one after plugin installation in order to make the media
&gt; &gt; play successfully.
&gt; &gt; 
&gt; &gt; 2) Applications should call some function to tell WebKit that the plugin
&gt; &gt; installation should affirmatively be run without any further user
&gt; &gt; interaction and then APPROVE the permission request. Then we don&apos;t have the
&gt; &gt; problem above, and applications don&apos;t have to mess with GStreamer
&gt; &gt; themselves. E.g.
&gt; &gt; webkit_install_missing_media_plugins_permission_request_should_request_user_c
&gt; &gt; onfirmation(). I think this is the way to go.
&gt; 
&gt; I think you are mixing two different (but related) things here. One thing is
&gt; the permission request API to avoid launching the installer automatically,
&gt; and another one is allowing applications to handle the plugin installation
&gt; themselves. Those would be different APIs. This patch is only for the first
&gt; thing. For the second thing we could add a signal to the web view
&gt; (install-missing-media-plugin) that will be emitted after the permission
&gt; request and only when the user allowed the request. If the signal is not
&gt; handled (returns FALSE) then we launch the installer as we currently do,
&gt; otherwise we don&apos;t do anything. The signal would have a request object with
&gt; a method to be called by the application to complete the request, that will
&gt; send the message back to the web process to reset the pipeline. That&apos;s how
&gt; our API works in other cases, see the notifications API for example.
&gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequest.cpp:120
&gt; &gt; &gt; +    // Default behaviour when no decision has been made is denying the request.
&gt; &gt; 
&gt; &gt; OK, I know deny is the default behavior for all existing permission
&gt; &gt; requests, but in this case I think Allow would be a better default: since we
&gt; &gt; replaced the super annoying pop-up dialog with a desktop notification, it&apos;s
&gt; &gt; no longer harmful for applications to display codec notifications by
&gt; &gt; default, and indeed the notification is intended to be displayed by default
&gt; &gt; for applications that don&apos;t do something else themselves. But if the
&gt; &gt; application wants to do something better, like we do for Epiphany, then the
&gt; &gt; app can handle the permission request itself. This is sufficiently different
&gt; &gt; from a web site accessing your location or taking control of your webcam,
&gt; &gt; where deny by default is obviously the right thing to do, that it makes
&gt; &gt; sense to break the pattern of denying all requests by default.
&gt; &gt; 
&gt; &gt; I&apos;m not opposed to adding the API and defaulting to deny if that&apos;s what you
&gt; &gt; want to do, though. I want the API either way. :D
&gt; 
&gt; No, I think it makes sense to default to allow in this particular case. I
&gt; could keep the deny as default when the page client returns false, and allow
&gt; in the GTK+ API.
&gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequest.cpp:144
&gt; &gt; &gt; + * Gets the details about the missing plugins provided by the media backend when a media couldn&apos;t be played.
&gt; &gt; 
&gt; &gt; Are we trying to avoid reference to GStreamer in the API? Seems like it
&gt; &gt; would be good to mention how to use details.
&gt; 
&gt; Yes, I tried to avoid using GStreame, using media backend instead. I don&apos;t
&gt; even know how to explain what the details are :-P

OK, I think we shouldn&apos;t even have this API here. We should only return the description, as returned by gst_missing_plugin_message_get_description(), and the details string should be part of the API to actually implement your own installer (the install-missing-media-plugin signal).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114175</commentid>
    <comment_count>19</comment_count>
      <attachid>258057</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-08-03 06:15:19 -0700</bug_when>
    <thetext>Created attachment 258057
Updated patch

Changed the default to allow for backwards compatibility as suggested by Michael, and replaced get_details by get_description in the API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114182</commentid>
    <comment_count>20</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-08-03 08:04:58 -0700</bug_when>
    <thetext>The documentation for WebKitWebView::permission-request will also need updated, since it says &quot;[b]y default, if the signal is not handled, webkit_permission_request_deny() will be called over the WebKitPermissionRequest&quot; which is no longer always true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114554</commentid>
    <comment_count>21</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-08-04 00:20:18 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; The documentation for WebKitWebView::permission-request will also need
&gt; updated, since it says &quot;[b]y default, if the signal is not handled,
&gt; webkit_permission_request_deny() will be called over the
&gt; WebKitPermissionRequest&quot; which is no longer always true.

Good catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114556</commentid>
    <comment_count>22</comment_count>
      <attachid>258159</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-08-04 00:21:23 -0700</bug_when>
    <thetext>Created attachment 258159
Updated patch

Updated the documentation about the default behaviour when permission requests are not handled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115704</commentid>
    <comment_count>23</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-08-07 02:51:49 -0700</bug_when>
    <thetext>Committed r188121: &lt;http://trac.webkit.org/changeset/188121&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257566</attachid>
            <date>2015-07-27 10:11:18 -0700</date>
            <delta_ts>2015-07-28 01:43:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-missing-gst-plugins-permission-request.diff</filename>
            <type>text/plain</type>
            <size>37530</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5OTcyNGVhLi40OTljNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjAg
QEAKIDIwMTUtMDctMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHU3RyZWFtZXJdIERvIG5vdCBhdXRvbWF0aWNhbGx5IHNob3cgUGFja2Fn
ZUtpdCBjb2RlYyBpbnN0YWxsYXRpb24gbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1OTczCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3QgdG8gYXNrIHRoZSBBUEkKKyAgICAgICAgbGF5ZXIgd2hldGhl
ciB0byBhbGxvdyBvciBkZW55IHRoZSBpbnN0YWxsYXRpb24gb2YgbWlzc2luZyBtZWRpYQorICAg
ICAgICBwbHVnaW5zLiBBbmQgYWRkIGEgR1RLKyBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBjdXJy
ZW50IHBlcm1pc3Npb24KKyAgICAgICAgcmVxdWVzdCBBUEkuIFJlcGxhY2UgdGhlCisgICAgICAg
IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQoKSB3aXRoCisg
ICAgICAgIGRlY2ljZVBvbGljeUZvckluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lv
blJlcXVlc3QoKSB0aGF0CisgICAgICAgIHBhc3NlcyB0aGUgSW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdCBvYmplY3QgdG8KKyAgICAgICAgdGhlIEFQSSBsYXllci4g
VGhlIGFsbG93IG1ldGhvZCByZWNlaXZlcyB0aGUKKyAgICAgICAgR3N0SW5zdGFsbFBsdWdpbnND
b250ZXh0IG5vdywgc28gdGhhdCBpdCBjYW4gYmUgY3JlYXRlZCBieSB0aGUgQVBJIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogUGxhdGZv
cm1HVEsuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGVjaWNlUG9saWN5Rm9ySW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNw
cDogQWRkZWQuCisgICAgICAgIChjcmVhdGVHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQpOgorICAg
ICAgICAod2Via2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdEFs
bG93KToKKyAgICAgICAgKHdlYmtpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lv
blJlcXVlc3REZW55KToKKyAgICAgICAgKHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJm
YWNlX2luaXQpOgorICAgICAgICAod2Via2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJt
aXNzaW9uUmVxdWVzdERpc3Bvc2UpOgorICAgICAgICAod2Via2l0X2luc3RhbGxfbWlzc2luZ19t
ZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25fcmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdl
YmtpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RDcmVhdGUpOgor
ICAgICAgICAod2Via2l0X2luc3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25f
cmVxdWVzdF9nZXRfZGV0YWlscyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lu
c1Blcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdSZXF1ZXN0
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlczoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L3dlYmtpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9nc3RyZWFt
ZXIvSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0
cmVhbWVyLmNwcC4KKyAgICAgICAgKFdlYktpdDo6SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdDo6SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVx
dWVzdCk6CisgICAgICAgIChXZWJLaXQ6Okluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlz
c2lvblJlcXVlc3Q6On5JbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9u
UmVxdWVzdDo6YWxsb3cpOgorICAgICAgICAoV2ViS2l0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpkZW55KToKKyAgICAgICAgKFdlYktpdDo6SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDo6ZGlkRW5kUmVxdWVzdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3N0cmVhbWVyL0luc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3Bw
LgorICAgICAgICAoV2ViS2l0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25S
ZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpwYWdlKToKKyAgICAgICAgKFdlYktpdDo6SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDo6ZGV0YWlscyk6CisgICAgICAgICog
VUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyk6
CisKKzIwMTUtMDctMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCiAgICAgICAgIFtHVEtdIFBhc3MgYSBHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQgdG8gZ3N0
X2luc3RhbGxfcGx1Z2luc19hc3luYwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ3MTAzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggYWRi
YmYzNC4uYTZiYjc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE4Myw2ICsxODMs
NyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZsL1dlYlVJ
UG9wdXBNZW51Q2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5jcHAKIAor
ICAgIFVJUHJvY2Vzcy9nc3RyZWFtZXIvSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNz
aW9uUmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJl
YW1lci5jcHAKIAogICAgIFVJUHJvY2Vzcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJQcm94eVNvdXAu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDYxMTNlNjEuLmIzYjc5MGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xNjksNiArMTY5LDkgQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SGl0VGVzdFJlc3VsdFBy
aXZhdGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmgK
KyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaAorICAgIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2
YXRlLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaAogICAgIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEphdmFzY3JpcHRSZXN1bHRQcml2YXRlLmgKQEAgLTI5MCw2ICsy
OTMsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9jYWly
by9CYWNraW5nU3RvcmVDYWlyby5jcHAKIAorICAgIFVJUHJvY2Vzcy9nc3RyZWFtZXIvSW5zdGFs
bE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3Mv
Z3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKIAogICAgIFVJUHJvY2Vzcy9ndGsv
RHJhZ0FuZERyb3BIYW5kbGVyLmNwcApAQCAtMzkzLDYgKzM5Nyw3IEBAIHNldChXZWJLaXQyR1RL
X0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Rm9yd2FyZERlY2xhcmF0aW9ucy5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCiAgICAgJHtXRUJL
SVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SGl0VGVzdFJlc3VsdC5oCisgICAgJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0TWltZUluZm8uaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdE5hdmlnYXRpb25BY3Rpb24uaApAQCAtNTAwLDYgKzUwNSw3IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElS
fS9VSVByb2Nlc3MvQVBJL2d0ayIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9Q
bHVnaW5zL2d0ayIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL2dzdHJlYW1lciIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL2d0ayIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQ
cm9jZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ayIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmNwcAppbmRleCA1MDcwYWUyLi5hYWZjM2U1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC00NCwx
NCArNDQsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9FdmVudE5hbWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKFgx
MSkKLSNpbmNsdWRlIDxnZGsvZ2RreC5oPgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ0OCwxNyArNDQzLDE1IEBAIHZvaWQgUGFn
ZUNsaWVudEltcGw6OmRlcmVmVmlldygpCiAgICAgZ19vYmplY3RfdW5yZWYobV92aWV3V2lkZ2V0
KTsKIH0KIAotR1VuaXF1ZVB0cjxHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQ+IFBhZ2VDbGllbnRJ
bXBsOjpjcmVhdGVHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQoKQorI2lmIEVOQUJMRShWSURFTykK
K2Jvb2wgUGFnZUNsaWVudEltcGw6OmRlY2ljZVBvbGljeUZvckluc3RhbGxNaXNzaW5nTWVkaWFQ
bHVnaW5zUGVybWlzc2lvblJlcXVlc3QoSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNz
aW9uUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSNpZiBQTEFURk9STShYMTEpCi0gICAgaWYgKFBsYXRm
b3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5
cGU6OlgxMSkgewotICAgICAgICBHVW5pcXVlUHRyPEdzdEluc3RhbGxQbHVnaW5zQ29udGV4dD4g
Y29udGV4dChnc3RfaW5zdGFsbF9wbHVnaW5zX2NvbnRleHRfbmV3KCkpOwotICAgICAgICBnc3Rf
aW5zdGFsbF9wbHVnaW5zX2NvbnRleHRfc2V0X3hpZChjb250ZXh0LmdldCgpLCBHREtfV0lORE9X
X1hJRChndGtfd2lkZ2V0X2dldF93aW5kb3cobV92aWV3V2lkZ2V0KSkpOwotICAgICAgICByZXR1
cm4gY29udGV4dDsKLSAgICB9Ci0jZW5kaWYKKyAgICBpZiAoIVdFQktJVF9JU19XRUJfVklFVyht
X3ZpZXdXaWRnZXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB3ZWJraXRXZWJWaWV3UmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKFdF
QktJVF9XRUJfVklFVyhtX3ZpZXdXaWRnZXQpLCByZXF1ZXN0KTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IDAyNTkwMzEuLmNlNTg3
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuaApAQCAtMTQyLDcgKzE0Miw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJl
ZlZpZXcoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZWaWV3KCkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIEdVbmlxdWVQdHI8R3N0SW5zdGFsbFBsdWdpbnNDb250ZXh0PiBjcmVh
dGVHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQoKSBvdmVycmlkZTsKKyNpZiBFTkFCTEUoVklERU8p
CisgICAgdmlydHVhbCBib29sIGRlY2ljZVBvbGljeUZvckluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3QoSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9u
UmVxdWVzdCYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAgICAvLyBNZW1iZXJzIG9mIFBhZ2VDbGll
bnRJbXBsIGNsYXNzCiAgICAgR3RrV2lkZ2V0KiBtX3ZpZXdXaWRnZXQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlh
UGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Qu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NjdiZjMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnN0YWxs
TWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcApAQCAtMCwwICsxLDE1MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9u
UmVxdWVzdC5oIgorCisjaW5jbHVkZSAiV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRQZXJtaXNzaW9uUmVx
dWVzdC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorCisjaWYgRU5BQkxFKFZJREVPKQor
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5o
PgorI2lmIFBMQVRGT1JNKFgxMSkKKyNpbmNsdWRlIDxnZGsvZ2RreC5oPgorI2VuZGlmCisjZW5k
aWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CisvKioKKyAqIFNFQ1RJT046IFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlz
c2lvblJlcXVlc3QKKyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogQSBwZXJtaXNzaW9uIHJlcXVlc3Qg
Zm9yIHNoYXJpbmcgdXNlcidzIGxvY2F0aW9uCisgKiBAVGl0bGU6IFdlYktpdEluc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QKKyAqIEBTZWVfYWxzbzogI1dlYktpdFBl
cm1pc3Npb25SZXF1ZXN0LCAjV2ViS2l0V2ViVmlldworICoKKyAqIFdlYktpdEluc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QgcmVwcmVzZW50cyBhIHJlcXVlc3QgZm9y
CisgKiBwZXJtaXNzaW9uIHRvIGRlY2lkZSB3aGV0aGVyIFdlYktpdCBzaG91bGQgcHJvdmlkZSB0
aGUgdXNlcidzCisgKiBsb2NhdGlvbiB0byBhIHdlYnNpdGUgd2hlbiByZXF1ZXN0ZWQgdGhyb3Vn
aHQgdGhlIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zIEFQSS4KKyAqLworCitzdGF0aWMgdm9p
ZCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KFdlYktpdFBlcm1pc3Np
b25SZXF1ZXN0SWZhY2UqKTsKKworc3RydWN0IF9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSB7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIFJl
ZlB0cjxJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0PiByZXF1ZXN0
OworI2VuZGlmCisgICAgQ1N0cmluZyBkZXRhaWxzOworICAgIGJvb2wgbWFkZURlY2lzaW9uOwor
fTsKKworV0VCS0lUX0RFRklORV9UWVBFX1dJVEhfQ09ERSgKKyAgICBXZWJLaXRJbnN0YWxsTWlz
c2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LCB3ZWJraXRfaW5zdGFsbF9taXNzaW5n
X21lZGlhX3BsdWdpbnNfcGVybWlzc2lvbl9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNULAorICAgIEdf
SU1QTEVNRU5UX0lOVEVSRkFDRShXRUJLSVRfVFlQRV9QRVJNSVNTSU9OX1JFUVVFU1QsIHdlYmtp
dF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQpKQorCisjaWYgRU5BQkxFKFZJREVP
KQorc3RhdGljIEdVbmlxdWVQdHI8R3N0SW5zdGFsbFBsdWdpbnNDb250ZXh0PiBjcmVhdGVHc3RJ
bnN0YWxsUGx1Z2luc0NvbnRleHQoR3RrV2lkZ2V0KiB3aWRnZXQpCit7CisjaWYgUExBVEZPUk0o
WDExKQorICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0g
UGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpIHsKKyAgICAgICAgR1VuaXF1ZVB0cjxHc3RJbnN0
YWxsUGx1Z2luc0NvbnRleHQ+IGNvbnRleHQoZ3N0X2luc3RhbGxfcGx1Z2luc19jb250ZXh0X25l
dygpKTsKKyAgICAgICAgZ3N0X2luc3RhbGxfcGx1Z2luc19jb250ZXh0X3NldF94aWQoY29udGV4
dC5nZXQoKSwgR0RLX1dJTkRPV19YSUQoZ3RrX3dpZGdldF9nZXRfd2luZG93KHdpZGdldCkpKTsK
KyAgICAgICAgcmV0dXJuIGNvbnRleHQ7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCB3ZWJraXRJbnN0YWxsTWlzc2luZ01lZGlh
UGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0QWxsb3coV2ViS2l0UGVybWlzc2lvblJlcXVlc3QqIHJl
cXVlc3QpCit7CisgICAgQVNTRVJUKFdFQktJVF9JU19JTlNUQUxMX01JU1NJTkdfTUVESUFfUExV
R0lOU19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworCisgICAgV2ViS2l0SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUqIHByaXYgPSBXRUJLSVRf
SU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3Qp
LT5wcml2OworCisgICAgLy8gT25seSBvbmUgZGVjaXNpb24gYXQgYSB0aW1lLgorICAgIGlmIChw
cml2LT5tYWRlRGVjaXNpb24pCisgICAgICAgIHJldHVybjsKKyNpZiBFTkFCTEUoVklERU8pCisg
ICAgcHJpdi0+cmVxdWVzdC0+YWxsb3coY3JlYXRlR3N0SW5zdGFsbFBsdWdpbnNDb250ZXh0KHBy
aXYtPnJlcXVlc3QtPnBhZ2UoKS52aWV3V2lkZ2V0KCkpKTsKKyNlbmRpZgorICAgIHByaXYtPm1h
ZGVEZWNpc2lvbiA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdEluc3RhbGxNaXNzaW5n
TWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3REZW55KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0
KiByZXF1ZXN0KQoreworICAgIEFTU0VSVChXRUJLSVRfSVNfSU5TVEFMTF9NSVNTSU5HX01FRElB
X1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIFdlYktpdEluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKiBwcml2ID0gV0VC
S0lUX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1
ZXN0KS0+cHJpdjsKKworICAgIC8vIE9ubHkgb25lIGRlY2lzaW9uIGF0IGEgdGltZS4KKyAgICBp
ZiAocHJpdi0+bWFkZURlY2lzaW9uKQorICAgICAgICByZXR1cm47CisKKyNpZiBFTkFCTEUoVklE
RU8pCisgICAgcHJpdi0+cmVxdWVzdC0+ZGVueSgpOworI2VuZGlmCisgICAgcHJpdi0+bWFkZURl
Y2lzaW9uID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVz
dF9pbnRlcmZhY2VfaW5pdChXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdElmYWNlKiBpZmFjZSkKK3sK
KyAgICBpZmFjZS0+YWxsb3cgPSB3ZWJraXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0QWxsb3c7CisgICAgaWZhY2UtPmRlbnkgPSB3ZWJraXRJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0RGVueTsKK30KKworc3RhdGljIHZvaWQgd2Vi
a2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdERpc3Bvc2UoR09i
amVjdCogb2JqZWN0KQoreworICAgIC8vIERlZmF1bHQgYmVoYXZpb3VyIHdoZW4gbm8gZGVjaXNp
b24gaGFzIGJlZW4gbWFkZSBpcyBkZW55aW5nIHRoZSByZXF1ZXN0LgorICAgIHdlYmtpdEluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3REZW55KFdFQktJVF9QRVJNSVNT
SU9OX1JFUVVFU1Qob2JqZWN0KSk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2luc3RhbGxf
bWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25fcmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5k
aXNwb3NlKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9pbnN0YWxsX21pc3Npbmdf
bWVkaWFfcGx1Z2luc19wZXJtaXNzaW9uX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJLaXRJbnN0YWxs
TWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Q2xhc3MqIGtsYXNzKQoreworICAg
IEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAg
b2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJraXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0RGlzcG9zZTsKK30KKworI2lmIEVOQUJMRShWSURFTykKK1dlYktpdElu
c3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QqIHdlYmtpdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RDcmVhdGUoSW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBXZWJLaXRJbnN0
YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KiBwZXJtaXNzaW9uUmVxdWVz
dCA9IFdFQktJVF9JTlNUQUxMX01JU1NJTkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVF
U1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5T
X1BFUk1JU1NJT05fUkVRVUVTVCwgbnVsbHB0cikpOworICAgIHBlcm1pc3Npb25SZXF1ZXN0LT5w
cml2LT5yZXF1ZXN0ID0gJnJlcXVlc3Q7CisgICAgcmV0dXJuIHBlcm1pc3Npb25SZXF1ZXN0Owor
fQorI2VuZGlmCisKK2NvbnN0IGNoYXIqIHdlYmtpdF9pbnN0YWxsX21pc3NpbmdfbWVkaWFfcGx1
Z2luc19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X2RldGFpbHMoV2ViS2l0SW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlT
U0lPTl9SRVFVRVNUKHJlcXVlc3QpLCBudWxscHRyKTsKKworI2lmIEVOQUJMRShWSURFTykKKyAg
ICBpZiAoIXJlcXVlc3QtPnByaXYtPmRldGFpbHMuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBy
ZXF1ZXN0LT5wcml2LT5kZXRhaWxzLmRhdGEoKTsKKworICAgIGNvbnN0IGF1dG8mIGRldGFpbHMg
PSByZXF1ZXN0LT5wcml2LT5yZXF1ZXN0LT5kZXRhaWxzKCk7CisgICAgaWYgKGRldGFpbHMuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJlcXVlc3QtPnByaXYtPmRl
dGFpbHMgPSByZXF1ZXN0LT5wcml2LT5yZXF1ZXN0LT5kZXRhaWxzKCkudXRmOCgpOworI2VuZGlm
CisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPmRldGFpbHMuZGF0YSgpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVz
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhZjQyZGYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnN0YWxs
TWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAsMCArMSw2NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJL
SVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3Ig
Ik9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2Vu
ZGlmCisKKyNpZm5kZWYgV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9u
UmVxdWVzdF9oCisjZGVmaW5lIFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlz
c2lvblJlcXVlc3RfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9U
WVBFX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVCAgICAg
ICAgICAgICh3ZWJraXRfaW5zdGFsbF9taXNzaW5nX21lZGlhX3BsdWdpbnNfcGVybWlzc2lvbl9y
ZXF1ZXN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9JTlNUQUxMX01JU1NJTkdfTUVESUFf
UExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1Qob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tf
SU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BM
VUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lu
c1Blcm1pc3Npb25SZXF1ZXN0KSkKKyNkZWZpbmUgV0VCS0lUX0lTX0lOU1RBTExfTUlTU0lOR19N
RURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9JTlNUQUxMX01JU1NJTkdfTUVESUFf
UExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfSU5TVEFMTF9NSVNT
SU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTKGtsYXNzKSAgICAoR19U
WVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0lOU1RBTExfTUlTU0lO
R19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0SW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0lO
U1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUyhrbGFz
cykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9JTlNUQUxM
X01JU1NJTkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QpKQorI2RlZmluZSBXRUJL
SVRfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUX0dFVF9D
TEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBF
X0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdENsYXNzKSkKKwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3QgICAgICAgIFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdENsYXNzICAgV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEluc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIFdlYktpdEluc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlOworCitzdHJ1Y3QgX1dlYktp
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QgeworICAgIEdPYmpl
Y3QgcGFyZW50OworCisgICAgV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNz
aW9uUmVxdWVzdFByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdEluc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RDbGFzcyB7CisgICAgR09iamVjdENsYXNz
IHBhcmVudF9jbGFzczsKKworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOwor
ICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0
X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQp
OworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2luc3RhbGxfbWlzc2luZ19tZWRpYV9w
bHVnaW5zX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZSAodm9pZCk7CisKK1dFQktJVF9BUEkg
Y29uc3QgZ2NoYXIgKgord2Via2l0X2luc3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1p
c3Npb25fcmVxdWVzdF9nZXRfZGV0YWlscyAoV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdp
bnNQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5zdGFs
bE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5z
UGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMmM3ZTNiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVl
c3RQcml2YXRlLmgKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJ
Z2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaWZuZGVmIFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlz
c2lvblJlcXVlc3RQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGVfaAorCisjaW5jbHVkZSAiSW5zdGFsbE1pc3Np
bmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYktpdEluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJL
aXRQcml2YXRlLmgiCisKKyNpZiBFTkFCTEUoVklERU8pCitXZWJLaXRJbnN0YWxsTWlzc2luZ01l
ZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KiB3ZWJraXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKFdlYktpdDo6SW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdCYpOworI2VuZGlmCisKKyNlbmRpZiAvLyBXZWJLaXRJbnN0
YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4
IGViODRiNjEuLjM0ZTAzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiV2Vi
S2l0Rm9ybUNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdEZ1bGxzY3JlZW5DbGllbnQuaCIKICNp
bmNsdWRlICJXZWJLaXRIaXRUZXN0UmVzdWx0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdElu
c3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0SmF2YXNjcmlwdFJlc3VsdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRM
b2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXRNYXJzaGFsLmgiCkBAIC0yMTQ1LDYgKzIx
NDYsMTYgQEAgdm9pZCB3ZWJraXRXZWJWaWV3U2VsZWN0aW9uRGlkQ2hhbmdlKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCiAgICAgd2Via2l0RWRpdG9yU3RhdGVDaGFuZ2VkKHdlYlZpZXctPnByaXYt
PmVkaXRvclN0YXRlLmdldCgpLCBnZXRQYWdlKHdlYlZpZXcpLT5lZGl0b3JTdGF0ZSgpKTsKIH0K
IAordm9pZCB3ZWJraXRXZWJWaWV3UmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lv
blJlcXVlc3QmIHJlcXVlc3QpCit7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIEdSZWZQdHI8V2Vi
S2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdD4gaW5zdGFsbE1l
ZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdEluc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RDcmVhdGUocmVxdWVzdCkpOworICAgIHdl
YmtpdFdlYlZpZXdNYWtlUGVybWlzc2lvblJlcXVlc3Qod2ViVmlldywgV0VCS0lUX1BFUk1JU1NJ
T05fUkVRVUVTVChpbnN0YWxsTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuZ2V0KCkpKTsK
KyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwogLyoqCiAgKiB3
ZWJraXRfd2ViX3ZpZXdfbmV3OgogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGE3ODg2NTMuLmVjZTRi
ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdQcml2YXRlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgV2ViS2l0V2Vi
Vmlld1ByaXZhdGVfaAogI2RlZmluZSBXZWJLaXRXZWJWaWV3UHJpdmF0ZV9oCiAKKyNpbmNsdWRl
ICJJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgogI2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1bHQu
aCIKICNpbmNsdWRlICJXZWJJbWFnZS5oIgpAQCAtNjMsNSArNjQsNiBAQCBib29sIHdlYmtpdFdl
YlZpZXdFbWl0UnVuQ29sb3JDaG9vc2VyKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0Kgogdm9pZCB3ZWJraXRXZWJWaWV3V2ViUHJvY2Vzc0NyYXNoZWQoV2ViS2l0V2Vi
VmlldyopOwogdm9pZCB3ZWJraXRXZWJWaWV3SXNQbGF5aW5nQXVkaW9DaGFuZ2VkKFdlYktpdFdl
YlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViVmlld1NlbGVjdGlvbkRpZENoYW5nZShXZWJLaXRXZWJW
aWV3Kik7Cit2b2lkIHdlYmtpdFdlYlZpZXdSZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdp
bnMoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJt
aXNzaW9uUmVxdWVzdCYpOwogCiAjZW5kaWYgLy8gV2ViS2l0V2ViVmlld1ByaXZhdGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCA5ZTFhOTIxLi44NTgxYzI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
NC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtNTkxLDYgKzU5MSwyNSBAQCB3ZWJr
aXRfZ2VvbG9jYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlCiA8L1NFQ1RJT04+CiAK
IDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNz
aW9uUmVxdWVzdDwvRklMRT4KK1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlz
c2lvblJlcXVlc3QKK3dlYmtpdF9pbnN0YWxsX21pc3NpbmdfbWVkaWFfcGx1Z2luc19wZXJtaXNz
aW9uX3JlcXVlc3RfZ2V0X2RldGFpbHMKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Q2xhc3MKK1dFQktJVF9U
WVBFX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVAorV0VC
S0lUX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVAorV0VC
S0lUX0lTX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVAor
V0VCS0lUX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVF9D
TEFTUworV0VCS0lUX0lTX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05f
UkVRVUVTVF9DTEFTUworV0VCS0lUX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1J
U1NJT05fUkVRVUVTVF9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdElu
c3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlCit3ZWJraXRf
aW5zdGFsbF9taXNzaW5nX21lZGlhX3BsdWdpbnNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBl
Cis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0TmF2aWdhdGlvbkFjdGlvbjwv
RklMRT4KIFdlYktpdE5hdmlnYXRpb25BY3Rpb24KIHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9j
b3B5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstNC4wLnR5cGVzIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLTQuMC50eXBlcwppbmRleCA5Y2RjMDk4Li5mMjI3NDhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLnR5
cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay00LjAudHlwZXMKQEAgLTMxLDMgKzMxLDQgQEAgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2Vy
X2dldF90eXBlCiB3ZWJraXRfd2ViX2hpdF90ZXN0X3Jlc3VsdF9nZXRfdHlwZQogd2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF90eXBlCiB3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF90eXBl
Cit3ZWJraXRfaW5zdGFsbF9taXNzaW5nX21lZGlhX3BsdWdpbnNfcGVybWlzc2lvbl9yZXF1ZXN0
X2dldF90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCAwM2VlYzI3Li43NTZhYTBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
ZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTIzLDYgKzIzLDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvV2ViS2l0RG93bmxvYWQueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dl
YktpdFBlcm1pc3Npb25SZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9X
ZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LnhtbCIvPgorICAgIDx4aTppbmNsdWRl
IGhyZWY9InhtbC9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1
ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXROYXZpZ2F0aW9uQWN0
aW9uLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UG9s
aWN5RGVjaXNpb24ueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmgKaW5kZXggY2VhNGVhOC4uN2UwOGE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRI
aXRUZXN0UmVzdWx0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRJbnN0YWxsTWlzc2luZ01l
ZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRK
YXZhc2NyaXB0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRNaW1lSW5mby5oPgog
I2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0TmF2aWdhdGlvbkFjdGlvbi5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggZjAyNjllYi4uNjc4NTM2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0zNCwxMCArMzQsNiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAotI2lmIFVT
RShHU1RSRUFNRVIpCi0jaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyR1N0cmVhbWVyLmg+Ci0j
ZW5kaWYKLQogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlBsdWdpbkNvbXBsZXhUZXh0
SW5wdXRTdGF0ZS5oIgogCkBAIC03OSw2ICs3NSwxMCBAQCBjbGFzcyBXZWJDb2xvclBpY2tlcjsK
IGNsYXNzIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQ7CiAjZW5kaWYKIAorI2lmIFVT
RShHU1RSRUFNRVIpCitjbGFzcyBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25S
ZXF1ZXN0OworI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIHN0cnVjdCBDb2xvclNwYWNl
RGF0YTsKICNlbmRpZgpAQCAtMzQxLDcgKzM0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGVyZWZWaWV3KCkgPSAwOwogCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICB2aXJ0dWFsIEdV
bmlxdWVQdHI8R3N0SW5zdGFsbFBsdWdpbnNDb250ZXh0PiBjcmVhdGVHc3RJbnN0YWxsUGx1Z2lu
c0NvbnRleHQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGRlY2ljZVBvbGljeUZvckluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QoSW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdCYpID0gMDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaAppbmRleCA1ZTNlOWEwLi5kMTFhMWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaApAQCAtOTgsNyArOTgsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZXJlZlZpZXcoKSBvdmVycmlkZSBmaW5hbCB7
IH0KIAogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgdmlydHVhbCBHVW5pcXVlUHRyPEdzdEluc3Rh
bGxQbHVnaW5zQ29udGV4dD4gY3JlYXRlR3N0SW5zdGFsbFBsdWdpbnNDb250ZXh0KCkgb3ZlcnJp
ZGUgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVjaWNlUG9s
aWN5Rm9ySW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdChJbnN0YWxs
TWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Jikgb3ZlcnJpZGUgZmluYWwgeyBy
ZXR1cm4gZmFsc2U7IH07CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9nc3RyZWFtZXIvSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJt
aXNzaW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3N0cmVhbWVyL0lu
c3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MjJmN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3N0cmVhbWVyL0luc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5z
UGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaCIKKwor
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJXZWJQYWdlTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Np
b25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYgcGFnZSwgIGNvbnN0IFN0cmluZyYgZGV0YWlscykKKyAg
ICA6IG1fcGFnZSgmcGFnZSkKKyAgICAsIG1fZGV0YWlscyhkZXRhaWxzKQoreworfQorCitJbnN0
YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Ojp+SW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCgpCit7Cit9CisKK3ZvaWQgSW5zdGFsbE1pc3Np
bmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDo6YWxsb3coR1VuaXF1ZVB0cjxHc3RJbnN0
YWxsUGx1Z2luc0NvbnRleHQ+JiYgY29udGV4dCkKK3sKKyAgICBpZiAoIW1fcGFnZS0+aXNWYWxp
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDU3RyaW5nIGRldGFpbCA9IG1fZGV0YWlscy51
dGY4KCk7CisgICAgY29uc3QgY2hhciogZGV0YWlsQXJyYXlbMl0gPSB7IGRldGFpbC5kYXRhKCks
IG51bGxwdHIgfTsKKyAgICByZWYoKTsKKyAgICBHc3RJbnN0YWxsUGx1Z2luc1JldHVybiByZXN1
bHQgPSBnc3RfaW5zdGFsbF9wbHVnaW5zX2FzeW5jKGRldGFpbEFycmF5LCBjb250ZXh0LmdldCgp
LCBbXShHc3RJbnN0YWxsUGx1Z2luc1JldHVybiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7
CisgICAgICAgIFJlZlB0cjxJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1
ZXN0PiByZXF1ZXN0ID0gYWRvcHRSZWYoc3RhdGljX2Nhc3Q8SW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdCo+KHVzZXJEYXRhKSk7CisgICAgICAgIHJlcXVlc3QtPmRp
ZEVuZFJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhzdGF0aWNfY2FzdDx1aW50MzJf
dD4ocmVzdWx0KSk7CisgICAgICAgIH0sIHRoaXMpOworCisgICAgaWYgKHJlc3VsdCAhPSBHU1Rf
SU5TVEFMTF9QTFVHSU5TX1NUQVJURURfT0spIHsKKyAgICAgICAgLy8gSWYgdGhlIGluc3RhbGxl
ciBkaWRuJ3Qgc3RhcnQsIHRoZSBjYWxsYmFjayB3aWxsIG5vdCBiZSBjYWxsZWQsIHNvIHJlbW92
ZSB0aGUgcmVmIG1hbnVhbGx5LgorICAgICAgICBkZXJlZigpOworICAgICAgICBkaWRFbmRSZXF1
ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc3Vs
dCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIk1pc3NpbmcgR1N0cmVhbWVyIFBsdWdpbjogJXNc
biIsIGRldGFpbC5kYXRhKCkpOworICAgIH0KK30KKwordm9pZCBJbnN0YWxsTWlzc2luZ01lZGlh
UGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpkZW55KCkKK3sKKyAgICBkaWRFbmRSZXF1ZXN0SW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEdTVF9JTlNUQUxM
X1BMVUdJTlNfVVNFUl9BQk9SVCkpOworfQorCit2b2lkIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3Q6OmRpZEVuZFJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2lucyh1aW50MzJfdCByZXN1bHQpCit7CisgICAgaWYgKCFtX3BhZ2UtPmlzVmFsaWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRF
bmRSZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMocmVzdWx0KSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVB
TUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0
YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3N0cmVhbWVyL0luc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lv
blJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzdjNDA4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0
YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAsMCArMSw2NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RfaAorI2RlZmlu
ZSBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0X2gKKworI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQ
dHJHU3RyZWFtZXIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgSW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q+IGNyZWF0
ZShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgZGV0YWlscykKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlz
c2lvblJlcXVlc3QocGFnZSwgZGV0YWlscykpOworICAgIH0KKyAgICB+SW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCgpOworCisgICAgdm9pZCBhbGxvdyhHVW5pcXVl
UHRyPEdzdEluc3RhbGxQbHVnaW5zQ29udGV4dD4mJiA9IG51bGxwdHIpOworICAgIHZvaWQgZGVu
eSgpOworCisgICAgV2ViUGFnZVByb3h5JiBwYWdlKCkgY29uc3QgeyByZXR1cm4gKm1fcGFnZTsg
fQorICAgIGNvbnN0IFN0cmluZyYgZGV0YWlscygpIGNvbnN0IHsgcmV0dXJuIG1fZGV0YWlsczsg
fQorCitwcml2YXRlOgorICAgIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3QoV2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJiBkZXRhaWxzKTsKKworICAgIHZvaWQg
ZGlkRW5kUmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKHVpbnQzMl90IHJlc3VsdCk7
CisKKyAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBtX3BhZ2U7CisgICAgU3RyaW5nIG1fZGV0YWls
czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVP
KSAmJiBVU0UoR1NUUkVBTUVSKQorI2VuZGlmIC8vIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5z
UGVybWlzc2lvblJlcXVlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCmluZGV4IDMwMTM0ODIu
LmRhMmRhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9nc3RyZWFtZXIv
V2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKQEAgLTI3LDMwICsyNywxOCBAQAog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NU
UkVBTUVSKQotCisjaW5jbHVkZSAiSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9u
UmVxdWVzdC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKLSNpbmNsdWRlICJXZWJQYWdlTWVz
c2FnZXMuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1
ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzKQogewot
ICAgIENTdHJpbmcgZGV0YWlsID0gZGV0YWlscy51dGY4KCk7Ci0gICAgY29uc3QgY2hhciogZGV0
YWlsQXJyYXlbMl0gPSB7IGRldGFpbC5kYXRhKCksIG51bGxwdHIgfTsKLSAgICByZWYoKTsKLSAg
ICBHVW5pcXVlUHRyPEdzdEluc3RhbGxQbHVnaW5zQ29udGV4dD4gY29udGV4dCA9IG1fcGFnZUNs
aWVudC5jcmVhdGVHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQoKTsKLSAgICBHc3RJbnN0YWxsUGx1
Z2luc1JldHVybiByZXN1bHQgPSBnc3RfaW5zdGFsbF9wbHVnaW5zX2FzeW5jKGRldGFpbEFycmF5
LCBjb250ZXh0LmdldCgpLCBbXShHc3RJbnN0YWxsUGx1Z2luc1JldHVybiByZXN1bHQsIGdwb2lu
dGVyIHVzZXJEYXRhKSB7Ci0gICAgICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHBhZ2UgPSBhZG9w
dFJlZihzdGF0aWNfY2FzdDxXZWJQYWdlUHJveHkqPih1c2VyRGF0YSkpOwotICAgICAgICBpZiAo
cGFnZS0+aXNWYWxpZCgpKQotICAgICAgICAgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkRW5kUmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKHN0YXRpY19jYXN0PHVp
bnQzMl90PihyZXN1bHQpKSk7Ci0gICAgfSwgdGhpcyk7CisgICAgUmVmUHRyPEluc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q+IHJlcXVlc3QgPSBJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoKnRoaXMsIGRldGFpbHMpOwor
ICAgIGlmIChtX3BhZ2VDbGllbnQuZGVjaWNlUG9saWN5Rm9ySW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdCgqcmVxdWVzdCkpCisgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChyZXN1bHQgIT0gR1NUX0lOU1RBTExfUExVR0lOU19TVEFSVEVEX09LKSB7Ci0gICAgICAg
IC8vIElmIHRoZSBpbnN0YWxsZXIgZGlkbid0IHN0YXJ0LCB0aGUgY2FsbGJhY2sgd2lsbCBub3Qg
YmUgY2FsbGVkLCBzbyByZW1vdmUgdGhlIHJlZiBtYW51YWxseS4KLSAgICAgICAgZGVyZWYoKTsK
LSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRW5kUmVxdWVzdEluc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zKHN0YXRpY19jYXN0PHVpbnQzMl90PihyZXN1bHQpKSk7Ci0gICAgICAg
IFdURkxvZ0Fsd2F5cygiTWlzc2luZyBHU3RyZWFtZXIgUGx1Z2luOiAlc1xuIiwgZGV0YWlsLmRh
dGEoKSk7Ci0gICAgfQorICAgIHJlcXVlc3QtPmRlbnkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggZTYzNTQyZS4uOWY3YjgwZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA3LTI3ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBEbyBu
b3QgYXV0b21hdGljYWxseSBzaG93IFBhY2thZ2VLaXQgY29kZWMgaW5zdGFsbGF0aW9uIG5vdGlm
aWNhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNTk3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEhhbmRsZSB0aGUgbWlzc2luZyBtZWRpYSBwbHVnaW5zIGluc3RhbGxhdGlvbiBwZXJtaXNzaW9u
IHJlcXVlc3QuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jOgor
ICAgICAgICAod2ViVmlld0RlY2lkZVBlcm1pc3Npb25SZXF1ZXN0KToKKwogMjAxNS0wNy0yNCAg
SHl1bmd3b29rIExlZSAgPGh5dW5nd29vay5sZWVAbmF2ZXJjb3JwLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCB1cGRhdGVkIG15IG5pY2sgbmFtZSBpbiBjb250cmlidXRvcnMuanNvbgpkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBiL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKaW5kZXggODgwNzkxYi4uNTRmOWIyNCAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC00NTQsNiArNDU0LDEwIEBAIHN0
YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RGVjaWRlUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0V2ViVmll
dyAqd2ViVmlldywgV2ViS2l0UGVyCiAgICAgICAgICAgICAgICAgZGlhbG9nX21lc3NhZ2UgPSAi
YXVkaW8iOwogICAgICAgICB9IGVsc2UgaWYgKGlzX2Zvcl92aWRlb19kZXZpY2UpCiAgICAgICAg
ICAgICBkaWFsb2dfbWVzc2FnZSA9ICJ2aWRlbyI7CisgICAgfSBlbHNlIGlmIChXRUJLSVRfSVNf
SU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3Qp
KSB7CisgICAgICAgIGRpYWxvZ190aXRsZSA9ICJNZWRpYSBwbHVnaW4gbWlzc2luZyByZXF1ZXN0
IjsKKyAgICAgICAgZGlhbG9nX21lc3NhZ2VfZm9ybWF0ID0gIlRoZSBtZWRpYSBiYWNrZW5kIHdh
cyB1bmFibGUgdG8gZmluZCBhIHBsdWdpbiB0byBwbGF5IHRoZSByZXF1ZXN0ZWQgbWVkaWE6XG4l
cy5cbkFsbG93IHRvIHNlYXJjaCBhbmQgaW5zdGFsbCB0aGUgbWlzc2luZyBwbHVnaW4/IjsKKyAg
ICAgICAgZGlhbG9nX21lc3NhZ2UgPSB3ZWJraXRfaW5zdGFsbF9taXNzaW5nX21lZGlhX3BsdWdp
bnNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF9kZXRhaWxzKFdFQktJVF9JTlNUQUxMX01JU1NJTkdf
TUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOwogICAgIH0gZWxzZQog
ICAgICAgICByZXR1cm4gRkFMU0U7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257639</attachid>
            <date>2015-07-28 01:43:33 -0700</date>
            <delta_ts>2015-08-03 06:15:19 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-missing-plugins-permission-request.diff</filename>
            <type>text/plain</type>
            <size>43615</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5OTcyNGVhLi5lOGQzNjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTgg
QEAKKzIwMTUtMDctMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHU3RyZWFtZXJdIERvIG5vdCBhdXRvbWF0aWNhbGx5IHNob3cgUGFja2Fn
ZUtpdCBjb2RlYyBpbnN0YWxsYXRpb24gbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1OTczCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3QgdG8gYXNrIHRoZSBBUEkKKyAgICAgICAgbGF5ZXIgd2hldGhl
ciB0byBhbGxvdyBvciBkZW55IHRoZSBpbnN0YWxsYXRpb24gb2YgbWlzc2luZyBtZWRpYQorICAg
ICAgICBwbHVnaW5zLiBBbmQgYWRkIGEgR1RLKyBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBjdXJy
ZW50IHBlcm1pc3Npb24KKyAgICAgICAgcmVxdWVzdCBBUEkuIFJlcGxhY2UgdGhlCisgICAgICAg
IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQoKSB3aXRoCisg
ICAgICAgIGRlY2ljZVBvbGljeUZvckluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lv
blJlcXVlc3QoKSB0aGF0CisgICAgICAgIHBhc3NlcyB0aGUgSW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdCBvYmplY3QgdG8KKyAgICAgICAgdGhlIEFQSSBsYXllci4g
VGhlIGFsbG93IG1ldGhvZCByZWNlaXZlcyB0aGUKKyAgICAgICAgR3N0SW5zdGFsbFBsdWdpbnND
b250ZXh0IG5vdywgc28gdGhhdCBpdCBjYW4gYmUgY3JlYXRlZCBieSB0aGUgQVBJIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogUGxhdGZv
cm1HVEsuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGVjaWNlUG9saWN5Rm9ySW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNw
cDogQWRkZWQuCisgICAgICAgIChjcmVhdGVHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQpOgorICAg
ICAgICAod2Via2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdEFs
bG93KToKKyAgICAgICAgKHdlYmtpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lv
blJlcXVlc3REZW55KToKKyAgICAgICAgKHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJm
YWNlX2luaXQpOgorICAgICAgICAod2Via2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJt
aXNzaW9uUmVxdWVzdERpc3Bvc2UpOgorICAgICAgICAod2Via2l0X2luc3RhbGxfbWlzc2luZ19t
ZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25fcmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdl
YmtpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RDcmVhdGUpOgor
ICAgICAgICAod2Via2l0X2luc3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25f
cmVxdWVzdF9nZXRfZGV0YWlscyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lu
c1Blcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdSZXF1ZXN0
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlczoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L3dlYmtpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9nc3RyZWFt
ZXIvSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0
cmVhbWVyLmNwcC4KKyAgICAgICAgKFdlYktpdDo6SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdDo6SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVx
dWVzdCk6CisgICAgICAgIChXZWJLaXQ6Okluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlz
c2lvblJlcXVlc3Q6On5JbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9u
UmVxdWVzdDo6YWxsb3cpOgorICAgICAgICAoV2ViS2l0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpkZW55KToKKyAgICAgICAgKFdlYktpdDo6SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDo6ZGlkRW5kUmVxdWVzdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3N0cmVhbWVyL0luc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3Bw
LgorICAgICAgICAoV2ViS2l0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25S
ZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpwYWdlKToKKyAgICAgICAgKFdlYktpdDo6SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDo6ZGV0YWlscyk6CisgICAgICAgICog
VUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyk6
CisKIDIwMTUtMDctMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIFBhc3MgYSBHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQgdG8gZ3N0
X2luc3RhbGxfcGx1Z2luc19hc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBhZGJi
ZjM0Li5hNmJiNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTgzLDYgKzE4Myw3
IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwvV2ViVUlQ
b3B1cE1lbnVDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcAogCisg
ICAgVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Np
b25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVh
bWVyLmNwcAogCiAgICAgVUlQcm9jZXNzL3NvdXAvV2ViQ29va2llTWFuYWdlclByb3h5U291cC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjExM2U2MS4uYjNiNzkwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTE2OSw2ICsxNjksOSBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0UHJp
dmF0ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaAor
ICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVy
bWlzc2lvblJlcXVlc3QuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oCisgICAgVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdFByaXZh
dGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oCiAgICAgVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdFByaXZhdGUuaApAQCAtMjkwLDYgKzI5
Myw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgVUlQcm9jZXNzL2NhaXJv
L0JhY2tpbmdTdG9yZUNhaXJvLmNwcAogCisgICAgVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxs
TWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9n
c3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcAogCiAgICAgVUlQcm9jZXNzL2d0ay9E
cmFnQW5kRHJvcEhhbmRsZXIuY3BwCkBAIC0zOTMsNiArMzk3LDcgQEAgc2V0KFdlYktpdDJHVEtf
SU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRGb3J3YXJkRGVjbGFyYXRpb25zLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKICAgICAke1dFQktJ
VDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmgKKyAgICAke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRNaW1lSW5mby5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0TmF2aWdhdGlvbkFjdGlvbi5oCkBAIC01MDAsNiArNTA1LDcgQEAgbGlz
dChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ3RrIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvTmV0d29y
ay9DdXN0b21Qcm90b2NvbHMvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL1Bs
dWdpbnMvZ3RrIgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvZ3N0cmVhbWVyIgogICAg
ICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvZ3RrIgogICAgICIke1dFQktJVDJfRElSfS9VSVBy
b2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
UGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuY3BwCmluZGV4IDUwNzBhZTIuLmFhZmMzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTQ0LDE0
ICs0NCw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0V2ZW50TmFtZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oWDEx
KQotI2luY2x1ZGUgPGdkay9nZGt4Lmg+Ci0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQ4LDE3ICs0NDMsMTUgQEAgdm9pZCBQYWdl
Q2xpZW50SW1wbDo6ZGVyZWZWaWV3KCkKICAgICBnX29iamVjdF91bnJlZihtX3ZpZXdXaWRnZXQp
OwogfQogCi1HVW5pcXVlUHRyPEdzdEluc3RhbGxQbHVnaW5zQ29udGV4dD4gUGFnZUNsaWVudElt
cGw6OmNyZWF0ZUdzdEluc3RhbGxQbHVnaW5zQ29udGV4dCgpCisjaWYgRU5BQkxFKFZJREVPKQor
Ym9vbCBQYWdlQ2xpZW50SW1wbDo6ZGVjaWNlUG9saWN5Rm9ySW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdChJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Np
b25SZXF1ZXN0JiByZXF1ZXN0KQogewotI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBpZiAoUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlw
ZTo6WDExKSB7Ci0gICAgICAgIEdVbmlxdWVQdHI8R3N0SW5zdGFsbFBsdWdpbnNDb250ZXh0PiBj
b250ZXh0KGdzdF9pbnN0YWxsX3BsdWdpbnNfY29udGV4dF9uZXcoKSk7Ci0gICAgICAgIGdzdF9p
bnN0YWxsX3BsdWdpbnNfY29udGV4dF9zZXRfeGlkKGNvbnRleHQuZ2V0KCksIEdES19XSU5ET1df
WElEKGd0a193aWRnZXRfZ2V0X3dpbmRvdyhtX3ZpZXdXaWRnZXQpKSk7Ci0gICAgICAgIHJldHVy
biBjb250ZXh0OwotICAgIH0KLSNlbmRpZgorICAgIGlmICghV0VCS0lUX0lTX1dFQl9WSUVXKG1f
dmlld1dpZGdldCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBudWxscHRy
OworICAgIHdlYmtpdFdlYlZpZXdSZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoV0VC
S0lUX1dFQl9WSUVXKG1fdmlld1dpZGdldCksIHJlcXVlc3QpOworICAgIHJldHVybiB0cnVlOwog
fQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggMDI1OTAzMS4uY2U1ODc1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5oCkBAIC0xNDIsNyArMTQyLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVm
VmlldygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZXJlZlZpZXcoKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgR1VuaXF1ZVB0cjxHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQ+IGNyZWF0
ZUdzdEluc3RhbGxQbHVnaW5zQ29udGV4dCgpIG92ZXJyaWRlOworI2lmIEVOQUJMRShWSURFTykK
KyAgICB2aXJ0dWFsIGJvb2wgZGVjaWNlUG9saWN5Rm9ySW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdp
bnNQZXJtaXNzaW9uUmVxdWVzdChJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25S
ZXF1ZXN0Jikgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIC8vIE1lbWJlcnMgb2YgUGFnZUNsaWVu
dEltcGwgY2xhc3MKICAgICBHdGtXaWRnZXQqIG1fdmlld1dpZGdldDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQ
bHVnaW5zUGVybWlzc2lvblJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM3ZTliOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTY1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25S
ZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFBlcm1pc3Npb25SZXF1
ZXN0LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoVklERU8pCisj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+
CisjaWYgUExBVEZPUk0oWDExKQorI2luY2x1ZGUgPGdkay9nZGt4Lmg+CisjZW5kaWYKKyNlbmRp
ZgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
Ky8qKgorICogU0VDVElPTjogV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNz
aW9uUmVxdWVzdAorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBBIHBlcm1pc3Npb24gcmVxdWVzdCBm
b3IgaW5zdGFsbGluZyBtaXNzaW5nIG1lZGlhIHBsdWdpbnMKKyAqIEBUaXRsZTogV2ViS2l0SW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdAorICogQFNlZV9hbHNvOiAj
V2ViS2l0UGVybWlzc2lvblJlcXVlc3QsICNXZWJLaXRXZWJWaWV3CisgKgorICogV2ViS2l0SW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCByZXByZXNlbnRzIGEgcmVx
dWVzdCBmb3IKKyAqIHBlcm1pc3Npb24gdG8gZGVjaWRlIHdoZXRoZXIgV2ViS2l0IHNob3VsZCB0
cnkgdG8gc3RhcnQgYSBoZWxwZXIgYXBwbGljYXRpb24gdG8KKyAqIGluc3RhbGwgbWlzc2luZyBt
ZWRpYSBwbHVnaW5zIHdoZW4gdGhlIG1lZGlhIGJhY2tlbmQgY291bGRuJ3QgcGxheSBhIG1lZGlh
IGJlY2F1c2UKKyAqIHRoZSByZXF1aXJlZCBwbHVnaW5zIHdlcmUgbm90IGF2YWlsYWJsZS4KKyAq
CisgKiBTaW5jZTogMi4xMAorICovCisKK3N0YXRpYyB2b2lkIHdlYmtpdF9wZXJtaXNzaW9uX3Jl
cXVlc3RfaW50ZXJmYWNlX2luaXQoV2ViS2l0UGVybWlzc2lvblJlcXVlc3RJZmFjZSopOworCitz
dHJ1Y3QgX1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQ
cml2YXRlIHsKKyNpZiBFTkFCTEUoVklERU8pCisgICAgUmVmUHRyPEluc3RhbGxNaXNzaW5nTWVk
aWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q+IHJlcXVlc3Q7CisjZW5kaWYKKyAgICBDU3RyaW5n
IGRldGFpbHM7CisgICAgYm9vbCBtYWRlRGVjaXNpb247Cit9OworCitXRUJLSVRfREVGSU5FX1RZ
UEVfV0lUSF9DT0RFKAorICAgIFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlz
c2lvblJlcXVlc3QsIHdlYmtpdF9pbnN0YWxsX21pc3NpbmdfbWVkaWFfcGx1Z2luc19wZXJtaXNz
aW9uX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QsCisgICAgR19JTVBMRU1FTlRfSU5URVJGQUNFKFdF
QktJVF9UWVBFX1BFUk1JU1NJT05fUkVRVUVTVCwgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9p
bnRlcmZhY2VfaW5pdCkpCisKKyNpZiBFTkFCTEUoVklERU8pCitzdGF0aWMgR1VuaXF1ZVB0cjxH
c3RJbnN0YWxsUGx1Z2luc0NvbnRleHQ+IGNyZWF0ZUdzdEluc3RhbGxQbHVnaW5zQ29udGV4dChH
dGtXaWRnZXQqIHdpZGdldCkKK3sKKyNpZiBQTEFURk9STShYMTEpCisgICAgaWYgKFBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6
OlgxMSkgeworICAgICAgICBHVW5pcXVlUHRyPEdzdEluc3RhbGxQbHVnaW5zQ29udGV4dD4gY29u
dGV4dChnc3RfaW5zdGFsbF9wbHVnaW5zX2NvbnRleHRfbmV3KCkpOworICAgICAgICBnc3RfaW5z
dGFsbF9wbHVnaW5zX2NvbnRleHRfc2V0X3hpZChjb250ZXh0LmdldCgpLCBHREtfV0lORE9XX1hJ
RChndGtfd2lkZ2V0X2dldF93aW5kb3cod2lkZ2V0KSkpOworICAgICAgICByZXR1cm4gY29udGV4
dDsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK3N0
YXRpYyB2b2lkIHdlYmtpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVl
c3RBbGxvdyhXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQo
V0VCS0lUX0lTX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVT
VChyZXF1ZXN0KSk7CisKKyAgICBXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9JTlNUQUxMX01JU1NJTkdfTUVESUFf
UExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCktPnByaXY7CisKKyAgICAvLyBPbmx5
IG9uZSBkZWNpc2lvbiBhdCBhIHRpbWUuCisgICAgaWYgKHByaXYtPm1hZGVEZWNpc2lvbikKKyAg
ICAgICAgcmV0dXJuOworI2lmIEVOQUJMRShWSURFTykKKyAgICBwcml2LT5yZXF1ZXN0LT5hbGxv
dyhjcmVhdGVHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQocHJpdi0+cmVxdWVzdC0+cGFnZSgpLnZp
ZXdXaWRnZXQoKSkpOworI2VuZGlmCisgICAgcHJpdi0+bWFkZURlY2lzaW9uID0gdHJ1ZTsKK30K
Kworc3RhdGljIHZvaWQgd2Via2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9u
UmVxdWVzdERlbnkoV2ViS2l0UGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgQVNT
RVJUKFdFQktJVF9JU19JTlNUQUxMX01JU1NJTkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JF
UVVFU1QocmVxdWVzdCkpOworCisgICAgV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfSU5TVEFMTF9NSVNTSU5HX01F
RElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpLT5wcml2OworCisgICAgLy8g
T25seSBvbmUgZGVjaXNpb24gYXQgYSB0aW1lLgorICAgIGlmIChwcml2LT5tYWRlRGVjaXNpb24p
CisgICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShWSURFTykKKyAgICBwcml2LT5yZXF1ZXN0
LT5kZW55KCk7CisjZW5kaWYKKyAgICBwcml2LT5tYWRlRGVjaXNpb24gPSB0cnVlOworfQorCitz
dGF0aWMgdm9pZCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KFdlYktp
dFBlcm1pc3Npb25SZXF1ZXN0SWZhY2UqIGlmYWNlKQoreworICAgIGlmYWNlLT5hbGxvdyA9IHdl
YmtpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RBbGxvdzsKKyAg
ICBpZmFjZS0+ZGVueSA9IHdlYmtpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lv
blJlcXVlc3REZW55OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRJbnN0YWxsTWlzc2luZ01lZGlh
UGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0RGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAg
Ly8gRGVmYXVsdCBiZWhhdmlvdXIgd2hlbiBubyBkZWNpc2lvbiBoYXMgYmVlbiBtYWRlIGlzIGRl
bnlpbmcgdGhlIHJlcXVlc3QuCisgICAgd2Via2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdERlbnkoV0VCS0lUX1BFUk1JU1NJT05fUkVRVUVTVChvYmplY3QpKTsK
KyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfaW5zdGFsbF9taXNzaW5nX21lZGlhX3BsdWdpbnNf
cGVybWlzc2lvbl9yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsKK30KKwor
c3RhdGljIHZvaWQgd2Via2l0X2luc3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Np
b25fcmVxdWVzdF9jbGFzc19pbml0KFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVy
bWlzc2lvblJlcXVlc3RDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBvYmplY3RD
bGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBvYmplY3RDbGFzcy0+ZGlzcG9zZSA9
IHdlYmtpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3REaXNwb3Nl
OworfQorCisjaWYgRU5BQkxFKFZJREVPKQorV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdp
bnNQZXJtaXNzaW9uUmVxdWVzdCogd2Via2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJt
aXNzaW9uUmVxdWVzdENyZWF0ZShJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25S
ZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5z
UGVybWlzc2lvblJlcXVlc3QqIHBlcm1pc3Npb25SZXF1ZXN0ID0gV0VCS0lUX0lOU1RBTExfTUlT
U0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVChnX29iamVjdF9uZXcoV0VCS0lU
X1RZUEVfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNULCBu
dWxscHRyKSk7CisgICAgcGVybWlzc2lvblJlcXVlc3QtPnByaXYtPnJlcXVlc3QgPSAmcmVxdWVz
dDsKKyAgICByZXR1cm4gcGVybWlzc2lvblJlcXVlc3Q7Cit9CisjZW5kaWYKKworLyoqCisgKiB3
ZWJraXRfaW5zdGFsbF9taXNzaW5nX21lZGlhX3BsdWdpbnNfcGVybWlzc2lvbl9yZXF1ZXN0X2dl
dF9kZXRhaWxzOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3QKKyAqCisgKiBHZXRzIHRoZSBkZXRhaWxzIGFib3V0IHRoZSBt
aXNzaW5nIHBsdWdpbnMgcHJvdmlkZWQgYnkgdGhlIG1lZGlhIGJhY2tlbmQgd2hlbiBhIG1lZGlh
IGNvdWxkbid0IGJlIHBsYXllZC4KKyAqCisgKiBSZXR1cm5zOiBhIHN0cmluZyB3aXRoIHRoZSBk
ZXRhaWxzIHByb3ZpZGVkIGJ5IHRoZSBtZWRpYSBiYWNrZW5kLCBvciAlTlVMTCBpZiB0aGUgbWVk
aWEgYmFja2VuZCBkaWRuJ3QgcHJvdmlkZSBhbnkgZGV0YWlscworICoKKyAqIFNpbmNlOiAyLjEw
CisgKi8KK2NvbnN0IGNoYXIqIHdlYmtpdF9pbnN0YWxsX21pc3NpbmdfbWVkaWFfcGx1Z2luc19w
ZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X2RldGFpbHMoV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9S
RVFVRVNUKHJlcXVlc3QpLCBudWxscHRyKTsKKworI2lmIEVOQUJMRShWSURFTykKKyAgICBpZiAo
IXJlcXVlc3QtPnByaXYtPmRldGFpbHMuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiByZXF1ZXN0
LT5wcml2LT5kZXRhaWxzLmRhdGEoKTsKKworICAgIGNvbnN0IGF1dG8mIGRldGFpbHMgPSByZXF1
ZXN0LT5wcml2LT5yZXF1ZXN0LT5kZXRhaWxzKCk7CisgICAgaWYgKGRldGFpbHMuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJlcXVlc3QtPnByaXYtPmRldGFpbHMg
PSByZXF1ZXN0LT5wcml2LT5yZXF1ZXN0LT5kZXRhaWxzKCkudXRmOCgpOworI2VuZGlmCisgICAg
cmV0dXJuIHJlcXVlc3QtPnByaXYtPmRldGFpbHMuZGF0YSgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhZjQyZGYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hf
SU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkg
PHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisK
KyNpZm5kZWYgV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVz
dF9oCisjZGVmaW5lIFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3RfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdERlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX0lO
U1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVCAgICAgICAgICAg
ICh3ZWJraXRfaW5zdGFsbF9taXNzaW5nX21lZGlhX3BsdWdpbnNfcGVybWlzc2lvbl9yZXF1ZXN0
X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9JTlNUQUxMX01JU1NJTkdfTUVESUFfUExVR0lO
U19QRVJNSVNTSU9OX1JFUVVFU1Qob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFO
Q0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNf
UEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0KSkKKyNkZWZpbmUgV0VCS0lUX0lTX0lOU1RBTExfTUlTU0lOR19NRURJQV9Q
TFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNU
QU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9JTlNUQUxMX01JU1NJTkdfTUVESUFfUExVR0lO
U19QRVJNSVNTSU9OX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfSU5TVEFMTF9NSVNTSU5HX01F
RElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NI
RUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0lOU1RBTExfTUlTU0lOR19NRURJ
QV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0lOU1RBTExf
TUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUyhrbGFzcykgKEdf
VFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9JTlNUQUxMX01JU1NJ
TkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfSU5T
VEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUX0dFVF9DTEFTUyhv
YmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0lOU1RB
TExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0SW5zdGFs
bE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdENsYXNzKSkKKwordHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Qg
ICAgICAgIFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q7
Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNz
aW9uUmVxdWVzdENsYXNzICAgV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNz
aW9uUmVxdWVzdENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEluc3RhbGxNaXNzaW5nTWVk
aWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIFdlYktpdEluc3RhbGxNaXNzaW5nTWVk
aWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdEluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QgeworICAgIEdPYmplY3QgcGFy
ZW50OworCisgICAgV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVx
dWVzdFByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdEluc3RhbGxNaXNzaW5nTWVk
aWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RDbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVu
dF9jbGFzczsKKworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOworICAgIHZv
aWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworfTsK
KworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2luc3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5z
X3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZSAodm9pZCk7CisKK1dFQktJVF9BUEkgY29uc3Qg
Z2NoYXIgKgord2Via2l0X2luc3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25f
cmVxdWVzdF9nZXRfZGV0YWlscyAoV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJt
aXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5zdGFsbE1pc3Np
bmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlz
c2lvblJlcXVlc3RQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MmM3ZTNiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2
YXRlLmgKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEg
Uy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWZuZGVmIFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3RQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdFByaXZhdGVfaAorCisjaW5jbHVkZSAiSW5zdGFsbE1pc3NpbmdNZWRp
YVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYktpdEluc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2
YXRlLmgiCisKKyNpZiBFTkFCTEUoVklERU8pCitXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0KiB3ZWJraXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0Q3JlYXRlKFdlYktpdDo6SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdCYpOworI2VuZGlmCisKKyNlbmRpZiAvLyBXZWJLaXRJbnN0YWxsTWlz
c2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IGViODRi
NjEuLjM0ZTAzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiV2ViS2l0Rm9y
bUNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdEZ1bGxzY3JlZW5DbGllbnQuaCIKICNpbmNsdWRl
ICJXZWJLaXRIaXRUZXN0UmVzdWx0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAi
V2ViS2l0SmF2YXNjcmlwdFJlc3VsdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXRNYXJzaGFsLmgiCkBAIC0yMTQ1LDYgKzIxNDYsMTYg
QEAgdm9pZCB3ZWJraXRXZWJWaWV3U2VsZWN0aW9uRGlkQ2hhbmdlKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCiAgICAgd2Via2l0RWRpdG9yU3RhdGVDaGFuZ2VkKHdlYlZpZXctPnByaXYtPmVkaXRv
clN0YXRlLmdldCgpLCBnZXRQYWdlKHdlYlZpZXcpLT5lZGl0b3JTdGF0ZSgpKTsKIH0KIAordm9p
ZCB3ZWJraXRXZWJWaWV3UmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVl
c3QmIHJlcXVlc3QpCit7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIEdSZWZQdHI8V2ViS2l0SW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdD4gaW5zdGFsbE1lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdEluc3RhbGxNaXNzaW5nTWVk
aWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RDcmVhdGUocmVxdWVzdCkpOworICAgIHdlYmtpdFdl
YlZpZXdNYWtlUGVybWlzc2lvblJlcXVlc3Qod2ViVmlldywgV0VCS0lUX1BFUk1JU1NJT05fUkVR
VUVTVChpbnN0YWxsTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuZ2V0KCkpKTsKKyNlbHNl
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwogLyoqCiAgKiB3ZWJraXRf
d2ViX3ZpZXdfbmV3OgogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGE3ODg2NTMuLmVjZTRiZWRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdQcml2YXRlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgV2ViS2l0V2ViVmlld1By
aXZhdGVfaAogI2RlZmluZSBXZWJLaXRXZWJWaWV3UHJpdmF0ZV9oCiAKKyNpbmNsdWRlICJJbnN0
YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2Vi
Q29udGV4dE1lbnVJdGVtRGF0YS5oIgogI2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1bHQuaCIKICNp
bmNsdWRlICJXZWJJbWFnZS5oIgpAQCAtNjMsNSArNjQsNiBAQCBib29sIHdlYmtpdFdlYlZpZXdF
bWl0UnVuQ29sb3JDaG9vc2VyKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0Kgogdm9pZCB3ZWJraXRXZWJWaWV3V2ViUHJvY2Vzc0NyYXNoZWQoV2ViS2l0V2ViVmlldyop
Owogdm9pZCB3ZWJraXRXZWJWaWV3SXNQbGF5aW5nQXVkaW9DaGFuZ2VkKFdlYktpdFdlYlZpZXcq
KTsKIHZvaWQgd2Via2l0V2ViVmlld1NlbGVjdGlvbkRpZENoYW5nZShXZWJLaXRXZWJWaWV3Kik7
Cit2b2lkIHdlYmtpdFdlYlZpZXdSZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoV2Vi
S2l0V2ViVmlldyosIFdlYktpdDo6SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9u
UmVxdWVzdCYpOwogCiAjZW5kaWYgLy8gV2ViS2l0V2ViVmlld1ByaXZhdGVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1z
ZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCA5ZTFhOTIxLi44NTgxYzI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNl
Y3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtNTkxLDYgKzU5MSwyNSBAQCB3ZWJraXRfZ2Vv
bG9jYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlCiA8L1NFQ1RJT04+CiAKIDxTRUNU
SU9OPgorPEZJTEU+V2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVx
dWVzdDwvRklMRT4KK1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3QKK3dlYmtpdF9pbnN0YWxsX21pc3NpbmdfbWVkaWFfcGx1Z2luc19wZXJtaXNzaW9uX3Jl
cXVlc3RfZ2V0X2RldGFpbHMKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRJbnN0YWxs
TWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Q2xhc3MKK1dFQktJVF9UWVBFX0lO
U1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVAorV0VCS0lUX0lO
U1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVAorV0VCS0lUX0lT
X0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVAorV0VCS0lU
X0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUwor
V0VCS0lUX0lTX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVT
VF9DTEFTUworV0VCS0lUX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05f
UkVRVUVTVF9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlCit3ZWJraXRfaW5zdGFs
bF9taXNzaW5nX21lZGlhX3BsdWdpbnNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlCis8L1NF
Q1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0TmF2aWdhdGlvbkFjdGlvbjwvRklMRT4K
IFdlYktpdE5hdmlnYXRpb25BY3Rpb24KIHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9jb3B5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLnR5cGVzIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLTQuMC50eXBlcwppbmRleCA5Y2RjMDk4Li5mMjI3NDhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLnR5cGVzCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAu
dHlwZXMKQEAgLTMxLDMgKzMxLDQgQEAgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2dldF90
eXBlCiB3ZWJraXRfd2ViX2hpdF90ZXN0X3Jlc3VsdF9nZXRfdHlwZQogd2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2dldF90eXBlCiB3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF90eXBlCit3ZWJr
aXRfaW5zdGFsbF9taXNzaW5nX21lZGlhX3BsdWdpbnNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90
eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCAwM2VlYzI3Li43NTZhYTBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5z
Z21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1kb2NzLnNnbWwKQEAgLTIzLDYgKzIzLDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
V2ViS2l0RG93bmxvYWQueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFBl
cm1pc3Npb25SZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9
InhtbC9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Lnht
bCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXROYXZpZ2F0aW9uQWN0aW9uLnht
bCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UG9saWN5RGVj
aXNpb24ueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgK
aW5kZXggY2VhNGVhOC4uN2UwOGE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3dlYmtpdDIuaApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRIaXRUZXN0
UmVzdWx0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRNaW1lSW5mby5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0TmF2aWdhdGlvbkFjdGlvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKaW5kZXggZjAyNjllYi4uNjc4NTM2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0zNCwxMCArMzQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
RWRpdG9yQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAotI2lmIFVTRShHU1RS
RUFNRVIpCi0jaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyR1N0cmVhbWVyLmg+Ci0jZW5kaWYK
LQogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlBsdWdpbkNvbXBsZXhUZXh0SW5wdXRT
dGF0ZS5oIgogCkBAIC03OSw2ICs3NSwxMCBAQCBjbGFzcyBXZWJDb2xvclBpY2tlcjsKIGNsYXNz
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQ7CiAjZW5kaWYKIAorI2lmIFVTRShHU1RS
RUFNRVIpCitjbGFzcyBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0
OworI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIHN0cnVjdCBDb2xvclNwYWNlRGF0YTsK
ICNlbmRpZgpAQCAtMzQxLDcgKzM0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZWaWV3KCkgPSAwOwogCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICB2aXJ0dWFsIEdVbmlxdWVQ
dHI8R3N0SW5zdGFsbFBsdWdpbnNDb250ZXh0PiBjcmVhdGVHc3RJbnN0YWxsUGx1Z2luc0NvbnRl
eHQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGRlY2ljZVBvbGljeUZvckluc3RhbGxNaXNzaW5n
TWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QoSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdCYpID0gMDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXdFZmwuaAppbmRleCA1ZTNlOWEwLi5kMTFhMWZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaApAQCAtOTgsNyArOTgsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZXJlZlZpZXcoKSBvdmVycmlkZSBmaW5hbCB7IH0KIAog
I2lmIFVTRShHU1RSRUFNRVIpCi0gICAgdmlydHVhbCBHVW5pcXVlUHRyPEdzdEluc3RhbGxQbHVn
aW5zQ29udGV4dD4gY3JlYXRlR3N0SW5zdGFsbFBsdWdpbnNDb250ZXh0KCkgb3ZlcnJpZGUgZmlu
YWwgeyByZXR1cm4gbnVsbHB0cjsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVjaWNlUG9saWN5Rm9y
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdChJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Jikgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH07CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9nc3RyZWFtZXIvSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9u
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3N0cmVhbWVyL0luc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjY3MjJmN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3N0cmVhbWVyL0luc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlz
c2lvblJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ikluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaCIKKworI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1
ZXN0KFdlYlBhZ2VQcm94eSYgcGFnZSwgIGNvbnN0IFN0cmluZyYgZGV0YWlscykKKyAgICA6IG1f
cGFnZSgmcGFnZSkKKyAgICAsIG1fZGV0YWlscyhkZXRhaWxzKQoreworfQorCitJbnN0YWxsTWlz
c2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Ojp+SW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdCgpCit7Cit9CisKK3ZvaWQgSW5zdGFsbE1pc3NpbmdNZWRp
YVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDo6YWxsb3coR1VuaXF1ZVB0cjxHc3RJbnN0YWxsUGx1
Z2luc0NvbnRleHQ+JiYgY29udGV4dCkKK3sKKyAgICBpZiAoIW1fcGFnZS0+aXNWYWxpZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBDU3RyaW5nIGRldGFpbCA9IG1fZGV0YWlscy51dGY4KCk7
CisgICAgY29uc3QgY2hhciogZGV0YWlsQXJyYXlbMl0gPSB7IGRldGFpbC5kYXRhKCksIG51bGxw
dHIgfTsKKyAgICByZWYoKTsKKyAgICBHc3RJbnN0YWxsUGx1Z2luc1JldHVybiByZXN1bHQgPSBn
c3RfaW5zdGFsbF9wbHVnaW5zX2FzeW5jKGRldGFpbEFycmF5LCBjb250ZXh0LmdldCgpLCBbXShH
c3RJbnN0YWxsUGx1Z2luc1JldHVybiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CisgICAg
ICAgIFJlZlB0cjxJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0PiBy
ZXF1ZXN0ID0gYWRvcHRSZWYoc3RhdGljX2Nhc3Q8SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdCo+KHVzZXJEYXRhKSk7CisgICAgICAgIHJlcXVlc3QtPmRpZEVuZFJl
cXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVz
dWx0KSk7CisgICAgICAgIH0sIHRoaXMpOworCisgICAgaWYgKHJlc3VsdCAhPSBHU1RfSU5TVEFM
TF9QTFVHSU5TX1NUQVJURURfT0spIHsKKyAgICAgICAgLy8gSWYgdGhlIGluc3RhbGxlciBkaWRu
J3Qgc3RhcnQsIHRoZSBjYWxsYmFjayB3aWxsIG5vdCBiZSBjYWxsZWQsIHNvIHJlbW92ZSB0aGUg
cmVmIG1hbnVhbGx5LgorICAgICAgICBkZXJlZigpOworICAgICAgICBkaWRFbmRSZXF1ZXN0SW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc3VsdCkpOwor
ICAgICAgICBXVEZMb2dBbHdheXMoIk1pc3NpbmcgR1N0cmVhbWVyIFBsdWdpbjogJXNcbiIsIGRl
dGFpbC5kYXRhKCkpOworICAgIH0KK30KKwordm9pZCBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lu
c1Blcm1pc3Npb25SZXF1ZXN0OjpkZW55KCkKK3sKKyAgICBkaWRFbmRSZXF1ZXN0SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnMoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEdTVF9JTlNUQUxMX1BMVUdJ
TlNfVVNFUl9BQk9SVCkpOworfQorCit2b2lkIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVy
bWlzc2lvblJlcXVlc3Q6OmRpZEVuZFJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyh1
aW50MzJfdCByZXN1bHQpCit7CisgICAgaWYgKCFtX3BhZ2UtPmlzVmFsaWQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRFbmRSZXF1
ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMocmVzdWx0KSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlz
c2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3N0cmVhbWVyL0luc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVl
c3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzdjNDA4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlz
c2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAsMCArMSw2NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElu
c3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RfaAorI2RlZmluZSBJbnN0
YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0X2gKKworI2lmIEVOQUJMRShW
SURFTykgJiYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHU3Ry
ZWFtZXIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgSW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3RhbGxNaXNzaW5n
TWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q+IGNyZWF0ZShXZWJQ
YWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgZGV0YWlscykKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3QocGFnZSwgZGV0YWlscykpOworICAgIH0KKyAgICB+SW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdCgpOworCisgICAgdm9pZCBhbGxvdyhHVW5pcXVlUHRyPEdz
dEluc3RhbGxQbHVnaW5zQ29udGV4dD4mJiA9IG51bGxwdHIpOworICAgIHZvaWQgZGVueSgpOwor
CisgICAgV2ViUGFnZVByb3h5JiBwYWdlKCkgY29uc3QgeyByZXR1cm4gKm1fcGFnZTsgfQorICAg
IGNvbnN0IFN0cmluZyYgZGV0YWlscygpIGNvbnN0IHsgcmV0dXJuIG1fZGV0YWlsczsgfQorCitw
cml2YXRlOgorICAgIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Qo
V2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJiBkZXRhaWxzKTsKKworICAgIHZvaWQgZGlkRW5k
UmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKHVpbnQzMl90IHJlc3VsdCk7CisKKyAg
ICBSZWZQdHI8V2ViUGFnZVByb3h5PiBtX3BhZ2U7CisgICAgU3RyaW5nIG1fZGV0YWlsczsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBV
U0UoR1NUUkVBTUVSKQorI2VuZGlmIC8vIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlz
c2lvblJlcXVlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2dzdHJl
YW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCmluZGV4IDMwMTM0ODIuLmRhMmRh
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFn
ZVByb3h5R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3N0cmVh
bWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKQEAgLTI3LDMwICsyNywxOCBAQAogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eS5oIgogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVS
KQotCisjaW5jbHVkZSAiSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVz
dC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKLSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMu
aCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0SW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzKQogewotICAgIENT
dHJpbmcgZGV0YWlsID0gZGV0YWlscy51dGY4KCk7Ci0gICAgY29uc3QgY2hhciogZGV0YWlsQXJy
YXlbMl0gPSB7IGRldGFpbC5kYXRhKCksIG51bGxwdHIgfTsKLSAgICByZWYoKTsKLSAgICBHVW5p
cXVlUHRyPEdzdEluc3RhbGxQbHVnaW5zQ29udGV4dD4gY29udGV4dCA9IG1fcGFnZUNsaWVudC5j
cmVhdGVHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQoKTsKLSAgICBHc3RJbnN0YWxsUGx1Z2luc1Jl
dHVybiByZXN1bHQgPSBnc3RfaW5zdGFsbF9wbHVnaW5zX2FzeW5jKGRldGFpbEFycmF5LCBjb250
ZXh0LmdldCgpLCBbXShHc3RJbnN0YWxsUGx1Z2luc1JldHVybiByZXN1bHQsIGdwb2ludGVyIHVz
ZXJEYXRhKSB7Ci0gICAgICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHBhZ2UgPSBhZG9wdFJlZihz
dGF0aWNfY2FzdDxXZWJQYWdlUHJveHkqPih1c2VyRGF0YSkpOwotICAgICAgICBpZiAocGFnZS0+
aXNWYWxpZCgpKQotICAgICAgICAgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
RW5kUmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKHN0YXRpY19jYXN0PHVpbnQzMl90
PihyZXN1bHQpKSk7Ci0gICAgfSwgdGhpcyk7CisgICAgUmVmUHRyPEluc3RhbGxNaXNzaW5nTWVk
aWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q+IHJlcXVlc3QgPSBJbnN0YWxsTWlzc2luZ01lZGlh
UGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoKnRoaXMsIGRldGFpbHMpOworICAgIGlm
IChtX3BhZ2VDbGllbnQuZGVjaWNlUG9saWN5Rm9ySW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdCgqcmVxdWVzdCkpCisgICAgICAgIHJldHVybjsKIAotICAgIGlmIChy
ZXN1bHQgIT0gR1NUX0lOU1RBTExfUExVR0lOU19TVEFSVEVEX09LKSB7Ci0gICAgICAgIC8vIElm
IHRoZSBpbnN0YWxsZXIgZGlkbid0IHN0YXJ0LCB0aGUgY2FsbGJhY2sgd2lsbCBub3QgYmUgY2Fs
bGVkLCBzbyByZW1vdmUgdGhlIHJlZiBtYW51YWxseS4KLSAgICAgICAgZGVyZWYoKTsKLSAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRW5kUmVxdWVzdEluc3RhbGxNaXNzaW5nTWVk
aWFQbHVnaW5zKHN0YXRpY19jYXN0PHVpbnQzMl90PihyZXN1bHQpKSk7Ci0gICAgICAgIFdURkxv
Z0Fsd2F5cygiTWlzc2luZyBHU3RyZWFtZXIgUGx1Z2luOiAlc1xuIiwgZGV0YWlsLmRhdGEoKSk7
Ci0gICAgfQorICAgIHJlcXVlc3QtPmRlbnkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTYz
NTQyZS4uMGFiYTlmNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA3LTI4ICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBEbyBub3QgYXV0
b21hdGljYWxseSBzaG93IFBhY2thZ2VLaXQgY29kZWMgaW5zdGFsbGF0aW9uIG5vdGlmaWNhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTk3
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhbmRs
ZSB0aGUgbWlzc2luZyBtZWRpYSBwbHVnaW5zIGluc3RhbGxhdGlvbiBwZXJtaXNzaW9uIHJlcXVl
c3QKKyAgICAgICAgaW4gTWluaUJyb3dzZXIgYW5kIGFkZCBhIHRlc3QgY2FzZSBmb3IgdGhlIG5l
dyBBUEkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jOgorICAg
ICAgICAod2ViVmlld0RlY2lkZVBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJFeHRlbnNpb25zLmNwcDoKKyAgICAgICAg
KHBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2spOgorICAgICAgICAodGVzdEluc3RhbGxNaXNzaW5n
UGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwOgor
ICAgICAgICAobWV0aG9kQ2FsbENhbGxiYWNrKToKKwogMjAxNS0wNy0yNCAgSHl1bmd3b29rIExl
ZSAgPGh5dW5nd29vay5sZWVAbmF2ZXJjb3JwLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB1
cGRhdGVkIG15IG5pY2sgbmFtZSBpbiBjb250cmlidXRvcnMuanNvbgpkaWZmIC0tZ2l0IGEvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmMKaW5kZXggODgwNzkxYi4uNTRmOWIyNCAxMDA2NDQKLS0tIGEvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC00NTQsNiArNDU0LDEwIEBAIHN0YXRpYyBnYm9vbGVh
biB3ZWJWaWV3RGVjaWRlUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0V2ViVmlldyAqd2ViVmlldywg
V2ViS2l0UGVyCiAgICAgICAgICAgICAgICAgZGlhbG9nX21lc3NhZ2UgPSAiYXVkaW8iOwogICAg
ICAgICB9IGVsc2UgaWYgKGlzX2Zvcl92aWRlb19kZXZpY2UpCiAgICAgICAgICAgICBkaWFsb2df
bWVzc2FnZSA9ICJ2aWRlbyI7CisgICAgfSBlbHNlIGlmIChXRUJLSVRfSVNfSU5TVEFMTF9NSVNT
SU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKSB7CisgICAgICAg
IGRpYWxvZ190aXRsZSA9ICJNZWRpYSBwbHVnaW4gbWlzc2luZyByZXF1ZXN0IjsKKyAgICAgICAg
ZGlhbG9nX21lc3NhZ2VfZm9ybWF0ID0gIlRoZSBtZWRpYSBiYWNrZW5kIHdhcyB1bmFibGUgdG8g
ZmluZCBhIHBsdWdpbiB0byBwbGF5IHRoZSByZXF1ZXN0ZWQgbWVkaWE6XG4lcy5cbkFsbG93IHRv
IHNlYXJjaCBhbmQgaW5zdGFsbCB0aGUgbWlzc2luZyBwbHVnaW4/IjsKKyAgICAgICAgZGlhbG9n
X21lc3NhZ2UgPSB3ZWJraXRfaW5zdGFsbF9taXNzaW5nX21lZGlhX3BsdWdpbnNfcGVybWlzc2lv
bl9yZXF1ZXN0X2dldF9kZXRhaWxzKFdFQktJVF9JTlNUQUxMX01JU1NJTkdfTUVESUFfUExVR0lO
U19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOwogICAgIH0gZWxzZQogICAgICAgICByZXR1
cm4gRkFMU0U7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9DTWFrZUxpc3RzLnR4dAppbmRleCAxYmJmNTJkLi43NGQ1MjUwIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0CkBAIC0yNiw2
ICsyNiw3IEBAIGluY2x1ZGVfZGlyZWN0b3JpZXMoCiBpbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RF
TQogICAgICR7QVRTUElfSU5DTFVERV9ESVJTfQogICAgICR7R0xJQl9JTkNMVURFX0RJUlN9Cisg
ICAgJHtHU1RSRUFNRVJfSU5DTFVERV9ESVJTfQogICAgICR7R1RLM19JTkNMVURFX0RJUlN9CiAg
ICAgJHtHVEtfVU5JWF9QUklOVF9JTkNMVURFX0RJUlN9CiAgICAgJHtMSUJTT1VQX0lOQ0xVREVf
RElSU30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9U
ZXN0V2ViRXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCmluZGV4IDgyZDNlYzMuLmU4OGFlNjkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9u
cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJF
eHRlbnNpb25zLmNwcApAQCAtMTgwLDYgKzE4MCwzNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0
ZW5zaW9uSXNvbGF0ZWRXb3JsZChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAg
ICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QodGVzdC0+bV93ZWJWaWV3LCBzY3JpcHREaWFs
b2dJRCk7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiBwZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrKFdl
YktpdFdlYlZpZXcqLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCwgV2ViVmlld1Rl
c3QqIHRlc3QpCit7CisgICAgaWYgKCFXRUJLSVRfSVNfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BM
VUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKQorICAgICAgICByZXR1cm4gRkFMU0U7
CisKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JK
RUNUKHJlcXVlc3QpKTsKKyAgICBXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0KiBtaXNzaW5nUGx1Z2luc1JlcXVlc3QgPSBXRUJLSVRfSU5TVEFMTF9NSVNT
SU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpOworICAgIGdfYXNz
ZXJ0KHdlYmtpdF9pbnN0YWxsX21pc3NpbmdfbWVkaWFfcGx1Z2luc19wZXJtaXNzaW9uX3JlcXVl
c3RfZ2V0X2RldGFpbHMobWlzc2luZ1BsdWdpbnNSZXF1ZXN0KSk7CisgICAgd2Via2l0X3Blcm1p
c3Npb25fcmVxdWVzdF9kZW55KHJlcXVlc3QpOworICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOwor
fQorCitzdGF0aWMgdm9pZCB0ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zUGVybWlzc2lvblJlcXVl
c3QoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgR1VuaXF1ZVB0cjxj
aGFyPiBleHRlbnNpb25CdXNOYW1lKGdfc3RyZHVwX3ByaW50Zigib3JnLndlYmtpdC5ndGsuV2Vi
RXh0ZW5zaW9uVGVzdCV1IiwgVGVzdDo6c193ZWJFeHRlbnNpb25JRCkpOworICAgIEdSZWZQdHI8
R0RCdXNQcm94eT4gcHJveHkgPSBhZG9wdEdSZWYoYnVzLT5jcmVhdGVQcm94eShleHRlbnNpb25C
dXNOYW1lLmdldCgpLAorICAgICAgICAiL29yZy93ZWJraXQvZ3RrL1dlYkV4dGVuc2lvblRlc3Qi
LCAib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIsIHRlc3QtPm1fbWFpbkxvb3ApKTsK
KyAgICBHUmVmUHRyPEdWYXJpYW50PiByZXN1bHQgPSBhZG9wdEdSZWYoZ19kYnVzX3Byb3h5X2Nh
bGxfc3luYyhwcm94eS5nZXQoKSwgIlJlbW92ZUFWUGx1Z2luc0Zyb21HU1RSZWdpc3RyeSIsCisg
ICAgICAgIG51bGxwdHIsIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsIC0xLCBudWxscHRyLCBudWxs
cHRyKSk7CisKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFz
KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3ModGVzdC0+bV93ZWJWaWV3KSwgVFJVRSk7Cisg
ICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7CisKKyAgICBndWxvbmcg
cGVybWlzc2lvblJlcXVlc3RTaWduYWxJRCA9IGdfc2lnbmFsX2Nvbm5lY3QodGVzdC0+bV93ZWJW
aWV3LCAicGVybWlzc2lvbi1yZXF1ZXN0IiwgR19DQUxMQkFDSyhwZXJtaXNzaW9uUmVxdWVzdENh
bGxiYWNrKSwgdGVzdCk7CisgICAgLy8gRklYTUU6IHRoZSBiYXNlIFVSSSBuZWVkcyB0byBmaW5p
c2ggd2l0aCAvIHRvIHdvcmssIHRoYXQgc2hvdWxkbid0IGhhcHBlbi4KKyAgICBHVW5pcXVlUHRy
PGNoYXI+IGJhc2VVUkkoZ19zdHJjb25jYXQoImZpbGU6Ly8iLCBUZXN0OjpnZXRSZXNvdXJjZXNE
aXIoVGVzdDo6V2ViS2l0MlJlc291cmNlcykuZGF0YSgpLCAiLyIsIG51bGxwdHIpKTsKKyAgICB0
ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHk+PHZpZGVvIHNyYz1cInRlc3QubXA0XCIgYXV0b3Bs
YXk+PC92aWRlbz48L2JvZHk+PC9odG1sPiIsIGJhc2VVUkkuZ2V0KCkpOworICAgIGdfbWFpbl9s
b29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5l
Y3QodGVzdC0+bV93ZWJWaWV3LCBwZXJtaXNzaW9uUmVxdWVzdFNpZ25hbElEKTsKK30KKwogdm9p
ZCBiZWZvcmVBbGwoKQogewogICAgIGJ1cyA9IG5ldyBXZWJLaXRUZXN0QnVzKCk7CkBAIC0xOTEs
NiArMjIyLDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktp
dFdlYlZpZXciLCAid2ViLXByb2Nlc3MtY3Jhc2hlZCIsIHRlc3RXZWJLaXRXZWJWaWV3UHJvY2Vz
c0NyYXNoZWQpOwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJ3
aW5kb3ctb2JqZWN0LWNsZWFyZWQiLCB0ZXN0V2ViRXh0ZW5zaW9uV2luZG93T2JqZWN0Q2xlYXJl
ZCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwgImlzb2xhdGVk
LXdvcmxkIiwgdGVzdFdlYkV4dGVuc2lvbklzb2xhdGVkV29ybGQpOworICAgIFdlYlZpZXdUZXN0
OjphZGQoIldlYktpdFdlYlZpZXciLCAiaW5zdGFsbC1taXNzaW5nLXBsdWdpbnMtcGVybWlzc2lv
bi1yZXF1ZXN0IiwgdGVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KTsK
IH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKaW5kZXggNTFiZDYzNy4uMzhj
N2Q5NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dl
YkV4dGVuc2lvblRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPGdzdC9nc3QuaD4K
ICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmg+CkBAIC01Miw2ICs1Myw4IEBAIHN0YXRpYyBjb25z
dCBjaGFyIGludHJvc3BlY3Rpb25YTUxbXSA9CiAgICAgIiAgPG1ldGhvZCBuYW1lPSdHZXRQcm9j
ZXNzSWRlbnRpZmllcic+IgogICAgICIgICA8YXJnIHR5cGU9J3UnIG5hbWU9J2lkZW50aWZpZXIn
IGRpcmVjdGlvbj0nb3V0Jy8+IgogICAgICIgIDwvbWV0aG9kPiIKKyAgICAiICA8bWV0aG9kIG5h
bWU9J1JlbW92ZUFWUGx1Z2luc0Zyb21HU1RSZWdpc3RyeSc+IgorICAgICIgIDwvbWV0aG9kPiIK
ICAgICAiICA8c2lnbmFsIG5hbWU9J0RvY3VtZW50TG9hZGVkJy8+IgogICAgICIgIDxzaWduYWwg
bmFtZT0nVVJJQ2hhbmdlZCc+IgogICAgICIgICA8YXJnIHR5cGU9J3MnIG5hbWU9J3VyaScgZGly
ZWN0aW9uPSdvdXQnLz4iCkBAIC0zMDEsNiArMzA0LDE3IEBAIHN0YXRpYyB2b2lkIG1ldGhvZENh
bGxDYWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIHNlbmRl
ciwKICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIkdldFByb2Nlc3NJZGVu
dGlmaWVyIikpIHsKICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1
ZShpbnZvY2F0aW9uLAogICAgICAgICAgICAgZ192YXJpYW50X25ldygiKHUpIiwgc3RhdGljX2Nh
c3Q8Z3VpbnQzMj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSkpOworICAgIH0gZWxzZSBpZiAoIWdf
c3RyY21wMChtZXRob2ROYW1lLCAiUmVtb3ZlQVZQbHVnaW5zRnJvbUdTVFJlZ2lzdHJ5IikpIHsK
KyAgICAgICAgZ3N0X2luaXQobnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBhdlBsdWdpbnNbXSA9IHsgImxpYmF2IiwgIm9teCIsICJ2YWFwaSIsIG51bGxwdHIg
fTsKKyAgICAgICAgR3N0UmVnaXN0cnkqIHJlZ2lzdHJ5ID0gZ3N0X3JlZ2lzdHJ5X2dldCgpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBhdlBsdWdpbnNbaV07ICsraSkgeworICAgICAg
ICAgICAgaWYgKEdzdFBsdWdpbiogcGx1Z2luID0gZ3N0X3JlZ2lzdHJ5X2ZpbmRfcGx1Z2luKHJl
Z2lzdHJ5LCBhdlBsdWdpbnNbaV0pKSB7CisgICAgICAgICAgICAgICAgZ3N0X3JlZ2lzdHJ5X3Jl
bW92ZV9wbHVnaW4ocmVnaXN0cnksIHBsdWdpbik7CisgICAgICAgICAgICAgICAgZ3N0X29iamVj
dF91bnJlZihwbHVnaW4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGdfZGJ1
c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgbnVsbHB0cik7CiAg
ICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258057</attachid>
            <date>2015-08-03 06:15:19 -0700</date>
            <delta_ts>2015-08-04 00:21:23 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-missing-plugins-permission-request.diff</filename>
            <type>text/plain</type>
            <size>54890</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzM2IzNDE4Li5jZWJiNWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTUtMDgtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHU3RyZWFtZXJdIERvIG5vdCBhdXRvbWF0aWNhbGx5IHNob3cgUGFja2Fn
ZUtpdCBjb2RlYyBpbnN0YWxsYXRpb24gbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1OTczCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGRlc2NyaXB0aW9uIHBhcmFtZXRlciB0
byByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKCkgdGhhdAorICAgICAgICB3aWxsIGJlIHVz
ZWQgYnkgdGhlIEFQSSBsYXllci4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZXF1ZXN0SW5zdGFsbE1p
c3NpbmdQbHVnaW5zKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6cmVxdWVz
dEluc3RhbGxNaXNzaW5nUGx1Z2lucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgorCiAyMDE1LTA4
LTAxICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6
IE9uIHNvbWUgY29tcGxleCBzaXRlcywgaU9TIGluc3RhbnRseSBjcmFzaGVzIG9uY2UgVm9pY2VP
dmVyIGlzIHR1cm5lZCBvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggOGIzN2MxYy4uMGUwNTBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC02MTA4LDEyICs2MTA4LDEyIEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllclJlcXVlc3RlZFBsYXliYWNrUmF0ZSgpIGNvbnN0CiB9CiAKICNpZiBVU0Uo
R1NUUkVBTUVSKQotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdQ
bHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1p
c3NpbmdQbHVnaW5zQ2FsbGJhY2smIGNhbGxiYWNrKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpy
ZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29uc3Qg
U3RyaW5nJiBkZXNjcmlwdGlvbiwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVn
aW5zQ2FsbGJhY2smIGNhbGxiYWNrKQogewogICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQo
KS5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoZGV0YWlscywgY2FsbGJhY2spOwor
ICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5yZXF1ZXN0SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnMoZGV0YWlscywgZGVzY3JpcHRpb24sIGNhbGxiYWNrKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDYxNzM3YzQu
LmMyM2E3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC02MTUs
NyArNjE1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFZpZGVvRnVsbHNjcmVlbk1vZGUgbWVk
aWFQbGF5ZXJGdWxsc2NyZWVuTW9kZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGZ1
bGxzY3JlZW5Nb2RlKCk7IH0KIAogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5ZXJS
ZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smKSBvdmVycmlkZSBmaW5hbDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhjb25zdCBTdHJpbmcm
IGRldGFpbHMsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIE1lZGlhUGxheWVyUmVxdWVzdElu
c3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJikgb3ZlcnJpZGUgZmluYWw7CiAjZW5kaWYKIAog
ICAgIHZvaWQgcGVuZGluZ0FjdGlvblRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCmluZGV4IGY1YWRhMjYuLjlhNjU0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaApAQCAtNDU3LDcgKzQ1Nyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoVklERU8pCiAgICAg
dmlydHVhbCB2b2lkIG1lZGlhRG9jdW1lbnROYXR1cmFsU2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpIHsgfQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhjb25zdCBTdHJpbmcmIC8qZGV0YWlscyov
LCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYpIHsgfTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0
IFN0cmluZyYgLypkZXRhaWxzKi8sIGNvbnN0IFN0cmluZyYgLypkZXNjcmlwdGlvbiovLCBNZWRp
YVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYpIHsgfTsKICNlbmRp
ZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCmluZGV4IDAwMzgwZjIuLmEwMTNjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IG1lZGlhUGxheWVyUHJlZmVycmVkQXVkaW9DaGFy
YWN0ZXJpc3RpY3MoKSBjb25zdCB7IHJldHVybiBWZWN0b3I8U3RyaW5nPigpOyB9CiAKICNpZiBV
U0UoR1NUUkVBTUVSKQotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVn
aW5zKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrJikgeyB9OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQ
bHVnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWVyUmVxdWVzdElu
c3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJikgeyB9OwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDg5MjlmMmUu
LmZiN2ZkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xMDI3LDcgKzEwMjcsNiBAQCBnYm9vbGVhbiBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9FTEVNRU5UOgogICAgICAgICBpZiAoZ3N0X2lzX21p
c3NpbmdfcGx1Z2luX21lc3NhZ2UobWVzc2FnZSkpIHsKLSAgICAgICAgICAgIEdVbmlxdWVQdHI8
Y2hhcj4gZGV0YWlsKGdzdF9taXNzaW5nX3BsdWdpbl9tZXNzYWdlX2dldF9pbnN0YWxsZXJfZGV0
YWlsKG1lc3NhZ2UpKTsKICAgICAgICAgICAgIGlmIChnc3RfaW5zdGFsbF9wbHVnaW5zX3N1cHBv
cnRlZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9taXNzaW5nUGx1Z2luc0NhbGxiYWNrID0gTWVk
aWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s6OmNyZWF0ZShbdGhp
c10odWludDMyX3QgcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgIG1fbWlzc2luZ1BsdWdp
bnNDYWxsYmFjayA9IG51bGxwdHI7CkBAIC0xMDM3LDcgKzEwMzYsOSBAQCBnYm9vbGVhbiBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2Fn
ZSkKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUkVB
RFkpOwogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9Q
QVVTRUQpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIG1fcGxheWVyLT5j
bGllbnQoKS5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKFN0cmluZzo6ZnJvbVVURjgoZGV0
YWlsLmdldCgpKSwgKm1fbWlzc2luZ1BsdWdpbnNDYWxsYmFjayk7CisgICAgICAgICAgICAgICAg
R1VuaXF1ZVB0cjxjaGFyPiBkZXRhaWwoZ3N0X21pc3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2lu
c3RhbGxlcl9kZXRhaWwobWVzc2FnZSkpOworICAgICAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hh
cj4gZGVzY3JpcHRpb24oZ3N0X21pc3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2Rlc2NyaXB0aW9u
KG1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAgICBtX3BsYXllci0+Y2xpZW50KCkucmVxdWVzdElu
c3RhbGxNaXNzaW5nUGx1Z2lucyhTdHJpbmc6OmZyb21VVEY4KGRldGFpbC5nZXQoKSksIFN0cmlu
Zzo6ZnJvbVVURjgoZGVzY3JpcHRpb24uZ2V0KCkpLCAqbV9taXNzaW5nUGx1Z2luc0NhbGxiYWNr
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYg
VVNFKEdTVFJFQU1FUl9NUEVHVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjlhYzJmNy4uYTA3NmZjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSw1ICsxLDY5IEBACiAyMDE1LTA4LTAzICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1N0cmVhbWVyXSBEbyBub3QgYXV0
b21hdGljYWxseSBzaG93IFBhY2thZ2VLaXQgY29kZWMgaW5zdGFsbGF0aW9uIG5vdGlmaWNhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTk3
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0IHRvIGFzayB0aGUgQVBJ
CisgICAgICAgIGxheWVyIHdoZXRoZXIgdG8gYWxsb3cgb3IgZGVueSB0aGUgaW5zdGFsbGF0aW9u
IG9mIG1pc3NpbmcgbWVkaWEKKyAgICAgICAgcGx1Z2lucy4gQW5kIGFkZCBhIEdUSysgaW1wbGVt
ZW50YXRpb24gYmFzZWQgb24gY3VycmVudCBwZXJtaXNzaW9uCisgICAgICAgIHJlcXVlc3QgQVBJ
LiBSZXBsYWNlIHRoZQorICAgICAgICBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlR3N0SW5zdGFsbFBs
dWdpbnNDb250ZXh0KCkgd2l0aAorICAgICAgICBkZWNpY2VQb2xpY3lGb3JJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KCkgdGhhdAorICAgICAgICBwYXNzZXMgdGhl
IEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Qgb2JqZWN0IHRvCisg
ICAgICAgIHRoZSBBUEkgbGF5ZXIuIFRoZSBhbGxvdyBtZXRob2QgcmVjZWl2ZXMgdGhlCisgICAg
ICAgIEdzdEluc3RhbGxQbHVnaW5zQ29udGV4dCBub3csIHNvIHRoYXQgaXQgY2FuIGJlIGNyZWF0
ZWQgYnkgdGhlIEFQSSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmRlY2ljZVBvbGljeUZvckluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdp
bnNQZXJtaXNzaW9uUmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoY3JlYXRlR3N0SW5zdGFs
bFBsdWdpbnNDb250ZXh0KToKKyAgICAgICAgKHdlYmtpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3RBbGxvdyk6CisgICAgICAgICh3ZWJraXRJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0RGVueSk6CisgICAgICAgICh3ZWJraXRfcGVy
bWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KToKKyAgICAgICAgKHdlYmtpdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3REaXNwb3NlKToKKyAgICAgICAgKHdl
YmtpdF9pbnN0YWxsX21pc3NpbmdfbWVkaWFfcGx1Z2luc19wZXJtaXNzaW9uX3JlcXVlc3RfY2xh
c3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdF9pbnN0YWxsX21pc3NpbmdfbWVk
aWFfcGx1Z2luc19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X2Rlc2NyaXB0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmg6IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAg
ICAgICAod2Via2l0V2ViVmlld1JlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLnR5cGVzOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL2VmbC9XZWJWaWV3RWZsLmg6CisgICAgICAgICogVUlQcm9jZXNzL2dzdHJlYW1lci9J
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFt
ZXIuY3BwLgorICAgICAgICAoV2ViS2l0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9u
UmVxdWVzdDo6fkluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1
ZXN0OjphbGxvdyk6CisgICAgICAgIChXZWJLaXQ6Okluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5z
UGVybWlzc2lvblJlcXVlc3Q6OmRlbnkpOgorICAgICAgICAoV2ViS2l0OjpJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpkaWRFbmRSZXF1ZXN0SW5zdGFsbE1pc3Np
bmdNZWRpYVBsdWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9nc3RyZWFtZXIvSW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3N0cmVhbWVyL1dlYlBhZ2VHU3RyZWFtZXIuY3Bw
LgorICAgICAgICAoV2ViS2l0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25S
ZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpwYWdlKToKKyAgICAgICAgKFdlYktpdDo6SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDo6ZGV0YWlscyk6CisgICAgICAgIChX
ZWJLaXQ6Okluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q6OmRlc2Ny
aXB0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6
cmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2dzdHJlYW1l
ci9XZWJQYWdlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVz
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKToKKworMjAxNS0wOC0wMyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZC4gVXBk
YXRlIE9wdGlvbnNHVEsuY21ha2UgYW5kIE5FV1MgZm9yIDIuOS41IHJlbGVhc2UuCiAKICAgICAg
ICAgKiBndGsvTkVXUzogQWRkIHJlbGVhc2Ugbm90ZXMgZm9yIDIuOS41LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQppbmRleCBkMWZhZjg4Li5kNjE1MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQpAQCAtMTgzLDYgKzE4Myw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAg
IFVJUHJvY2Vzcy9lZmwvV2ViVUlQb3B1cE1lbnVDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL2Vm
bC9XZWJWaWV3RWZsLmNwcAogCisgICAgVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9nc3RyZWFt
ZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcAogCiAgICAgVUlQcm9jZXNzL3NvdXAvV2ViQ29v
a2llTWFuYWdlclByb3h5U291cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjEx
M2U2MS4uYjNiNzkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21h
a2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTE2OSw2ICsxNjks
OSBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRIaXRUZXN0UmVzdWx0UHJpdmF0ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuY3BwCisgICAgVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5o
CisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEph
dmFzY3JpcHRSZXN1bHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdC5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdFBy
aXZhdGUuaApAQCAtMjkwLDYgKzI5Myw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwog
CiAgICAgVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAogCisgICAgVUlQcm9j
ZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0
LmNwcAogICAgIFVJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcAog
CiAgICAgVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCkBAIC0zOTMsNiArMzk3
LDcgQEAgc2V0KFdlYktpdDJHVEtfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVDJfRElS
fS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGb3J3YXJkRGVjbGFyYXRpb25zLmgKICAgICAke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRU
ZXN0UmVzdWx0LmgKKyAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmgKICAgICAke1dFQktJ
VDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmgKICAgICAk
e1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRNaW1lSW5mby5oCiAgICAgJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TmF2aWdhdGlvbkFjdGlvbi5oCkBA
IC01MDAsNiArNTA1LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrIgogICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cCIKICAgICAiJHtXRUJL
SVQyX0RJUn0vVUlQcm9jZXNzL1BsdWdpbnMvZ3RrIgorICAgICIke1dFQktJVDJfRElSfS9VSVBy
b2Nlc3MvZ3N0cmVhbWVyIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvZ3RrIgogICAg
ICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDUwNzBhZTIuLmFhZmMz
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5jcHAKQEAgLTQ0LDE0ICs0NCw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3Iu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50TmFtZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0
a1V0aWxpdGllcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCi0jaWYgUExBVEZPUk0oWDExKQotI2luY2x1ZGUgPGdkay9nZGt4Lmg+Ci0jZW5kaWYKLQog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQ4LDE3
ICs0NDMsMTUgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGVyZWZWaWV3KCkKICAgICBnX29iamVj
dF91bnJlZihtX3ZpZXdXaWRnZXQpOwogfQogCi1HVW5pcXVlUHRyPEdzdEluc3RhbGxQbHVnaW5z
Q29udGV4dD4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUdzdEluc3RhbGxQbHVnaW5zQ29udGV4dCgp
CisjaWYgRU5BQkxFKFZJREVPKQorYm9vbCBQYWdlQ2xpZW50SW1wbDo6ZGVjaWNlUG9saWN5Rm9y
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdChJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0JiByZXF1ZXN0KQogewotI2lmIFBMQVRGT1JN
KFgxMSkKLSAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09
IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKSB7Ci0gICAgICAgIEdVbmlxdWVQdHI8R3N0SW5z
dGFsbFBsdWdpbnNDb250ZXh0PiBjb250ZXh0KGdzdF9pbnN0YWxsX3BsdWdpbnNfY29udGV4dF9u
ZXcoKSk7Ci0gICAgICAgIGdzdF9pbnN0YWxsX3BsdWdpbnNfY29udGV4dF9zZXRfeGlkKGNvbnRl
eHQuZ2V0KCksIEdES19XSU5ET1dfWElEKGd0a193aWRnZXRfZ2V0X3dpbmRvdyhtX3ZpZXdXaWRn
ZXQpKSk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0OwotICAgIH0KLSNlbmRpZgorICAgIGlmICgh
V0VCS0lUX0lTX1dFQl9WSUVXKG1fdmlld1dpZGdldCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBudWxscHRyOworICAgIHdlYmtpdFdlYlZpZXdSZXF1ZXN0SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnMoV0VCS0lUX1dFQl9WSUVXKG1fdmlld1dpZGdldCksIHJlcXVlc3Qp
OworICAgIHJldHVybiB0cnVlOwogfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgK
aW5kZXggMDI1OTAzMS4uY2U1ODc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC0xNDIsNyArMTQyLDkgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgcmVmVmlldygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
ZXJlZlZpZXcoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgR1VuaXF1ZVB0cjxHc3RJbnN0YWxs
UGx1Z2luc0NvbnRleHQ+IGNyZWF0ZUdzdEluc3RhbGxQbHVnaW5zQ29udGV4dCgpIG92ZXJyaWRl
OworI2lmIEVOQUJMRShWSURFTykKKyAgICB2aXJ0dWFsIGJvb2wgZGVjaWNlUG9saWN5Rm9ySW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdChJbnN0YWxsTWlzc2luZ01l
ZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Jikgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIC8v
IE1lbWJlcnMgb2YgUGFnZUNsaWVudEltcGwgY2xhc3MKICAgICBHdGtXaWRnZXQqIG1fdmlld1dp
ZGdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdp
bnNQZXJtaXNzaW9uUmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNmZhMjJlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Qu
Y3BwCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBT
LkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRJbnN0YWxsTWlzc2luZ01l
ZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJXZWJLaXRJbnN0YWxs
TWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUg
IldlYktpdFBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisK
KyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4K
KyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaWYgUExBVEZPUk0oWDExKQorI2luY2x1ZGUgPGdkay9n
ZGt4Lmg+CisjZW5kaWYKKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKKy8qKgorICogU0VDVElPTjogV2ViS2l0SW5zdGFsbE1pc3Np
bmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdAorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBB
IHBlcm1pc3Npb24gcmVxdWVzdCBmb3IgaW5zdGFsbGluZyBtaXNzaW5nIG1lZGlhIHBsdWdpbnMK
KyAqIEBUaXRsZTogV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVx
dWVzdAorICogQFNlZV9hbHNvOiAjV2ViS2l0UGVybWlzc2lvblJlcXVlc3QsICNXZWJLaXRXZWJW
aWV3CisgKgorICogV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVx
dWVzdCByZXByZXNlbnRzIGEgcmVxdWVzdCBmb3IKKyAqIHBlcm1pc3Npb24gdG8gZGVjaWRlIHdo
ZXRoZXIgV2ViS2l0IHNob3VsZCB0cnkgdG8gc3RhcnQgYSBoZWxwZXIgYXBwbGljYXRpb24gdG8K
KyAqIGluc3RhbGwgbWlzc2luZyBtZWRpYSBwbHVnaW5zIHdoZW4gdGhlIG1lZGlhIGJhY2tlbmQg
Y291bGRuJ3QgcGxheSBhIG1lZGlhIGJlY2F1c2UKKyAqIHRoZSByZXF1aXJlZCBwbHVnaW5zIHdl
cmUgbm90IGF2YWlsYWJsZS4KKyAqCisgKiBTaW5jZTogMi4xMAorICovCisKK3N0YXRpYyB2b2lk
IHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQoV2ViS2l0UGVybWlzc2lv
blJlcXVlc3RJZmFjZSopOworCitzdHJ1Y3QgX1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIHsKKyNpZiBFTkFCTEUoVklERU8pCisgICAgUmVm
UHRyPEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q+IHJlcXVlc3Q7
CisjZW5kaWYKKyAgICBDU3RyaW5nIGRlc2NyaXB0aW9uOworICAgIGJvb2wgbWFkZURlY2lzaW9u
OworfTsKKworV0VCS0lUX0RFRklORV9UWVBFX1dJVEhfQ09ERSgKKyAgICBXZWJLaXRJbnN0YWxs
TWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LCB3ZWJraXRfaW5zdGFsbF9taXNz
aW5nX21lZGlhX3BsdWdpbnNfcGVybWlzc2lvbl9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNULAorICAg
IEdfSU1QTEVNRU5UX0lOVEVSRkFDRShXRUJLSVRfVFlQRV9QRVJNSVNTSU9OX1JFUVVFU1QsIHdl
YmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQpKQorCisjaWYgRU5BQkxFKFZJ
REVPKQorc3RhdGljIEdVbmlxdWVQdHI8R3N0SW5zdGFsbFBsdWdpbnNDb250ZXh0PiBjcmVhdGVH
c3RJbnN0YWxsUGx1Z2luc0NvbnRleHQoR3RrV2lkZ2V0KiB3aWRnZXQpCit7CisjaWYgUExBVEZP
Uk0oWDExKQorICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkg
PT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpIHsKKyAgICAgICAgR1VuaXF1ZVB0cjxHc3RJ
bnN0YWxsUGx1Z2luc0NvbnRleHQ+IGNvbnRleHQoZ3N0X2luc3RhbGxfcGx1Z2luc19jb250ZXh0
X25ldygpKTsKKyAgICAgICAgZ3N0X2luc3RhbGxfcGx1Z2luc19jb250ZXh0X3NldF94aWQoY29u
dGV4dC5nZXQoKSwgR0RLX1dJTkRPV19YSUQoZ3RrX3dpZGdldF9nZXRfd2luZG93KHdpZGdldCkp
KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQ7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCB3ZWJraXRJbnN0YWxsTWlzc2luZ01l
ZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0QWxsb3coV2ViS2l0UGVybWlzc2lvblJlcXVlc3Qq
IHJlcXVlc3QpCit7CisgICAgQVNTRVJUKFdFQktJVF9JU19JTlNUQUxMX01JU1NJTkdfTUVESUFf
UExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworCisgICAgV2ViS2l0SW5zdGFs
bE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUqIHByaXYgPSBXRUJL
SVRfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVl
c3QpLT5wcml2OworCisgICAgLy8gT25seSBvbmUgZGVjaXNpb24gYXQgYSB0aW1lLgorICAgIGlm
IChwcml2LT5tYWRlRGVjaXNpb24pCisgICAgICAgIHJldHVybjsKKyNpZiBFTkFCTEUoVklERU8p
CisgICAgcHJpdi0+cmVxdWVzdC0+YWxsb3coY3JlYXRlR3N0SW5zdGFsbFBsdWdpbnNDb250ZXh0
KHByaXYtPnJlcXVlc3QtPnBhZ2UoKS52aWV3V2lkZ2V0KCkpKTsKKyNlbmRpZgorICAgIHByaXYt
Pm1hZGVEZWNpc2lvbiA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdEluc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3REZW55KFdlYktpdFBlcm1pc3Npb25SZXF1
ZXN0KiByZXF1ZXN0KQoreworICAgIEFTU0VSVChXRUJLSVRfSVNfSU5TVEFMTF9NSVNTSU5HX01F
RElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIFdlYktpdElu
c3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKiBwcml2ID0g
V0VCS0lUX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVChy
ZXF1ZXN0KS0+cHJpdjsKKworICAgIC8vIE9ubHkgb25lIGRlY2lzaW9uIGF0IGEgdGltZS4KKyAg
ICBpZiAocHJpdi0+bWFkZURlY2lzaW9uKQorICAgICAgICByZXR1cm47CisKKyNpZiBFTkFCTEUo
VklERU8pCisgICAgcHJpdi0+cmVxdWVzdC0+ZGVueSgpOworI2VuZGlmCisgICAgcHJpdi0+bWFk
ZURlY2lzaW9uID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3Blcm1pc3Npb25fcmVx
dWVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdElmYWNlKiBpZmFjZSkK
K3sKKyAgICBpZmFjZS0+YWxsb3cgPSB3ZWJraXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0QWxsb3c7CisgICAgaWZhY2UtPmRlbnkgPSB3ZWJraXRJbnN0YWxsTWlz
c2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0RGVueTsKK30KKworc3RhdGljIHZvaWQg
d2Via2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdERpc3Bvc2Uo
R09iamVjdCogb2JqZWN0KQoreworICAgIC8vIERlZmF1bHQgYmVoYXZpb3VyIHdoZW4gbm8gZGVj
aXNpb24gaGFzIGJlZW4gbWFkZSBpcyBhbGxvd2luZyB0aGUgcmVxdWVzdCBmb3IgYmFja3dhcmRz
IGNvbXBhdGliaWxpdHkuCisgICAgd2Via2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJt
aXNzaW9uUmVxdWVzdERlbnkoV0VCS0lUX1BFUk1JU1NJT05fUkVRVUVTVChvYmplY3QpKTsKKyAg
ICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfaW5zdGFsbF9taXNzaW5nX21lZGlhX3BsdWdpbnNfcGVy
bWlzc2lvbl9yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsKK30KKworc3Rh
dGljIHZvaWQgd2Via2l0X2luc3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25f
cmVxdWVzdF9jbGFzc19pbml0KFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlz
c2lvblJlcXVlc3RDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFz
cyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBvYmplY3RDbGFzcy0+ZGlzcG9zZSA9IHdl
YmtpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3REaXNwb3NlOwor
fQorCisjaWYgRU5BQkxFKFZJREVPKQorV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdCogd2Via2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNz
aW9uUmVxdWVzdENyZWF0ZShJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1
ZXN0JiByZXF1ZXN0KQoreworICAgIFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVy
bWlzc2lvblJlcXVlc3QqIHBlcm1pc3Npb25SZXF1ZXN0ID0gV0VCS0lUX0lOU1RBTExfTUlTU0lO
R19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZ
UEVfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNULCBudWxs
cHRyKSk7CisgICAgcGVybWlzc2lvblJlcXVlc3QtPnByaXYtPnJlcXVlc3QgPSAmcmVxdWVzdDsK
KyAgICByZXR1cm4gcGVybWlzc2lvblJlcXVlc3Q7Cit9CisjZW5kaWYKKworLyoqCisgKiB3ZWJr
aXRfaW5zdGFsbF9taXNzaW5nX21lZGlhX3BsdWdpbnNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF9k
ZXNjcmlwdGlvbjoKKyAqIEByZXF1ZXN0OiBhICNXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0CisgKgorICogR2V0cyB0aGUgZGVzY3JpcHRpb24gYWJvdXQg
dGhlIG1pc3NpbmcgcGx1Z2lucyBwcm92aWRlZCBieSB0aGUgbWVkaWEgYmFja2VuZCB3aGVuIGEg
bWVkaWEgY291bGRuJ3QgYmUgcGxheWVkLgorICoKKyAqIFJldHVybnM6IGEgc3RyaW5nIHdpdGgg
dGhlIGRlc2NyaXB0aW9uIHByb3ZpZGVkIGJ5IHRoZSBtZWRpYSBiYWNrZW5kLgorICoKKyAqIFNp
bmNlOiAyLjEwCisgKi8KK2NvbnN0IGNoYXIqIHdlYmtpdF9pbnN0YWxsX21pc3NpbmdfbWVkaWFf
cGx1Z2luc19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X2Rlc2NyaXB0aW9uKFdlYktpdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5T
X1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSwgbnVsbHB0cik7CisKKyNpZiBFTkFCTEUoVklE
RU8pCisgICAgaWYgKCFyZXF1ZXN0LT5wcml2LT5kZXNjcmlwdGlvbi5pc051bGwoKSkKKyAgICAg
ICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPmRlc2NyaXB0aW9uLmRhdGEoKTsKKworICAgIGNvbnN0
IGF1dG8mIGRlc2NyaXB0aW9uID0gcmVxdWVzdC0+cHJpdi0+cmVxdWVzdC0+ZGVzY3JpcHRpb24o
KTsKKyAgICBBU1NFUlQoIWRldGFpbHMuaXNFbXB0eSgpKTsKKyAgICByZXF1ZXN0LT5wcml2LT5k
ZXNjcmlwdGlvbiA9IHJlcXVlc3QtPnByaXYtPnJlcXVlc3QtPmRlc2NyaXB0aW9uKCkudXRmOCgp
OworI2VuZGlmCisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPmRlc2NyaXB0aW9uLmRhdGEoKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdElu
c3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVy
bWlzc2lvblJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDYz
MmFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oCkBAIC0w
LDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFk
ZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFU
SU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRp
cmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3RfaAorI2RlZmluZSBXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlh
UGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0X2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Cisj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2Rl
ZmluZSBXRUJLSVRfVFlQRV9JTlNUQUxMX01JU1NJTkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9O
X1JFUVVFU1QgICAgICAgICAgICAod2Via2l0X2luc3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5z
X3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfSU5TVEFMTF9N
SVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKG9iaikgICAgICAgICAgICAo
R19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0lOU1RBTExfTUlT
U0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0SW5zdGFsbE1pc3Np
bmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCkpCisjZGVmaW5lIFdFQktJVF9JU19JTlNU
QUxMX01JU1NJTkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1Qob2JqKSAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfSU5TVEFMTF9N
SVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lU
X0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUyhr
bGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9J
TlNUQUxMX01JU1NJTkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QsIFdlYktpdElu
c3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RDbGFzcykpCisjZGVmaW5l
IFdFQktJVF9JU19JTlNUQUxMX01JU1NJTkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVF
U1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lU
X1RZUEVfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKSkK
KyNkZWZpbmUgV0VCS0lUX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05f
UkVRVUVTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiks
ICBXRUJLSVRfVFlQRV9JTlNUQUxMX01JU1NJTkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JF
UVVFU1QsIFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RD
bGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lu
c1Blcm1pc3Npb25SZXF1ZXN0ICAgICAgICBXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lu
c1Blcm1pc3Npb25SZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEluc3RhbGxNaXNzaW5n
TWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RDbGFzcyAgIFdlYktpdEluc3RhbGxNaXNzaW5n
TWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSBXZWJL
aXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZTsKKwor
c3RydWN0IF9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0
IHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQ
bHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJL
aXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Q2xhc3MgeworICAg
IEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZl
ZDApICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDMpICh2b2lkKTsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9pbnN0YWxsX21p
c3NpbmdfbWVkaWFfcGx1Z2luc19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X3R5cGUgICAgICAgICh2
b2lkKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3ZWJraXRfaW5zdGFsbF9taXNzaW5n
X21lZGlhX3BsdWdpbnNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF9kZXNjcmlwdGlvbiAoV2ViS2l0
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7CisK
K0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVx
dWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdElu
c3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM3ZTNiYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluc3RhbGxNaXNzaW5nTWVk
aWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgKQEAgLTAsMCArMSwzMSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlX2gKKyNkZWZpbmUgV2Vi
S2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGVfaAor
CisjaW5jbHVkZSAiSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5o
IgorI2luY2x1ZGUgIldlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisKKyNpZiBFTkFCTEUoVklERU8p
CitXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KiB3ZWJr
aXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKFdlYktp
dDo6SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCYpOworI2VuZGlm
CisKKyNlbmRpZiAvLyBXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25S
ZXF1ZXN0UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IGViODRiNjEuLjM0ZTAzZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC00Miw2
ICs0Miw3IEBACiAjaW5jbHVkZSAiV2ViS2l0Rm9ybUNsaWVudC5oIgogI2luY2x1ZGUgIldlYktp
dEZ1bGxzY3JlZW5DbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXRIaXRUZXN0UmVzdWx0UHJpdmF0
ZS5oIgorI2luY2x1ZGUgIldlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lv
blJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0SmF2YXNjcmlwdFJlc3VsdFByaXZh
dGUuaCIKICNpbmNsdWRlICJXZWJLaXRMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXRN
YXJzaGFsLmgiCkBAIC0yMTQ1LDYgKzIxNDYsMTYgQEAgdm9pZCB3ZWJraXRXZWJWaWV3U2VsZWN0
aW9uRGlkQ2hhbmdlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgd2Via2l0RWRpdG9yU3Rh
dGVDaGFuZ2VkKHdlYlZpZXctPnByaXYtPmVkaXRvclN0YXRlLmdldCgpLCBnZXRQYWdlKHdlYlZp
ZXcpLT5lZGl0b3JTdGF0ZSgpKTsKIH0KIAordm9pZCB3ZWJraXRXZWJWaWV3UmVxdWVzdEluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEluc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QmIHJlcXVlc3QpCit7CisjaWYgRU5BQkxF
KFZJREVPKQorICAgIEdSZWZQdHI8V2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJt
aXNzaW9uUmVxdWVzdD4gaW5zdGFsbE1lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0ID0gYWRv
cHRHUmVmKHdlYmtpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RD
cmVhdGUocmVxdWVzdCkpOworICAgIHdlYmtpdFdlYlZpZXdNYWtlUGVybWlzc2lvblJlcXVlc3Qo
d2ViVmlldywgV0VCS0lUX1BFUk1JU1NJT05fUkVRVUVTVChpbnN0YWxsTWVkaWFQbHVnaW5zUGVy
bWlzc2lvblJlcXVlc3QuZ2V0KCkpKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisjZW5kaWYKK30KKwogLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfbmV3OgogICoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0
ZS5oCmluZGV4IGE3ODg2NTMuLmVjZTRiZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAgLTI3LDYgKzI3
LDcgQEAKICNpZm5kZWYgV2ViS2l0V2ViVmlld1ByaXZhdGVfaAogI2RlZmluZSBXZWJLaXRXZWJW
aWV3UHJpdmF0ZV9oCiAKKyNpbmNsdWRlICJJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgogI2lu
Y2x1ZGUgIldlYkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJXZWJJbWFnZS5oIgpAQCAtNjMs
NSArNjQsNiBAQCBib29sIHdlYmtpdFdlYlZpZXdFbWl0UnVuQ29sb3JDaG9vc2VyKFdlYktpdFdl
YlZpZXcqLCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Kgogdm9pZCB3ZWJraXRXZWJWaWV3V2Vi
UHJvY2Vzc0NyYXNoZWQoV2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJWaWV3SXNQbGF5
aW5nQXVkaW9DaGFuZ2VkKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViVmlld1NlbGVj
dGlvbkRpZENoYW5nZShXZWJLaXRXZWJWaWV3Kik7Cit2b2lkIHdlYmtpdFdlYlZpZXdSZXF1ZXN0
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6SW5zdGFs
bE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCYpOwogCiAjZW5kaWYgLy8gV2Vi
S2l0V2ViVmlld1ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRl
eCAxODY0ZWZkLi4zMjc0OTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApA
QCAtNTkzLDYgKzU5MywyNSBAQCB3ZWJraXRfZ2VvbG9jYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0
X2dldF90eXBlCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDwvRklMRT4KK1dlYktpdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QKK3dlYmtpdF9pbnN0YWxsX21pc3Np
bmdfbWVkaWFfcGx1Z2luc19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X2Rlc2NyaXB0aW9uCisKKzxT
VUJTRUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJt
aXNzaW9uUmVxdWVzdENsYXNzCitXRUJLSVRfVFlQRV9JTlNUQUxMX01JU1NJTkdfTUVESUFfUExV
R0lOU19QRVJNSVNTSU9OX1JFUVVFU1QKK1dFQktJVF9JTlNUQUxMX01JU1NJTkdfTUVESUFfUExV
R0lOU19QRVJNSVNTSU9OX1JFUVVFU1QKK1dFQktJVF9JU19JTlNUQUxMX01JU1NJTkdfTUVESUFf
UExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QKK1dFQktJVF9JTlNUQUxMX01JU1NJTkdfTUVESUFf
UExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9JU19JTlNUQUxMX01JU1NJ
TkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9JTlNUQUxM
X01JU1NJTkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1RfR0VUX0NMQVNTCisKKzxT
VUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0UHJpdmF0ZQord2Via2l0X2luc3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5z
X3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxG
SUxFPldlYktpdE5hdmlnYXRpb25BY3Rpb248L0ZJTEU+CiBXZWJLaXROYXZpZ2F0aW9uQWN0aW9u
CiB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fY29weQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKaW5kZXgg
OWNkYzA5OC4uZjIyNzQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcworKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLnR5cGVzCkBAIC0zMSwzICszMSw0IEBA
IHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9nZXRfdHlwZQogd2Via2l0X3dlYl9oaXRfdGVz
dF9yZXN1bHRfZ2V0X3R5cGUKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfdHlwZQog
d2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfdHlwZQord2Via2l0X2luc3RhbGxfbWlzc2luZ19tZWRp
YV9wbHVnaW5zX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwK
aW5kZXggMDNlZWMyNy4uNzU2YWEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC0yMyw2ICsy
Myw3IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdERvd25sb2FkLnhtbCIvPgog
ICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC54bWwiLz4K
ICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdC54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0SW5zdGFsbE1pc3Np
bmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvV2ViS2l0TmF2aWdhdGlvbkFjdGlvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QueG1sIi8+CiAgICAgPHhp
OmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFBvbGljeURlY2lzaW9uLnhtbCIvPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4IGNlYTRlYTguLjdlMDhhNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTQ4LDYg
KzQ4LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdC5o
PgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5o
PgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0SGl0VGVzdFJlc3VsdC5oPgorI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5o
PgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0TWltZUluZm8uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdE5hdmln
YXRpb25BY3Rpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGYw
MjY5ZWIuLjY3ODUzNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAt
MzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvckNsaWVudC5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKLSNpZiBVU0UoR1NUUkVBTUVSKQotI2luY2x1ZGUgPFdlYkNv
cmUvR1VuaXF1ZVB0ckdTdHJlYW1lci5oPgotI2VuZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkK
ICNpbmNsdWRlICJQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUuaCIKIApAQCAtNzksNiArNzUs
MTAgQEAgY2xhc3MgV2ViQ29sb3JQaWNrZXI7CiBjbGFzcyBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5Q2xpZW50OwogI2VuZGlmCiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorY2xhc3MgSW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDsKKyNlbmRpZgorCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiBzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiAjZW5kaWYKQEAgLTM0MSw3ICszNDEs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmVmlldygpID0gMDsKIAogI2lmIFVT
RShHU1RSRUFNRVIpCi0gICAgdmlydHVhbCBHVW5pcXVlUHRyPEdzdEluc3RhbGxQbHVnaW5zQ29u
dGV4dD4gY3JlYXRlR3N0SW5zdGFsbFBsdWdpbnNDb250ZXh0KCkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBkZWNpY2VQb2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25S
ZXF1ZXN0KEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QmKSA9IDA7
CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCBlMmVjMDIzLi4xYmU4M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC0xNDgxLDcgKzE0ODEsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShWSURFTykKICAg
ICB2b2lkIG1lZGlhRG9jdW1lbnROYXR1cmFsU2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpOwogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3Np
bmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzKTsKKyAgICB2b2lkIHJlcXVlc3RJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24pOwogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZWQwN2M5My4uODdl
YjliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCkBAIC00NTMsNiArNDUzLDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsK
ICAgICBGaXhlZExheW91dFNpemVEaWRDaGFuZ2UoV2ViQ29yZTo6SW50U2l6ZSBmaXhlZExheW91
dFNpemUpCiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCi0gICAgUmVxdWVz
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKFN0cmluZyBkZXRhaWxzKQorICAgIFJlcXVlc3RJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhTdHJpbmcgZGV0YWlscywgU3RyaW5nIGRlc2NyaXB0
aW9uKQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlZpZXdFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5o
CmluZGV4IDVlM2U5YTAuLmQxMWExZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViVmlld0VmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViVmlld0VmbC5oCkBAIC05OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGRlcmVmVmlldygpIG92ZXJyaWRlIGZpbmFsIHsgfQogCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAg
ICB2aXJ0dWFsIEdVbmlxdWVQdHI8R3N0SW5zdGFsbFBsdWdpbnNDb250ZXh0PiBjcmVhdGVHc3RJ
bnN0YWxsUGx1Z2luc0NvbnRleHQoKSBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9
OworICAgIHZpcnR1YWwgYm9vbCBkZWNpY2VQb2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0KEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lv
blJlcXVlc3QmKSBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfTsKICNlbmRpZgogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2dzdHJlYW1lci9J
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9nc3RyZWFtZXIvSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJt
aXNzaW9uUmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFk
NzU5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9nc3RyZWFt
ZXIvSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5jcHAKQEAgLTAs
MCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oIgorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NU
UkVBTUVSKQorI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK0luc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q6Okluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiBwYWdl
LCAgY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQorICAg
IDogbV9wYWdlKCZwYWdlKQorICAgICwgbV9kZXRhaWxzKGRldGFpbHMpCisgICAgLCBtX2Rlc2Ny
aXB0aW9uKGRlc2NyaXB0aW9uKQoreworfQorCitJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0Ojp+SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVx
dWVzdCgpCit7Cit9CisKK3ZvaWQgSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9u
UmVxdWVzdDo6YWxsb3coR1VuaXF1ZVB0cjxHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQ+JiYgY29u
dGV4dCkKK3sKKyAgICBpZiAoIW1fcGFnZS0+aXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBDU3RyaW5nIGRldGFpbCA9IG1fZGV0YWlscy51dGY4KCk7CisgICAgY29uc3QgY2hhciog
ZGV0YWlsQXJyYXlbMl0gPSB7IGRldGFpbC5kYXRhKCksIG51bGxwdHIgfTsKKyAgICByZWYoKTsK
KyAgICBHc3RJbnN0YWxsUGx1Z2luc1JldHVybiByZXN1bHQgPSBnc3RfaW5zdGFsbF9wbHVnaW5z
X2FzeW5jKGRldGFpbEFycmF5LCBjb250ZXh0LmdldCgpLCBbXShHc3RJbnN0YWxsUGx1Z2luc1Jl
dHVybiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CisgICAgICAgIFJlZlB0cjxJbnN0YWxs
TWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRSZWYo
c3RhdGljX2Nhc3Q8SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCo+
KHVzZXJEYXRhKSk7CisgICAgICAgIHJlcXVlc3QtPmRpZEVuZFJlcXVlc3RJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2lucyhzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVzdWx0KSk7CisgICAgICAgIH0s
IHRoaXMpOworCisgICAgaWYgKHJlc3VsdCAhPSBHU1RfSU5TVEFMTF9QTFVHSU5TX1NUQVJURURf
T0spIHsKKyAgICAgICAgLy8gSWYgdGhlIGluc3RhbGxlciBkaWRuJ3Qgc3RhcnQsIHRoZSBjYWxs
YmFjayB3aWxsIG5vdCBiZSBjYWxsZWQsIHNvIHJlbW92ZSB0aGUgcmVmIG1hbnVhbGx5LgorICAg
ICAgICBkZXJlZigpOworICAgICAgICBkaWRFbmRSZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnMoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc3VsdCkpOworICAgICAgICBXVEZMb2dBbHdh
eXMoIk1pc3NpbmcgR1N0cmVhbWVyIFBsdWdpbjogJXNcbiIsIGRldGFpbC5kYXRhKCkpOworICAg
IH0KK30KKwordm9pZCBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0
OjpkZW55KCkKK3sKKyAgICBkaWRFbmRSZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KEdTVF9JTlNUQUxMX1BMVUdJTlNfVVNFUl9BQk9SVCkpOwor
fQorCit2b2lkIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q6OmRp
ZEVuZFJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyh1aW50MzJfdCByZXN1bHQpCit7
CisgICAgaWYgKCFtX3BhZ2UtPmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRFbmRSZXF1ZXN0SW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnMocmVzdWx0KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3N0cmVhbWVyL0lu
c3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzgxNTg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluc3RhbGxNaXNzaW5nTWVkaWFQ
bHVnaW5zUGVybWlzc2lvblJlcXVlc3RfaAorI2RlZmluZSBJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0X2gKKworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJF
QU1FUikKKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHU3RyZWFtZXIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBh
Z2VQcm94eTsKKworY2xhc3MgSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVx
dWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlz
c2lvblJlcXVlc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEluc3RhbGxNaXNzaW5nTWVk
aWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q+IGNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UsIGNv
bnN0IFN0cmluZyYgZGV0YWlscywgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVy
bWlzc2lvblJlcXVlc3QocGFnZSwgZGV0YWlscywgZGVzY3JpcHRpb24pKTsKKyAgICB9CisgICAg
fkluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QoKTsKKworICAgIHZv
aWQgYWxsb3coR1VuaXF1ZVB0cjxHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQ+JiYgPSBudWxscHRy
KTsKKyAgICB2b2lkIGRlbnkoKTsKKworICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIGNvbnN0IHsg
cmV0dXJuICptX3BhZ2U7IH0KKyAgICBjb25zdCBTdHJpbmcmIGRldGFpbHMoKSBjb25zdCB7IHJl
dHVybiBtX2RldGFpbHM7IH0KKyAgICBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9kZXNjcmlwdGlvbjsgfQorCitwcml2YXRlOgorICAgIEluc3RhbGxNaXNzaW5n
TWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5n
JiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKTsKKworICAgIHZvaWQgZGlkRW5k
UmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKHVpbnQzMl90IHJlc3VsdCk7CisKKyAg
ICBSZWZQdHI8V2ViUGFnZVByb3h5PiBtX3BhZ2U7CisgICAgU3RyaW5nIG1fZGV0YWlsczsKKyAg
ICBTdHJpbmcgbV9kZXNjcmlwdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQorI2VuZGlmIC8vIEluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFt
ZXIuY3BwCmluZGV4IDMwMTM0ODIuLmE5N2RjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAK
QEAgLTI3LDMwICsyNywxOCBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogCiAjaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQotCisjaW5jbHVkZSAiSW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIK
LSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3Qg
U3RyaW5nJiBkZXRhaWxzKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24pCiB7Ci0gICAgQ1N0cmluZyBkZXRhaWwgPSBkZXRhaWxzLnV0ZjgoKTsKLSAgICBjb25z
dCBjaGFyKiBkZXRhaWxBcnJheVsyXSA9IHsgZGV0YWlsLmRhdGEoKSwgbnVsbHB0ciB9OwotICAg
IHJlZigpOwotICAgIEdVbmlxdWVQdHI8R3N0SW5zdGFsbFBsdWdpbnNDb250ZXh0PiBjb250ZXh0
ID0gbV9wYWdlQ2xpZW50LmNyZWF0ZUdzdEluc3RhbGxQbHVnaW5zQ29udGV4dCgpOwotICAgIEdz
dEluc3RhbGxQbHVnaW5zUmV0dXJuIHJlc3VsdCA9IGdzdF9pbnN0YWxsX3BsdWdpbnNfYXN5bmMo
ZGV0YWlsQXJyYXksIGNvbnRleHQuZ2V0KCksIFtdKEdzdEluc3RhbGxQbHVnaW5zUmV0dXJuIHJl
c3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKLSAgICAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4g
cGFnZSA9IGFkb3B0UmVmKHN0YXRpY19jYXN0PFdlYlBhZ2VQcm94eSo+KHVzZXJEYXRhKSk7Ci0g
ICAgICAgIGlmIChwYWdlLT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBwYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRFbmRSZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHJlc3VsdCkpKTsKLSAgICB9LCB0aGlzKTsKKyAgICBSZWZQdHI8
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdD4gcmVxdWVzdCA9IElu
c3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSgqdGhpcywg
ZGV0YWlscywgZGVzY3JpcHRpb24pOworICAgIGlmIChtX3BhZ2VDbGllbnQuZGVjaWNlUG9saWN5
Rm9ySW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCgqcmVxdWVzdCkp
CisgICAgICAgIHJldHVybjsKIAotICAgIGlmIChyZXN1bHQgIT0gR1NUX0lOU1RBTExfUExVR0lO
U19TVEFSVEVEX09LKSB7Ci0gICAgICAgIC8vIElmIHRoZSBpbnN0YWxsZXIgZGlkbid0IHN0YXJ0
LCB0aGUgY2FsbGJhY2sgd2lsbCBub3QgYmUgY2FsbGVkLCBzbyByZW1vdmUgdGhlIHJlZiBtYW51
YWxseS4KLSAgICAgICAgZGVyZWYoKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkRW5kUmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihyZXN1bHQpKSk7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiTWlzc2luZyBHU3RyZWFtZXIg
UGx1Z2luOiAlc1xuIiwgZGV0YWlsLmRhdGEoKSk7Ci0gICAgfQorICAgIHJlcXVlc3QtPmRlbnko
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5k
ZXggZWY3ZmE1MS4uN2RkNmEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTE3MCw5
ICsxMTcwLDkgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6Om1lZGlhRG9jdW1lbnROYXR1cmFsU2l6
ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmUKIH0KIAogI2lmIFVTRShHU1RSRUFN
RVIpCi12b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgV2ViQ29yZTo6TWVkaWFQbGF5ZXJSZXF1ZXN0SW5z
dGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smIGNhbGxiYWNrKQordm9pZCBXZWJDaHJvbWVDbGll
bnQ6OnJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFp
bHMsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVxdWVz
dEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJiBjYWxsYmFjaykKIHsKLSAgICBtX3BhZ2Ut
PnJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhkZXRhaWxzLCBjYWxsYmFjayk7Cisg
ICAgbV9wYWdlLT5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoZGV0YWlscywgZGVz
Y3JpcHRpb24sIGNhbGxiYWNrKTsKIH0KICNlbmRpZgogI2VuZGlmIC8vIEVOQUJMRShWSURFTykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDI3MDIyZDIuLmFmMGM5OTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaApAQCAtMzI3LDcgKzMyNyw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFZJREVPKQog
ICAgIHZpcnR1YWwgdm9pZCBtZWRpYURvY3VtZW50TmF0dXJhbFNpemVDaGFuZ2VkKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiwg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2sm
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQ
bHVnaW5zKGNvbnN0IFN0cmluZyYgLypkZXRhaWxzKi8sIGNvbnN0IFN0cmluZyYgLypkZXNjcmlw
dGlvbiovLCBXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnND
YWxsYmFjayYpIG92ZXJyaWRlOwogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggM2NiNjI2Ni4uNTNiMmFmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC05MDksNyArOTA5
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShWSURFTykKICAgICB2b2lkIG1lZGlhRG9jdW1lbnRO
YXR1cmFsU2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogI2lmIFVTRShHU1RS
RUFNRVIpCi0gICAgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3Qg
U3RyaW5nJiBkZXRhaWxzLCBXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2lu
Z1BsdWdpbnNDYWxsYmFjayYpOworICAgIHZvaWQgcmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQ
bHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2sm
KTsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9nc3RyZWFtZXIvV2ViUGFnZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3N0cmVhbWVyL1dlYlBhZ2VHU3RyZWFtZXIuY3BwCmluZGV4
IGY1YTQ1ZmYuLjUwNTQ1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9nc3RyZWFtZXIvV2ViUGFnZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2dzdHJlYW1lci9XZWJQYWdlR1N0cmVhbWVyLmNwcApAQCAt
MzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJQYWdlOjpyZXF1
ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBXZWJD
b3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYgY2Fs
bGJhY2spCit2b2lkIFdlYlBhZ2U6OnJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhj
b25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6
Ok1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJiBjYWxsYmFj
aykKIHsKICAgICBpZiAobV9pbnN0YWxsTWVkaWFQbHVnaW5zQ2FsbGJhY2spIHsKICAgICAgICAg
Y2FsbGJhY2suY29tcGxldGUoR1NUX0lOU1RBTExfUExVR0lOU19JTlNUQUxMX0lOX1BST0dSRVNT
KTsKQEAgLTQyLDcgKzQyLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBXZWJDb3JlOjoKICAgICB9CiAKICAg
ICBtX2luc3RhbGxNZWRpYVBsdWdpbnNDYWxsYmFjayA9ICZjYWxsYmFjazsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhk
ZXRhaWxzKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0SW5zdGFs
bE1pc3NpbmdNZWRpYVBsdWdpbnMoZGV0YWlscywgZGVzY3JpcHRpb24pKTsKIH0KIAogdm9pZCBX
ZWJQYWdlOjpkaWRFbmRSZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnModWludDMyX3Qg
cmVzdWx0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDRjNmRkMGQuLjVjYTNkNWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNS0wOC0wMyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gRG8g
bm90IGF1dG9tYXRpY2FsbHkgc2hvdyBQYWNrYWdlS2l0IGNvZGVjIGluc3RhbGxhdGlvbiBub3Rp
ZmljYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzU5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBIYW5kbGUgdGhlIG1pc3NpbmcgbWVkaWEgcGx1Z2lucyBpbnN0YWxsYXRpb24gcGVybWlzc2lv
biByZXF1ZXN0CisgICAgICAgIGluIE1pbmlCcm93c2VyIGFuZCBhZGQgYSB0ZXN0IGNhc2UgZm9y
IHRoZSBuZXcgQVBJLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cu
YzoKKyAgICAgICAgKHdlYlZpZXdEZWNpZGVQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHA6Cisg
ICAgICAgIChwZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrKToKKyAgICAgICAgKHRlc3RJbnN0YWxs
TWlzc2luZ1BsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChiZWZvcmVBbGwpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0
LmNwcDoKKyAgICAgICAgKG1ldGhvZENhbGxDYWxsYmFjayk6CisKIDIwMTUtMDgtMDIgIEJlbmph
bWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW52ZXN0aWdhdGUg
SGFzaFRhYmxlOjpIYXNoVGFibGUoY29uc3QgSGFzaFRhYmxlJikgYW5kIEhhc2hUYWJsZTo6b3Bl
cmF0b3I9KGNvbnN0IEhhc2hUYWJsZSYpIHBlcmZvcm1hbmNlIGZvciBoYXNoLWJhc2VkIHN0YXRp
YyBhbmFseXNlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5k
b3cuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKaW5kZXggOWE0OTAy
ZS4uNDVkYjY4MCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5k
b3cuYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC00NTQs
NiArNDU0LDEwIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RGVjaWRlUGVybWlzc2lvblJlcXVl
c3QoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0UGVyCiAgICAgICAgICAgICAgICAgZGlh
bG9nX21lc3NhZ2UgPSAiYXVkaW8iOwogICAgICAgICB9IGVsc2UgaWYgKGlzX2Zvcl92aWRlb19k
ZXZpY2UpCiAgICAgICAgICAgICBkaWFsb2dfbWVzc2FnZSA9ICJ2aWRlbyI7CisgICAgfSBlbHNl
IGlmIChXRUJLSVRfSVNfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9S
RVFVRVNUKHJlcXVlc3QpKSB7CisgICAgICAgIGRpYWxvZ190aXRsZSA9ICJNZWRpYSBwbHVnaW4g
bWlzc2luZyByZXF1ZXN0IjsKKyAgICAgICAgZGlhbG9nX21lc3NhZ2VfZm9ybWF0ID0gIlRoZSBt
ZWRpYSBiYWNrZW5kIHdhcyB1bmFibGUgdG8gZmluZCBhIHBsdWdpbiB0byBwbGF5IHRoZSByZXF1
ZXN0ZWQgbWVkaWE6XG4lcy5cbkFsbG93IHRvIHNlYXJjaCBhbmQgaW5zdGFsbCB0aGUgbWlzc2lu
ZyBwbHVnaW4/IjsKKyAgICAgICAgZGlhbG9nX21lc3NhZ2UgPSB3ZWJraXRfaW5zdGFsbF9taXNz
aW5nX21lZGlhX3BsdWdpbnNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF9kZXNjcmlwdGlvbihXRUJL
SVRfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVl
c3QpKTsKICAgICB9IGVsc2UKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKaW5kZXggMWJi
ZjUyZC4uNzRkNTI1MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9DTWFrZUxpc3RzLnR4dApAQCAtMjYsNiArMjYsNyBAQCBpbmNsdWRlX2RpcmVjdG9y
aWVzKAogaW5jbHVkZV9kaXJlY3RvcmllcyhTWVNURU0KICAgICAke0FUU1BJX0lOQ0xVREVfRElS
U30KICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAgICR7R1NUUkVBTUVSX0lOQ0xVREVfRElS
U30KICAgICAke0dUSzNfSU5DTFVERV9ESVJTfQogICAgICR7R1RLX1VOSVhfUFJJTlRfSU5DTFVE
RV9ESVJTfQogICAgICR7TElCU09VUF9JTkNMVURFX0RJUlN9CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJFeHRlbnNpb25zLmNwcApp
bmRleCA4MmQzZWMzLi44Mjc4MDEwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKQEAgLTE4MCw2ICsx
ODAsMzYgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkV4dGVuc2lvbklzb2xhdGVkV29ybGQoV2ViVmll
d1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25u
ZWN0KHRlc3QtPm1fd2ViVmlldywgc2NyaXB0RGlhbG9nSUQpOwogfQogCitzdGF0aWMgZ2Jvb2xl
YW4gcGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0UGVybWlz
c2lvblJlcXVlc3QqIHJlcXVlc3QsIFdlYlZpZXdUZXN0KiB0ZXN0KQoreworICAgIGlmICghV0VC
S0lUX0lTX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVChy
ZXF1ZXN0KSkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgdGVzdC0+YXNzZXJ0T2JqZWN0
SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChyZXF1ZXN0KSk7CisgICAgV2ViS2l0
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCogbWlzc2luZ1BsdWdp
bnNSZXF1ZXN0ID0gV0VCS0lUX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJ
T05fUkVRVUVTVChyZXF1ZXN0KTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfaW5zdGFsbF9taXNzaW5n
X21lZGlhX3BsdWdpbnNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF9kZXNjcmlwdGlvbihtaXNzaW5n
UGx1Z2luc1JlcXVlc3QpKTsKKyAgICB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2RlbnkocmVx
dWVzdCk7CisgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RJ
bnN0YWxsTWlzc2luZ1BsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdChXZWJWaWV3VGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKK3sKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGV4dGVuc2lvbkJ1c05hbWUo
Z19zdHJkdXBfcHJpbnRmKCJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0JXUiLCBUZXN0
OjpzX3dlYkV4dGVuc2lvbklEKSk7CisgICAgR1JlZlB0cjxHREJ1c1Byb3h5PiBwcm94eSA9IGFk
b3B0R1JlZihidXMtPmNyZWF0ZVByb3h5KGV4dGVuc2lvbkJ1c05hbWUuZ2V0KCksCisgICAgICAg
ICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsICJvcmcud2Via2l0Lmd0ay5XZWJF
eHRlbnNpb25UZXN0IiwgdGVzdC0+bV9tYWluTG9vcCkpOworICAgIEdSZWZQdHI8R1ZhcmlhbnQ+
IHJlc3VsdCA9IGFkb3B0R1JlZihnX2RidXNfcHJveHlfY2FsbF9zeW5jKHByb3h5LmdldCgpLCAi
UmVtb3ZlQVZQbHVnaW5zRnJvbUdTVFJlZ2lzdHJ5IiwKKyAgICAgICAgbnVsbHB0ciwgR19EQlVT
X0NBTExfRkxBR1NfTk9ORSwgLTEsIG51bGxwdHIsIG51bGxwdHIpKTsKKworICAgIHRlc3QtPnNo
b3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworCisgICAgZ3Vsb25nIHBlcm1pc3Npb25S
ZXF1ZXN0U2lnbmFsSUQgPSBnX3NpZ25hbF9jb25uZWN0KHRlc3QtPm1fd2ViVmlldywgInBlcm1p
c3Npb24tcmVxdWVzdCIsIEdfQ0FMTEJBQ0socGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayksIHRl
c3QpOworICAgIC8vIEZJWE1FOiB0aGUgYmFzZSBVUkkgbmVlZHMgdG8gZmluaXNoIHdpdGggLyB0
byB3b3JrLCB0aGF0IHNob3VsZG4ndCBoYXBwZW4uCisgICAgR1VuaXF1ZVB0cjxjaGFyPiBiYXNl
VVJJKGdfc3RyY29uY2F0KCJmaWxlOi8vIiwgVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKFRlc3Q6Oldl
YktpdDJSZXNvdXJjZXMpLmRhdGEoKSwgIi8iLCBudWxscHRyKSk7CisgICAgdGVzdC0+bG9hZEh0
bWwoIjxodG1sPjxib2R5Pjx2aWRlbyBzcmM9XCJ0ZXN0Lm1wNFwiIGF1dG9wbGF5PjwvdmlkZW8+
PC9ib2R5PjwvaHRtbD4iLCBiYXNlVVJJLmdldCgpKTsKKyAgICBnX21haW5fbG9vcF9ydW4odGVz
dC0+bV9tYWluTG9vcCk7CisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KHRlc3QtPm1f
d2ViVmlldywgcGVybWlzc2lvblJlcXVlc3RTaWduYWxJRCk7Cit9CisKIHZvaWQgYmVmb3JlQWxs
KCkKIHsKICAgICBidXMgPSBuZXcgV2ViS2l0VGVzdEJ1cygpOwpAQCAtMTkxLDYgKzIyMSw3IEBA
IHZvaWQgYmVmb3JlQWxsKCkKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
IndlYi1wcm9jZXNzLWNyYXNoZWQiLCB0ZXN0V2ViS2l0V2ViVmlld1Byb2Nlc3NDcmFzaGVkKTsK
ICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJFeHRlbnNpb24iLCAid2luZG93LW9iamVj
dC1jbGVhcmVkIiwgdGVzdFdlYkV4dGVuc2lvbldpbmRvd09iamVjdENsZWFyZWQpOwogICAgIFdl
YlZpZXdUZXN0OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJpc29sYXRlZC13b3JsZCIsIHRl
c3RXZWJFeHRlbnNpb25Jc29sYXRlZFdvcmxkKTsKKyAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgImluc3RhbGwtbWlzc2luZy1wbHVnaW5zLXBlcm1pc3Npb24tcmVxdWVzdCIs
IHRlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCk7CiB9CiAKIHZvaWQg
YWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCmluZGV4IDUxYmQ2MzcuLjM4YzdkOTQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25U
ZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0
ZW5zaW9uVGVzdC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NvbnRleHRSZWYuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5o
PgogI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8
c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQt
d2ViLWV4dGVuc2lvbi5oPgpAQCAtNTIsNiArNTMsOCBAQCBzdGF0aWMgY29uc3QgY2hhciBpbnRy
b3NwZWN0aW9uWE1MW10gPQogICAgICIgIDxtZXRob2QgbmFtZT0nR2V0UHJvY2Vzc0lkZW50aWZp
ZXInPiIKICAgICAiICAgPGFyZyB0eXBlPSd1JyBuYW1lPSdpZGVudGlmaWVyJyBkaXJlY3Rpb249
J291dCcvPiIKICAgICAiICA8L21ldGhvZD4iCisgICAgIiAgPG1ldGhvZCBuYW1lPSdSZW1vdmVB
VlBsdWdpbnNGcm9tR1NUUmVnaXN0cnknPiIKKyAgICAiICA8L21ldGhvZD4iCiAgICAgIiAgPHNp
Z25hbCBuYW1lPSdEb2N1bWVudExvYWRlZCcvPiIKICAgICAiICA8c2lnbmFsIG5hbWU9J1VSSUNo
YW5nZWQnPiIKICAgICAiICAgPGFyZyB0eXBlPSdzJyBuYW1lPSd1cmknIGRpcmVjdGlvbj0nb3V0
Jy8+IgpAQCAtMzAxLDYgKzMwNCwxNyBAQCBzdGF0aWMgdm9pZCBtZXRob2RDYWxsQ2FsbGJhY2so
R0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBjaGFyKiBzZW5kZXIsCiAgICAgfSBl
bHNlIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUsICJHZXRQcm9jZXNzSWRlbnRpZmllciIpKSB7
CiAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlv
biwKICAgICAgICAgICAgIGdfdmFyaWFudF9uZXcoIih1KSIsIHN0YXRpY19jYXN0PGd1aW50MzI+
KGdldEN1cnJlbnRQcm9jZXNzSUQoKSkpKTsKKyAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0
aG9kTmFtZSwgIlJlbW92ZUFWUGx1Z2luc0Zyb21HU1RSZWdpc3RyeSIpKSB7CisgICAgICAgIGdz
dF9pbml0KG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogYXZQ
bHVnaW5zW10gPSB7ICJsaWJhdiIsICJvbXgiLCAidmFhcGkiLCBudWxscHRyIH07CisgICAgICAg
IEdzdFJlZ2lzdHJ5KiByZWdpc3RyeSA9IGdzdF9yZWdpc3RyeV9nZXQoKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgYXZQbHVnaW5zW2ldOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChH
c3RQbHVnaW4qIHBsdWdpbiA9IGdzdF9yZWdpc3RyeV9maW5kX3BsdWdpbihyZWdpc3RyeSwgYXZQ
bHVnaW5zW2ldKSkgeworICAgICAgICAgICAgICAgIGdzdF9yZWdpc3RyeV9yZW1vdmVfcGx1Z2lu
KHJlZ2lzdHJ5LCBwbHVnaW4pOworICAgICAgICAgICAgICAgIGdzdF9vYmplY3RfdW5yZWYocGx1
Z2luKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBnX2RidXNfbWV0aG9kX2lu
dm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIG51bGxwdHIpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258159</attachid>
            <date>2015-08-04 00:21:23 -0700</date>
            <delta_ts>2015-08-07 00:18:28 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-missing-plugins-permission-request.diff</filename>
            <type>text/plain</type>
            <size>58056</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzM2IzNDE4Li5jZWJiNWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTUtMDgtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHU3RyZWFtZXJdIERvIG5vdCBhdXRvbWF0aWNhbGx5IHNob3cgUGFja2Fn
ZUtpdCBjb2RlYyBpbnN0YWxsYXRpb24gbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1OTczCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGRlc2NyaXB0aW9uIHBhcmFtZXRlciB0
byByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKCkgdGhhdAorICAgICAgICB3aWxsIGJlIHVz
ZWQgYnkgdGhlIEFQSSBsYXllci4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZXF1ZXN0SW5zdGFsbE1p
c3NpbmdQbHVnaW5zKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6cmVxdWVz
dEluc3RhbGxNaXNzaW5nUGx1Z2lucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgorCiAyMDE1LTA4
LTAxICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6
IE9uIHNvbWUgY29tcGxleCBzaXRlcywgaU9TIGluc3RhbnRseSBjcmFzaGVzIG9uY2UgVm9pY2VP
dmVyIGlzIHR1cm5lZCBvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggOGIzN2MxYy4uMGUwNTBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC02MTA4LDEyICs2MTA4LDEyIEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllclJlcXVlc3RlZFBsYXliYWNrUmF0ZSgpIGNvbnN0CiB9CiAKICNpZiBVU0Uo
R1NUUkVBTUVSKQotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdQ
bHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1p
c3NpbmdQbHVnaW5zQ2FsbGJhY2smIGNhbGxiYWNrKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpy
ZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29uc3Qg
U3RyaW5nJiBkZXNjcmlwdGlvbiwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVn
aW5zQ2FsbGJhY2smIGNhbGxiYWNrKQogewogICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQo
KS5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoZGV0YWlscywgY2FsbGJhY2spOwor
ICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5yZXF1ZXN0SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnMoZGV0YWlscywgZGVzY3JpcHRpb24sIGNhbGxiYWNrKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDYxNzM3YzQu
LmMyM2E3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC02MTUs
NyArNjE1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFZpZGVvRnVsbHNjcmVlbk1vZGUgbWVk
aWFQbGF5ZXJGdWxsc2NyZWVuTW9kZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGZ1
bGxzY3JlZW5Nb2RlKCk7IH0KIAogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoY29uc3QgU3RyaW5nJiwgTWVkaWFQbGF5ZXJS
ZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smKSBvdmVycmlkZSBmaW5hbDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhjb25zdCBTdHJpbmcm
IGRldGFpbHMsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIE1lZGlhUGxheWVyUmVxdWVzdElu
c3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJikgb3ZlcnJpZGUgZmluYWw7CiAjZW5kaWYKIAog
ICAgIHZvaWQgcGVuZGluZ0FjdGlvblRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCmluZGV4IGY1YWRhMjYuLjlhNjU0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaApAQCAtNDU3LDcgKzQ1Nyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoVklERU8pCiAgICAg
dmlydHVhbCB2b2lkIG1lZGlhRG9jdW1lbnROYXR1cmFsU2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpIHsgfQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhjb25zdCBTdHJpbmcmIC8qZGV0YWlscyov
LCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYpIHsgfTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0
IFN0cmluZyYgLypkZXRhaWxzKi8sIGNvbnN0IFN0cmluZyYgLypkZXNjcmlwdGlvbiovLCBNZWRp
YVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYpIHsgfTsKICNlbmRp
ZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCmluZGV4IDAwMzgwZjIuLmEwMTNjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IG1lZGlhUGxheWVyUHJlZmVycmVkQXVkaW9DaGFy
YWN0ZXJpc3RpY3MoKSBjb25zdCB7IHJldHVybiBWZWN0b3I8U3RyaW5nPigpOyB9CiAKICNpZiBV
U0UoR1NUUkVBTUVSKQotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVn
aW5zKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrJikgeyB9OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQ
bHVnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWVyUmVxdWVzdElu
c3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJikgeyB9OwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDg5MjlmMmUu
LmZiN2ZkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xMDI3LDcgKzEwMjcsNiBAQCBnYm9vbGVhbiBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9FTEVNRU5UOgogICAgICAgICBpZiAoZ3N0X2lzX21p
c3NpbmdfcGx1Z2luX21lc3NhZ2UobWVzc2FnZSkpIHsKLSAgICAgICAgICAgIEdVbmlxdWVQdHI8
Y2hhcj4gZGV0YWlsKGdzdF9taXNzaW5nX3BsdWdpbl9tZXNzYWdlX2dldF9pbnN0YWxsZXJfZGV0
YWlsKG1lc3NhZ2UpKTsKICAgICAgICAgICAgIGlmIChnc3RfaW5zdGFsbF9wbHVnaW5zX3N1cHBv
cnRlZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9taXNzaW5nUGx1Z2luc0NhbGxiYWNrID0gTWVk
aWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s6OmNyZWF0ZShbdGhp
c10odWludDMyX3QgcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgIG1fbWlzc2luZ1BsdWdp
bnNDYWxsYmFjayA9IG51bGxwdHI7CkBAIC0xMDM3LDcgKzEwMzYsOSBAQCBnYm9vbGVhbiBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2Fn
ZSkKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUkVB
RFkpOwogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9Q
QVVTRUQpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIG1fcGxheWVyLT5j
bGllbnQoKS5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKFN0cmluZzo6ZnJvbVVURjgoZGV0
YWlsLmdldCgpKSwgKm1fbWlzc2luZ1BsdWdpbnNDYWxsYmFjayk7CisgICAgICAgICAgICAgICAg
R1VuaXF1ZVB0cjxjaGFyPiBkZXRhaWwoZ3N0X21pc3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2lu
c3RhbGxlcl9kZXRhaWwobWVzc2FnZSkpOworICAgICAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hh
cj4gZGVzY3JpcHRpb24oZ3N0X21pc3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2Rlc2NyaXB0aW9u
KG1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAgICBtX3BsYXllci0+Y2xpZW50KCkucmVxdWVzdElu
c3RhbGxNaXNzaW5nUGx1Z2lucyhTdHJpbmc6OmZyb21VVEY4KGRldGFpbC5nZXQoKSksIFN0cmlu
Zzo6ZnJvbVVURjgoZGVzY3JpcHRpb24uZ2V0KCkpLCAqbV9taXNzaW5nUGx1Z2luc0NhbGxiYWNr
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYg
VVNFKEdTVFJFQU1FUl9NUEVHVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjlhYzJmNy4uYTA3NmZjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSw1ICsxLDY5IEBACiAyMDE1LTA4LTAzICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1N0cmVhbWVyXSBEbyBub3QgYXV0
b21hdGljYWxseSBzaG93IFBhY2thZ2VLaXQgY29kZWMgaW5zdGFsbGF0aW9uIG5vdGlmaWNhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTk3
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0IHRvIGFzayB0aGUgQVBJ
CisgICAgICAgIGxheWVyIHdoZXRoZXIgdG8gYWxsb3cgb3IgZGVueSB0aGUgaW5zdGFsbGF0aW9u
IG9mIG1pc3NpbmcgbWVkaWEKKyAgICAgICAgcGx1Z2lucy4gQW5kIGFkZCBhIEdUSysgaW1wbGVt
ZW50YXRpb24gYmFzZWQgb24gY3VycmVudCBwZXJtaXNzaW9uCisgICAgICAgIHJlcXVlc3QgQVBJ
LiBSZXBsYWNlIHRoZQorICAgICAgICBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlR3N0SW5zdGFsbFBs
dWdpbnNDb250ZXh0KCkgd2l0aAorICAgICAgICBkZWNpY2VQb2xpY3lGb3JJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KCkgdGhhdAorICAgICAgICBwYXNzZXMgdGhl
IEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Qgb2JqZWN0IHRvCisg
ICAgICAgIHRoZSBBUEkgbGF5ZXIuIFRoZSBhbGxvdyBtZXRob2QgcmVjZWl2ZXMgdGhlCisgICAg
ICAgIEdzdEluc3RhbGxQbHVnaW5zQ29udGV4dCBub3csIHNvIHRoYXQgaXQgY2FuIGJlIGNyZWF0
ZWQgYnkgdGhlIEFQSSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmRlY2ljZVBvbGljeUZvckluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdp
bnNQZXJtaXNzaW9uUmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoY3JlYXRlR3N0SW5zdGFs
bFBsdWdpbnNDb250ZXh0KToKKyAgICAgICAgKHdlYmtpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3RBbGxvdyk6CisgICAgICAgICh3ZWJraXRJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0RGVueSk6CisgICAgICAgICh3ZWJraXRfcGVy
bWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KToKKyAgICAgICAgKHdlYmtpdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3REaXNwb3NlKToKKyAgICAgICAgKHdl
YmtpdF9pbnN0YWxsX21pc3NpbmdfbWVkaWFfcGx1Z2luc19wZXJtaXNzaW9uX3JlcXVlc3RfY2xh
c3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdF9pbnN0YWxsX21pc3NpbmdfbWVk
aWFfcGx1Z2luc19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X2Rlc2NyaXB0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmg6IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAg
ICAgICAod2Via2l0V2ViVmlld1JlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLnR5cGVzOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL2VmbC9XZWJWaWV3RWZsLmg6CisgICAgICAgICogVUlQcm9jZXNzL2dzdHJlYW1lci9J
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFt
ZXIuY3BwLgorICAgICAgICAoV2ViS2l0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9u
UmVxdWVzdDo6fkluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1
ZXN0OjphbGxvdyk6CisgICAgICAgIChXZWJLaXQ6Okluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5z
UGVybWlzc2lvblJlcXVlc3Q6OmRlbnkpOgorICAgICAgICAoV2ViS2l0OjpJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpkaWRFbmRSZXF1ZXN0SW5zdGFsbE1pc3Np
bmdNZWRpYVBsdWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9nc3RyZWFtZXIvSW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3N0cmVhbWVyL1dlYlBhZ2VHU3RyZWFtZXIuY3Bw
LgorICAgICAgICAoV2ViS2l0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25S
ZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpwYWdlKToKKyAgICAgICAgKFdlYktpdDo6SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDo6ZGV0YWlscyk6CisgICAgICAgIChX
ZWJLaXQ6Okluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q6OmRlc2Ny
aXB0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6
cmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2dzdHJlYW1l
ci9XZWJQYWdlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVz
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKToKKworMjAxNS0wOC0wMyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZC4gVXBk
YXRlIE9wdGlvbnNHVEsuY21ha2UgYW5kIE5FV1MgZm9yIDIuOS41IHJlbGVhc2UuCiAKICAgICAg
ICAgKiBndGsvTkVXUzogQWRkIHJlbGVhc2Ugbm90ZXMgZm9yIDIuOS41LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQppbmRleCBkMWZhZjg4Li5kNjE1MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQpAQCAtMTgzLDYgKzE4Myw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAg
IFVJUHJvY2Vzcy9lZmwvV2ViVUlQb3B1cE1lbnVDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL2Vm
bC9XZWJWaWV3RWZsLmNwcAogCisgICAgVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9nc3RyZWFt
ZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcAogCiAgICAgVUlQcm9jZXNzL3NvdXAvV2ViQ29v
a2llTWFuYWdlclByb3h5U291cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjEx
M2U2MS4uYjNiNzkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21h
a2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTE2OSw2ICsxNjks
OSBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRIaXRUZXN0UmVzdWx0UHJpdmF0ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuY3BwCisgICAgVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5o
CisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEph
dmFzY3JpcHRSZXN1bHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdC5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdFBy
aXZhdGUuaApAQCAtMjkwLDYgKzI5Myw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwog
CiAgICAgVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAogCisgICAgVUlQcm9j
ZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0
LmNwcAogICAgIFVJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcAog
CiAgICAgVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCkBAIC0zOTMsNiArMzk3
LDcgQEAgc2V0KFdlYktpdDJHVEtfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVDJfRElS
fS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGb3J3YXJkRGVjbGFyYXRpb25zLmgKICAgICAke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRU
ZXN0UmVzdWx0LmgKKyAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmgKICAgICAke1dFQktJ
VDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmgKICAgICAk
e1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRNaW1lSW5mby5oCiAgICAgJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TmF2aWdhdGlvbkFjdGlvbi5oCkBA
IC01MDAsNiArNTA1LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrIgogICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cCIKICAgICAiJHtXRUJL
SVQyX0RJUn0vVUlQcm9jZXNzL1BsdWdpbnMvZ3RrIgorICAgICIke1dFQktJVDJfRElSfS9VSVBy
b2Nlc3MvZ3N0cmVhbWVyIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvZ3RrIgogICAg
ICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDUwNzBhZTIuLmFhZmMz
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5jcHAKQEAgLTQ0LDE0ICs0NCw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3Iu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50TmFtZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0
a1V0aWxpdGllcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCi0jaWYgUExBVEZPUk0oWDExKQotI2luY2x1ZGUgPGdkay9nZGt4Lmg+Ci0jZW5kaWYKLQog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQ4LDE3
ICs0NDMsMTUgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGVyZWZWaWV3KCkKICAgICBnX29iamVj
dF91bnJlZihtX3ZpZXdXaWRnZXQpOwogfQogCi1HVW5pcXVlUHRyPEdzdEluc3RhbGxQbHVnaW5z
Q29udGV4dD4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUdzdEluc3RhbGxQbHVnaW5zQ29udGV4dCgp
CisjaWYgRU5BQkxFKFZJREVPKQorYm9vbCBQYWdlQ2xpZW50SW1wbDo6ZGVjaWNlUG9saWN5Rm9y
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdChJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0JiByZXF1ZXN0KQogewotI2lmIFBMQVRGT1JN
KFgxMSkKLSAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09
IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKSB7Ci0gICAgICAgIEdVbmlxdWVQdHI8R3N0SW5z
dGFsbFBsdWdpbnNDb250ZXh0PiBjb250ZXh0KGdzdF9pbnN0YWxsX3BsdWdpbnNfY29udGV4dF9u
ZXcoKSk7Ci0gICAgICAgIGdzdF9pbnN0YWxsX3BsdWdpbnNfY29udGV4dF9zZXRfeGlkKGNvbnRl
eHQuZ2V0KCksIEdES19XSU5ET1dfWElEKGd0a193aWRnZXRfZ2V0X3dpbmRvdyhtX3ZpZXdXaWRn
ZXQpKSk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0OwotICAgIH0KLSNlbmRpZgorICAgIGlmICgh
V0VCS0lUX0lTX1dFQl9WSUVXKG1fdmlld1dpZGdldCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBudWxscHRyOworICAgIHdlYmtpdFdlYlZpZXdSZXF1ZXN0SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnMoV0VCS0lUX1dFQl9WSUVXKG1fdmlld1dpZGdldCksIHJlcXVlc3Qp
OworICAgIHJldHVybiB0cnVlOwogfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgK
aW5kZXggMDI1OTAzMS4uY2U1ODc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC0xNDIsNyArMTQyLDkgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgcmVmVmlldygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
ZXJlZlZpZXcoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgR1VuaXF1ZVB0cjxHc3RJbnN0YWxs
UGx1Z2luc0NvbnRleHQ+IGNyZWF0ZUdzdEluc3RhbGxQbHVnaW5zQ29udGV4dCgpIG92ZXJyaWRl
OworI2lmIEVOQUJMRShWSURFTykKKyAgICB2aXJ0dWFsIGJvb2wgZGVjaWNlUG9saWN5Rm9ySW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdChJbnN0YWxsTWlzc2luZ01l
ZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Jikgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIC8v
IE1lbWJlcnMgb2YgUGFnZUNsaWVudEltcGwgY2xhc3MKICAgICBHdGtXaWRnZXQqIG1fdmlld1dp
ZGdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAKaW5kZXgg
Zjc4MGRhZi4uODcxYzNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdC5jcHAKQEAgLTM1LDYgKzM1LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAqIFdl
YktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgcmVwcmVzZW50cyBhIHJlcXVlc3QgZm9y
CiAgKiBwZXJtaXNzaW9uIHRvIGRlY2lkZSB3aGV0aGVyIFdlYktpdCBzaG91bGQgcHJvdmlkZSB0
aGUgdXNlcidzCiAgKiBsb2NhdGlvbiB0byBhIHdlYnNpdGUgd2hlbiByZXF1ZXN0ZWQgdGhyb3Vn
aHQgdGhlIEdlb2xvY2F0aW9uIEFQSS4KKyAqCisgKiBXaGVuIGEgV2ViS2l0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdCBpcyBub3QgaGFuZGxlZCBieSB0aGUgdXNlciwKKyAqIGl0IGlzIGRl
bmllZCBieSBkZWZhdWx0LgogICovCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9wZXJtaXNzaW9uX3Jl
cXVlc3RfaW50ZXJmYWNlX2luaXQoV2ViS2l0UGVybWlzc2lvblJlcXVlc3RJZmFjZSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Np
b25SZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDQwYWM3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5jcHAKQEAgLTAs
MCArMSwxNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5z
UGVybWlzc2lvblJlcXVlc3QuaCIKKworI2luY2x1ZGUgIldlYktpdEluc3RhbGxNaXNzaW5nTWVk
aWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0UGVy
bWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKworI2lmIEVOQUJM
RShWSURFTykKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgorI2luY2x1ZGUg
PGd0ay9ndGsuaD4KKyNpZiBQTEFURk9STShYMTEpCisjaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNl
bmRpZgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0CisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEEgcGVybWlzc2lv
biByZXF1ZXN0IGZvciBpbnN0YWxsaW5nIG1pc3NpbmcgbWVkaWEgcGx1Z2lucworICogQFRpdGxl
OiBXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0CisgKiBA
U2VlX2Fsc286ICNXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCwgI1dlYktpdFdlYlZpZXcKKyAqCisg
KiBXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0IHJlcHJl
c2VudHMgYSByZXF1ZXN0IGZvcgorICogcGVybWlzc2lvbiB0byBkZWNpZGUgd2hldGhlciBXZWJL
aXQgc2hvdWxkIHRyeSB0byBzdGFydCBhIGhlbHBlciBhcHBsaWNhdGlvbiB0bworICogaW5zdGFs
bCBtaXNzaW5nIG1lZGlhIHBsdWdpbnMgd2hlbiB0aGUgbWVkaWEgYmFja2VuZCBjb3VsZG4ndCBw
bGF5IGEgbWVkaWEgYmVjYXVzZQorICogdGhlIHJlcXVpcmVkIHBsdWdpbnMgd2VyZSBub3QgYXZh
aWxhYmxlLgorICoKKyAqIFdoZW4gYSBXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0IGlzIG5vdCBoYW5kbGVkIGJ5IHRoZSB1c2VyLAorICogaXQgaXMgYWxs
b3dlZCBieSBkZWZhdWx0LgorICoKKyAqIFNpbmNlOiAyLjEwCisgKi8KKworc3RhdGljIHZvaWQg
d2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRQZXJtaXNzaW9u
UmVxdWVzdElmYWNlKik7CisKK3N0cnVjdCBfV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdp
bnNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUgeworI2lmIEVOQUJMRShWSURFTykKKyAgICBSZWZQ
dHI8SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdD4gcmVxdWVzdDsK
KyNlbmRpZgorICAgIENTdHJpbmcgZGVzY3JpcHRpb247CisgICAgYm9vbCBtYWRlRGVjaXNpb247
Cit9OworCitXRUJLSVRfREVGSU5FX1RZUEVfV0lUSF9DT0RFKAorICAgIFdlYktpdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QsIHdlYmtpdF9pbnN0YWxsX21pc3Np
bmdfbWVkaWFfcGx1Z2luc19wZXJtaXNzaW9uX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QsCisgICAg
R19JTVBMRU1FTlRfSU5URVJGQUNFKFdFQktJVF9UWVBFX1BFUk1JU1NJT05fUkVRVUVTVCwgd2Vi
a2l0X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRlcmZhY2VfaW5pdCkpCisKKyNpZiBFTkFCTEUoVklE
RU8pCitzdGF0aWMgR1VuaXF1ZVB0cjxHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQ+IGNyZWF0ZUdz
dEluc3RhbGxQbHVnaW5zQ29udGV4dChHdGtXaWRnZXQqIHdpZGdldCkKK3sKKyNpZiBQTEFURk9S
TShYMTEpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9
PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkgeworICAgICAgICBHVW5pcXVlUHRyPEdzdElu
c3RhbGxQbHVnaW5zQ29udGV4dD4gY29udGV4dChnc3RfaW5zdGFsbF9wbHVnaW5zX2NvbnRleHRf
bmV3KCkpOworICAgICAgICBnc3RfaW5zdGFsbF9wbHVnaW5zX2NvbnRleHRfc2V0X3hpZChjb250
ZXh0LmdldCgpLCBHREtfV0lORE9XX1hJRChndGtfd2lkZ2V0X2dldF93aW5kb3cod2lkZ2V0KSkp
OworICAgICAgICByZXR1cm4gY29udGV4dDsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBu
dWxscHRyOworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkIHdlYmtpdEluc3RhbGxNaXNzaW5nTWVk
aWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RBbGxvdyhXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCog
cmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoV0VCS0lUX0lTX0lOU1RBTExfTUlTU0lOR19NRURJQV9Q
TFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CisKKyAgICBXZWJLaXRJbnN0YWxs
TWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJ
VF9JTlNUQUxMX01JU1NJTkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVz
dCktPnByaXY7CisKKyAgICAvLyBPbmx5IG9uZSBkZWNpc2lvbiBhdCBhIHRpbWUuCisgICAgaWYg
KHByaXYtPm1hZGVEZWNpc2lvbikKKyAgICAgICAgcmV0dXJuOworI2lmIEVOQUJMRShWSURFTykK
KyAgICBwcml2LT5yZXF1ZXN0LT5hbGxvdyhjcmVhdGVHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQo
cHJpdi0+cmVxdWVzdC0+cGFnZSgpLnZpZXdXaWRnZXQoKSkpOworI2VuZGlmCisgICAgcHJpdi0+
bWFkZURlY2lzaW9uID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0SW5zdGFsbE1pc3Np
bmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdERlbnkoV2ViS2l0UGVybWlzc2lvblJlcXVl
c3QqIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKFdFQktJVF9JU19JTlNUQUxMX01JU1NJTkdfTUVE
SUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworCisgICAgV2ViS2l0SW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUqIHByaXYgPSBX
RUJLSVRfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKHJl
cXVlc3QpLT5wcml2OworCisgICAgLy8gT25seSBvbmUgZGVjaXNpb24gYXQgYSB0aW1lLgorICAg
IGlmIChwcml2LT5tYWRlRGVjaXNpb24pCisgICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShW
SURFTykKKyAgICBwcml2LT5yZXF1ZXN0LT5kZW55KCk7CisjZW5kaWYKKyAgICBwcml2LT5tYWRl
RGVjaXNpb24gPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1
ZXN0X2ludGVyZmFjZV9pbml0KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0SWZhY2UqIGlmYWNlKQor
eworICAgIGlmYWNlLT5hbGxvdyA9IHdlYmtpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVy
bWlzc2lvblJlcXVlc3RBbGxvdzsKKyAgICBpZmFjZS0+ZGVueSA9IHdlYmtpdEluc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3REZW55OworfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0RGlzcG9zZShH
T2JqZWN0KiBvYmplY3QpCit7CisgICAgLy8gRGVmYXVsdCBiZWhhdmlvdXIgd2hlbiBubyBkZWNp
c2lvbiBoYXMgYmVlbiBtYWRlIGlzIGFsbG93aW5nIHRoZSByZXF1ZXN0IGZvciBiYWNrd2FyZHMg
Y29tcGF0aWJpbGl0eS4KKyAgICB3ZWJraXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0RGVueShXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUKG9iamVjdCkpOworICAg
IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9pbnN0YWxsX21pc3NpbmdfbWVkaWFfcGx1Z2luc19wZXJt
aXNzaW9uX3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOworfQorCitzdGF0
aWMgdm9pZCB3ZWJraXRfaW5zdGFsbF9taXNzaW5nX21lZGlhX3BsdWdpbnNfcGVybWlzc2lvbl9y
ZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNz
aW9uUmVxdWVzdENsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNz
ID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIG9iamVjdENsYXNzLT5kaXNwb3NlID0gd2Vi
a2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdERpc3Bvc2U7Cit9
CisKKyNpZiBFTkFCTEUoVklERU8pCitXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0KiB3ZWJraXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Np
b25SZXF1ZXN0Q3JlYXRlKEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVl
c3QmIHJlcXVlc3QpCit7CisgICAgV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJt
aXNzaW9uUmVxdWVzdCogcGVybWlzc2lvblJlcXVlc3QgPSBXRUJLSVRfSU5TVEFMTF9NSVNTSU5H
X01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9JTlNUQUxMX01JU1NJTkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QsIG51bGxw
dHIpKTsKKyAgICBwZXJtaXNzaW9uUmVxdWVzdC0+cHJpdi0+cmVxdWVzdCA9ICZyZXF1ZXN0Owor
ICAgIHJldHVybiBwZXJtaXNzaW9uUmVxdWVzdDsKK30KKyNlbmRpZgorCisvKioKKyAqIHdlYmtp
dF9pbnN0YWxsX21pc3NpbmdfbWVkaWFfcGx1Z2luc19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X2Rl
c2NyaXB0aW9uOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3QKKyAqCisgKiBHZXRzIHRoZSBkZXNjcmlwdGlvbiBhYm91dCB0
aGUgbWlzc2luZyBwbHVnaW5zIHByb3ZpZGVkIGJ5IHRoZSBtZWRpYSBiYWNrZW5kIHdoZW4gYSBt
ZWRpYSBjb3VsZG4ndCBiZSBwbGF5ZWQuCisgKgorICogUmV0dXJuczogYSBzdHJpbmcgd2l0aCB0
aGUgZGVzY3JpcHRpb24gcHJvdmlkZWQgYnkgdGhlIG1lZGlhIGJhY2tlbmQuCisgKgorICogU2lu
Y2U6IDIuMTAKKyAqLworY29uc3QgY2hhciogd2Via2l0X2luc3RhbGxfbWlzc2luZ19tZWRpYV9w
bHVnaW5zX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfZGVzY3JpcHRpb24oV2ViS2l0SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNf
UEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpLCBudWxscHRyKTsKKworI2lmIEVOQUJMRShWSURF
TykKKyAgICBpZiAoIXJlcXVlc3QtPnByaXYtPmRlc2NyaXB0aW9uLmlzTnVsbCgpKQorICAgICAg
ICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+ZGVzY3JpcHRpb24uZGF0YSgpOworCisgICAgY29uc3Qg
YXV0byYgZGVzY3JpcHRpb24gPSByZXF1ZXN0LT5wcml2LT5yZXF1ZXN0LT5kZXNjcmlwdGlvbigp
OworICAgIEFTU0VSVCghZGV0YWlscy5pc0VtcHR5KCkpOworICAgIHJlcXVlc3QtPnByaXYtPmRl
c2NyaXB0aW9uID0gcmVxdWVzdC0+cHJpdi0+cmVxdWVzdC0+ZGVzY3JpcHRpb24oKS51dGY4KCk7
CisjZW5kaWYKKyAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+ZGVzY3JpcHRpb24uZGF0YSgpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJt
aXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNjMy
YWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRl
ZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJ
T04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGly
ZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdp
bnNQZXJtaXNzaW9uUmVxdWVzdF9oCisjZGVmaW5lIFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQ
bHVnaW5zUGVybWlzc2lvblJlcXVlc3RfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVm
aW5lIFdFQktJVF9UWVBFX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05f
UkVRVUVTVCAgICAgICAgICAgICh3ZWJraXRfaW5zdGFsbF9taXNzaW5nX21lZGlhX3BsdWdpbnNf
cGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9JTlNUQUxMX01J
U1NJTkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1Qob2JqKSAgICAgICAgICAgIChH
X1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfSU5TVEFMTF9NSVNT
SU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KSkKKyNkZWZpbmUgV0VCS0lUX0lTX0lOU1RB
TExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVChvYmopICAgICAgICAg
KEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9JTlNUQUxMX01J
U1NJTkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRf
SU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTKGts
YXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0lO
U1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0SW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdENsYXNzKSkKKyNkZWZpbmUg
V0VCS0lUX0lTX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVT
VF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRf
VFlQRV9JTlNUQUxMX01JU1NJTkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QpKQor
I2RlZmluZSBXRUJLSVRfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9S
RVFVRVNUX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwg
IFdFQktJVF9UWVBFX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVR
VUVTVCwgV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdENs
YXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5z
UGVybWlzc2lvblJlcXVlc3QgICAgICAgIFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5z
UGVybWlzc2lvblJlcXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0SW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdENsYXNzICAgV2ViS2l0SW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIFdlYktp
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRlOworCitz
dHJ1Y3QgX1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Qg
eworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktp
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RDbGFzcyB7CisgICAg
R09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVk
MCkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZv
aWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkMykgKHZvaWQpOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2luc3RhbGxfbWlz
c2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZSAgICAgICAgKHZv
aWQpOworCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKK3dlYmtpdF9pbnN0YWxsX21pc3Npbmdf
bWVkaWFfcGx1Z2luc19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X2Rlc2NyaXB0aW9uIChXZWJLaXRJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KTsKKwor
R19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1
ZXN0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzdlM2JjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRp
YVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaApAQCAtMCwwICsxLDMxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGVfaAorI2RlZmluZSBXZWJL
aXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCisK
KyNpbmNsdWRlICJJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Lmgi
CisjaW5jbHVkZSAiV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVx
dWVzdC5oIgorI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKworI2lmIEVOQUJMRShWSURFTykK
K1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QqIHdlYmtp
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RDcmVhdGUoV2ViS2l0
OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Jik7CisjZW5kaWYK
KworI2VuZGlmIC8vIFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3RQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmNwcAppbmRleCA0NGUwZTA4Li4yZGY0NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Tm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0zNSw2ICszNSwxMSBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogICogV2ViS2l0Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgcmVwcmVzZW50
cyBhIHJlcXVlc3QgZm9yCiAgKiBwZXJtaXNzaW9uIHRvIGRlY2lkZSB3aGV0aGVyIFdlYktpdCBz
aG91bGQgcHJvdmlkZSB0aGUgdXNlciB3aXRoCiAgKiBub3RpZmljYXRpb25zIHRocm91Z2ggdGhl
IFdlYiBOb3RpZmljYXRpb24gQVBJLgorICoKKyAqIFdoZW4gYSBXZWJLaXROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdCBpcyBub3QgaGFuZGxlZCBieSB0aGUgdXNlciwKKyAqIGl0IGlzIGRl
bmllZCBieSBkZWZhdWx0LgorICoKKyAqIFNpbmNlOiAyLjgKICAqLwogCiBzdGF0aWMgdm9pZCB3
ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KFdlYktpdFBlcm1pc3Npb25S
ZXF1ZXN0SWZhY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcApp
bmRleCAwNWIyZTY0Li4yNTAzOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QuY3BwCkBAIC0zNiw2ICszNiw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgKiBw
ZXJtaXNzaW9uIHRvIGRlY2lkZSB3aGV0aGVyIFdlYktpdCBzaG91bGQgYmUgYWxsb3dlZCB0byBh
Y2Nlc3MgdGhlIHVzZXIncwogICogYXVkaW8gYW5kIHZpZGVvIHNvdXJjZSBkZXZpY2VzIHdoZW4g
cmVxdWVzdGVkIHRocm91Z2h0IHRoZSBnZXRVc2VyTWVkaWEgQVBJLgogICoKKyAqIFdoZW4gYSBX
ZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCBpcyBub3QgaGFuZGxlZCBieSB0aGUgdXNl
ciwKKyAqIGl0IGlzIGRlbmllZCBieSBkZWZhdWx0LgorICoKICAqIFNpbmNlOiAyLjgKICAqLwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
Y3BwCmluZGV4IGViODRiNjEuLjAzMjI1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5j
bHVkZSAiV2ViS2l0Rm9ybUNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdEZ1bGxzY3JlZW5DbGll
bnQuaCIKICNpbmNsdWRlICJXZWJLaXRIaXRUZXN0UmVzdWx0UHJpdmF0ZS5oIgorI2luY2x1ZGUg
IldlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0SmF2YXNjcmlwdFJlc3VsdFByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXRNYXJzaGFsLmgiCkBAIC0x
MzUxLDkgKzEzNTIsMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQo
V2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICogcmVxdWVzdCBoYXMgbm90
IGJlZW4gaGFuZGxlZCwgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZW55KCkKICAgICAgKiB3
aWxsIGJlIHRoZSBkZWZhdWx0IGFjdGlvbi4KICAgICAgKgotICAgICAqIEJ5IGRlZmF1bHQsIGlm
IHRoZSBzaWduYWwgaXMgbm90IGhhbmRsZWQsCi0gICAgICogd2Via2l0X3Blcm1pc3Npb25fcmVx
dWVzdF9kZW55KCkgd2lsbCBiZSBjYWxsZWQgb3ZlciB0aGUKLSAgICAgKiAjV2ViS2l0UGVybWlz
c2lvblJlcXVlc3QuCisgICAgICogSWYgdGhlIHNpZ25hbCBpcyBub3QgaGFuZGxlZCwgdGhlIEBy
ZXF1ZXN0IHdpbGwgYmUgY29tcGxldGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgKiBieSB0aGUgc3Bl
Y2lmaWMgI1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0IHRoYXQgY291bGQgYWxsb3cgb3IgZGVueSBp
dC4gQ2hlY2sgdGhlCisgICAgICogZG9jdW1lbnRhdGlvbiBvZiBjbGFzc2VzIGltcGxlbWVudGlu
ZyAjV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgaW50ZXJmYWNlIHRvIGtub3cKKyAgICAgKiB0aGVp
ciBkZWZhdWx0IGFjdGlvbi4KICAgICAgKgogICAgICAqIFJldHVybnM6ICVUUlVFIHRvIHN0b3Ag
b3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZlbnQuCiAgICAgICog
ICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgpAQCAtMjE0NSw2ICsyMTQ3
LDE2IEBAIHZvaWQgd2Via2l0V2ViVmlld1NlbGVjdGlvbkRpZENoYW5nZShXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogICAgIHdlYmtpdEVkaXRvclN0YXRlQ2hhbmdlZCh3ZWJWaWV3LT5wcml2LT5l
ZGl0b3JTdGF0ZS5nZXQoKSwgZ2V0UGFnZSh3ZWJWaWV3KS0+ZWRpdG9yU3RhdGUoKSk7CiB9CiAK
K3ZvaWQgd2Via2l0V2ViVmlld1JlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25S
ZXF1ZXN0JiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShWSURFTykKKyAgICBHUmVmUHRyPFdlYktp
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q+IGluc3RhbGxNZWRp
YVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKHJlcXVlc3QpKTsKKyAgICB3ZWJr
aXRXZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KHdlYlZpZXcsIFdFQktJVF9QRVJNSVNTSU9O
X1JFUVVFU1QoaW5zdGFsbE1lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmdldCgpKSk7Cisj
ZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKIC8qKgogICogd2Vi
a2l0X3dlYl92aWV3X25ldzoKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAppbmRleCBhNzg4NjUzLi5lY2U0YmVk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIFdlYktpdFdlYlZp
ZXdQcml2YXRlX2gKICNkZWZpbmUgV2ViS2l0V2ViVmlld1ByaXZhdGVfaAogCisjaW5jbHVkZSAi
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUg
IldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKICNpbmNsdWRlICJXZWJIaXRUZXN0UmVzdWx0Lmgi
CiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKQEAgLTYzLDUgKzY0LDYgQEAgYm9vbCB3ZWJraXRXZWJW
aWV3RW1pdFJ1bkNvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiwgV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdCoKIHZvaWQgd2Via2l0V2ViVmlld1dlYlByb2Nlc3NDcmFzaGVkKFdlYktpdFdlYlZp
ZXcqKTsKIHZvaWQgd2Via2l0V2ViVmlld0lzUGxheWluZ0F1ZGlvQ2hhbmdlZChXZWJLaXRXZWJW
aWV3Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdTZWxlY3Rpb25EaWRDaGFuZ2UoV2ViS2l0V2ViVmll
dyopOwordm9pZCB3ZWJraXRXZWJWaWV3UmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5z
KFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6Okluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlz
c2lvblJlcXVlc3QmKTsKIAogI2VuZGlmIC8vIFdlYktpdFdlYlZpZXdQcml2YXRlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00
LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggMTg2NGVmZC4uMzI3NDk5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQu
MC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTU5Myw2ICs1OTMsMjUgQEAgd2Via2l0
X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZQogPC9TRUNUSU9OPgogCiA8
U0VDVElPTj4KKzxGSUxFPldlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lv
blJlcXVlc3Q8L0ZJTEU+CitXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Np
b25SZXF1ZXN0Cit3ZWJraXRfaW5zdGFsbF9taXNzaW5nX21lZGlhX3BsdWdpbnNfcGVybWlzc2lv
bl9yZXF1ZXN0X2dldF9kZXNjcmlwdGlvbgorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktp
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3RDbGFzcworV0VCS0lU
X1RZUEVfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUCitX
RUJLSVRfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUCitX
RUJLSVRfSVNfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNU
CitXRUJLSVRfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNU
X0NMQVNTCitXRUJLSVRfSVNfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lP
Tl9SRVFVRVNUX0NMQVNTCitXRUJLSVRfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVS
TUlTU0lPTl9SRVFVRVNUX0dFVF9DTEFTUworCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUKK3dlYmtp
dF9pbnN0YWxsX21pc3NpbmdfbWVkaWFfcGx1Z2luc19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X3R5
cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXROYXZpZ2F0aW9uQWN0aW9u
PC9GSUxFPgogV2ViS2l0TmF2aWdhdGlvbkFjdGlvbgogd2Via2l0X25hdmlnYXRpb25fYWN0aW9u
X2NvcHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAudHlwZXMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstNC4wLnR5cGVzCmluZGV4IDljZGMwOTguLmYyMjc0OGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAu
dHlwZXMKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLTQuMC50eXBlcwpAQCAtMzEsMyArMzEsNCBAQCB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFn
ZXJfZ2V0X3R5cGUKIHdlYmtpdF93ZWJfaGl0X3Rlc3RfcmVzdWx0X2dldF90eXBlCiB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3R5cGUKIHdlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X3R5
cGUKK3dlYmtpdF9pbnN0YWxsX21pc3NpbmdfbWVkaWFfcGx1Z2luc19wZXJtaXNzaW9uX3JlcXVl
c3RfZ2V0X3R5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCmluZGV4IDAzZWVjMjcuLjc1NmFhMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtMjMsNiArMjMsNyBAQAogICAgIDx4aTppbmNsdWRlIGhy
ZWY9InhtbC9XZWJLaXREb3dubG9hZC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
V2ViS2l0UGVybWlzc2lvblJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1s
L1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QueG1sIi8+CisgICAgPHhpOmluY2x1
ZGUgaHJlZj0ieG1sL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdE5hdmlnYXRpb25B
Y3Rpb24ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRQ
b2xpY3lEZWNpc2lvbi54bWwiLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dl
YmtpdDIuaAppbmRleCBjZWE0ZWE4Li43ZTA4YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dEhpdFRlc3RSZXN1bHQuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEluc3RhbGxNaXNzaW5n
TWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dEphdmFzY3JpcHRSZXN1bHQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdE1pbWVJbmZvLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXROYXZpZ2F0aW9uQWN0aW9uLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBmMDI2OWViLi42Nzg1MzYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTM0LDEwICszNCw2IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9FZGl0b3JDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCi0jaWYg
VVNFKEdTVFJFQU1FUikKLSNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHU3RyZWFtZXIuaD4K
LSNlbmRpZgotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiUGx1Z2luQ29tcGxleFRl
eHRJbnB1dFN0YXRlLmgiCiAKQEAgLTc5LDYgKzc1LDEwIEBAIGNsYXNzIFdlYkNvbG9yUGlja2Vy
OwogY2xhc3MgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudDsKICNlbmRpZgogCisjaWYg
VVNFKEdTVFJFQU1FUikKK2NsYXNzIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lv
blJlcXVlc3Q7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogc3RydWN0IENvbG9yU3Bh
Y2VEYXRhOwogI2VuZGlmCkBAIC0zNDEsNyArMzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkZXJlZlZpZXcoKSA9IDA7CiAKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHZpcnR1YWwg
R1VuaXF1ZVB0cjxHc3RJbnN0YWxsUGx1Z2luc0NvbnRleHQ+IGNyZWF0ZUdzdEluc3RhbGxQbHVn
aW5zQ29udGV4dCgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZGVjaWNlUG9saWN5Rm9ySW5zdGFs
bE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdChJbnN0YWxsTWlzc2luZ01lZGlh
UGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0JikgPSAwOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZTJlYzAyMy4uMWJlODNiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTQ4MSw3ICsxNDgxLDcgQEAg
cHJpdmF0ZToKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdm9pZCBtZWRpYURvY3VtZW50TmF0dXJh
bFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICNpZiBVU0UoR1NUUkVBTUVS
KQotICAgIHZvaWQgcmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmlu
ZyYgZGV0YWlscyk7CisgICAgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMo
Y29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKTsKICNlbmRp
ZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IGVkMDdjOTMuLjg3ZWI5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDUzLDYgKzQ1Myw2
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRml4ZWRMYXlvdXRTaXplRGlkQ2hh
bmdlKFdlYkNvcmU6OkludFNpemUgZml4ZWRMYXlvdXRTaXplKQogCiAjaWYgRU5BQkxFKFZJREVP
KSAmJiBVU0UoR1NUUkVBTUVSKQotICAgIFJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lu
cyhTdHJpbmcgZGV0YWlscykKKyAgICBSZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMo
U3RyaW5nIGRldGFpbHMsIFN0cmluZyBkZXNjcmlwdGlvbikKICNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaAppbmRleCA1ZTNlOWEwLi5kMTFhMWZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaApAQCAtOTgsNyArOTgs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZXJlZlZpZXcoKSBvdmVycmlkZSBmaW5h
bCB7IH0KIAogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgdmlydHVhbCBHVW5pcXVlUHRyPEdzdElu
c3RhbGxQbHVnaW5zQ29udGV4dD4gY3JlYXRlR3N0SW5zdGFsbFBsdWdpbnNDb250ZXh0KCkgb3Zl
cnJpZGUgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVjaWNl
UG9saWN5Rm9ySW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdChJbnN0
YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Jikgb3ZlcnJpZGUgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH07CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9nc3RyZWFtZXIvSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3N0cmVhbWVy
L0luc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExZDc1OWUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3N0cmVhbWVyL0luc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaCIK
KworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJXZWJQYWdl
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitJbnN0YWxsTWlzc2luZ01lZGlh
UGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYgcGFnZSwgIGNvbnN0IFN0cmluZyYgZGV0YWlscywg
Y29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKKyAgICA6IG1fcGFnZSgmcGFnZSkKKyAgICAsIG1f
ZGV0YWlscyhkZXRhaWxzKQorICAgICwgbV9kZXNjcmlwdGlvbihkZXNjcmlwdGlvbikKK3sKK30K
KworSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDo6fkluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QoKQoreworfQorCit2b2lkIEluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q6OmFsbG93KEdVbmlxdWVQdHI8
R3N0SW5zdGFsbFBsdWdpbnNDb250ZXh0PiYmIGNvbnRleHQpCit7CisgICAgaWYgKCFtX3BhZ2Ut
PmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1N0cmluZyBkZXRhaWwgPSBtX2Rl
dGFpbHMudXRmOCgpOworICAgIGNvbnN0IGNoYXIqIGRldGFpbEFycmF5WzJdID0geyBkZXRhaWwu
ZGF0YSgpLCBudWxscHRyIH07CisgICAgcmVmKCk7CisgICAgR3N0SW5zdGFsbFBsdWdpbnNSZXR1
cm4gcmVzdWx0ID0gZ3N0X2luc3RhbGxfcGx1Z2luc19hc3luYyhkZXRhaWxBcnJheSwgY29udGV4
dC5nZXQoKSwgW10oR3N0SW5zdGFsbFBsdWdpbnNSZXR1cm4gcmVzdWx0LCBncG9pbnRlciB1c2Vy
RGF0YSkgeworICAgICAgICBSZWZQdHI8SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNz
aW9uUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0UmVmKHN0YXRpY19jYXN0PEluc3RhbGxNaXNzaW5n
TWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QqPih1c2VyRGF0YSkpOworICAgICAgICByZXF1
ZXN0LT5kaWRFbmRSZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KHJlc3VsdCkpOworICAgICAgICB9LCB0aGlzKTsKKworICAgIGlmIChyZXN1bHQg
IT0gR1NUX0lOU1RBTExfUExVR0lOU19TVEFSVEVEX09LKSB7CisgICAgICAgIC8vIElmIHRoZSBp
bnN0YWxsZXIgZGlkbid0IHN0YXJ0LCB0aGUgY2FsbGJhY2sgd2lsbCBub3QgYmUgY2FsbGVkLCBz
byByZW1vdmUgdGhlIHJlZiBtYW51YWxseS4KKyAgICAgICAgZGVyZWYoKTsKKyAgICAgICAgZGlk
RW5kUmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKHN0YXRpY19jYXN0PHVpbnQzMl90
PihyZXN1bHQpKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJNaXNzaW5nIEdTdHJlYW1lciBQbHVn
aW46ICVzXG4iLCBkZXRhaWwuZGF0YSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zdGFsbE1pc3Np
bmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDo6ZGVueSgpCit7CisgICAgZGlkRW5kUmVx
dWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKHN0YXRpY19jYXN0PHVpbnQzMl90PihHU1Rf
SU5TVEFMTF9QTFVHSU5TX1VTRVJfQUJPUlQpKTsKK30KKwordm9pZCBJbnN0YWxsTWlzc2luZ01l
ZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpkaWRFbmRSZXF1ZXN0SW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnModWludDMyX3QgcmVzdWx0KQoreworICAgIGlmICghbV9wYWdlLT5pc1ZhbGlk
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkRW5kUmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKHJlc3VsdCkpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNF
KEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9nc3RyZWFt
ZXIvSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM4
MTU4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9nc3RyZWFt
ZXIvSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oCkBAIC0wLDAg
KzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0X2gK
KyNkZWZpbmUgSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdF9oCisK
KyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSA8V2ViQ29yZS9H
VW5pcXVlUHRyR1N0cmVhbWVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0PiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0
PiBjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KHBhZ2UsIGRldGFp
bHMsIGRlc2NyaXB0aW9uKSk7CisgICAgfQorICAgIH5JbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lu
c1Blcm1pc3Npb25SZXF1ZXN0KCk7CisKKyAgICB2b2lkIGFsbG93KEdVbmlxdWVQdHI8R3N0SW5z
dGFsbFBsdWdpbnNDb250ZXh0PiYmID0gbnVsbHB0cik7CisgICAgdm9pZCBkZW55KCk7CisKKyAg
ICBXZWJQYWdlUHJveHkmIHBhZ2UoKSBjb25zdCB7IHJldHVybiAqbV9wYWdlOyB9CisgICAgY29u
c3QgU3RyaW5nJiBkZXRhaWxzKCkgY29uc3QgeyByZXR1cm4gbV9kZXRhaWxzOyB9CisgICAgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRpb247IH0K
KworcHJpdmF0ZToKKyAgICBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1
ZXN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbik7CisKKyAgICB2b2lkIGRpZEVuZFJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlh
UGx1Z2lucyh1aW50MzJfdCByZXN1bHQpOworCisgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gbV9w
YWdlOworICAgIFN0cmluZyBtX2RldGFpbHM7CisgICAgU3RyaW5nIG1fZGVzY3JpcHRpb247Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYg
VVNFKEdTVFJFQU1FUikKKyNlbmRpZiAvLyBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9nc3Ry
ZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcAppbmRleCAzMDEzNDgyLi5hOTdk
Y2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBh
Z2VQcm94eUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2dzdHJl
YW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCkBAIC0yNywzMCArMjcsMTggQEAKICNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1F
UikKLQorI2luY2x1ZGUgIkluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVl
c3QuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCi0jaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2Vz
LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdElu
c3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscykKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5n
JiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQogewotICAgIENTdHJpbmcgZGV0
YWlsID0gZGV0YWlscy51dGY4KCk7Ci0gICAgY29uc3QgY2hhciogZGV0YWlsQXJyYXlbMl0gPSB7
IGRldGFpbC5kYXRhKCksIG51bGxwdHIgfTsKLSAgICByZWYoKTsKLSAgICBHVW5pcXVlUHRyPEdz
dEluc3RhbGxQbHVnaW5zQ29udGV4dD4gY29udGV4dCA9IG1fcGFnZUNsaWVudC5jcmVhdGVHc3RJ
bnN0YWxsUGx1Z2luc0NvbnRleHQoKTsKLSAgICBHc3RJbnN0YWxsUGx1Z2luc1JldHVybiByZXN1
bHQgPSBnc3RfaW5zdGFsbF9wbHVnaW5zX2FzeW5jKGRldGFpbEFycmF5LCBjb250ZXh0LmdldCgp
LCBbXShHc3RJbnN0YWxsUGx1Z2luc1JldHVybiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7
Ci0gICAgICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHBhZ2UgPSBhZG9wdFJlZihzdGF0aWNfY2Fz
dDxXZWJQYWdlUHJveHkqPih1c2VyRGF0YSkpOwotICAgICAgICBpZiAocGFnZS0+aXNWYWxpZCgp
KQotICAgICAgICAgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRW5kUmVxdWVz
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKHN0YXRpY19jYXN0PHVpbnQzMl90PihyZXN1bHQp
KSk7Ci0gICAgfSwgdGhpcyk7CisgICAgUmVmUHRyPEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5z
UGVybWlzc2lvblJlcXVlc3Q+IHJlcXVlc3QgPSBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoKnRoaXMsIGRldGFpbHMsIGRlc2NyaXB0aW9uKTsKKyAg
ICBpZiAobV9wYWdlQ2xpZW50LmRlY2ljZVBvbGljeUZvckluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3QoKnJlcXVlc3QpKQorICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAocmVzdWx0ICE9IEdTVF9JTlNUQUxMX1BMVUdJTlNfU1RBUlRFRF9PSykgewotICAgICAgICAv
LyBJZiB0aGUgaW5zdGFsbGVyIGRpZG4ndCBzdGFydCwgdGhlIGNhbGxiYWNrIHdpbGwgbm90IGJl
IGNhbGxlZCwgc28gcmVtb3ZlIHRoZSByZWYgbWFudWFsbHkuCi0gICAgICAgIGRlcmVmKCk7Ci0g
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEVuZFJlcXVlc3RJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2lucyhzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVzdWx0KSkpOwotICAgICAgICBX
VEZMb2dBbHdheXMoIk1pc3NpbmcgR1N0cmVhbWVyIFBsdWdpbjogJXNcbiIsIGRldGFpbC5kYXRh
KCkpOwotICAgIH0KKyAgICByZXF1ZXN0LT5kZW55KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGVmN2ZhNTEuLjdkZDZhMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTExNzAsOSArMTE3MCw5IEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjptZWRpYURvY3VtZW50TmF0dXJhbFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIG5lCiB9CiAKICNpZiBVU0UoR1NUUkVBTUVSKQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OnJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMs
IFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNr
JiBjYWxsYmFjaykKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxs
YmFjayYgY2FsbGJhY2spCiB7Ci0gICAgbV9wYWdlLT5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRp
YVBsdWdpbnMoZGV0YWlscywgY2FsbGJhY2spOworICAgIG1fcGFnZS0+cmVxdWVzdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zKGRldGFpbHMsIGRlc2NyaXB0aW9uLCBjYWxsYmFjayk7CiB9CiAj
ZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCAy
NzAyMmQyLi5hZjBjOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTMyNyw3ICszMjcsNyBA
QCBwcml2YXRlOgogI2lmIEVOQUJMRShWSURFTykKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFEb2N1
bWVudE5hdHVyYWxTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7
CiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEluc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVxdWVz
dEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhjb25zdCBTdHJpbmcmIC8qZGV0
YWlscyovLCBjb25zdCBTdHJpbmcmIC8qZGVzY3JpcHRpb24qLywgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smKSBvdmVycmlkZTsKICNlbmRp
ZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IDNjYjYyNjYuLjUzYjJhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTA5LDcgKzkwOSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
VklERU8pCiAgICAgdm9pZCBtZWRpYURvY3VtZW50TmF0dXJhbFNpemVDaGFuZ2VkKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKTsKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHZvaWQgcmVxdWVzdElu
c3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smKTsKKyAgICB2
b2lkIHJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFp
bHMsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVxdWVz
dEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJik7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3N0cmVhbWVyL1dlYlBh
Z2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2dzdHJl
YW1lci9XZWJQYWdlR1N0cmVhbWVyLmNwcAppbmRleCBmNWE0NWZmLi41MDU0NWIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3N0cmVhbWVyL1dlYlBhZ2VH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9nc3Ry
ZWFtZXIvV2ViUGFnZUdTdHJlYW1lci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXZvaWQgV2ViUGFnZTo6cmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgV2ViQ29yZTo6TWVkaWFQbGF5ZXJSZXF1ZXN0SW5z
dGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpyZXF1
ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25z
dCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxs
TWlzc2luZ1BsdWdpbnNDYWxsYmFjayYgY2FsbGJhY2spCiB7CiAgICAgaWYgKG1faW5zdGFsbE1l
ZGlhUGx1Z2luc0NhbGxiYWNrKSB7CiAgICAgICAgIGNhbGxiYWNrLmNvbXBsZXRlKEdTVF9JTlNU
QUxMX1BMVUdJTlNfSU5TVEFMTF9JTl9QUk9HUkVTUyk7CkBAIC00Miw3ICs0Miw3IEBAIHZvaWQg
V2ViUGFnZTo6cmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmluZyYg
ZGV0YWlscywgV2ViQ29yZTo6CiAgICAgfQogCiAgICAgbV9pbnN0YWxsTWVkaWFQbHVnaW5zQ2Fs
bGJhY2sgPSAmY2FsbGJhY2s7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1
ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoZGV0YWlscykpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGRldGFp
bHMsIGRlc2NyaXB0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZGlkRW5kUmVxdWVzdEluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zKHVpbnQzMl90IHJlc3VsdCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0YzZkZDBkLi41Y2EzZDVjIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjMgQEAKKzIwMTUtMDgtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIERvIG5vdCBhdXRvbWF0aWNhbGx5IHNob3cgUGFj
a2FnZUtpdCBjb2RlYyBpbnN0YWxsYXRpb24gbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1OTczCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGFuZGxlIHRoZSBtaXNzaW5nIG1lZGlh
IHBsdWdpbnMgaW5zdGFsbGF0aW9uIHBlcm1pc3Npb24gcmVxdWVzdAorICAgICAgICBpbiBNaW5p
QnJvd3NlciBhbmQgYWRkIGEgdGVzdCBjYXNlIGZvciB0aGUgbmV3IEFQSS4KKworICAgICAgICAq
IE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAgICh3ZWJWaWV3RGVjaWRl
UGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwOgorICAgICAgICAocGVybWlzc2lvblJlcXVlc3RD
YWxsYmFjayk6CisgICAgICAgICh0ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3QpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHA6CisgICAgICAgIChtZXRob2RDYWxs
Q2FsbGJhY2spOgorCiAyMDE1LTA4LTAyICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEludmVzdGlnYXRlIEhhc2hUYWJsZTo6SGFzaFRhYmxlKGNvbnN0
IEhhc2hUYWJsZSYpIGFuZCBIYXNoVGFibGU6Om9wZXJhdG9yPShjb25zdCBIYXNoVGFibGUmKSBw
ZXJmb3JtYW5jZSBmb3IgaGFzaC1iYXNlZCBzdGF0aWMgYW5hbHlzZXMKZGlmZiAtLWdpdCBhL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9n
dGsvQnJvd3NlcldpbmRvdy5jCmluZGV4IDlhNDkwMmUuLjQ1ZGI2ODAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwpAQCAtNDU0LDYgKzQ1NCwxMCBAQCBzdGF0aWMgZ2Jvb2xl
YW4gd2ViVmlld0RlY2lkZVBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdFdlYlZpZXcgKndlYlZpZXcs
IFdlYktpdFBlcgogICAgICAgICAgICAgICAgIGRpYWxvZ19tZXNzYWdlID0gImF1ZGlvIjsKICAg
ICAgICAgfSBlbHNlIGlmIChpc19mb3JfdmlkZW9fZGV2aWNlKQogICAgICAgICAgICAgZGlhbG9n
X21lc3NhZ2UgPSAidmlkZW8iOworICAgIH0gZWxzZSBpZiAoV0VCS0lUX0lTX0lOU1RBTExfTUlT
U0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkgeworICAgICAg
ICBkaWFsb2dfdGl0bGUgPSAiTWVkaWEgcGx1Z2luIG1pc3NpbmcgcmVxdWVzdCI7CisgICAgICAg
IGRpYWxvZ19tZXNzYWdlX2Zvcm1hdCA9ICJUaGUgbWVkaWEgYmFja2VuZCB3YXMgdW5hYmxlIHRv
IGZpbmQgYSBwbHVnaW4gdG8gcGxheSB0aGUgcmVxdWVzdGVkIG1lZGlhOlxuJXMuXG5BbGxvdyB0
byBzZWFyY2ggYW5kIGluc3RhbGwgdGhlIG1pc3NpbmcgcGx1Z2luPyI7CisgICAgICAgIGRpYWxv
Z19tZXNzYWdlID0gd2Via2l0X2luc3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Np
b25fcmVxdWVzdF9nZXRfZGVzY3JpcHRpb24oV0VCS0lUX0lOU1RBTExfTUlTU0lOR19NRURJQV9Q
TFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CiAgICAgfSBlbHNlCiAgICAgICAg
IHJldHVybiBGQUxTRTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL0NNYWtlTGlzdHMudHh0CmluZGV4IDFiYmY1MmQuLjc0ZDUyNTAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKQEAg
LTI2LDYgKzI2LDcgQEAgaW5jbHVkZV9kaXJlY3RvcmllcygKIGluY2x1ZGVfZGlyZWN0b3JpZXMo
U1lTVEVNCiAgICAgJHtBVFNQSV9JTkNMVURFX0RJUlN9CiAgICAgJHtHTElCX0lOQ0xVREVfRElS
U30KKyAgICAke0dTVFJFQU1FUl9JTkNMVURFX0RJUlN9CiAgICAgJHtHVEszX0lOQ0xVREVfRElS
U30KICAgICAke0dUS19VTklYX1BSSU5UX0lOQ0xVREVfRElSU30KICAgICAke0xJQlNPVVBfSU5D
TFVERV9ESVJTfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RXZWJFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKaW5kZXggODJkM2VjMy4uODI3ODAxMCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJFeHRl
bnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFdlYkV4dGVuc2lvbnMuY3BwCkBAIC0xODAsNiArMTgwLDM2IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJFeHRlbnNpb25Jc29sYXRlZFdvcmxkKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcsIHNjcmlw
dERpYWxvZ0lEKTsKIH0KIAorc3RhdGljIGdib29sZWFuIHBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJh
Y2soV2ViS2l0V2ViVmlldyosIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0LCBXZWJW
aWV3VGVzdCogdGVzdCkKK3sKKyAgICBpZiAoIVdFQktJVF9JU19JTlNUQUxMX01JU1NJTkdfTUVE
SUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpCisgICAgICAgIHJldHVybiBG
QUxTRTsKKworICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMo
R19PQkpFQ1QocmVxdWVzdCkpOworICAgIFdlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5z
UGVybWlzc2lvblJlcXVlc3QqIG1pc3NpbmdQbHVnaW5zUmVxdWVzdCA9IFdFQktJVF9JTlNUQUxM
X01JU1NJTkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCk7CisgICAg
Z19hc3NlcnQod2Via2l0X2luc3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25f
cmVxdWVzdF9nZXRfZGVzY3JpcHRpb24obWlzc2luZ1BsdWdpbnNSZXF1ZXN0KSk7CisgICAgd2Vi
a2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZW55KHJlcXVlc3QpOworICAgIHRlc3QtPnF1aXRNYWlu
TG9vcCgpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zUGVybWlz
c2lvblJlcXVlc3QoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgR1Vu
aXF1ZVB0cjxjaGFyPiBleHRlbnNpb25CdXNOYW1lKGdfc3RyZHVwX3ByaW50Zigib3JnLndlYmtp
dC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCV1IiwgVGVzdDo6c193ZWJFeHRlbnNpb25JRCkpOworICAg
IEdSZWZQdHI8R0RCdXNQcm94eT4gcHJveHkgPSBhZG9wdEdSZWYoYnVzLT5jcmVhdGVQcm94eShl
eHRlbnNpb25CdXNOYW1lLmdldCgpLAorICAgICAgICAiL29yZy93ZWJraXQvZ3RrL1dlYkV4dGVu
c2lvblRlc3QiLCAib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIsIHRlc3QtPm1fbWFp
bkxvb3ApKTsKKyAgICBHUmVmUHRyPEdWYXJpYW50PiByZXN1bHQgPSBhZG9wdEdSZWYoZ19kYnVz
X3Byb3h5X2NhbGxfc3luYyhwcm94eS5nZXQoKSwgIlJlbW92ZUFWUGx1Z2luc0Zyb21HU1RSZWdp
c3RyeSIsCisgICAgICAgIG51bGxwdHIsIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsIC0xLCBudWxs
cHRyLCBudWxscHRyKSk7CisKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBw
ZWQoKTsKKworICAgIGd1bG9uZyBwZXJtaXNzaW9uUmVxdWVzdFNpZ25hbElEID0gZ19zaWduYWxf
Y29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcsICJwZXJtaXNzaW9uLXJlcXVlc3QiLCBHX0NBTExCQUNL
KHBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2spLCB0ZXN0KTsKKyAgICAvLyBGSVhNRTogdGhlIGJh
c2UgVVJJIG5lZWRzIHRvIGZpbmlzaCB3aXRoIC8gdG8gd29yaywgdGhhdCBzaG91bGRuJ3QgaGFw
cGVuLgorICAgIEdVbmlxdWVQdHI8Y2hhcj4gYmFzZVVSSShnX3N0cmNvbmNhdCgiZmlsZTovLyIs
IFRlc3Q6OmdldFJlc291cmNlc0RpcihUZXN0OjpXZWJLaXQyUmVzb3VyY2VzKS5kYXRhKCksICIv
IiwgbnVsbHB0cikpOworICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT48dmlkZW8gc3Jj
PVwidGVzdC5tcDRcIiBhdXRvcGxheT48L3ZpZGVvPjwvYm9keT48L2h0bWw+IiwgYmFzZVVSSS5n
ZXQoKSk7CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfc2ln
bmFsX2hhbmRsZXJfZGlzY29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcsIHBlcm1pc3Npb25SZXF1ZXN0
U2lnbmFsSUQpOworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgYnVzID0gbmV3IFdlYktp
dFRlc3RCdXMoKTsKQEAgLTE5MSw2ICsyMjEsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgV2Vi
Vmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ3ZWItcHJvY2Vzcy1jcmFzaGVkIiwgdGVz
dFdlYktpdFdlYlZpZXdQcm9jZXNzQ3Jhc2hlZCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2Vi
S2l0V2ViRXh0ZW5zaW9uIiwgIndpbmRvdy1vYmplY3QtY2xlYXJlZCIsIHRlc3RXZWJFeHRlbnNp
b25XaW5kb3dPYmplY3RDbGVhcmVkKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJF
eHRlbnNpb24iLCAiaXNvbGF0ZWQtd29ybGQiLCB0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0ZWRXb3Js
ZCk7CisgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJpbnN0YWxsLW1pc3Np
bmctcGx1Z2lucy1wZXJtaXNzaW9uLXJlcXVlc3QiLCB0ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5z
UGVybWlzc2lvblJlcXVlc3QpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNw
cAppbmRleCA1MWJkNjM3Li4zOGM3ZDk0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCkBAIC0yMiw2ICsy
Miw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxnaW8vZ2lvLmg+Cisj
aW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmlu
Zy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0LXdlYi1leHRlbnNpb24uaD4KQEAgLTUyLDYg
KzUzLDggQEAgc3RhdGljIGNvbnN0IGNoYXIgaW50cm9zcGVjdGlvblhNTFtdID0KICAgICAiICA8
bWV0aG9kIG5hbWU9J0dldFByb2Nlc3NJZGVudGlmaWVyJz4iCiAgICAgIiAgIDxhcmcgdHlwZT0n
dScgbmFtZT0naWRlbnRpZmllcicgZGlyZWN0aW9uPSdvdXQnLz4iCiAgICAgIiAgPC9tZXRob2Q+
IgorICAgICIgIDxtZXRob2QgbmFtZT0nUmVtb3ZlQVZQbHVnaW5zRnJvbUdTVFJlZ2lzdHJ5Jz4i
CisgICAgIiAgPC9tZXRob2Q+IgogICAgICIgIDxzaWduYWwgbmFtZT0nRG9jdW1lbnRMb2FkZWQn
Lz4iCiAgICAgIiAgPHNpZ25hbCBuYW1lPSdVUklDaGFuZ2VkJz4iCiAgICAgIiAgIDxhcmcgdHlw
ZT0ncycgbmFtZT0ndXJpJyBkaXJlY3Rpb249J291dCcvPiIKQEAgLTMwMSw2ICszMDQsMTcgQEAg
c3RhdGljIHZvaWQgbWV0aG9kQ2FsbENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlv
biwgY29uc3QgY2hhciogc2VuZGVyLAogICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChtZXRob2RO
YW1lLCAiR2V0UHJvY2Vzc0lkZW50aWZpZXIiKSkgewogICAgICAgICBnX2RidXNfbWV0aG9kX2lu
dm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sCiAgICAgICAgICAgICBnX3ZhcmlhbnRf
bmV3KCIodSkiLCBzdGF0aWNfY2FzdDxndWludDMyPihnZXRDdXJyZW50UHJvY2Vzc0lEKCkpKSk7
CisgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUsICJSZW1vdmVBVlBsdWdpbnNG
cm9tR1NUUmVnaXN0cnkiKSkgeworICAgICAgICBnc3RfaW5pdChudWxscHRyLCBudWxscHRyKTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGF2UGx1Z2luc1tdID0geyAibGliYXYiLCAib214
IiwgInZhYXBpIiwgbnVsbHB0ciB9OworICAgICAgICBHc3RSZWdpc3RyeSogcmVnaXN0cnkgPSBn
c3RfcmVnaXN0cnlfZ2V0KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGF2UGx1Z2lu
c1tpXTsgKytpKSB7CisgICAgICAgICAgICBpZiAoR3N0UGx1Z2luKiBwbHVnaW4gPSBnc3RfcmVn
aXN0cnlfZmluZF9wbHVnaW4ocmVnaXN0cnksIGF2UGx1Z2luc1tpXSkpIHsKKyAgICAgICAgICAg
ICAgICBnc3RfcmVnaXN0cnlfcmVtb3ZlX3BsdWdpbihyZWdpc3RyeSwgcGx1Z2luKTsKKyAgICAg
ICAgICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKHBsdWdpbik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZv
Y2F0aW9uLCBudWxscHRyKTsKICAgICB9CiB9CiAK
</data>
<flag name="review"
          id="283325"
          type_id="1"
          status="+"
          setter="pnormand"
    />
          </attachment>
      

    </bug>

</bugzilla>