<?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>68371</bug_id>
          
          <creation_ts>2011-09-19 10:34:05 -0700</creation_ts>
          <short_desc>[GTK][WEBKIT2] Add WebKitSettings GTK+ API.</short_desc>
          <delta_ts>2011-10-14 12:17: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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>67990</dependson>
          <blocked>68996</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nayan Kumar K">nayankk</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>469495</commentid>
    <comment_count>0</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-19 10:34:05 -0700</bug_when>
    <thetext>Add WebKitWebSettings GTK+ API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469498</commentid>
    <comment_count>1</comment_count>
      <attachid>107880</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-19 10:39:45 -0700</bug_when>
    <thetext>Created attachment 107880
WebKitWebSettings

First set of API&apos;s to set or get WebKit preferences via WebKitWebSettings object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469511</commentid>
    <comment_count>2</comment_count>
      <attachid>107880</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-09-19 10:49:40 -0700</bug_when>
    <thetext>Comment on attachment 107880
WebKitWebSettings

This is missing documentation for all properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469935</commentid>
    <comment_count>3</comment_count>
      <attachid>107971</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-20 00:04:52 -0700</bug_when>
    <thetext>Created attachment 107971
WebKitWebSetting GTK+ API

What should be the &apos;Since&apos; field for these API&apos;s? I have assumed that these API&apos;s will be the part of webkitgtk-2.0!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469936</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-20 00:26:05 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=107971) [details]
&gt; WebKitWebSetting GTK+ API
&gt; 
&gt; What should be the &apos;Since&apos; field for these API&apos;s? I have assumed that these API&apos;s will be the part of webkitgtk-2.0!

It&apos;s a new library, I think we don&apos;t need to use Since: tags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469944</commentid>
    <comment_count>5</comment_count>
      <attachid>107971</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-20 01:05:10 -0700</bug_when>
    <thetext>Comment on attachment 107971
WebKitWebSetting GTK+ API

A few comments in general:

 - Use WebKit coding style for all private methods that are not autogenerated (_class_init and _init)
 - Use WebKit coding style for unit tests too
 - It would be nice to have getters and setters for all properties
 - Do we really need to translate nick and blurb of properties? martin?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470003</commentid>
    <comment_count>6</comment_count>
      <attachid>107990</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-20 05:54:32 -0700</bug_when>
    <thetext>Created attachment 107990
WebKitWebSettings GTK+ API

Resolved style issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470007</commentid>
    <comment_count>7</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-20 05:57:20 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 107971 [details])
&gt; A few comments in general:
&gt; 
&gt;  - Use WebKit coding style for all private methods that are not autogenerated (_class_init and _init)
Done
&gt;  - Use WebKit coding style for unit tests too
Done
&gt;  - It would be nice to have getters and setters for all properties
I will submit another patch with remaining properties (to match with the preferences exposed in WKPreferences.h), since the size of this patch is already ~35K.
&gt;  - Do we really need to translate nick and blurb of properties? martin?

Also, removed &apos;Since&apos; field from documentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470015</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-20 06:19:48 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt;  - It would be nice to have getters and setters for all properties
&gt; I will submit another patch with remaining properties (to match with the preferences exposed in WKPreferences.h), since the size of this patch is already ~35K.

I meant having webkit_web_settings_get_foo() and webkit_web_settings_set_foo() for the properties already added. Using g_object_get/set is convenient when getting/setting more than one property at the same time, but they are more inefficient and error prone (you can mispell the property name and it would still build).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470625</commentid>
    <comment_count>9</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-21 00:20:14 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; &gt;  - It would be nice to have getters and setters for all properties
&gt; &gt; I will submit another patch with remaining properties (to match with the preferences exposed in WKPreferences.h), since the size of this patch is already ~35K.
&gt; 
&gt; I meant having webkit_web_settings_get_foo() and webkit_web_settings_set_foo() for the properties already added. Using g_object_get/set is convenient when getting/setting more than one property at the same time, but they are more inefficient and error prone (you can mispell the property name and it would still build).

It would be something like this then,

void webkit_web_setting_set_scripts_enabled(gobject, value)
{
    WebKitWebSettings* webSettings = WEBKIT_WEB_SETTINGS(object);
    WebKitWebSettingsPrivate* priv = webSettings-&gt;priv;
    WKPreferencesSetJavaScriptEnabled(priv-&gt;preferences, (bool)g_value_get_boolean(value));
}

static void webkitWebSettingsSetProperty(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec)
{   ....
    switch(prop_id) {
    case PROP_ENABLE_SCRIPTS:
         webkit_web_setting_set_scripts_enabled(gobject, value);
         break;
    ....
}

This would expose many API&apos;s for get/set properties. Should that be fine?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470642</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-21 00:56:18 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; It would be something like this then,
&gt; 
&gt; void webkit_web_setting_set_scripts_enabled(gobject, value)
&gt; {
&gt;     WebKitWebSettings* webSettings = WEBKIT_WEB_SETTINGS(object);
&gt;     WebKitWebSettingsPrivate* priv = webSettings-&gt;priv;
&gt;     WKPreferencesSetJavaScriptEnabled(priv-&gt;preferences, (bool)g_value_get_boolean(value));
&gt; }
&gt; 
&gt; static void webkitWebSettingsSetProperty(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec)
&gt; {   ....
&gt;     switch(prop_id) {
&gt;     case PROP_ENABLE_SCRIPTS:
&gt;          webkit_web_setting_set_scripts_enabled(gobject, value);
&gt;          break;
&gt;     ....
&gt; }

No, it should be something like this:

void webkit_web_setting_set_enable_scripts(WebKitWebSettings* settings, gboolean enabled)
{
    g_return_if_fail(WEBKIT_IS_WEB_SETTINGS(settings));
    WebKitWebSettingsPrivate* priv = settings-&gt;priv;
    gboolean currentValue = WKPreferencesGetJavaScriptEnabled(priv-&gt;preferences);
    if (enabled == currentValue)
        return;

    WKPreferencesSetJavaScriptEnabled(priv-&gt;preferences, enabled);
    g_object_notify(G_OBJECT(settings), &quot;enable-scripts&quot;);
}

switch(prop_id) {
case PROP_ENABLE_SCRIPTS:
    webkit_web_setting_set_enable_scripts(settings, g_value_get_boolean(value));
    break;

&gt; This would expose many API&apos;s for get/set properties. Should that be fine?

It&apos;s fine for me, Martin?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470725</commentid>
    <comment_count>11</comment_count>
      <attachid>108137</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-21 05:25:16 -0700</bug_when>
    <thetext>Created attachment 108137
WebKitWebSetting GTK+ API

Exposed setter/getter API&apos;s for all properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470733</commentid>
    <comment_count>12</comment_count>
      <attachid>108137</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-21 06:04:38 -0700</bug_when>
    <thetext>Comment on attachment 108137
WebKitWebSetting GTK+ API

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:30
&gt; +#include &quot;WebKitGlobalsPrivate.h&quot;

It seems you forgot to add this file to the patch and to GNUMakefile.am. I added a similar file already in patrch for bug https://bugs.webkit.org/show_bug.cgi?id=67931

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:83
&gt; +static void webkitWebSettingsFinalize(GObject* object);
&gt; +
&gt; +static void webkitWebSettingsSetProperty(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec);
&gt; +
&gt; +static void webkitWebSettingsGetProperty(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec);

Move the implementation of these methods here and you don&apos;t need prototypes.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:92
&gt; +    GParamFlags flags = (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT);

I think you should use a C++ style cast here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:106
&gt; +                                                         _(&quot;Enable Java Script&quot;),
&gt; +                                                         _(&quot;Enable Java Script languages.&quot;),

I still wonder why we want to translate nick and blurb.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:291
&gt; +    settings-&gt;priv-&gt;preferences = WKPreferencesCreate();

Are WKPreferences default values the same we are defining here for our properties? If they don&apos;t match we would need to initialize WKPreferences here with our default values.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:297
&gt; +    delete WEBKIT_WEB_SETTINGS(object)-&gt;priv;
&gt; +    G_OBJECT_CLASS(webkit_web_settings_parent_class)-&gt;finalize(object);

Use the placement new syntax in webkit_web_settings_init() and you don&apos;t need to delete the object here. It should be something like:

WebKitWebSettingsPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(settings, WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettingsPrivate);
settings-&gt;priv = priv;
new (priv) WebKitWebSettingsPrivate();

And call g_type_class_add_private(klass, sizeof(WebKitWebSettingsPrivate)); in class_init()

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:657
&gt; +}

I prefer if all the public API is moved here (and documented)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.h:65
&gt; +WK_EXPORT void
&gt; +webkit_web_settings_set_enable_java_scripts(WebKitWebSettings* settings, gboolean enabled);

Don&apos;t use webkit coding style in public headers.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.h:100
&gt; +/* Property get function */

I prefer to group functions per property instead of getters and setters (and the same in the .cpp file):

webkit_web_settings_set_foo();
webkit_web_settings_get_foo();

webkit_web_settings_set_bar();
webkit_web_settings_get_bar();

...

&gt; Source/WebKit2/UIProcess/API/gtk/tests/testwebsettings.c:32
&gt; +    gboolean scripts = FALSE;
&gt; +    g_object_get(settings, &quot;enable-java-script&quot;, &amp;scripts, NULL);
&gt; +    g_assert(scripts);

You could use the public getters for the tests, I think it&apos;s simpler and more clear

g_assert(webkit_web_settings_get_enable_java_script(settings));

&gt; Source/WebKit2/UIProcess/API/gtk/tests/testwebsettings.c:198
&gt; +    g_test_add_func(&quot;/webkit/websettings/hyperlinkauditing&quot;, testWebKitWebSettingsHyperLinkAuditing);

use /webkit2/websettings/foo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471391</commentid>
    <comment_count>13</comment_count>
      <attachid>108286</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-22 00:10:40 -0700</bug_when>
    <thetext>Created attachment 108286
WebKitWebSettings GTK+ API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471393</commentid>
    <comment_count>14</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-22 00:15:03 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 108137 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108137&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:30
&gt; &gt; +#include &quot;WebKitGlobalsPrivate.h&quot;
&gt; 
&gt; It seems you forgot to add this file to the patch and to GNUMakefile.am. I added a similar file already in patrch for bug https://bugs.webkit.org/show_bug.cgi?id=67931
I am using WebKitPrivate.h added in https://bugs.webkit.org/show_bug.cgi?id=67990. This bug is anyway dependent on 67990.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:83
&gt; &gt; +static void webkitWebSettingsFinalize(GObject* object);
&gt; &gt; +
&gt; &gt; +static void webkitWebSettingsSetProperty(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec);
&gt; &gt; +
&gt; &gt; +static void webkitWebSettingsGetProperty(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec);
&gt; 
&gt; Move the implementation of these methods here and you don&apos;t need prototypes.
Done
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:92
&gt; &gt; +    GParamFlags flags = (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT);
&gt; 
&gt; I think you should use a C++ style cast here.
Done
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:106
&gt; &gt; +                                                         _(&quot;Enable Java Script&quot;),
&gt; &gt; +                                                         _(&quot;Enable Java Script languages.&quot;),
&gt; 
&gt; I still wonder why we want to translate nick and blurb.
Martin, do we need to translate nick and blurb? I guess it&apos;s good to have.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:291
&gt; &gt; +    settings-&gt;priv-&gt;preferences = WKPreferencesCreate();
&gt; 
&gt; Are WKPreferences default values the same we are defining here for our properties? If they don&apos;t match we would need to initialize WKPreferences here with our default values.
Yes, default values of WKPreference are the defaults of WebKitWebSettings.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:297
&gt; &gt; +    delete WEBKIT_WEB_SETTINGS(object)-&gt;priv;
&gt; &gt; +    G_OBJECT_CLASS(webkit_web_settings_parent_class)-&gt;finalize(object);
&gt; 
&gt; Use the placement new syntax in webkit_web_settings_init() and you don&apos;t need to delete the object here. It should be something like:
&gt; 
&gt; WebKitWebSettingsPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(settings, WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettingsPrivate);
&gt; settings-&gt;priv = priv;
&gt; new (priv) WebKitWebSettingsPrivate();
&gt; 
&gt; And call g_type_class_add_private(klass, sizeof(WebKitWebSettingsPrivate)); in class_init()
&gt; 
Done
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:657
&gt; &gt; +}
&gt; 
&gt; I prefer if all the public API is moved here (and documented)
&gt; 
Done
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.h:65
&gt; &gt; +WK_EXPORT void
&gt; &gt; +webkit_web_settings_set_enable_java_scripts(WebKitWebSettings* settings, gboolean enabled);
&gt; 
&gt; Don&apos;t use webkit coding style in public headers.
Done.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.h:100
&gt; &gt; +/* Property get function */
&gt; 
&gt; I prefer to group functions per property instead of getters and setters (and the same in the .cpp file):
&gt; 
&gt; webkit_web_settings_set_foo();
&gt; webkit_web_settings_get_foo();
&gt; 
&gt; webkit_web_settings_set_bar();
&gt; webkit_web_settings_get_bar();
&gt; 
&gt; ...
&gt; 
Done
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/testwebsettings.c:32
&gt; &gt; +    gboolean scripts = FALSE;
&gt; &gt; +    g_object_get(settings, &quot;enable-java-script&quot;, &amp;scripts, NULL);
&gt; &gt; +    g_assert(scripts);
&gt; 
&gt; You could use the public getters for the tests, I think it&apos;s simpler and more clear
&gt; 
&gt; g_assert(webkit_web_settings_get_enable_java_script(settings));
&gt; 
Done
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/testwebsettings.c:198
&gt; &gt; +    g_test_add_func(&quot;/webkit/websettings/hyperlinkauditing&quot;, testWebKitWebSettingsHyperLinkAuditing);
&gt; 
&gt; use /webkit2/websettings/foo
Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471399</commentid>
    <comment_count>15</comment_count>
      <attachid>108288</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-22 00:23:23 -0700</bug_when>
    <thetext>Created attachment 108288
WebKitWebSettings GTK+ API

By mistake, earlier patch included the changes in testwebcontext to resolve the compilation errors (which is anyway solved in 67931 now). 

Reverted those changes now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471407</commentid>
    <comment_count>16</comment_count>
      <attachid>108286</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-22 00:44:05 -0700</bug_when>
    <thetext>Comment on attachment 108286
WebKitWebSettings GTK+ API

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

This looks much better, I still have a few comments, though

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:81
&gt; +static void webkitWebSettingsFinalize(GObject* object)
&gt; +{
&gt; +    G_OBJECT_CLASS(webkit_web_settings_parent_class)-&gt;finalize(object);
&gt; +}

We don&apos;t need this, at least for now that all properties are boolean.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:83
&gt; +static void webkitWebSettingsSetProperty(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec)

It should be propId instead of prop_id

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:89
&gt; +        webkit_web_settings_set_java_script_enabled(settings, (bool)g_value_get_boolean(value));

webkit_web_settings_set_java_script_enabled() takes a gboolean, bool cast is wrong there.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:92
&gt; +        webkit_web_settings_set_loads_images_automatically(settings, (bool)g_value_get_boolean(value));

I think methods should follow the pattern webkit_web_settings_[get|set]_property_name(), in this case webkit_web_settings_set_auto_load_images()

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:229
&gt; +                                                         &quot;load-icon-ignoring-image-load-pref&quot;,

The name is long, but I think we should still use preference instead of pref

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:248
&gt; +                                                         FALSE,

This is enabled by default in WebKit1, I think we should use the same default values to make the transition easier and consistent.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:360
&gt; +                                                         TRUE,

This is FALSE by default in WebKit1

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:374
&gt; +                                                         TRUE,

This is FALSE by default in WebKit1

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:406
&gt; + * Returns: TRUE - If Java Script is enabled.

Use %TRUE and remove the -

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:412
&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_SETTINGS(settings), false);

The function returns a gboolean, use FALSE instead of false here.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/testwebcontext.c:27
&gt; -    g_assert(webkit_web_context_get_default(context) == webkit_web_context_get_default(context));
&gt; +    g_assert(webkit_web_context_get_default() == webkit_web_context_get_default());

This change is unrelated. I already fixed it in bug https://bugs.webkit.org/show_bug.cgi?id=67931.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471469</commentid>
    <comment_count>17</comment_count>
      <attachid>108306</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-22 04:03:58 -0700</bug_when>
    <thetext>Created attachment 108306
WebKitWebSettings GTK+ API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471481</commentid>
    <comment_count>18</comment_count>
      <attachid>108311</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-22 04:22:50 -0700</bug_when>
    <thetext>Created attachment 108311
WebKitWebSetting GTK+ API

Fixed few style issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471537</commentid>
    <comment_count>19</comment_count>
      <attachid>108286</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-22 07:00:37 -0700</bug_when>
    <thetext>Comment on attachment 108286
WebKitWebSettings GTK+ API

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:83
&gt;&gt; +static void webkitWebSettingsSetProperty(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec)
&gt; 
&gt; It should be propId instead of prop_id

Done

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:89
&gt;&gt; +        webkit_web_settings_set_java_script_enabled(settings, (bool)g_value_get_boolean(value));
&gt; 
&gt; webkit_web_settings_set_java_script_enabled() takes a gboolean, bool cast is wrong there.

Done.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:92
&gt;&gt; +        webkit_web_settings_set_loads_images_automatically(settings, (bool)g_value_get_boolean(value));
&gt; 
&gt; I think methods should follow the pattern webkit_web_settings_[get|set]_property_name(), in this case webkit_web_settings_set_auto_load_images()

Done. I followed the naming convention exposed by WKPreference. But, yes, it does make sense to follow webkit_web_settings_[get|set]_property_name convention

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:229
&gt;&gt; +                                                         &quot;load-icon-ignoring-image-load-pref&quot;,
&gt; 
&gt; The name is long, but I think we should still use preference instead of pref

Done.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:248
&gt;&gt; +                                                         FALSE,
&gt; 
&gt; This is enabled by default in WebKit1, I think we should use the same default values to make the transition easier and consistent.

Done.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:360
&gt;&gt; +                                                         TRUE,
&gt; 
&gt; This is FALSE by default in WebKit1

Done.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:374
&gt;&gt; +                                                         TRUE,
&gt; 
&gt; This is FALSE by default in WebKit1

Done

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:406
&gt;&gt; + * Returns: TRUE - If Java Script is enabled.
&gt; 
&gt; Use %TRUE and remove the -

Done

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:412
&gt;&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_SETTINGS(settings), false);
&gt; 
&gt; The function returns a gboolean, use FALSE instead of false here.

Done

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/tests/testwebcontext.c:27
&gt;&gt; +    g_assert(webkit_web_context_get_default() == webkit_web_context_get_default());
&gt; 
&gt; This change is unrelated. I already fixed it in bug https://bugs.webkit.org/show_bug.cgi?id=67931.

Yes, I realized it after submitting the patch and added new one later excluding this change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471619</commentid>
    <comment_count>20</comment_count>
      <attachid>108311</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-09-22 09:25:27 -0700</bug_when>
    <thetext>Comment on attachment 108311
WebKitWebSetting GTK+ API

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

We should decide whether we want the documention on the properties or the methods and then link back from the other place.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:76
&gt; +    PROP_ENABLE_JAVA_SCRIPT,

JavaScript is camel case, but it&apos;s always written as one word.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:201
&gt; +                                    g_param_spec_boolean(

No need for a newline here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:218
&gt; +                                    g_param_spec_boolean(

No need for a newline here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:234
&gt; +                                    g_param_spec_boolean(

No need for a newline here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:332
&gt; +                                    g_param_spec_boolean(

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:407
&gt; + * webkit_web_settings_get_enable_java_script:

JavaScript is always written as one word.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:409
&gt; + * Check if Java Script execution within a page is supported or not.

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:411
&gt; + * Returns: %TRUE If Java Script is enabled.

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:413
&gt; + * @see_also: webkit_web_settings_set_enable_java_script

Ditto. Etc. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472084</commentid>
    <comment_count>21</comment_count>
      <attachid>108444</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-22 23:01:49 -0700</bug_when>
    <thetext>Created attachment 108444
WebKitWebSettings GTK+ API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472086</commentid>
    <comment_count>22</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-22 23:10:33 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 108311 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108311&amp;action=review
&gt; 
&gt; We should decide whether we want the documention on the properties or the methods and then link back from the other place.
&gt; 

Yes, I think we could add complete documentation in properties, and a simple line like set property foo, get property foo in the methods, where foo links to the property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472116</commentid>
    <comment_count>23</comment_count>
      <attachid>108444</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-09-23 02:22:56 -0700</bug_when>
    <thetext>Comment on attachment 108444
WebKitWebSettings GTK+ API

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:43
&gt; +        /* By default, offline-web-application-cache in true in WebKit-GTK */

s/in/is/

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:606
&gt; +gboolean webkit_web_settings_get_database_enabled(WebKitWebSettings* settings)

The name does not follow the pattern, it is even linked in the next function with a different name in the doc.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/testwebsettings.c:29
&gt; +    // Scripts is enabled by default

Dot at the end of the comment.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/testwebsettings.c:39
&gt; +    // By default auto-load-image is true

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/testwebsettings.c:49
&gt; +    // load-icon-ignoring-image-load-pref is false by default

Ditto, there are a lot, check all of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473015</commentid>
    <comment_count>24</comment_count>
      <attachid>108640</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-26 00:56:26 -0700</bug_when>
    <thetext>Created attachment 108640
WebKitWebSettings

Updated the patch, incorporating review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473077</commentid>
    <comment_count>25</comment_count>
      <attachid>108659</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-26 06:23:51 -0700</bug_when>
    <thetext>Created attachment 108659
WebKitWebSetting API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474671</commentid>
    <comment_count>26</comment_count>
      <attachid>109004</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-28 04:59:27 -0700</bug_when>
    <thetext>Created attachment 109004
WebKitWebSettings GTK+ API

Header file inclusion is changed to &lt;webkit2/webkit2.h&gt;, instead of webkit2gtk.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474675</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-28 05:02:31 -0700</bug_when>
    <thetext>Attachment 109004 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Last 3072 characters of output:
/API/gtk/WebKitWebSettings.cpp:588:  webkit_web_settings_set_enable_html5_local_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:612:  webkit_web_settings_get_enable_html5_database is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:629:  webkit_web_settings_set_enable_html5_database is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:653:  webkit_web_settings_get_enable_xss_auditor is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:670:  webkit_web_settings_set_enable_xss_auditor is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:694:  webkit_web_settings_get_enable_frame_flattening is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:711:  webkit_web_settings_set_enable_frame_flattening is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:735:  webkit_web_settings_get_enable_plugins is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:752:  webkit_web_settings_set_enable_plugins is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:776:  webkit_web_settings_get_enable_java is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:793:  webkit_web_settings_set_enable_java is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:817:  webkit_web_settings_get_javascript_can_open_windows_automatically is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:834:  webkit_web_settings_set_javascript_can_open_windows_automatically is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:858:  webkit_web_settings_get_enable_hyperlink_auditing is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:875:  webkit_web_settings_set_enable_hyperlink_auditing is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 80 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475330</commentid>
    <comment_count>28</comment_count>
      <attachid>109140</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-29 02:30:23 -0700</bug_when>
    <thetext>Created attachment 109140
WebKitWebSettings GTK+ API added.

1. Rebase&apos;d the patch to latest trunk.
2. Corrected the format of ChangeLog
3. Clubbed all tests together to a single function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475332</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-29 02:32:53 -0700</bug_when>
    <thetext>Attachment 109140 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Last 3072 characters of output:
/API/gtk/WebKitWebSettings.cpp:588:  webkit_web_settings_set_enable_html5_local_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:612:  webkit_web_settings_get_enable_html5_database is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:629:  webkit_web_settings_set_enable_html5_database is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:653:  webkit_web_settings_get_enable_xss_auditor is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:670:  webkit_web_settings_set_enable_xss_auditor is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:694:  webkit_web_settings_get_enable_frame_flattening is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:711:  webkit_web_settings_set_enable_frame_flattening is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:735:  webkit_web_settings_get_enable_plugins is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:752:  webkit_web_settings_set_enable_plugins is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:776:  webkit_web_settings_get_enable_java is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:793:  webkit_web_settings_set_enable_java is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:817:  webkit_web_settings_get_javascript_can_open_windows_automatically is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:834:  webkit_web_settings_set_javascript_can_open_windows_automatically is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:858:  webkit_web_settings_get_enable_hyperlink_auditing is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:875:  webkit_web_settings_set_enable_hyperlink_auditing is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 80 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475333</commentid>
    <comment_count>30</comment_count>
      <attachid>109141</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-29 02:36:05 -0700</bug_when>
    <thetext>Created attachment 109141
WebKitWebSettings GTK+ API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475334</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-29 02:40:31 -0700</bug_when>
    <thetext>Attachment 109141 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Last 3072 characters of output:
/API/gtk/WebKitWebSettings.cpp:588:  webkit_web_settings_set_enable_html5_local_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:612:  webkit_web_settings_get_enable_html5_database is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:629:  webkit_web_settings_set_enable_html5_database is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:653:  webkit_web_settings_get_enable_xss_auditor is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:670:  webkit_web_settings_set_enable_xss_auditor is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:694:  webkit_web_settings_get_enable_frame_flattening is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:711:  webkit_web_settings_set_enable_frame_flattening is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:735:  webkit_web_settings_get_enable_plugins is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:752:  webkit_web_settings_set_enable_plugins is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:776:  webkit_web_settings_get_enable_java is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:793:  webkit_web_settings_set_enable_java is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:817:  webkit_web_settings_get_javascript_can_open_windows_automatically is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:834:  webkit_web_settings_set_javascript_can_open_windows_automatically is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:858:  webkit_web_settings_get_enable_hyperlink_auditing is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:875:  webkit_web_settings_set_enable_hyperlink_auditing is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 80 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475337</commentid>
    <comment_count>32</comment_count>
      <attachid>109141</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-29 02:53:58 -0700</bug_when>
    <thetext>Comment on attachment 109141
WebKitWebSettings GTK+ API

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:41
&gt; +        preferences = WKPreferencesCreate();

Why did you remove default values initialization?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:402
&gt; + * Returns: %TRUE If JavaScript is enabled.
&gt; + *          %FALSE If JavaScript is not enabled.

This looks a bit redundant, maybe you could use something like %TRUE if JavaScript is enabled, %FALSE otherwise.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/testwebsettings.c:100
&gt; +    return g_test_run ();

extra space there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475338</commentid>
    <comment_count>33</comment_count>
      <attachid>109141</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-29 02:59:37 -0700</bug_when>
    <thetext>Comment on attachment 109141
WebKitWebSettings GTK+ API

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:41
&gt;&gt; +        preferences = WKPreferencesCreate();
&gt; 
&gt; Why did you remove default values initialization?

Property set function gets called when we install the property using g_object_class_install_property, with the default value passed as g_param_spec (http://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-class-install-property), thus setting the WebKit preference to the one specified via g_param_spec. Hence it is not necessary to initialize them separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475344</commentid>
    <comment_count>34</comment_count>
      <attachid>109143</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-29 03:09:38 -0700</bug_when>
    <thetext>Created attachment 109143
WebKitWebSettings GTK+ API.

Addressed review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475345</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-29 03:13:06 -0700</bug_when>
    <thetext>Attachment 109143 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Last 3072 characters of output:
/API/gtk/WebKitWebSettings.cpp:588:  webkit_web_settings_set_enable_html5_local_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:612:  webkit_web_settings_get_enable_html5_database is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:629:  webkit_web_settings_set_enable_html5_database is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:653:  webkit_web_settings_get_enable_xss_auditor is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:670:  webkit_web_settings_set_enable_xss_auditor is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:694:  webkit_web_settings_get_enable_frame_flattening is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:711:  webkit_web_settings_set_enable_frame_flattening is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:735:  webkit_web_settings_get_enable_plugins is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:752:  webkit_web_settings_set_enable_plugins is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:776:  webkit_web_settings_get_enable_java is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:793:  webkit_web_settings_set_enable_java is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:817:  webkit_web_settings_get_javascript_can_open_windows_automatically is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:834:  webkit_web_settings_set_javascript_can_open_windows_automatically is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:858:  webkit_web_settings_get_enable_hyperlink_auditing is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:875:  webkit_web_settings_set_enable_hyperlink_auditing is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 80 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475349</commentid>
    <comment_count>36</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-29 03:25:40 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 109141 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109141&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:41
&gt; &gt;&gt; +        preferences = WKPreferencesCreate();
&gt; &gt; 
&gt; &gt; Why did you remove default values initialization?
&gt; 
&gt; Property set function gets called when we install the property using g_object_class_install_property, with the default value passed as g_param_spec (http://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-class-install-property), thus setting the WebKit preference to the one specified via g_param_spec. Hence it is not necessary to initialize them separately.

property_set function is called on an object instance, while g_object_class_install_property() is called on the object class struct, so there isn&apos;t any instance to call set_property when installing properties for a class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475361</commentid>
    <comment_count>37</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-29 04:14:06 -0700</bug_when>
    <thetext>
&gt; &gt; Property set function gets called when we install the property using g_object_class_install_property, with the default value passed as g_param_spec (http://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-class-install-property), thus setting the WebKit preference to the one specified via g_param_spec. Hence it is not necessary to initialize them separately.
&gt; 
&gt; property_set function is called on an object instance, while g_object_class_install_property() is called on the object class struct, so there isn&apos;t any instance to call set_property when installing properties for a class.

But, what I observed was, *_set functions of properties get called when a new instance of WebKitWebSettings gets created via webkit_web_settings_new. Below is the backtrace,

Breakpoint 1, 0x00007ffff68085b0 in webkit_web_settings_set_enable_offline_web_application_cache () from /home/xc0ffee/Sources/WebKit/WebKitBuild/Release/.libs/libwebkit2gtk-3.0.so.0
(gdb) bt
#0  0x00007ffff68085b0 in webkit_web_settings_set_enable_offline_web_application_cache () from /home/xc0ffee/Sources/WebKit/WebKitBuild/Release/.libs/libwebkit2gtk-3.0.so.0
#1  0x00007ffff3c558ff in object_set_property (type=&lt;value optimized out&gt;, n_construct_properties=8, construct_params=0x45e2d0) at /build/buildd/glib2.0-2.28.6/./gobject/gobject.c:1185
#2  g_object_constructor (type=&lt;value optimized out&gt;, n_construct_properties=8, construct_params=0x45e2d0) at /build/buildd/glib2.0-2.28.6/./gobject/gobject.c:1629
#3  0x00007ffff3c58389 in g_object_newv (object_type=4417680, n_parameters=&lt;value optimized out&gt;, parameters=&lt;value optimized out&gt;) at /build/buildd/glib2.0-2.28.6/./gobject/gobject.c:1479
#4  0x00007ffff3c5963c in g_object_new (object_type=4417680, first_property_name=0x0) at /build/buildd/glib2.0-2.28.6/./gobject/gobject.c:1308
#5  0x00007ffff68081aa in webkit_web_settings_new () from /home/xc0ffee/Sources/WebKit/WebKitBuild/Release/.libs/libwebkit2gtk-3.0.so.0
#6  0x0000000000401536 in testWebKitWebSettings ()
#7  0x00007ffff33adc89 in test_case_run (suite=0x435f40, path=0x7ffff33fd3fe &quot;&quot;) at /build/buildd/glib2.0-2.28.6/./glib/gtestutils.c:1174
#8  g_test_run_suite_internal (suite=0x435f40, path=0x7ffff33fd3fe &quot;&quot;) at /build/buildd/glib2.0-2.28.6/./glib/gtestutils.c:1223
#9  0x00007ffff33addf6 in g_test_run_suite_internal (suite=&lt;value optimized out&gt;, path=0x7ffff33fd3fe &quot;&quot;) at /build/buildd/glib2.0-2.28.6/./glib/gtestutils.c:1233
#10 0x00007ffff33addf6 in g_test_run_suite_internal (suite=&lt;value optimized out&gt;, path=0x7ffff33fd3fe &quot;&quot;) at /build/buildd/glib2.0-2.28.6/./glib/gtestutils.c:1233
#11 0x00007ffff33ae0cb in g_test_run_suite (suite=0x435f00) at /build/buildd/glib2.0-2.28.6/./glib/gtestutils.c:1282</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475371</commentid>
    <comment_count>38</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-29 04:29:48 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; &gt; &gt; Property set function gets called when we install the property using g_object_class_install_property, with the default value passed as g_param_spec (http://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-class-install-property), thus setting the WebKit preference to the one specified via g_param_spec. Hence it is not necessary to initialize them separately.
&gt; &gt; 
&gt; &gt; property_set function is called on an object instance, while g_object_class_install_property() is called on the object class struct, so there isn&apos;t any instance to call set_property when installing properties for a class.
&gt; 
&gt; But, what I observed was, *_set functions of properties get called when a new instance of WebKitWebSettings gets created via webkit_web_settings_new. Below is the backtrace,
&gt; 

That&apos;s because G_PARAM_CONSTRUCT is used, I thought we were not using it. In that case you are right, sorry for the noise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481456</commentid>
    <comment_count>39</comment_count>
      <attachid>109143</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-10 22:54:35 -0700</bug_when>
    <thetext>Comment on attachment 109143
WebKitWebSettings GTK+ API.

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

I think this class should be called either WebKitSettings (preferred) or WebKitWebViewSettings. Below I&apos;ve made a lot of suggestions for rephrasing simple descriptions. In reality, I just want the phrasing to be consistent either use:

Determines whether or not &lt;foo&gt; is enabled or
Controls whether or not 

In general, this looks like it&apos;s almost done.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:36
&gt; +public:

A struct doesn&apos;t need a private label.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:37
&gt; +    WKPreferencesRef preferences;

Should this be a WKRefPtr?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:54
&gt; + * /&lt;!-- --&gt;* Create a new websettings and disable java script *&lt;!-- --&gt;/

java script =&gt; JavaScipt

The comment is missing a period.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:56
&gt; + * g_object_set (G_OBJECT(settings), &quot;enable-scripts&quot;, FALSE, NULL);

enable-scripts -&gt; enable-javascript

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:58
&gt; + * /&lt;!-- --&gt;* Apply the result *&lt;!-- --&gt;/

You can omit this comment.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:59
&gt; + * webkit_web_view_set_settings (WEBKIT_WEB_VIEW(my_webview), settings);

There should be a space after WEBKIT_WEB_VIEW

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:83
&gt; +static void webkitWebSettingsSetProperty(GObject* object, guint propId, const GValue* value, GParamSpec* pspec)

pspec should be paramSpec.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:130
&gt; +static void webkitWebSettingsGetProperty(GObject* object, guint propId, GValue* value, GParamSpec* pspec)

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:183
&gt; +    GParamFlags flags = static_cast&lt;GParamFlags&gt;(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT);

Please give this variable a more descriptive name such as readWriteConstructParamFlags.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:190
&gt; +    * This property needs to be set to enable the execution of 
&gt; +    * Javascript within a page.
&gt; +    *

This description is misleading. It suggests that the embedders must touch this to enable script to run on a page. I think a sentence like &quot;Determines whether or not JavaScript executes within a page.&quot;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:196
&gt; +                                                         _(&quot;Enable JavaScript languages.&quot;),

s/languages.//

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:206
&gt; +    * Determines whether images should be automatically loaded or not.
&gt; +    * On devices, where network bandwidth is of concern, it might be
&gt; +    * useful to turn this property off.
&gt; +    *

No commoa necessary after &quot;On devices&quot;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:219
&gt; +    * By enabling this property, site icons (e.g, favicon) will be loaded

I think it&apos;s fine to just say favicons directly.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:220
&gt; +    * irrespective of the value of #Object:auto-load-images.

#Object Should be #WebKitSettings, right?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:226
&gt; +                                                         _(&quot;Loads Site Icons ignoring image load preference&quot;),

The capitalization of the blurb is inconsistent here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:236
&gt; +    * Whether to enable HTML5 offline web application cache support. Offline
&gt; +    * Web Application Cache ensures web applications are available even when
&gt; +    * the user is not connected to the network.

Offline Web Application Cache -&gt; The offline web application cache

I think it would be useful to link to the spec here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:242
&gt; +                                                         _(&quot;Enable offline web application cache&quot;),

Isn&apos;t the blurb supposed to be capitalized?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:251
&gt; +    * Whether to enable HTML5 localStorage support. localStorage provides
&gt; +    * simple synchronous storage access.

localStorage should be local storage. Please link to the spec.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:269
&gt; +    * Whether to enable HTML5 client-side SQL database support. Client-side
&gt; +    * SQL database allows web pages to store structured data and be able to
&gt; +    * use SQL to manipulate that data asynchronously.
&gt; +    *
&gt; +    */

Please link to the spec.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:281
&gt; +    * Whether to enable the XSS Auditor. This feature filters some kinds of

Auditor -&gt; auditor

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:299
&gt; +    * On touch devices, it is desired to not have any scrollable sub parts of the page as

sub parts -&gt; subparts

I think the last two sentences should be simplified to say: On touch devices, scrollable subframes on a page can result in a confusing user experience.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:309
&gt; +                                                         _(&quot;Whether to enable Frame Flattening&quot;),

Frame Flattening should not be capitalized here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:317
&gt; +    * Plugins emdedded within a page can be turned off by disabling
&gt; +    * this property. 

&quot;Determines whether or not plugins on the page are enabled.&quot;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:333
&gt; +    * Enable or disable support for the Java. This property needs to be enabled
&gt; +    * for displaying java contents via  &amp;lt;object&amp;gt; or &amp;lt;embed&amp;gt; tag.
&gt; +    *

&quot;Determines whether or not Java is enabled on the page.&quot; You can omit the second sentence.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:353
&gt; +                                                         _(&quot;JavaScript can open windows automatically&quot;),

Shouldn&apos;t the blurb be capitalized?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:361
&gt; +    * Enable or disable support for &amp;lt;a ping&amp;gt;.

Might want to link to the spec here as well.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:379
&gt; +    WebKitWebSettingsPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(settings, WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettingsPrivate);
&gt; +    settings-&gt;priv = priv;
&gt; +    new (priv) WebKitWebSettingsPrivate();

You need to call the WebKitWebSettingsPrivate destructor somewhere too.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:411
&gt; +
&gt; +    WebKitWebSettingsPrivate* priv = settings-&gt;priv;
&gt; +    return WKPreferencesGetJavaScriptEnabled(priv-&gt;preferences);

This can be one line. Please make the same changes for all similar methods below.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:428
&gt; +    gboolean currentValue = WKPreferencesGetJavaScriptEnabled(priv-&gt;preferences);

Store the value as a bool.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:432
&gt; +    WKPreferencesSetJavaScriptEnabled(priv-&gt;preferences, (bool)enabled);

Please don&apos;t cast to bool here. If it produces a warning (which I don&apos;t think it should) use a static_cast. Please make these same changes for all similar methods below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481457</commentid>
    <comment_count>40</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-10 22:55:16 -0700</bug_when>
    <thetext>(In reply to comment #39)

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebSettings.cpp:36
&gt; &gt; +public:u
&gt; 
&gt; A struct doesn&apos;t need a private label.

Sorry. I meant public label.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481629</commentid>
    <comment_count>41</comment_count>
      <attachid>110515</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-10-11 07:52:44 -0700</bug_when>
    <thetext>Created attachment 110515
Adds WebKitSettings GTK+ API&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482216</commentid>
    <comment_count>42</comment_count>
      <attachid>110637</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-10-11 22:18:08 -0700</bug_when>
    <thetext>Created attachment 110637
WebKitSettings patch

Updated as per review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482264</commentid>
    <comment_count>43</comment_count>
      <attachid>110646</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-10-12 00:03:38 -0700</bug_when>
    <thetext>Created attachment 110646
WebKitSettings patch

Modified unit test as per new the new unit test design.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482266</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-12 00:06:50 -0700</bug_when>
    <thetext>Attachment 110646 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/webkit2.h&quot;
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482267</commentid>
    <comment_count>45</comment_count>
      <attachid>110648</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-10-12 00:09:56 -0700</bug_when>
    <thetext>Created attachment 110648
WebKitSettings patch

Missed adding bug number in previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482467</commentid>
    <comment_count>46</comment_count>
      <attachid>110648</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-12 09:46:49 -0700</bug_when>
    <thetext>Comment on attachment 110648
WebKitSettings patch

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

Okay! This is so close!

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:46
&gt; +    _WebKitSettingsPrivate()
&gt; +    {
&gt; +        preferences = adoptWK(WKPreferencesCreate());
&gt; +    }

Do you mind removing this contructor and just moving this line to webkit_settings_init? This is a neat approach, but we sould be doing it the same way in all classes.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:50
&gt; + * SECTION:webkitwebsettings

This heading is now wrong. It should be webkitsettings.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:60
&gt; + * g_object_set (G_OBJECT(settings), &quot;enable-java-script&quot;, FALSE, NULL);

You&apos;re missing a space after G_OBJECT. This should be enable-java-script.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:74
&gt; +    PROP_LOADS_ICONS_IGNORING_IMAGE_LOAD_PREFERENCE,

Do you mind changing this setting to PROP_LOAD_ICONS_IGNORING_IMAGE_LOAD_SETTING. Note that LOADS is now LOAD. I changed PREFERENCE to setting here because in the C API these are &quot;preferences,&quot; but in our API they are &quot;settings.&quot;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:239
&gt; +    * WebKitSettings:loads-icons-ignoring-image-load-preference
&gt; +    *
&gt; +    * Determines whether a site can load favicons irrespective
&gt; +    * of the value of #WebSettings:auto-load-images.
&gt; +    *
&gt; +    */
&gt; +    g_object_class_install_property(gObjectClass,
&gt; +                                    PROP_LOADS_ICONS_IGNORING_IMAGE_LOAD_PREFERENCE,
&gt; +                                    g_param_spec_boolean(&quot;loads-icons-ignoring-image-load-preference&quot;,
&gt; +                                                         _(&quot;Loads site icons ignoring image load preference&quot;),
&gt; +                                                         _(&quot;Whether to load site icon ignoring image load preference.&quot;),
&gt; +                                                         FALSE,
&gt; +                                                         readWriteConstructParamFlags));
&gt; +

Please change this setting to load-icons-ignoring-image-load-setting. The string &quot;Whether to load site icon ignoring image load preference.&quot; should be &quot;Whether to load site icons ignoring image load setting.&quot; Note that icons is plural now.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:244
&gt; +    * web application cache ensures web applications are available even when

ensure to &quot;allow&quot; maybe. Ensure suggests that it works with all web applications automatically.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:266
&gt; +    * http://dev.w3.org/TR/webstorage/.

This link doesn&apos;t work! Looks like the real link is http://dev.w3.org/html5/webstorage/

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:317
&gt; +    * On touch devices, scrollable subframes on a page can result in a confusing user experience.

No comma necessary after &quot;On touch devices&quot;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:376
&gt; +    * Hyperlink auditing specification is available at

&quot;The hyperlink auditing&quot;...

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:414
&gt; + * Get the property #WebKitSettings:enable-javascript.

Should be &quot;Get the #WebKitSettings:enable-javascript property.&quot; Please make this fix for all properties below as well.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:419
&gt; + * @see_also: webkit_settings_set_enable_javascript()

I think it&apos;s more useful to link to the property here since that&apos;s where the description of the feature is. Since you&apos;ve already linked above, you can probably remove this line if you like. Please make this fix for all properties below as well.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:454
&gt; + * Get the property #WebKitSettings:auto-load-images.

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:458
&gt; + * @see_also: webkit_settings_set_auto_load_images()

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:504
&gt; + * webkit_settings_get_loads_icons_ignoring_image_load_preference:
&gt; + * @settings: a #WebKitSettings
&gt; + *
&gt; + * Get the property #WebKitSettings:loads-icons-ignoring-image-load-preference.
&gt; + *
&gt; + * Returns: %TRUE If site icon can be loaded irrespective of image loading preference or %FALSE otherwise.
&gt; + *
&gt; + * @see_also: webkit_settings_set_loads_icons_ignoring_image_load_preference()
&gt; + **/
&gt; +gboolean webkit_settings_get_loads_icons_ignoring_image_load_preference(WebKitSettings* settings)
&gt; +{
&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_SETTINGS(settings), FALSE);
&gt; +
&gt; +    return WKPreferencesGetLoadsSiteIconsIgnoringImageLoadingPreference(settings-&gt;priv-&gt;preferences.get());
&gt; +}

Don&apos;t forget to update preference -&gt; setting here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483032</commentid>
    <comment_count>47</comment_count>
      <attachid>110804</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-10-13 00:04:20 -0700</bug_when>
    <thetext>Created attachment 110804
WebKitSettings patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483034</commentid>
    <comment_count>48</comment_count>
      <attachid>110805</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-10-13 00:07:24 -0700</bug_when>
    <thetext>Created attachment 110805
Adds WebKitSettings GTK+ API&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483255</commentid>
    <comment_count>49</comment_count>
      <attachid>110805</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-13 09:59:18 -0700</bug_when>
    <thetext>Comment on attachment 110805
Adds WebKitSettings GTK+ API&apos;s.

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

I&apos;ll land this one.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:636
&gt; + * Returns: %TRUE If xss auditing is enabled or %FALSE otherwise.

xss -&gt; XSS I&apos;ll fix it when landing.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:672
&gt; + *.

Extra period here, but I&apos;ll fix when landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483731</commentid>
    <comment_count>50</comment_count>
      <attachid>110951</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-13 19:30:58 -0700</bug_when>
    <thetext>Created attachment 110951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483739</commentid>
    <comment_count>51</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-13 20:17:32 -0700</bug_when>
    <thetext>Committed r97438: &lt;http://trac.webkit.org/changeset/97438&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484019</commentid>
    <comment_count>52</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-14 09:44:15 -0700</bug_when>
    <thetext>It seems like this API test is crashing on a bot:
http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug/builds/26850/steps/API%20tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484020</commentid>
    <comment_count>53</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-14 09:44:45 -0700</bug_when>
    <thetext>32-bit bot: http://build.webkit.org/builders/GTK%20Linux%2032-bit%20Debug/builds/17723/steps/API%20tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484166</commentid>
    <comment_count>54</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-14 12:17:49 -0700</bug_when>
    <thetext>The test is skipped here: https://bugs.webkit.org/show_bug.cgi?id=70129
The bug is here: https://bugs.webkit.org/show_bug.cgi?id=70127</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107880</attachid>
            <date>2011-09-19 10:39:45 -0700</date>
            <delta_ts>2011-09-20 00:04:52 -0700</delta_ts>
            <desc>WebKitWebSettings</desc>
            <filename>0001-WebKitWebSettings-object-added.patch</filename>
            <type>text/plain</type>
            <size>33613</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSAyMTE3MWZhZDk2NTVjZDY5N2M5NTllYjIxMzU2OTVlZjMzZDdhZWJkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogTW9uLCAxOSBTZXAgMjAxMSAyMzowODoxNSArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIFdl
YktpdFdlYlNldHRpbmdzIG9iamVjdCBhZGRlZAoKLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzYgKysrCiBTb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKy0KIC4uLi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRHbG9iYWxzUHJpdmF0ZS5oICAgICAgIHwgICAzMiArKwogLi4uL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcCAgICAgICAgfCAgMzE2ICsrKysr
KysrKysrKysrKysrKysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJT
ZXR0aW5ncy5oICB8ICAgNjUgKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3
ZWJzZXR0aW5ncy5jICAgICAgfCAgMjAyICsrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJndGsuaCAgICAgIHwgICAgMSArCiA3IGZpbGVzIGNoYW5n
ZWQsIDY2MiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdsb2JhbHNQcml2YXRlLmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJTZXR0aW5ncy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggZGZjMjAyNS4uMzZhNWI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBA
CisyMDExLTA5LTE5ICBOYXlhbiBLdW1hciBLICA8bmF5YW5ra0Btb3Rvcm9sYS5jb20+CisKKyAg
ICAgICAgW0dUS10gQWRkIFdlYktpdFdlYlNldHRpbmdzIEdUSysgQVBJJ3MuCisKKyAgICAgICAg
V2ViS2l0V2ViU2V0dGluZ3MgR1RLKyBvYmplY3QgaXMgY3JlYXRlZCBhbmQgZmlyc3Qgc2V0IG9m
CisgICAgICAgIEFQSSdzIGFyZSB3cml0dGVuIHRvIGdldCBvciBzZXQgdGhlIHByb3BlcnRpZXMg
b2YgV2ViS2l0V2ViU2V0dGluZ3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02ODM3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0R2xvYmFsc1ByaXZhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvd2Via2l0Mmd0ay5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlNldHRpbmdzLmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJraXRfd2ViX3NldHRp
bmdzX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19pbml0KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZmluYWxpemUpOgorICAgICAgICAod2Via2l0X3dl
Yl9zZXR0aW5nc19zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19uZXcpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5ncy5jOiBBZGRlZC4KKyAg
ICAgICAgKHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc19zY3JpcHRzKToKKyAgICAgICAgKHRlc3Rf
d2Via2l0X3dlYl9zZXR0aW5nc19hdXRvbG9hZCk6CisgICAgICAgICh0ZXN0X3dlYmtpdF93ZWJf
c2V0dGluZ3NfbG9hZGljb25pZ25vcmluZ2ltYWdlbG9hZHByZWYpOgorICAgICAgICAodGVzdF93
ZWJraXRfd2ViX3NldHRpbmdzX29mZmxpbmVhcHBjYWNoZSk6CisgICAgICAgICh0ZXN0X3dlYmtp
dF93ZWJfc2V0dGluZ3NfbG9jYWxzdG9yYWdlKToKKyAgICAgICAgKHRlc3Rfd2Via2l0X3dlYl9z
ZXR0aW5nc19kYXRhYmFzZSk6CisgICAgICAgICh0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3NfeHNz
YXVkaXRvcik6CisgICAgICAgICh0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3NfZnJhbWVmbGF0dGVy
aW5nKToKKyAgICAgICAgKHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc19wbHVnaW5zKToKKyAgICAg
ICAgKHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc19qYXZhKToKKyAgICAgICAgKHRlc3Rfd2Via2l0
X3dlYl9zZXR0aW5nc19hdXRvb3BlbndpbmRvdyk6CisgICAgICAgICh0ZXN0X3dlYmtpdF93ZWJf
c2V0dGluZ3NfaHlwZXJsaW5rYXVkaXRpbmcpOgorICAgICAgICAobWFpbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mmd0ay5oOgorCiAyMDExLTA5LTE3ICBNaWhhaSBQYXJw
YXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50
IEJhY2tGb3J3YXJkTGlzdC1yZWxhdGVkIG1ldGhvZHMgYXJlIHVuc3VlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbQppbmRleCA4YmJhYTc5Li4yMGNjMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtNzAs
NiArNzAsNyBAQCBsaWJ3ZWJraXQyZ3RraW5jbHVkZWRpciA9ICQobGlid2Via2l0Z3RraW5jbHVk
ZWRpcikvd2Via2l0MgogbGlid2Via2l0Mmd0a2luY2x1ZGVfSEVBREVSUyA9IFwKIAkkKFdlYktp
dDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaCBcCiAJJChXZWJLaXQyKS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAorCSQoV2ViS2l0MikvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oCiAKIGxpYndlYmtpdGd0a2luY2x1ZGVfSEVBREVSUyAr
PSBcCkBAIC00NTQsNiArNDU1LDggQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpP
Ul9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgXAorCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcCBcCisJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBcCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuaCBcCkBAIC05ODcsNyArOTkw
LDggQEAgQ0xFQU5GSUxFUyArPSBcCiAjIFVuaXQgdGVzdHMKIFRFU1RfUFJPR1MgKz0gXAogCVBy
b2dyYW1zL3VuaXR0ZXN0cy93ZWJraXQyL3Rlc3R3ZWJjb250ZXh0IFwKLQlQcm9ncmFtcy91bml0
dGVzdHMvd2Via2l0Mi90ZXN0d2VidmlldworCVByb2dyYW1zL3VuaXR0ZXN0cy93ZWJraXQyL3Rl
c3R3ZWJ2aWV3IFwKKwlQcm9ncmFtcy91bml0dGVzdHMvd2Via2l0Mi90ZXN0d2Vic2V0dGluZ3MK
IAogbm9pbnN0X1BST0dSQU1TICs9ICQoVEVTVF9QUk9HUykKIHdlYmtpdDJfdGVzdHNfY2ZsYWdz
ID0gXApAQCAtMTAyMyw2ICsxMDI3LDExIEBAIFByb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rl
c3R3ZWJ2aWV3X0NGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19jZmxhZ3MpCiBQcm9ncmFtc191bml0
dGVzdHNfd2Via2l0Ml90ZXN0d2Vidmlld19MREFERCA9ICQod2Via2l0Ml90ZXN0c19sZGFkZCkK
IFByb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJ2aWV3X0xERkxBR1MgPSAkKHdlYmtp
dDJfdGVzdHNfbGRmbGFncykKIAorUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnNl
dHRpbmdzX1NPVVJDRVMgPSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90
ZXN0d2Vic2V0dGluZ3MuYworUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnNldHRp
bmdzX0NGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19jZmxhZ3MpCitQcm9ncmFtc191bml0dGVzdHNf
d2Via2l0Ml90ZXN0d2Vic2V0dGluZ3NfTERBREQgPSAkKHdlYmtpdDJfdGVzdHNfbGRhZGQpCitQ
cm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0d2Vic2V0dGluZ3NfTERGTEFHUyA9ICQod2Vi
a2l0Ml90ZXN0c19sZGZsYWdzKQorCiBESVNUQ0xFQU5GSUxFUyArPSBcCiAJJCh0b3BfYnVpbGRk
aXIpL1dlYktpdDIvd2Via2l0Mmd0ay1AV0VCS0lUR1RLX0FQSV9WRVJTSU9OQC5wYwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHbG9iYWxzUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2xvYmFsc1By
aXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2UyOWIzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2xv
YmFsc1ByaXZhdGUuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3
LCAyMDA4LCAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggSmFuIE1pY2hhZWwgQy4gQWxvbnpvCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFi
b3JhIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgorICogUG9ydGlvbnMg
Q29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaWZuZGVmIFdlYktpdEdsb2JhbHNQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0R2xv
YmFsc1ByaXZhdGVfaAorCisjaW5jbHVkZSA8Z2xpYi5oPgorCisjZGVmaW5lIFdFQktJVF9QQVJB
TV9SRUFEQUJMRSAoKEdQYXJhbUZsYWdzKShHX1BBUkFNX1JFQURBQkxFIHwgR19QQVJBTV9TVEFU
SUNfTkFNRSB8IEdfUEFSQU1fU1RBVElDX05JQ0sgfCBHX1BBUkFNX1NUQVRJQ19CTFVSQikpCisj
ZGVmaW5lIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgKChHUGFyYW1GbGFncykoR19QQVJBTV9SRUFE
V1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19OQU1FIHwgR19QQVJBTV9TVEFUSUNfTklDSyB8IEdfUEFS
QU1fU1RBVElDX0JMVVJCKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZGRiYjJkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcApAQCAtMCwwICsxLDMx
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlh
bkBpbWVuZGlvLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9s
Z2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWljaGFl
bCBBbG9uem8KKyAqIENvcHlyaWdodCAoQykgMjAwOSBNb3ZpYWwgQ3JlYXRpdmUgVGVjaG5vbG9n
aWVzIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBJZ2FsaWEgUy5MLgorICogUG9ydGlvbnMg
Q29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViU2V0dGluZ3Mu
aCIKKworI2luY2x1ZGUgIldlYktpdEdsb2JhbHNQcml2YXRlLmgiCisjaW5jbHVkZSA8V2ViS2l0
Mi9XS1ByZWZlcmVuY2VzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1R5cGUuaD4KKyNpbmNsdWRl
IDxnbGliL2dpMThuLWxpYi5oPgorCisKK3N0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRl
IHsKKyAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzOworfTsKKworLyoqCisgKiBTRUNU
SU9OOndlYmtpdHdlYnNldHRpbmdzCisgKiBAc2hvcnRfZGVzY3JpcHRpb246IENvbnRyb2wgdGhl
IGJlaGF2aW91ciBvZiBhICNXZWJLaXRXZWJWaWV3CisgKgorICogI1dlYktpdFdlYlNldHRpbmdz
IGNhbiBiZSBhcHBsaWVkIHRvIGEgI1dlYktpdFdlYlZpZXcgdG8gY29udHJvbCB0ZXh0IGVuY29k
aW5nLCAKKyAqIGNvbG9yLCBmb250IHNpemVzLCBwcmludGluZyBtb2RlLCBzY3JpcHQgc3VwcG9y
dCwgbG9hZGluZyBvZiBpbWFnZXMgYW5kIHZhcmlvdXMgb3RoZXIgdGhpbmdzLiAKKyAqIEFmdGVy
IGNyZWF0aW9uLCBhICNXZWJLaXRXZWJTZXR0aW5ncyBvYmplY3QgY29udGFpbnMgZGVmYXVsdCBz
ZXR0aW5ncy4gCisgKgorICogPGluZm9ybWFsZXhhbXBsZT48cHJvZ3JhbWxpc3Rpbmc+CisgKiAv
PCEtLSAtLT4qIENyZWF0ZSBhIG5ldyB3ZWJzZXR0aW5ncyBhbmQgZGlzYWJsZSBqYXZhIHNjcmlw
dCAqPCEtLSAtLT4vCisgKiBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2Vi
X3NldHRpbmdzX25ldyAoKTsKKyAqIGdfb2JqZWN0X3NldCAoR19PQkpFQ1Qoc2V0dGluZ3MpLCAi
ZW5hYmxlLXNjcmlwdHMiLCBGQUxTRSwgTlVMTCk7CisgKgorICogLzwhLS0gLS0+KiBBcHBseSB0
aGUgcmVzdWx0ICo8IS0tIC0tPi8KKyAqIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MgKFdF
QktJVF9XRUJfVklFVyhteV93ZWJ2aWV3KSwgc2V0dGluZ3MpOworICogPC9wcm9ncmFtbGlzdGlu
Zz48L2luZm9ybWFsZXhhbXBsZT4KKyAqLworCisKK0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViU2V0
dGluZ3MsIHdlYmtpdF93ZWJfc2V0dGluZ3MsIEdfVFlQRV9PQkpFQ1QpCisKK2VudW0geworICAg
IFBST1BfMCwKKworICAgIFBST1BfRU5BQkxFX1NDUklQVFMsCisgICAgUFJPUF9BVVRPX0xPQURf
SU1BR0VTLAorICAgIFBST1BfTE9BRF9JQ09OX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRiwKKyAg
ICBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRSwKKyAgICBQUk9QX0VO
QUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFLAorICAgIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNF
LAorICAgIFBST1BfRU5BQkxFX1hTU19BVURJVE9SLAorICAgIFBST1BfRU5BQkxFX0ZSQU1FX0ZM
QVRURU5JTkcsCisgICAgUFJPUF9FTkFCTEVfUExVR0lOUywKKyAgICBQUk9QX0VOQUJMRV9KQVZB
LAorICAgIFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFksCisg
ICAgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HLAorfTsKKworCitzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3NldHRpbmdzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCk7CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOworCitz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKTsKKwor
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFdlYlNldHRp
bmdzQ2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ29iamVjdF9jbGFzcyA9IEdf
T0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IHdlYmtp
dF93ZWJfc2V0dGluZ3NfZmluYWxpemU7CisgICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5
ID0gd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcHJvcGVydHk7CisgICAgZ29iamVjdF9jbGFzcy0+
Z2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfcHJvcGVydHk7CisKKyAgICBH
UGFyYW1GbGFncyBmbGFncyA9IChHUGFyYW1GbGFncykoV0VCS0lUX1BBUkFNX1JFQURXUklURSB8
IEdfUEFSQU1fQ09OU1RSVUNUKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfRU5BQkxFX1NDUklQVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJlbmFibGUtc2NyaXB0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
KCJFbmFibGUgU2NyaXB0cyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XygiRW5hYmxlIGVtYmVkZGVkIHNjcmlwdGluZyBsYW5ndWFnZXMuIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxhZ3MpKTsKKyAgICAKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
Uk9QX0FVVE9fTE9BRF9JTUFHRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJhdXRvLWxvYWQtaW1hZ2VzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF8oIkF1dG8gTG9hZCBJbWFnZXMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF8oIkxvYWQgaW1hZ2VzIGF1dG9tYXRpY2FsbHkuIiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ3MpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29i
amVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfTE9B
RF9JQ09OX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImxvYWQtaWNvbi1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWYiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiTG9hZCBTaXRlIEljb24gaWdub3Jp
bmcgaW1hZ2UgbG9hZCBwcmVmZXJlbmNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfKCJXaGV0aGUgdG8gbG9hZCBzaXRlIGljb24gaWdub3JpbmcgaW1hZ2UgbG9hZCBw
cmVmZXJlbmNlLiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworICAgIAorICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJ
Q0FUSU9OX0NBQ0hFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJh
bV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
KCJFbmFibGUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8g
ZW5hYmxlIG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7
CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9IVE1MNV9MT0NB
TF9TVE9SQUdFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9z
cGVjX2Jvb2xlYW4oImVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBIVE1M
NSBMb2NhbCBTdG9yYWdlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBMb2NhbCBTdG9y
YWdlIHN1cHBvcnQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh0bWw1LWRhdGFi
YXNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF8oIkVuYWJsZSBIVE1MNSBEYXRhYmFzZSIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFibGUg
SFRNTDUgZGF0YWJhc2Ugc3VwcG9ydCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUteHNz
LWF1ZGl0b3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXygiRW5hYmxlIFhTUyBBdWRpdG9yIiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJs
ZSB0aGUgWFNTIGF1ZGl0b3IiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisKKyAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVOSU5HLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1m
cmFtZS1mbGF0dGVuaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBGcmFtZSBGbGF0dGVuaW5nIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0
aGVyIHRvIGVuYWJsZSBGcmFtZSBGbGF0dGVuaW5nIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9QTFVHSU5TLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5hYmxlLXBsdWdpbnMiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIFBsdWdpbnMiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBlbWJlZGRlZCBwbHVnaW4g
b2JqZWN0cy4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfSkFWQSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtamF2YSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
KCJFbmFibGUgSmF2YSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXygiV2hldGhlciBKYXZhIHN1cHBvcnQgc2hvdWxkIGJlIGVuYWJs
ZWQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbGFncykpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UFJPUF9KQVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJqYXZhc2Ny
aXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxseSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJKYXZhU2NyaXB0IGNhbiBv
cGVuIHdpbmRvd3MgYXV0b21hdGljYWxseSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciBKYXZhU2NyaXB0IGNhbiBv
cGVuIHdpbmRvd3MgYXV0b21hdGljYWxseSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigi
ZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSHlwZXJsaW5rIEF1ZGl0aW5n
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfKCJXaGV0aGVyIDxhIHBpbmc+IHNob3VsZCBiZSBhYmxlIHRvIHNlbmQgcGluZ3MiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFncykpOworCit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
aW5pdChXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MpCit7CisgICAgd2ViU2V0dGluZ3Mt
PnByaXYgPSBuZXcgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlOworICAgIHdlYlNldHRpbmdzLT5w
cml2LT5wcmVmZXJlbmNlcyA9IFdLUHJlZmVyZW5jZXNDcmVhdGUoKTsKK30KKworc3RhdGljIHZv
aWQgd2Via2l0X3dlYl9zZXR0aW5nc19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAg
ZGVsZXRlIFdFQktJVF9XRUJfU0VUVElOR1Mob2JqZWN0KS0+cHJpdjsKKyAgICBHX09CSkVDVF9D
TEFTUyh3ZWJraXRfd2ViX3NldHRpbmdzX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KEdPYmpl
Y3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3Bl
YyogcHNwZWMpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzID0gV0VCS0lU
X1dFQl9TRVRUSU5HUyhvYmplY3QpOworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJp
diA9IHdlYlNldHRpbmdzLT5wcml2OworCisgICAgc3dpdGNoKHByb3BfaWQpIHsKKyAgICBjYXNl
IFBST1BfRU5BQkxFX1NDUklQVFM6CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhU2NyaXB0
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1
ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVVUT19MT0FEX0lNQUdFUzoKKyAg
ICAgICAgV0tQcmVmZXJlbmNlc1NldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShwcml2LT5wcmVm
ZXJlbmNlcywgKGJvb2wpZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfTE9BRF9JQ09OX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRjoKKyAg
ICAgICAgV0tQcmVmZXJlbmNlc1NldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQ
cmVmZXJlbmNlKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbClnX3ZhbHVlX2dldF9ib29sZWFuKHZh
bHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJf
QVBQTElDQVRJT05fQ0FDSEU6CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRPZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWdfdmFsdWVfZ2V0
X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9I
VE1MNV9MT0NBTF9TVE9SQUdFOgorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0TG9jYWxTdG9yYWdl
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1
ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNF
OgorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJl
bmNlcywgKGJvb2wpZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBST1BfRU5BQkxFX1hTU19BVURJVE9SOgorICAgICAgICBXS1ByZWZlcmVuY2Vz
U2V0WFNTQXVkaXRvckVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWdfdmFsdWVfZ2V0
X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9G
UkFNRV9GTEFUVEVOSU5HOgorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RnJhbWVGbGF0dGVuaW5n
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1
ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1BMVUdJTlM6CisgICAg
ICAgIFdLUHJlZmVyZW5jZXNTZXRQbHVnaW5zRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJv
b2wpZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfRU5BQkxFX0pBVkE6CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhRW5hYmxlZChw
cml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FV
VE9NQVRJQ0FMTFk6CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhU2NyaXB0Q2FuT3Blbldp
bmRvd3NBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbClnX3ZhbHVlX2dldF9i
b29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFlQ
RVJMSU5LX0FVRElUSU5HOgorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0SHlwZXJsaW5rQXVkaXRp
bmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbClnX3ZhbHVlX2dldF9ib29sZWFuKHZh
bHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dB
Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9w
cm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSogdmFsdWUsIEdQ
YXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncyA9
IFdFQktJVF9XRUJfU0VUVElOR1Mob2JqZWN0KTsKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZh
dGUqIHByaXYgPSB3ZWJTZXR0aW5ncy0+cHJpdjsKKworICAgIHN3aXRjaCAocHJvcF9pZCkgewor
ICAgIGNhc2UgUFJPUF9FTkFCTEVfU0NSSVBUUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bih2YWx1ZSwgV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHByaXYtPnByZWZlcmVu
Y2VzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9BVVRPX0xPQURfSU1BR0VTOgor
ICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBXS1ByZWZlcmVuY2VzR2V0TG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9MT0FEX0lDT05fSUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGOgorICAgICAg
ICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBXS1ByZWZlcmVuY2VzR2V0TG9hZHNTaXRlSWNv
bnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2UocHJpdi0+cHJlZmVyZW5jZXMpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElP
Tl9DQUNIRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgV0tQcmVmZXJlbmNl
c0dldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcykp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JB
R0U6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIFdLUHJlZmVyZW5jZXNHZXRM
b2NhbFN0b3JhZ2VFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0U6CisgICAgICAgIGdfdmFsdWVfc2V0
X2Jvb2xlYW4odmFsdWUsIFdLUHJlZmVyZW5jZXNHZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnBy
ZWZlcmVuY2VzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfWFNTX0FV
RElUT1I6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIFdLUHJlZmVyZW5jZXNH
ZXRYU1NBdWRpdG9yRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcykpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRURU5JTkc6CisgICAgICAgIGdfdmFsdWVf
c2V0X2Jvb2xlYW4odmFsdWUsIFdLUHJlZmVyZW5jZXNHZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVk
KHByaXYtPnByZWZlcmVuY2VzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFC
TEVfUExVR0lOUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgV0tQcmVmZXJl
bmNlc0dldFBsdWdpbnNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bih2YWx1ZSwgV0tQcmVmZXJlbmNlc0dldEphdmFFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9KQVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRP
V1NfQVVUT01BVElDQUxMWToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgV0tQ
cmVmZXJlbmNlc0dldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkocHJpdi0+
cHJlZmVyZW5jZXMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IWVBF
UkxJTktfQVVESVRJTkc6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIFdLUHJl
ZmVyZW5jZXNHZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZB
TElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19uZXc6CisgKgorICogQ3Jl
YXRlcyBhIG5ldyAjV2ViS2l0V2ViU2V0dGluZ3MgaW5zdGFuY2Ugd2l0aCBkZWZhdWx0IHZhbHVl
cy4gSXQgbXVzdAorICogYmUgbWFudWFsbHkgYXR0YWNoZWQgdG8gYSBXZWJWaWV3LgorICoKKyAq
IFJldHVybnM6IGEgbmV3ICNXZWJLaXRXZWJTZXR0aW5ncyBpbnN0YW5jZQorICoqLworV2ViS2l0
V2ViU2V0dGluZ3MqIHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCkKK3sKKyAgICByZXR1cm4gV0VC
S0lUX1dFQl9TRVRUSU5HUyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTLCBO
VUxMKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViU2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWQ0
NWY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViU2V0dGluZ3MuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA4IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEphbiBNaWNoYWVsIEFsb256byA8am1hbG9uem9AZ21haWwuY29tCisgKiBQ
b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0V2ViU2V0dGluZ3NfaAorI2RlZmluZSBXZWJL
aXRXZWJTZXR0aW5nc19oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUg
PGdsaWItb2JqZWN0Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9X
RUJfU0VUVElOR1MgICAgICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfdHlwZSgpKQor
I2RlZmluZSBXRUJLSVRfV0VCX1NFVFRJTkdTKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNL
X0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0V2Vi
U2V0dGluZ3MpKQorI2RlZmluZSBXRUJLSVRfV0VCX1NFVFRJTkdTX0NMQVNTKGtsYXNzKSAgICAo
R19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5H
UywgV2ViS2l0V2ViU2V0dGluZ3NDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfU0VUVElO
R1Mob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lU
X1RZUEVfV0VCX1NFVFRJTkdTKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9TRVRUSU5HU19DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9X
RUJfU0VUVElOR1MpKQorI2RlZmluZSBXRUJLSVRfV0VCX1NFVFRJTkdTX0dFVF9DTEFTUyhvYmop
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9TRVRU
SU5HUywgV2ViS2l0V2ViU2V0dGluZ3NDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJTZXR0aW5ncyBXZWJLaXRXZWJTZXR0aW5nczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJT
ZXR0aW5nc0NsYXNzIFdlYktpdFdlYlNldHRpbmdzQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0V2ViU2V0dGluZ3NQcml2YXRlIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZTsKKworc3RydWN0
IF9XZWJLaXRXZWJTZXR0aW5ncyB7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAg
ICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdl
YlNldHRpbmdzQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICAv
KiBQYWRkaW5nIGZvciBmdXR1cmUgZXhwYW5zaW9uICovCisgICAgdm9pZCAoKl93ZWJraXRfcmVz
ZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7Cisg
ICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRf
cmVzZXJ2ZWQ0KSAodm9pZCk7Cit9OworCitXS19FWFBPUlQgR1R5cGUKK3dlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X3R5cGUgICAgICAgICAgKHZvaWQpOworCitXS19FWFBPUlQgV2ViS2l0V2ViU2V0
dGluZ3MgKgord2Via2l0X3dlYl9zZXR0aW5nc19uZXcgICAgICAgICAgICAgICAodm9pZCk7CisK
K0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiB3ZWJraXR3ZWJzZXR0aW5nc19oICovCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0dGlu
Z3MuYyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0
aW5ncy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZDQ2NjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0
d2Vic2V0dGluZ3MuYwpAQCAtMCwwICsxLDIwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBKYW4gTWljaGFlbCBBbG9uem8KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rv
cm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGdsaWIu
aD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mmd0ay5oPgorCitzdGF0
aWMgdm9pZCB0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2NyaXB0cyh2b2lkKQoreworICAgIFdl
YktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisK
KyAgICAvLyBTY3JpcHRzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdAorICAgIGdib29sZWFuIHNjcmlw
dHMgPSBGQUxTRTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtc2NyaXB0cyIs
ICZzY3JpcHRzLCBOVUxMKTsKKyAgICBnX2Fzc2VydChzY3JpcHRzKTsKKyAgICBnX29iamVjdF9z
ZXQoc2V0dGluZ3MsICJlbmFibGUtc2NyaXB0cyIsIEZBTFNFLCBOVUxMKTsKKyAgICBnX29iamVj
dF9nZXQoc2V0dGluZ3MsICJlbmFibGUtc2NyaXB0cyIsICZzY3JpcHRzLCBOVUxMKTsKKyAgICBn
X2Fzc2VydCghc2NyaXB0cyk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3Rfd2Via2l0X3dlYl9zZXR0
aW5nc19hdXRvbG9hZCh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9
IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBCeSBkZWZhdWx0IGF1dG8tbG9h
ZC1pbWFnZSBpcyB0cnVlCisgICAgZ2Jvb2xlYW4gYXV0b0xvYWRJbWFnZXMgPSBGQUxTRTsKKyAg
ICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJhdXRvLWxvYWQtaW1hZ2VzIiwgJmF1dG9Mb2FkSW1h
Z2VzLCBOVUxMKTsKKyAgICBnX2Fzc2VydChhdXRvTG9hZEltYWdlcyk7CisgICAgZ19vYmplY3Rf
c2V0KHNldHRpbmdzLCAiYXV0by1sb2FkLWltYWdlcyIsIEZBTFNFLCBOVUxMKTsKKyAgICBnX29i
amVjdF9nZXQoc2V0dGluZ3MsICJhdXRvLWxvYWQtaW1hZ2VzIiwgJmF1dG9Mb2FkSW1hZ2VzLCBO
VUxMKTsKKyAgICBnX2Fzc2VydCghYXV0b0xvYWRJbWFnZXMpOworfQorCitzdGF0aWMgdm9pZCB0
ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3NfbG9hZGljb25pZ25vcmluZ2ltYWdlbG9hZHByZWYodm9p
ZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRp
bmdzX25ldygpOworCisgICAgLy8gbG9hZC1pY29uLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZiBp
cyBmYWxzZSBieSBkZWZhdWx0CisgICAgZ2Jvb2xlYW4gbG9hZEljb24gPSBGQUxTRTsKKyAgICBn
X29iamVjdF9nZXQoc2V0dGluZ3MsICJsb2FkLWljb24taWdub3JpbmctaW1hZ2UtbG9hZC1wcmVm
IiwgJmxvYWRJY29uLCBOVUxMKTsKKyAgICBnX2Fzc2VydCghbG9hZEljb24pOworICAgIGdfb2Jq
ZWN0X3NldChzZXR0aW5ncywgImxvYWQtaWNvbi1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWYiLCBU
UlVFLCBOVUxMKTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJsb2FkLWljb24taWdub3Jp
bmctaW1hZ2UtbG9hZC1wcmVmIiwgJmxvYWRJY29uLCBOVUxMKTsKKyAgICBnX2Fzc2VydChsb2Fk
SWNvbik7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc19vZmZsaW5l
YXBwY2FjaGUodm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJr
aXRfd2ViX3NldHRpbmdzX25ldygpOworICAgIAorICAgIC8vIE9mZmxpbmUgYXBwbGljYXRpb24g
Y2FjaGUgaXMgZmFsc2UgYnkgZGVmYXVsdAorICAgIGdib29sZWFuIG9mZmxpbmVBcHBDYWNoZSA9
IEZBTFNFOworICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywgImVuYWJsZS1vZmZsaW5lLXdlYi1h
cHBsaWNhdGlvbi1jYWNoZSIsICZvZmZsaW5lQXBwQ2FjaGUsIE5VTEwpOworICAgIGdfYXNzZXJ0
KCFvZmZsaW5lQXBwQ2FjaGUpOworICAgIGdfb2JqZWN0X3NldChzZXR0aW5ncywgImVuYWJsZS1v
ZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZSIsIFRSVUUsIE5VTEwpOworICAgIGdfb2JqZWN0
X2dldChzZXR0aW5ncywgImVuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZSIsICZv
ZmZsaW5lQXBwQ2FjaGUsIE5VTEwpOworICAgIGdfYXNzZXJ0KG9mZmxpbmVBcHBDYWNoZSk7Cit9
CisKK3N0YXRpYyB2b2lkIHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc19sb2NhbHN0b3JhZ2Uodm9p
ZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRp
bmdzX25ldygpOworCisgICAgLy8gTG9jYWwgc3RvcmFnZSBpcyBlbmFibGUgYnkgZGVmYXVsdAor
ICAgIGdib29sZWFuIGxvY2FsU3RvcmFnZSA9IEZBTFNFOworICAgIGdfb2JqZWN0X2dldChzZXR0
aW5ncywgImVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlIiwgJmxvY2FsU3RvcmFnZSwgTlVMTCk7
CisgICAgZ19hc3NlcnQobG9jYWxTdG9yYWdlKTsKKyAgICBnX29iamVjdF9zZXQoc2V0dGluZ3Ms
ICJlbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZSIsIEZBTFNFLCBOVUxMKTsKKyAgICBnX29iamVj
dF9nZXQoc2V0dGluZ3MsICJlbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZSIsICZsb2NhbFN0b3Jh
Z2UsIE5VTEwpOworICAgIGdfYXNzZXJ0KCFsb2NhbFN0b3JhZ2UpOworfQorCitzdGF0aWMgdm9p
ZCB0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3NfZGF0YWJhc2Uodm9pZCkKK3sKKyAgICBXZWJLaXRX
ZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAg
Ly8gSFRNTDUgZGF0YWJhc2UgaXMgZW5hYmxlZCBieSBkZWZhdWx0CisgICAgZ2Jvb2xlYW4gZGF0
YWJhc2UgPSBGQUxTRTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtaHRtbDUt
ZGF0YWJhc2UiLCAmZGF0YWJhc2UsIE5VTEwpOworICAgIGdfYXNzZXJ0KGRhdGFiYXNlKTsKKyAg
ICBnX29iamVjdF9zZXQoc2V0dGluZ3MsICJlbmFibGUtaHRtbDUtZGF0YWJhc2UiLCBGQUxTRSwg
TlVMTCk7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLWh0bWw1LWRhdGFiYXNl
IiwgJmRhdGFiYXNlLCBOVUxMKTsKKyAgICBnX2Fzc2VydCghZGF0YWJhc2UpOworfQorCitzdGF0
aWMgdm9pZCB0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3NfeHNzYXVkaXRvcih2b2lkKQoreworICAg
IFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7
CisKKyAgICAvLyBYU1MgQXVkaXRvciBpcyBlbmFibGVkIGJ5IGRlZmF1bHQKKyAgICBnYm9vbGVh
biB4c3NhdWRpdG9yID0gRkFMU0U7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxl
LXhzcy1hdWRpdG9yIiwgJnhzc2F1ZGl0b3IsIE5VTEwpOworICAgIGdfYXNzZXJ0KHhzc2F1ZGl0
b3IpOworICAgIGdfb2JqZWN0X3NldChzZXR0aW5ncywgImVuYWJsZS14c3MtYXVkaXRvciIsIEZB
TFNFLCBOVUxMKTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUteHNzLWF1ZGl0
b3IiLCAmeHNzYXVkaXRvciwgTlVMTCk7CisgICAgZ19hc3NlcnQoIXhzc2F1ZGl0b3IpOworfQor
CitzdGF0aWMgdm9pZCB0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3NfZnJhbWVmbGF0dGVyaW5nKHZv
aWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0
aW5nc19uZXcoKTsKKworICAgIC8vIEZyYW1lIGZsYXR0ZXJpbmcgaXMgZGlzYWJsZWQgYnkgZGVm
YXVsdAorICAgIGdib29sZWFuIGZyYW1lZmxhdHRlcmluZyA9IEZBTFNFOworICAgIGdfb2JqZWN0
X2dldChzZXR0aW5ncywgImVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIiwgJmZyYW1lZmxhdHRlcmlu
ZywgTlVMTCk7CisgICAgZ19hc3NlcnQoIWZyYW1lZmxhdHRlcmluZyk7CisgICAgZ19vYmplY3Rf
c2V0KHNldHRpbmdzLCAiZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmciLCBUUlVFLCBOVUxMKTsKKyAg
ICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtZnJhbWUtZmxhdHRlbmluZyIsICZmcmFt
ZWZsYXR0ZXJpbmcsIE5VTEwpOworICAgIGdfYXNzZXJ0KGZyYW1lZmxhdHRlcmluZyk7Cit9CisK
K3N0YXRpYyB2b2lkIHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc19wbHVnaW5zKHZvaWQpCit7Cisg
ICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXco
KTsKKworICAgIC8vIFBsdWdpbnMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdAorICAgIGdib29sZWFu
IHBsdWdpbnMgPSBGQUxTRTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtcGx1
Z2lucyIsICZwbHVnaW5zLCBOVUxMKTsKKyAgICBnX2Fzc2VydChwbHVnaW5zKTsKKyAgICBnX29i
amVjdF9zZXQoc2V0dGluZ3MsICJlbmFibGUtcGx1Z2lucyIsIEZBTFNFLCBOVUxMKTsKKyAgICBn
X29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtcGx1Z2lucyIsICZwbHVnaW5zLCBOVUxMKTsK
KyAgICBnX2Fzc2VydCghcGx1Z2lucyk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3Rfd2Via2l0X3dl
Yl9zZXR0aW5nc19qYXZhKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdz
ID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEphdmEgaXMgZW5hYmxlZCBi
eSBkZWZhdWx0CisgICAgZ2Jvb2xlYW4gamF2YSA9IEZBTFNFOworICAgIGdfb2JqZWN0X2dldChz
ZXR0aW5ncywgImVuYWJsZS1qYXZhIiwgJmphdmEsIE5VTEwpOworICAgIGdfYXNzZXJ0KGphdmEp
OworICAgIGdfb2JqZWN0X3NldChzZXR0aW5ncywgImVuYWJsZS1qYXZhIiwgRkFMU0UsIE5VTEwp
OworICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywgImVuYWJsZS1qYXZhIiwgJmphdmEsIE5VTEwp
OworICAgIGdfYXNzZXJ0KCFqYXZhKTsKK30KKworc3RhdGljIHZvaWQgdGVzdF93ZWJraXRfd2Vi
X3NldHRpbmdzX2F1dG9vcGVud2luZG93KHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3Mg
KnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEJ5IGRlZmF1
bHQsIEphdmFTY3JpcHQgY2FuIG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IGlzIGVuYWJsZWQu
CisgICAgZ2Jvb2xlYW4gYXV0b09wZW5XaW5kb3cgPSBGQUxTRTsKKyAgICBnX29iamVjdF9nZXQo
c2V0dGluZ3MsICJqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxseSIsICZh
dXRvT3BlbldpbmRvdywgTlVMTCk7CisgICAgZ19hc3NlcnQoYXV0b09wZW5XaW5kb3cpOworICAg
IGdfb2JqZWN0X3NldChzZXR0aW5ncywgImphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRv
bWF0aWNhbGx5IiwgRkFMU0UsIE5VTEwpOworICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywgImph
dmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5IiwgJmF1dG9PcGVuV2luZG93
LCBOVUxMKTsKKyAgICBnX2Fzc2VydCghYXV0b09wZW5XaW5kb3cpOworfQorCitzdGF0aWMgdm9p
ZCB0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3NfaHlwZXJsaW5rYXVkaXRpbmcodm9pZCkKK3sKKyAg
ICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygp
OworCisgICAgLy8gQnkgZGVmYXVsdCBoeXBlciBsaW5rIGF1ZGl0aW5nIGlzIGVuYWJsZWQuCisg
ICAgZ2Jvb2xlYW4gaHlwZXJMaW5rQXVkaXQgPSBGQUxTRTsKKyAgICBnX29iamVjdF9nZXQoc2V0
dGluZ3MsICJlbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nIiwgJmh5cGVyTGlua0F1ZGl0LCBOVUxM
KTsKKyAgICBnX2Fzc2VydChoeXBlckxpbmtBdWRpdCk7CisgICAgZ19vYmplY3Rfc2V0KHNldHRp
bmdzLCAiZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyIsIEZBTFNFLCBOVUxMKTsKKyAgICBnX29i
amVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nIiwgJmh5cGVyTGlu
a0F1ZGl0LCBOVUxMKTsKKyAgICBnX2Fzc2VydCghaHlwZXJMaW5rQXVkaXQpOworfQorCitpbnQg
bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgZ190aHJlYWRfaW5pdChOVUxMKTsK
KyAgICBndGtfdGVzdF9pbml0KCZhcmdjLCAmYXJndiwgTlVMTCk7CisKKyAgICBnX3Rlc3RfYnVn
X2Jhc2UoImh0dHBzOi8vYnVncy53ZWJraXQub3JnLyIpOworICAgIGdfdGVzdF9hZGRfZnVuYygi
L3dlYmtpdC93ZWJzZXR0aW5ncy9zY3JpcHRzIiwgdGVzdF93ZWJraXRfd2ViX3NldHRpbmdzX3Nj
cmlwdHMpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJzZXR0aW5ncy9hdXRvbG9h
ZCIsIHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc19hdXRvbG9hZCk7CisgICAgZ190ZXN0X2FkZF9m
dW5jKCIvd2Via2l0L3dlYnNldHRpbmdzL2xvYWRpY29uaWdub3JpbmdpbWFnZWxvYWRwcmVmIiwg
dGVzdF93ZWJraXRfd2ViX3NldHRpbmdzX2xvYWRpY29uaWdub3JpbmdpbWFnZWxvYWRwcmVmKTsK
KyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vic2V0dGluZ3Mvb2ZmbGluZWFwcGNhY2hl
IiwgdGVzdF93ZWJraXRfd2ViX3NldHRpbmdzX29mZmxpbmVhcHBjYWNoZSk7CisgICAgZ190ZXN0
X2FkZF9mdW5jKCIvd2Via2l0L3dlYnNldHRpbmdzL2xvY2Fsc3RvcmFnZSIsIHRlc3Rfd2Via2l0
X3dlYl9zZXR0aW5nc19sb2NhbHN0b3JhZ2UpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtp
dC93ZWJzZXR0aW5ncy9kYXRhYmFzZSIsIHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc19kYXRhYmFz
ZSk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnNldHRpbmdzL3hzc2F1ZGl0b3Ii
LCB0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3NfeHNzYXVkaXRvcik7CisgICAgZ190ZXN0X2FkZF9m
dW5jKCIvd2Via2l0L3dlYnNldHRpbmdzL2ZyYW1lZmxhdHRlcmluZyIsIHRlc3Rfd2Via2l0X3dl
Yl9zZXR0aW5nc19mcmFtZWZsYXR0ZXJpbmcpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtp
dC93ZWJzZXR0aW5ncy9wbHVnaW5zIiwgdGVzdF93ZWJraXRfd2ViX3NldHRpbmdzX3BsdWdpbnMp
OworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJzZXR0aW5ncy9qYXZhIiwgdGVzdF93
ZWJraXRfd2ViX3NldHRpbmdzX2phdmEpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93
ZWJzZXR0aW5ncy9hdXRvb3BlbndpbmRvdyIsIHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc19hdXRv
b3BlbndpbmRvdyk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnNldHRpbmdzL2h5
cGVybGlua2F1ZGl0aW5nIiwgdGVzdF93ZWJraXRfd2ViX3NldHRpbmdzX2h5cGVybGlua2F1ZGl0
aW5nKTsKKworICAgIHJldHVybiBnX3Rlc3RfcnVuICgpOworfQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyZ3RrLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyZ3RrLmgKaW5kZXggZGZlYmJiNC4uZTA4MTc1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mmd0ay5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJndGsuaApAQCAt
MjQsNSArMjQsNiBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViQ29udGV4dC5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlld0Jhc2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdFdlYlZpZXcuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlNldHRpbmdzLmg+CiAK
ICNlbmRpZiAvKiBfX1dFQktJVF9IX18gKi8KLS0gCjEuNy40LjEKCg==
</data>
<flag name="review"
          id="104689"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107971</attachid>
            <date>2011-09-20 00:04:52 -0700</date>
            <delta_ts>2011-09-20 05:54:32 -0700</delta_ts>
            <desc>WebKitWebSetting GTK+ API</desc>
            <filename>0001-WebKitWebSetting-GTK-API.patch</filename>
            <type>text/plain</type>
            <size>36755</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSBiMDlkZDhjYTZiYzY1OWM1ZjFkY2I1NDRiMmY1ZjhmYjQ1NWVhY2E2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogVHVlLCAyMCBTZXAgMjAxMSAxMjozMTozMSArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIFdl
YktpdFdlYlNldHRpbmcgR1RLKyBBUEkKCi0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDM2ICsrCiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKy0KIC4uLi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRHbG9iYWxzUHJpdmF0ZS5oICAgICAgIHwgICAzMiArKwogLi4uL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcCAgICAgICAgfCAgNDE5ICsrKysrKysrKysr
KysrKysrKysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5n
cy5oICB8ICAgNjUgKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRp
bmdzLmMgICAgICB8ICAyMDIgKysrKysrKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvd2Via2l0Mmd0ay5oICAgICAgfCAgICAxICsKIDcgZmlsZXMgY2hhbmdlZCwgNzY1IGlu
c2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2xvYmFsc1ByaXZhdGUuaAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRp
bmdzLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlNldHRpbmdzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYwoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBkYTQwNjkwLi5iZThkMjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDkt
MTkgIE5heWFuIEt1bWFyIEsgIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbR1RL
XSBBZGQgV2ViS2l0V2ViU2V0dGluZ3MgR1RLKyBBUEkncy4KKworICAgICAgICBXZWJLaXRXZWJT
ZXR0aW5ncyBHVEsrIG9iamVjdCBpcyBjcmVhdGVkIGFuZCBmaXJzdCBzZXQgb2YKKyAgICAgICAg
QVBJJ3MgYXJlIHdyaXR0ZW4gdG8gZ2V0IG9yIHNldCB0aGUgcHJvcGVydGllcyBvZiBXZWJLaXRX
ZWJTZXR0aW5ncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY4MzcxICAgICAgICAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEdsb2JhbHNQcml2YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3dlYmtpdDJndGsuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJTZXR0aW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5n
c19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfaW5pdCk6CisgICAg
ICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2ZpbmFsaXplKToKKyAgICAgICAgKHdlYmtpdF93ZWJf
c2V0dGluZ3Nfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYzogQWRkZWQuCisgICAg
ICAgICh0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2NyaXB0cyk6CisgICAgICAgICh0ZXN0X3dl
YmtpdF93ZWJfc2V0dGluZ3NfYXV0b2xvYWQpOgorICAgICAgICAodGVzdF93ZWJraXRfd2ViX3Nl
dHRpbmdzX2xvYWRpY29uaWdub3JpbmdpbWFnZWxvYWRwcmVmKToKKyAgICAgICAgKHRlc3Rfd2Vi
a2l0X3dlYl9zZXR0aW5nc19vZmZsaW5lYXBwY2FjaGUpOgorICAgICAgICAodGVzdF93ZWJraXRf
d2ViX3NldHRpbmdzX2xvY2Fsc3RvcmFnZSk6CisgICAgICAgICh0ZXN0X3dlYmtpdF93ZWJfc2V0
dGluZ3NfZGF0YWJhc2UpOgorICAgICAgICAodGVzdF93ZWJraXRfd2ViX3NldHRpbmdzX3hzc2F1
ZGl0b3IpOgorICAgICAgICAodGVzdF93ZWJraXRfd2ViX3NldHRpbmdzX2ZyYW1lZmxhdHRlcmlu
Zyk6CisgICAgICAgICh0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3NfcGx1Z2lucyk6CisgICAgICAg
ICh0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3NfamF2YSk6CisgICAgICAgICh0ZXN0X3dlYmtpdF93
ZWJfc2V0dGluZ3NfYXV0b29wZW53aW5kb3cpOgorICAgICAgICAodGVzdF93ZWJraXRfd2ViX3Nl
dHRpbmdzX2h5cGVybGlua2F1ZGl0aW5nKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJndGsuaDoKKwogMjAxMS0wOS0xOSAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEFsd2F5cyBlbmFibGUgRU5BQkxFKEVWRU5U
U09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCBkZTFlZjk3Li45ZjY0YWFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQpAQCAtNzAsNiArNzAsNyBAQCBsaWJ3ZWJraXQyZ3RraW5jbHVkZWRpciA9
ICQobGlid2Via2l0Z3RraW5jbHVkZWRpcikvd2Via2l0MgogbGlid2Via2l0Mmd0a2luY2x1ZGVf
SEVBREVSUyA9IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRl
eHQuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAor
CSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaCBcCiAJJChX
ZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oCiAKIGxpYndlYmtp
dGd0a2luY2x1ZGVfSEVBREVSUyArPSBcCkBAIC00NTQsNiArNDU1LDggQEAgbGlid2Via2l0Mmd0
a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJT
SU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNl
dHRpbmdzLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
U2V0dGluZ3MuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuaCBcCkBAIC05ODYsNyArOTg5LDggQEAgQ0xFQU5GSUxFUyArPSBcCiAjIFVuaXQgdGVzdHMK
IFRFU1RfUFJPR1MgKz0gXAogCVByb2dyYW1zL3VuaXR0ZXN0cy93ZWJraXQyL3Rlc3R3ZWJjb250
ZXh0IFwKLQlQcm9ncmFtcy91bml0dGVzdHMvd2Via2l0Mi90ZXN0d2VidmlldworCVByb2dyYW1z
L3VuaXR0ZXN0cy93ZWJraXQyL3Rlc3R3ZWJ2aWV3IFwKKwlQcm9ncmFtcy91bml0dGVzdHMvd2Vi
a2l0Mi90ZXN0d2Vic2V0dGluZ3MKIAogbm9pbnN0X1BST0dSQU1TICs9ICQoVEVTVF9QUk9HUykK
IHdlYmtpdDJfdGVzdHNfY2ZsYWdzID0gXApAQCAtMTAyMiw2ICsxMDI2LDExIEBAIFByb2dyYW1z
X3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJ2aWV3X0NGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19j
ZmxhZ3MpCiBQcm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0d2Vidmlld19MREFERCA9ICQo
d2Via2l0Ml90ZXN0c19sZGFkZCkKIFByb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJ2
aWV3X0xERkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfbGRmbGFncykKIAorUHJvZ3JhbXNfdW5pdHRl
c3RzX3dlYmtpdDJfdGVzdHdlYnNldHRpbmdzX1NPVVJDRVMgPSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYworUHJvZ3JhbXNfdW5pdHRlc3Rz
X3dlYmtpdDJfdGVzdHdlYnNldHRpbmdzX0NGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19jZmxhZ3Mp
CitQcm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0d2Vic2V0dGluZ3NfTERBREQgPSAkKHdl
YmtpdDJfdGVzdHNfbGRhZGQpCitQcm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0d2Vic2V0
dGluZ3NfTERGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19sZGZsYWdzKQorCiBESVNUQ0xFQU5GSUxF
UyArPSBcCiAJJCh0b3BfYnVpbGRkaXIpL1dlYktpdDIvd2Via2l0Mmd0ay1AV0VCS0lUR1RLX0FQ
SV9WRVJTSU9OQC5wYwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRHbG9iYWxzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0R2xvYmFsc1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi44N2UyOWIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0R2xvYmFsc1ByaXZhdGUuaApAQCAtMCwwICsxLDMyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0
aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggSmFuIE1pY2hhZWwgQy4gQWxvbnpvCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2Fs
aWEgUy5MLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdEdsb2JhbHNQcml2YXRl
X2gKKyNkZWZpbmUgV2ViS2l0R2xvYmFsc1ByaXZhdGVfaAorCisjaW5jbHVkZSA8Z2xpYi5oPgor
CisjZGVmaW5lIFdFQktJVF9QQVJBTV9SRUFEQUJMRSAoKEdQYXJhbUZsYWdzKShHX1BBUkFNX1JF
QURBQkxFIHwgR19QQVJBTV9TVEFUSUNfTkFNRSB8IEdfUEFSQU1fU1RBVElDX05JQ0sgfCBHX1BB
UkFNX1NUQVRJQ19CTFVSQikpCisjZGVmaW5lIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgKChHUGFy
YW1GbGFncykoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19OQU1FIHwgR19QQVJB
TV9TVEFUSUNfTklDSyB8IEdfUEFSQU1fU1RBVElDX0JMVVJCKSkKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIzMTY4NQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRp
bmdzLmNwcApAQCAtMCwwICsxLDQxOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDaHJp
c3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCBOdWFudGkgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBKYW4gTWljaGFlbCBBbG9uem8KKyAqIENvcHlyaWdodCAoQykgMjAwOSBNb3Zp
YWwgQ3JlYXRpdmUgVGVjaG5vbG9naWVzIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBJZ2Fs
aWEgUy5MLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViS2l0V2ViU2V0dGluZ3MuaCIKKworI2luY2x1ZGUgIldlYktpdEdsb2JhbHNQcml2YXRl
LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2VzLmg+CisjaW5jbHVkZSA8V2ViS2l0
Mi9XS1R5cGUuaD4KKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorCisKK3N0cnVjdCBfV2Vi
S2l0V2ViU2V0dGluZ3NQcml2YXRlIHsKKyAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2Vz
OworfTsKKworLyoqCisgKiBTRUNUSU9OOndlYmtpdHdlYnNldHRpbmdzCisgKiBAc2hvcnRfZGVz
Y3JpcHRpb246IENvbnRyb2wgdGhlIGJlaGF2aW91ciBvZiBhICNXZWJLaXRXZWJWaWV3CisgKgor
ICogI1dlYktpdFdlYlNldHRpbmdzIGNhbiBiZSBhcHBsaWVkIHRvIGEgI1dlYktpdFdlYlZpZXcg
dG8gY29udHJvbCB0ZXh0IGVuY29kaW5nLCAKKyAqIGNvbG9yLCBmb250IHNpemVzLCBwcmludGlu
ZyBtb2RlLCBzY3JpcHQgc3VwcG9ydCwgbG9hZGluZyBvZiBpbWFnZXMgYW5kIHZhcmlvdXMgb3Ro
ZXIgdGhpbmdzLiAKKyAqIEFmdGVyIGNyZWF0aW9uLCBhICNXZWJLaXRXZWJTZXR0aW5ncyBvYmpl
Y3QgY29udGFpbnMgZGVmYXVsdCBzZXR0aW5ncy4gCisgKgorICogPGluZm9ybWFsZXhhbXBsZT48
cHJvZ3JhbWxpc3Rpbmc+CisgKiAvPCEtLSAtLT4qIENyZWF0ZSBhIG5ldyB3ZWJzZXR0aW5ncyBh
bmQgZGlzYWJsZSBqYXZhIHNjcmlwdCAqPCEtLSAtLT4vCisgKiBXZWJLaXRXZWJTZXR0aW5ncyAq
c2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldyAoKTsKKyAqIGdfb2JqZWN0X3NldCAo
R19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXNjcmlwdHMiLCBGQUxTRSwgTlVMTCk7CisgKgor
ICogLzwhLS0gLS0+KiBBcHBseSB0aGUgcmVzdWx0ICo8IS0tIC0tPi8KKyAqIHdlYmtpdF93ZWJf
dmlld19zZXRfc2V0dGluZ3MgKFdFQktJVF9XRUJfVklFVyhteV93ZWJ2aWV3KSwgc2V0dGluZ3Mp
OworICogPC9wcm9ncmFtbGlzdGluZz48L2luZm9ybWFsZXhhbXBsZT4KKyAqLworCisKK0dfREVG
SU5FX1RZUEUoV2ViS2l0V2ViU2V0dGluZ3MsIHdlYmtpdF93ZWJfc2V0dGluZ3MsIEdfVFlQRV9P
QkpFQ1QpCisKK2VudW0geworICAgIFBST1BfMCwKKworICAgIFBST1BfRU5BQkxFX1NDUklQVFMs
CisgICAgUFJPUF9BVVRPX0xPQURfSU1BR0VTLAorICAgIFBST1BfTE9BRF9JQ09OX0lHTk9SSU5H
X0lNQUdFX0xPQURfUFJFRiwKKyAgICBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElP
Tl9DQUNIRSwKKyAgICBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFLAorICAgIFBST1Bf
RU5BQkxFX0hUTUw1X0RBVEFCQVNFLAorICAgIFBST1BfRU5BQkxFX1hTU19BVURJVE9SLAorICAg
IFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRURU5JTkcsCisgICAgUFJPUF9FTkFCTEVfUExVR0lOUywK
KyAgICBQUk9QX0VOQUJMRV9KQVZBLAorICAgIFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5E
T1dTX0FVVE9NQVRJQ0FMTFksCisgICAgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HLAor
fTsKKworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2ZpbmFsaXplKEdPYmplY3Qq
IG9iamVjdCk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcHNwZWMpOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9w
cm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSogdmFsdWUsIEdQ
YXJhbVNwZWMqIHBzcGVjKTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19jbGFz
c19pbml0KFdlYktpdFdlYlNldHRpbmdzQ2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFz
cyogZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBnb2JqZWN0X2Ns
YXNzLT5maW5hbGl6ZSA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfZmluYWxpemU7CisgICAgZ29iamVj
dF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcHJvcGVydHk7
CisgICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfcHJvcGVydHk7CisKKyAgICBHUGFyYW1GbGFncyBmbGFncyA9IChHUGFyYW1GbGFncykoV0VC
S0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKTsKKworICAgIC8qKgorICAg
ICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLXNjcmlwdHMKKyAgICAqCisgICAgKiBUaGlzIHBy
b3BlcnR5IG5lZWRzIHRvIGJlIHNldCB0byBlbmFibGUgdGhlIGV4ZWN1dGlvbiBvZiBzY3JpcHRz
CisgICAgKiAoSW5jbHVkaW5nIEphdmFzY3JpcHQpIHdpdGhpbiBhIHBhZ2UuCisgICAgKgorICAg
ICogU2luY2U6IDIuMAorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJP
UF9FTkFCTEVfU0NSSVBUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImVuYWJsZS1zY3JpcHRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8o
IkVuYWJsZSBTY3JpcHRzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
KCJFbmFibGUgZW1iZWRkZWQgc2NyaXB0aW5nIGxhbmd1YWdlcy4iKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczphdXRv
LWxvYWQtaW1hZ2VzCisgICAgKgorICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGltYWdlcyBzaG91
bGQgYmUgYXV0b21hdGljYWxseSBsb2FkZWQgb3Igbm90LgorICAgICogT24gZGV2aWNlcywgd2hl
cmUgbmV0d29yayBiYW5kd2lkdGggaXMgb2YgY29uY2VybiwgaXQgbWlnaHQgYmUKKyAgICAqIHVz
ZWZ1bCB0byB0dXJuIHRoaXMgcHJvcGVydHkgb2ZmLgorICAgICoKKyAgICAqIFNpbmNlOiAyLjAK
KyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFz
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfQVVUT19MT0FEX0lN
QUdFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19i
b29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF1dG8tbG9hZC1p
bWFnZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiQXV0byBMb2Fk
IEltYWdlcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiTG9hZCBp
bWFnZXMgYXV0b21hdGljYWxseS4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOwor
CisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczpsb2FkLWljb24taWdub3JpbmctaW1h
Z2UtbG9hZC1wcmVmCisgICAgKgorICAgICogQnkgZW5hYmxpbmcgdGhpcyBwcm9wZXJ0eSwgc2l0
ZSBpY29ucyAoZS5nLCBmYXZpY29uKSB3aWxsIGJlIGxvYWRlZAorICAgICogaXJyZXNwZWN0aXZl
IG9mIHRoZSB2YWx1ZSBvZiAnYXV0by1sb2FkLWltYWdlcycuCisgICAgKgorICAgICogU2luY2U6
IDIuMAorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0
X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9MT0FEX0lD
T05fSUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAibG9hZC1pY29uLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJMb2FkIFNpdGUgSWNvbiBpZ25vcmluZyBp
bWFnZSBsb2FkIHByZWZlcmVuY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF8oIldoZXRoZXIgdG8gbG9hZCBzaXRlIGljb24gaWdub3JpbmcgaW1hZ2UgbG9hZCBwcmVm
ZXJlbmNlLiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisg
ICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24tY2Fj
aGUKKyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBvZmZsaW5lIHdlYiBhcHBs
aWNhdGlvbiBjYWNoZSBzdXBwb3J0LiBPZmZsaW5lCisgICAgKiBXZWIgQXBwbGljYXRpb24gQ2Fj
aGUgZW5zdXJlcyB3ZWIgYXBwbGljYXRpb25zIGFyZSBhdmFpbGFibGUgZXZlbiB3aGVuCisgICAg
KiB0aGUgdXNlciBpcyBub3QgY29ubmVjdGVkIHRvIHRoZSBuZXR3b3JrLgorICAgICoKKyAgICAq
IFNpbmNlOiAyLjAKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Z29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1Bf
RU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1vZmZsaW5lLXdl
Yi1hcHBsaWNhdGlvbi1jYWNoZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24g
Y2FjaGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNh
Y2hlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRp
bmdzOmVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlOgorICAgICoKKyAgICAqIFdoZXRoZXIgdG8g
ZW5hYmxlIEhUTUw1IGxvY2FsU3RvcmFnZSBzdXBwb3J0LiBsb2NhbFN0b3JhZ2UgcHJvdmlkZXMK
KyAgICAqIHNpbXBsZSBzeW5jaHJvbm91cyBzdG9yYWdlIGFjY2Vzcy4KKyAgICAqCisgICAgKiBT
aW5jZTogMi4wCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdv
YmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VO
QUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF8oIkVuYWJsZSBIVE1MNSBMb2NhbCBTdG9yYWdlIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBI
VE1MNSBMb2NhbCBTdG9yYWdlIHN1cHBvcnQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoq
CisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtaHRtbDUtZGF0YWJhc2U6CisgICAgKgor
ICAgICogV2hldGhlciB0byBlbmFibGUgSFRNTDUgY2xpZW50LXNpZGUgU1FMIGRhdGFiYXNlIHN1
cHBvcnQuIENsaWVudC1zaWRlCisgICAgKiBTUUwgZGF0YWJhc2UgYWxsb3dzIHdlYiBwYWdlcyB0
byBzdG9yZSBzdHJ1Y3R1cmVkIGRhdGEgYW5kIGJlIGFibGUgdG8KKyAgICAqIHVzZSBTUUwgdG8g
bWFuaXB1bGF0ZSB0aGF0IGRhdGEgYXN5bmNocm9ub3VzbHkuCisgICAgKgorICAgICogU2luY2U6
IDIuMAorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0
X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVf
SFRNTDVfREFUQUJBU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3Bh
cmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh0bWw1LWRhdGFiYXNlIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBIVE1M
NSBEYXRhYmFzZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFibGUgSFRNTDUgZGF0YWJhc2Ugc3VwcG9y
dCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdz
OmVuYWJsZS14c3MtYXVkaXRvcgorICAgICoKKyAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBY
U1MgQXVkaXRvci4gVGhpcyBmZWF0dXJlIGZpbHRlcnMgc29tZSBraW5kcyBvZgorICAgICogcmVm
bGVjdGl2ZSBYU1MgYXR0YWNrcyBvbiB2dWxuZXJhYmxlIHdlYiBzaXRlcy4KKyAgICAqCisgICAg
KiBTaW5jZTogMi4wCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9Q
X0VOQUJMRV9YU1NfQVVESVRPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUteHNzLWF1ZGl0b3IiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIFhT
UyBBdWRpdG9yIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSB0aGUgWFNTIGF1ZGl0b3IiKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbGFncykpOworCisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJs
ZS1mcmFtZS1mbGF0dGVuaW5nCisgICAgKgorICAgICogV2hldGhlciB0byBlbmFibGUgdGhlIEZy
YW1lIEZsYXR0ZW5pbmcuIFdpdGggdGhpcyBzZXR0aW5nIGVhY2ggc3ViZnJhbWUgaXMgZXhwYW5k
ZWQKKyAgICAqIHRvIGl0cyBjb250ZW50cywgd2hpY2ggd2lsbCBmbGF0dGVuIGFsbCB0aGUgZnJh
bWVzIHRvIGJlY29tZSBvbmUgc2Nyb2xsYWJsZSBwYWdlLgorICAgICogT24gdG91Y2ggZGV2aWNl
cywgaXQgaXMgZGVzaXJlZCB0byBub3QgaGF2ZSBhbnkgc2Nyb2xsYWJsZSBzdWIgcGFydHMgb2Yg
dGhlIHBhZ2UgYXMKKyAgICAqIGl0IHJlc3VsdHMgaW4gYSBjb25mdXNpbmcgdXNlciBleHBlcmll
bmNlLCB3aXRoIHNjcm9sbGluZyBzb21ldGltZXMgc2Nyb2xsaW5nIHN1YiBwYXJ0cworICAgICog
YW5kIGF0IG90aGVyIHRpbWVzIHNjcm9sbGluZyB0aGUgcGFnZSBpdHNlbGYuIEZvciB0aGlzIHJl
YXNvbiBpZnJhbWVzIGFuZCBmcmFtZXNldHMgYXJlCisgICAgKiBiYXJlbHkgdXNhYmxlIG9uIHRv
dWNoIGRldmljZXMuCisgICAgKgorICAgICogU2luY2U6IDIuMAorICAgICovCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRFTklORywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFi
bGUtZnJhbWUtZmxhdHRlbmluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgRnJhbWUgRmxhdHRlbmluZyIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
V2hldGhlciB0byBlbmFibGUgRnJhbWUgRmxhdHRlbmluZyIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOwor
CisgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1wbHVnaW5zOgorICAgICoK
KyAgICAqIFBsdWdpbnMgZW1kZWRkZWQgd2l0aGluIGEgcGFnZSBjYW4gYmUgdHVybmVkIG9mZiBi
eSBkaXNhYmxpbmcKKyAgICAqIHRoaXMgcHJvcGVydHkuIAorICAgICogCisgICAgKgorICAgICog
U2luY2U6IDIuMAorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShn
b2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9F
TkFCTEVfUExVR0lOUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVu
YWJsZS1wbHVnaW5zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVu
YWJsZSBQbHVnaW5zIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJF
bmFibGUgZW1iZWRkZWQgcGx1Z2luIG9iamVjdHMuIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ3MpKTsKKworICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtamF2YToK
KyAgICAqCisgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzdXBwb3J0IGZvciB0aGUgSmF2YS4gVGhp
cyBwcm9wZXJ0eSBuZWVkcyB0byBiZSBlbmFibGVkCisgICAgKiBmb3IgZGlzcGxheWluZyBqYXZh
IGNvbnRlbnRzIHZpYSAgJmx0O29iamVjdCZndDsgb3IgJmx0O2VtYmVkJmd0OyB0YWcuCisgICAg
KgorICAgICogU2luY2U6IDIuMAorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJPUF9FTkFCTEVfSkFWQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtamF2YSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSmF2YSIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XygiV2hldGhlciBKYXZhIHN1cHBvcnQgc2hvdWxkIGJlIGVuYWJsZWQiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFn
cykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczpqYXZhc2NyaXB0LWNhbi1v
cGVuLXdpbmRvd3MtYXV0b21hdGljYWxseQorICAgICoKKyAgICAqIFdoZXRoZXIgSmF2YVNjcmlw
dCBjYW4gb3BlbiBwb3B1cCB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgd2l0aG91dCB1c2VyCisgICAg
KiBpbnRlcnZlbnRpb24uCisgICAgKgorICAgICogU2luY2U6IDIuMAorICAgICovCisgICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9KQVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1Nf
QVVUT01BVElDQUxMWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19ib29sZWFuKCJqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxs
eSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfKCJKYXZhU2NyaXB0IGNhbiBvcGVuIHdpbmRvd3MgYXV0b21hdGljYWxseSIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
V2hldGhlciBKYXZhU2NyaXB0IGNhbiBvcGVuIHdpbmRvd3MgYXV0b21hdGljYWxseSIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJV
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1o
eXBlcmxpbmstYXVkaXRpbmc6CisgICAgKgorICAgICogRW5hYmxlIG9yIGRpc2FibGUgc3VwcG9y
dCBmb3IgJmx0O2EgcGluZyZndDsuCisgICAgKgorICAgICogU2luY2U6IDIuMAorICAgICovCisg
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElU
SU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jv
b2xlYW4oImVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmciLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEh5cGVybGluayBB
dWRpdGluZyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXygiV2hldGhlciA8YSBwaW5nPiBzaG91bGQgYmUgYWJsZSB0byBzZW5kIHBp
bmdzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Nl
dHRpbmdzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzKQoreworICAgIHdlYlNl
dHRpbmdzLT5wcml2ID0gbmV3IFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZTsKKyAgICB3ZWJTZXR0
aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMgPSBXS1ByZWZlcmVuY2VzQ3JlYXRlKCk7Cit9CisKK3N0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQor
eworICAgIGRlbGV0ZSBXRUJLSVRfV0VCX1NFVFRJTkdTKG9iamVjdCktPnByaXY7CisgICAgR19P
QkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl9zZXR0aW5nc19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShv
YmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQ
YXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncyA9
IFdFQktJVF9XRUJfU0VUVElOR1Mob2JqZWN0KTsKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZh
dGUqIHByaXYgPSB3ZWJTZXR0aW5ncy0+cHJpdjsKKworICAgIHN3aXRjaChwcm9wX2lkKSB7Cisg
ICAgY2FzZSBQUk9QX0VOQUJMRV9TQ1JJUFRTOgorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0SmF2
YVNjcmlwdEVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWdfdmFsdWVfZ2V0X2Jvb2xl
YW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0FVVE9fTE9BRF9JTUFH
RVM6CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkocHJp
di0+cHJlZmVyZW5jZXMsIChib29sKWdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0xPQURfSUNPTl9JR05PUklOR19JTUFHRV9MT0FEX1BS
RUY6CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VM
b2FkaW5nUHJlZmVyZW5jZShwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZ192YWx1ZV9nZXRfYm9v
bGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX09GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hFOgorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0T2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbClnX3Zh
bHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9F
TkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFHRToKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldExvY2Fs
U3RvcmFnZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWdfdmFsdWVfZ2V0X2Jvb2xl
YW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IVE1MNV9E
QVRBQkFTRToKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldERhdGFiYXNlc0VuYWJsZWQocHJpdi0+
cHJlZmVyZW5jZXMsIChib29sKWdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUjoKKyAgICAgICAgV0tQcmVm
ZXJlbmNlc1NldFhTU0F1ZGl0b3JFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbClnX3Zh
bHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9F
TkFCTEVfRlJBTUVfRkxBVFRFTklORzoKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldEZyYW1lRmxh
dHRlbmluZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWdfdmFsdWVfZ2V0X2Jvb2xl
YW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9QTFVHSU5T
OgorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0UGx1Z2luc0VuYWJsZWQocHJpdi0+cHJlZmVyZW5j
ZXMsIChib29sKWdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZBOgorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YUVu
YWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lO
RE9XU19BVVRPTUFUSUNBTExZOgorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlwdENh
bk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZ192YWx1
ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5B
QkxFX0hZUEVSTElOS19BVURJVElORzoKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldEh5cGVybGlu
a0F1ZGl0aW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZ192YWx1ZV9nZXRfYm9v
bGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09C
SkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZh
bHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0
dGluZ3MgPSBXRUJLSVRfV0VCX1NFVFRJTkdTKG9iamVjdCk7CisgICAgV2ViS2l0V2ViU2V0dGlu
Z3NQcml2YXRlKiBwcml2ID0gd2ViU2V0dGluZ3MtPnByaXY7CisKKyAgICBzd2l0Y2ggKHByb3Bf
aWQpIHsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1NDUklQVFM6CisgICAgICAgIGdfdmFsdWVfc2V0
X2Jvb2xlYW4odmFsdWUsIFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0RW5hYmxlZChwcml2LT5w
cmVmZXJlbmNlcykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVVUT19MT0FEX0lN
QUdFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgV0tQcmVmZXJlbmNlc0dl
dExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcykpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfTE9BRF9JQ09OX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRjoK
KyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgV0tQcmVmZXJlbmNlc0dldExvYWRz
U2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNlKHByaXYtPnByZWZlcmVuY2Vz
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05fQ0FDSEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIFdLUHJl
ZmVyZW5jZXNHZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQocHJpdi0+cHJlZmVy
ZW5jZXMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IVE1MNV9MT0NB
TF9TVE9SQUdFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBXS1ByZWZlcmVu
Y2VzR2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcykpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNFOgorICAgICAgICBnX3Zh
bHVlX3NldF9ib29sZWFuKHZhbHVlLCBXS1ByZWZlcmVuY2VzR2V0RGF0YWJhc2VzRW5hYmxlZChw
cml2LT5wcmVmZXJlbmNlcykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxF
X1hTU19BVURJVE9SOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBXS1ByZWZl
cmVuY2VzR2V0WFNTQXVkaXRvckVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVOSU5HOgorICAgICAgICBn
X3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBXS1ByZWZlcmVuY2VzR2V0RnJhbWVGbGF0dGVuaW5n
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBS
T1BfRU5BQkxFX1BMVUdJTlM6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIFdL
UHJlZmVyZW5jZXNHZXRQbHVnaW5zRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcykpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0pBVkE6CisgICAgICAgIGdfdmFsdWVfc2V0
X2Jvb2xlYW4odmFsdWUsIFdLUHJlZmVyZW5jZXNHZXRKYXZhRW5hYmxlZChwcml2LT5wcmVmZXJl
bmNlcykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSkFWQVNDUklQVF9DQU5fT1BF
Tl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFk6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFs
dWUsIFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5
KHByaXYtPnByZWZlcmVuY2VzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFC
TEVfSFlQRVJMSU5LX0FVRElUSU5HOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVl
LCBXS1ByZWZlcmVuY2VzR2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnByZWZlcmVu
Y2VzKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dB
Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3OgorICoK
KyAqIENyZWF0ZXMgYSBuZXcgI1dlYktpdFdlYlNldHRpbmdzIGluc3RhbmNlIHdpdGggZGVmYXVs
dCB2YWx1ZXMuIEl0IG11c3QKKyAqIGJlIG1hbnVhbGx5IGF0dGFjaGVkIHRvIGEgV2ViVmlldy4K
KyAqCisgKiBSZXR1cm5zOiBhIG5ldyAjV2ViS2l0V2ViU2V0dGluZ3MgaW5zdGFuY2UKKyAqKi8K
K1dlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpCit7CisgICAgcmV0
dXJuIFdFQktJVF9XRUJfU0VUVElOR1MoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9TRVRU
SU5HUywgTlVMTCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlNldHRpbmdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYTlkNDVmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWljaGFlbCBBbG9uem8gPGptYWxvbnpvQGdtYWlsLmNv
bQorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFdlYlNldHRpbmdzX2gKKyNkZWZp
bmUgV2ViS2l0V2ViU2V0dGluZ3NfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNp
bmNsdWRlIDxnbGliLW9iamVjdC5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lU
X1RZUEVfV0VCX1NFVFRJTkdTICAgICAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3R5
cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9TRVRUSU5HUyhvYmopICAgICAgICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdl
YktpdFdlYlNldHRpbmdzKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9TRVRUSU5HU19DTEFTUyhrbGFz
cykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJf
U0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdzQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VC
X1NFVFRJTkdTKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiks
IFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfU0VUVElO
R1NfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lU
X1RZUEVfV0VCX1NFVFRJTkdTKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9TRVRUSU5HU19HRVRfQ0xB
U1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9X
RUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdzQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0V2ViU2V0dGluZ3MgV2ViS2l0V2ViU2V0dGluZ3M7Cit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0V2ViU2V0dGluZ3NDbGFzcyBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzOwordHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU7CisK
K3N0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3MgeworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNl
OworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9X
ZWJLaXRXZWJTZXR0aW5nc0NsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwor
CisgICAgLyogUGFkZGluZyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLworICAgIHZvaWQgKCpfd2Vi
a2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZv
aWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworICAgIHZvaWQgKCpf
d2Via2l0X3Jlc2VydmVkNCkgKHZvaWQpOworfTsKKworV0tfRVhQT1JUIEdUeXBlCit3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF90eXBlICAgICAgICAgICh2b2lkKTsKKworV0tfRVhQT1JUIFdlYktp
dFdlYlNldHRpbmdzICoKK3dlYmtpdF93ZWJfc2V0dGluZ3NfbmV3ICAgICAgICAgICAgICAgKHZv
aWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogd2Via2l0d2Vic2V0dGluZ3NfaCAqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdl
YnNldHRpbmdzLmMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0
d2Vic2V0dGluZ3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmQ0NjY0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvdGVzdHdlYnNldHRpbmdzLmMKQEAgLTAsMCArMSwyMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgSmFuIE1pY2hhZWwgQWxvbnpvCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIw
MTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRl
IDxnbGliLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHdlYmtpdDJndGsuaD4K
Kworc3RhdGljIHZvaWQgdGVzdF93ZWJraXRfd2ViX3NldHRpbmdzX3NjcmlwdHModm9pZCkKK3sK
KyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25l
dygpOworCisgICAgLy8gU2NyaXB0cyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQKKyAgICBnYm9vbGVh
biBzY3JpcHRzID0gRkFMU0U7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLXNj
cmlwdHMiLCAmc2NyaXB0cywgTlVMTCk7CisgICAgZ19hc3NlcnQoc2NyaXB0cyk7CisgICAgZ19v
YmplY3Rfc2V0KHNldHRpbmdzLCAiZW5hYmxlLXNjcmlwdHMiLCBGQUxTRSwgTlVMTCk7CisgICAg
Z19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLXNjcmlwdHMiLCAmc2NyaXB0cywgTlVMTCk7
CisgICAgZ19hc3NlcnQoIXNjcmlwdHMpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X3dlYmtpdF93
ZWJfc2V0dGluZ3NfYXV0b2xvYWQodm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0
dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gQnkgZGVmYXVsdCBh
dXRvLWxvYWQtaW1hZ2UgaXMgdHJ1ZQorICAgIGdib29sZWFuIGF1dG9Mb2FkSW1hZ2VzID0gRkFM
U0U7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiYXV0by1sb2FkLWltYWdlcyIsICZhdXRv
TG9hZEltYWdlcywgTlVMTCk7CisgICAgZ19hc3NlcnQoYXV0b0xvYWRJbWFnZXMpOworICAgIGdf
b2JqZWN0X3NldChzZXR0aW5ncywgImF1dG8tbG9hZC1pbWFnZXMiLCBGQUxTRSwgTlVMTCk7Cisg
ICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiYXV0by1sb2FkLWltYWdlcyIsICZhdXRvTG9hZElt
YWdlcywgTlVMTCk7CisgICAgZ19hc3NlcnQoIWF1dG9Mb2FkSW1hZ2VzKTsKK30KKworc3RhdGlj
IHZvaWQgdGVzdF93ZWJraXRfd2ViX3NldHRpbmdzX2xvYWRpY29uaWdub3JpbmdpbWFnZWxvYWRw
cmVmKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dl
Yl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIGxvYWQtaWNvbi1pZ25vcmluZy1pbWFnZS1sb2Fk
LXByZWYgaXMgZmFsc2UgYnkgZGVmYXVsdAorICAgIGdib29sZWFuIGxvYWRJY29uID0gRkFMU0U7
CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAibG9hZC1pY29uLWlnbm9yaW5nLWltYWdlLWxv
YWQtcHJlZiIsICZsb2FkSWNvbiwgTlVMTCk7CisgICAgZ19hc3NlcnQoIWxvYWRJY29uKTsKKyAg
ICBnX29iamVjdF9zZXQoc2V0dGluZ3MsICJsb2FkLWljb24taWdub3JpbmctaW1hZ2UtbG9hZC1w
cmVmIiwgVFJVRSwgTlVMTCk7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAibG9hZC1pY29u
LWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZiIsICZsb2FkSWNvbiwgTlVMTCk7CisgICAgZ19hc3Nl
cnQobG9hZEljb24pOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3Nf
b2ZmbGluZWFwcGNhY2hlKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdz
ID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKyAgICAKKyAgICAvLyBPZmZsaW5lIGFwcGxp
Y2F0aW9uIGNhY2hlIGlzIGZhbHNlIGJ5IGRlZmF1bHQKKyAgICBnYm9vbGVhbiBvZmZsaW5lQXBw
Q2FjaGUgPSBGQUxTRTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtb2ZmbGlu
ZS13ZWItYXBwbGljYXRpb24tY2FjaGUiLCAmb2ZmbGluZUFwcENhY2hlLCBOVUxMKTsKKyAgICBn
X2Fzc2VydCghb2ZmbGluZUFwcENhY2hlKTsKKyAgICBnX29iamVjdF9zZXQoc2V0dGluZ3MsICJl
bmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUiLCBUUlVFLCBOVUxMKTsKKyAgICBn
X29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24tY2Fj
aGUiLCAmb2ZmbGluZUFwcENhY2hlLCBOVUxMKTsKKyAgICBnX2Fzc2VydChvZmZsaW5lQXBwQ2Fj
aGUpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3NfbG9jYWxzdG9y
YWdlKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dl
Yl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIExvY2FsIHN0b3JhZ2UgaXMgZW5hYmxlIGJ5IGRl
ZmF1bHQKKyAgICBnYm9vbGVhbiBsb2NhbFN0b3JhZ2UgPSBGQUxTRTsKKyAgICBnX29iamVjdF9n
ZXQoc2V0dGluZ3MsICJlbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZSIsICZsb2NhbFN0b3JhZ2Us
IE5VTEwpOworICAgIGdfYXNzZXJ0KGxvY2FsU3RvcmFnZSk7CisgICAgZ19vYmplY3Rfc2V0KHNl
dHRpbmdzLCAiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiLCBGQUxTRSwgTlVMTCk7CisgICAg
Z19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiLCAmbG9j
YWxTdG9yYWdlLCBOVUxMKTsKKyAgICBnX2Fzc2VydCghbG9jYWxTdG9yYWdlKTsKK30KKworc3Rh
dGljIHZvaWQgdGVzdF93ZWJraXRfd2ViX3NldHRpbmdzX2RhdGFiYXNlKHZvaWQpCit7CisgICAg
V2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsK
KworICAgIC8vIEhUTUw1IGRhdGFiYXNlIGlzIGVuYWJsZWQgYnkgZGVmYXVsdAorICAgIGdib29s
ZWFuIGRhdGFiYXNlID0gRkFMU0U7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxl
LWh0bWw1LWRhdGFiYXNlIiwgJmRhdGFiYXNlLCBOVUxMKTsKKyAgICBnX2Fzc2VydChkYXRhYmFz
ZSk7CisgICAgZ19vYmplY3Rfc2V0KHNldHRpbmdzLCAiZW5hYmxlLWh0bWw1LWRhdGFiYXNlIiwg
RkFMU0UsIE5VTEwpOworICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywgImVuYWJsZS1odG1sNS1k
YXRhYmFzZSIsICZkYXRhYmFzZSwgTlVMTCk7CisgICAgZ19hc3NlcnQoIWRhdGFiYXNlKTsKK30K
Kworc3RhdGljIHZvaWQgdGVzdF93ZWJraXRfd2ViX3NldHRpbmdzX3hzc2F1ZGl0b3Iodm9pZCkK
K3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdz
X25ldygpOworCisgICAgLy8gWFNTIEF1ZGl0b3IgaXMgZW5hYmxlZCBieSBkZWZhdWx0CisgICAg
Z2Jvb2xlYW4geHNzYXVkaXRvciA9IEZBTFNFOworICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywg
ImVuYWJsZS14c3MtYXVkaXRvciIsICZ4c3NhdWRpdG9yLCBOVUxMKTsKKyAgICBnX2Fzc2VydCh4
c3NhdWRpdG9yKTsKKyAgICBnX29iamVjdF9zZXQoc2V0dGluZ3MsICJlbmFibGUteHNzLWF1ZGl0
b3IiLCBGQUxTRSwgTlVMTCk7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLXhz
cy1hdWRpdG9yIiwgJnhzc2F1ZGl0b3IsIE5VTEwpOworICAgIGdfYXNzZXJ0KCF4c3NhdWRpdG9y
KTsKK30KKworc3RhdGljIHZvaWQgdGVzdF93ZWJraXRfd2ViX3NldHRpbmdzX2ZyYW1lZmxhdHRl
cmluZyh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93
ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBGcmFtZSBmbGF0dGVyaW5nIGlzIGRpc2FibGVk
IGJ5IGRlZmF1bHQKKyAgICBnYm9vbGVhbiBmcmFtZWZsYXR0ZXJpbmcgPSBGQUxTRTsKKyAgICBn
X29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtZnJhbWUtZmxhdHRlbmluZyIsICZmcmFtZWZs
YXR0ZXJpbmcsIE5VTEwpOworICAgIGdfYXNzZXJ0KCFmcmFtZWZsYXR0ZXJpbmcpOworICAgIGdf
b2JqZWN0X3NldChzZXR0aW5ncywgImVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIiwgVFJVRSwgTlVM
TCk7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmci
LCAmZnJhbWVmbGF0dGVyaW5nLCBOVUxMKTsKKyAgICBnX2Fzc2VydChmcmFtZWZsYXR0ZXJpbmcp
OworfQorCitzdGF0aWMgdm9pZCB0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3NfcGx1Z2lucyh2b2lk
KQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGlu
Z3NfbmV3KCk7CisKKyAgICAvLyBQbHVnaW5zIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQKKyAgICBn
Ym9vbGVhbiBwbHVnaW5zID0gRkFMU0U7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5h
YmxlLXBsdWdpbnMiLCAmcGx1Z2lucywgTlVMTCk7CisgICAgZ19hc3NlcnQocGx1Z2lucyk7Cisg
ICAgZ19vYmplY3Rfc2V0KHNldHRpbmdzLCAiZW5hYmxlLXBsdWdpbnMiLCBGQUxTRSwgTlVMTCk7
CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLXBsdWdpbnMiLCAmcGx1Z2lucywg
TlVMTCk7CisgICAgZ19hc3NlcnQoIXBsdWdpbnMpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X3dl
YmtpdF93ZWJfc2V0dGluZ3NfamF2YSh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpz
ZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBKYXZhIGlzIGVu
YWJsZWQgYnkgZGVmYXVsdAorICAgIGdib29sZWFuIGphdmEgPSBGQUxTRTsKKyAgICBnX29iamVj
dF9nZXQoc2V0dGluZ3MsICJlbmFibGUtamF2YSIsICZqYXZhLCBOVUxMKTsKKyAgICBnX2Fzc2Vy
dChqYXZhKTsKKyAgICBnX29iamVjdF9zZXQoc2V0dGluZ3MsICJlbmFibGUtamF2YSIsIEZBTFNF
LCBOVUxMKTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtamF2YSIsICZqYXZh
LCBOVUxMKTsKKyAgICBnX2Fzc2VydCghamF2YSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3Rfd2Vi
a2l0X3dlYl9zZXR0aW5nc19hdXRvb3BlbndpbmRvdyh2b2lkKQoreworICAgIFdlYktpdFdlYlNl
dHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBC
eSBkZWZhdWx0LCBKYXZhU2NyaXB0IGNhbiBvcGVuIHdpbmRvd3MgYXV0b21hdGljYWxseSBpcyBl
bmFibGVkLgorICAgIGdib29sZWFuIGF1dG9PcGVuV2luZG93ID0gRkFMU0U7CisgICAgZ19vYmpl
Y3RfZ2V0KHNldHRpbmdzLCAiamF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2Fs
bHkiLCAmYXV0b09wZW5XaW5kb3csIE5VTEwpOworICAgIGdfYXNzZXJ0KGF1dG9PcGVuV2luZG93
KTsKKyAgICBnX29iamVjdF9zZXQoc2V0dGluZ3MsICJqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRv
d3MtYXV0b21hdGljYWxseSIsIEZBTFNFLCBOVUxMKTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGlu
Z3MsICJqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxseSIsICZhdXRvT3Bl
bldpbmRvdywgTlVMTCk7CisgICAgZ19hc3NlcnQoIWF1dG9PcGVuV2luZG93KTsKK30KKworc3Rh
dGljIHZvaWQgdGVzdF93ZWJraXRfd2ViX3NldHRpbmdzX2h5cGVybGlua2F1ZGl0aW5nKHZvaWQp
Cit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5n
c19uZXcoKTsKKworICAgIC8vIEJ5IGRlZmF1bHQgaHlwZXIgbGluayBhdWRpdGluZyBpcyBlbmFi
bGVkLgorICAgIGdib29sZWFuIGh5cGVyTGlua0F1ZGl0ID0gRkFMU0U7CisgICAgZ19vYmplY3Rf
Z2V0KHNldHRpbmdzLCAiZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyIsICZoeXBlckxpbmtBdWRp
dCwgTlVMTCk7CisgICAgZ19hc3NlcnQoaHlwZXJMaW5rQXVkaXQpOworICAgIGdfb2JqZWN0X3Nl
dChzZXR0aW5ncywgImVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmciLCBGQUxTRSwgTlVMTCk7Cisg
ICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyIsICZo
eXBlckxpbmtBdWRpdCwgTlVMTCk7CisgICAgZ19hc3NlcnQoIWh5cGVyTGlua0F1ZGl0KTsKK30K
KworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIGdfdGhyZWFkX2luaXQo
TlVMTCk7CisgICAgZ3RrX3Rlc3RfaW5pdCgmYXJnYywgJmFyZ3YsIE5VTEwpOworCisgICAgZ190
ZXN0X2J1Z19iYXNlKCJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKKyAgICBnX3Rlc3RfYWRk
X2Z1bmMoIi93ZWJraXQvd2Vic2V0dGluZ3Mvc2NyaXB0cyIsIHRlc3Rfd2Via2l0X3dlYl9zZXR0
aW5nc19zY3JpcHRzKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vic2V0dGluZ3Mv
YXV0b2xvYWQiLCB0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3NfYXV0b2xvYWQpOworICAgIGdfdGVz
dF9hZGRfZnVuYygiL3dlYmtpdC93ZWJzZXR0aW5ncy9sb2FkaWNvbmlnbm9yaW5naW1hZ2Vsb2Fk
cHJlZiIsIHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc19sb2FkaWNvbmlnbm9yaW5naW1hZ2Vsb2Fk
cHJlZik7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnNldHRpbmdzL29mZmxpbmVh
cHBjYWNoZSIsIHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc19vZmZsaW5lYXBwY2FjaGUpOworICAg
IGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJzZXR0aW5ncy9sb2NhbHN0b3JhZ2UiLCB0ZXN0
X3dlYmtpdF93ZWJfc2V0dGluZ3NfbG9jYWxzdG9yYWdlKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMo
Ii93ZWJraXQvd2Vic2V0dGluZ3MvZGF0YWJhc2UiLCB0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3Nf
ZGF0YWJhc2UpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJzZXR0aW5ncy94c3Nh
dWRpdG9yIiwgdGVzdF93ZWJraXRfd2ViX3NldHRpbmdzX3hzc2F1ZGl0b3IpOworICAgIGdfdGVz
dF9hZGRfZnVuYygiL3dlYmtpdC93ZWJzZXR0aW5ncy9mcmFtZWZsYXR0ZXJpbmciLCB0ZXN0X3dl
YmtpdF93ZWJfc2V0dGluZ3NfZnJhbWVmbGF0dGVyaW5nKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMo
Ii93ZWJraXQvd2Vic2V0dGluZ3MvcGx1Z2lucyIsIHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc19w
bHVnaW5zKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vic2V0dGluZ3MvamF2YSIs
IHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc19qYXZhKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93
ZWJraXQvd2Vic2V0dGluZ3MvYXV0b29wZW53aW5kb3ciLCB0ZXN0X3dlYmtpdF93ZWJfc2V0dGlu
Z3NfYXV0b29wZW53aW5kb3cpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJzZXR0
aW5ncy9oeXBlcmxpbmthdWRpdGluZyIsIHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc19oeXBlcmxp
bmthdWRpdGluZyk7CisKKyAgICByZXR1cm4gZ190ZXN0X3J1biAoKTsKK30KKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mmd0ay5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mmd0ay5oCmluZGV4IGRmZWJiYjQuLmUw
ODE3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDJndGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyZ3Rr
LmgKQEAgLTI0LDUgKzI0LDYgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkNvbnRleHQu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXdCYXNlLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRXZWJWaWV3Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJTZXR0aW5n
cy5oPgogCiAjZW5kaWYgLyogX19XRUJLSVRfSF9fICovCi0tIAoxLjcuNC4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107990</attachid>
            <date>2011-09-20 05:54:32 -0700</date>
            <delta_ts>2011-09-21 05:26:17 -0700</delta_ts>
            <desc>WebKitWebSettings GTK+ API</desc>
            <filename>0001-Added-WebKitWebSettings-GTK-API.patch</filename>
            <type>text/plain</type>
            <size>36334</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSA5ZWQzNTdjNzIyOWUwNDBkMmUxZDQ4M2VlNGY4OGUwNTM0YzdjYTBmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogVHVlLCAyMCBTZXAgMjAxMSAxODoyMjo1NSArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIEFk
ZGVkIFdlYktpdFdlYlNldHRpbmdzIEdUSysgQVBJCgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzNiArKwogU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgIDExICstCiAuLi4vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0R2xvYmFsc1ByaXZhdGUuaCAgICAgICB8ICAgMzIgKysKIC4uLi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHAgICAgICAgIHwgIDQwNyArKysr
KysrKysrKysrKysrKysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
U2V0dGluZ3MuaCAgfCAgIDY1ICsrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3
ZWJzZXR0aW5ncy5jICAgICAgfCAgMjAyICsrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3dlYmtpdDJndGsuaCAgICAgIHwgICAgMSArCiA3IGZpbGVzIGNoYW5nZWQs
IDc1MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdsb2JhbHNQcml2YXRlLmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJTZXR0aW5ncy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggZGE0MDY5MC4uNmYwNmZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisy
MDExLTA5LTIwICBOYXlhbiBLdW1hciBLICA8bmF5YW5ra0Btb3Rvcm9sYS5jb20+CisKKyAgICAg
ICAgW0dUS10gQWRkIFdlYktpdFdlYlNldHRpbmdzIEdUSysgQVBJJ3MuCisKKyAgICAgICAgV2Vi
S2l0V2ViU2V0dGluZ3MgR1RLKyBvYmplY3QgaXMgY3JlYXRlZCBhbmQgZmlyc3Qgc2V0IG9mCisg
ICAgICAgIEFQSSdzIGFyZSB3cml0dGVuIHRvIGdldCBvciBzZXQgdGhlIHByb3BlcnRpZXMgb2Yg
V2ViS2l0V2ViU2V0dGluZ3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02ODM3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0R2xvYmFsc1ByaXZhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mmd0ay5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlNldHRpbmdzLmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdz
X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdFdlYlNldHRpbmdzRmluYWxpemUpOgorICAgICAgICAod2Via2l0V2ViU2V0dGlu
Z3NTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJTZXR0aW5nc0dldFByb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYzogQWRkZWQuCisgICAgICAgICh0ZXN0V2Vi
S2l0V2ViU2V0dGluZ3NTY3JpcHRzKToKKyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc0F1
dG9sb2FkKToKKyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc0xvYWRJY29uSWdub3JpbmdJ
bWFnZUxvYWRQcmVmKToKKyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc09mZmxpbmVBcHBD
YWNoZSk6CisgICAgICAgICh0ZXN0V2ViS2l0V2ViU2V0dGluZ3NMb2NhbFN0b3JhZ2UpOgorICAg
ICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdzRGF0YWJhc2UpOgorICAgICAgICAodGVzdFdlYktp
dFdlYlNldHRpbmdzWHNzQXVkaXRvcik6CisgICAgICAgICh0ZXN0V2ViS2l0V2ViU2V0dGluZ3NG
cmFtZUZsYXR0ZXJpbmcpOgorICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdzUGx1Z2lucyk6
CisgICAgICAgICh0ZXN0V2ViS2l0V2ViU2V0dGluZ3NKYXZhKToKKyAgICAgICAgKHRlc3RXZWJL
aXRXZWJTZXR0aW5nc0F1dG9PcGVuV2luZG93KToKKyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0
aW5nc0h5cGVyTGlua0F1ZGl0aW5nKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL3dlYmtpdDJndGsuaDoKKwogMjAxMS0wOS0xOSAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEFsd2F5cyBlbmFibGUgRU5BQkxFKEVWRU5UU09V
UkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCBkZTFlZjk3Li45ZjY0YWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQpAQCAtNzAsNiArNzAsNyBAQCBsaWJ3ZWJraXQyZ3RraW5jbHVkZWRpciA9ICQo
bGlid2Via2l0Z3RraW5jbHVkZWRpcikvd2Via2l0MgogbGlid2Via2l0Mmd0a2luY2x1ZGVfSEVB
REVSUyA9IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQu
aCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAorCSQo
V2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaCBcCiAJJChXZWJL
aXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oCiAKIGxpYndlYmtpdGd0
a2luY2x1ZGVfSEVBREVSUyArPSBcCkBAIC00NTQsNiArNDU1LDggQEAgbGlid2Via2l0Mmd0a19A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRl
eHQuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRp
bmdzLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0
dGluZ3MuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNw
cCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
aCBcCkBAIC05ODYsNyArOTg5LDggQEAgQ0xFQU5GSUxFUyArPSBcCiAjIFVuaXQgdGVzdHMKIFRF
U1RfUFJPR1MgKz0gXAogCVByb2dyYW1zL3VuaXR0ZXN0cy93ZWJraXQyL3Rlc3R3ZWJjb250ZXh0
IFwKLQlQcm9ncmFtcy91bml0dGVzdHMvd2Via2l0Mi90ZXN0d2VidmlldworCVByb2dyYW1zL3Vu
aXR0ZXN0cy93ZWJraXQyL3Rlc3R3ZWJ2aWV3IFwKKwlQcm9ncmFtcy91bml0dGVzdHMvd2Via2l0
Mi90ZXN0d2Vic2V0dGluZ3MKIAogbm9pbnN0X1BST0dSQU1TICs9ICQoVEVTVF9QUk9HUykKIHdl
YmtpdDJfdGVzdHNfY2ZsYWdzID0gXApAQCAtMTAyMiw2ICsxMDI2LDExIEBAIFByb2dyYW1zX3Vu
aXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJ2aWV3X0NGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19jZmxh
Z3MpCiBQcm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0d2Vidmlld19MREFERCA9ICQod2Vi
a2l0Ml90ZXN0c19sZGFkZCkKIFByb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJ2aWV3
X0xERkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfbGRmbGFncykKIAorUHJvZ3JhbXNfdW5pdHRlc3Rz
X3dlYmtpdDJfdGVzdHdlYnNldHRpbmdzX1NPVVJDRVMgPSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYworUHJvZ3JhbXNfdW5pdHRlc3RzX3dl
YmtpdDJfdGVzdHdlYnNldHRpbmdzX0NGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19jZmxhZ3MpCitQ
cm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0d2Vic2V0dGluZ3NfTERBREQgPSAkKHdlYmtp
dDJfdGVzdHNfbGRhZGQpCitQcm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0d2Vic2V0dGlu
Z3NfTERGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19sZGZsYWdzKQorCiBESVNUQ0xFQU5GSUxFUyAr
PSBcCiAJJCh0b3BfYnVpbGRkaXIpL1dlYktpdDIvd2Via2l0Mmd0ay1AV0VCS0lUR1RLX0FQSV9W
RVJTSU9OQC5wYwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRHbG9iYWxzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0R2xvYmFsc1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi44N2UyOWIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0R2xvYmFsc1ByaXZhdGUuaApAQCAtMCwwICsxLDMyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVy
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggSmFuIE1pY2hhZWwgQy4gQWxvbnpvCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEg
Uy5MLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdEdsb2JhbHNQcml2YXRlX2gK
KyNkZWZpbmUgV2ViS2l0R2xvYmFsc1ByaXZhdGVfaAorCisjaW5jbHVkZSA8Z2xpYi5oPgorCisj
ZGVmaW5lIFdFQktJVF9QQVJBTV9SRUFEQUJMRSAoKEdQYXJhbUZsYWdzKShHX1BBUkFNX1JFQURB
QkxFIHwgR19QQVJBTV9TVEFUSUNfTkFNRSB8IEdfUEFSQU1fU1RBVElDX05JQ0sgfCBHX1BBUkFN
X1NUQVRJQ19CTFVSQikpCisjZGVmaW5lIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgKChHUGFyYW1G
bGFncykoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19OQU1FIHwgR19QQVJBTV9T
VEFUSUNfTklDSyB8IEdfUEFSQU1fU1RBVElDX0JMVVJCKSkKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkwODVmZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdz
LmNwcApAQCAtMCwwICsxLDQwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDaHJpc3Rp
YW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBO
dWFudGkgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBKYW4gTWljaGFlbCBBbG9uem8KKyAqIENvcHlyaWdodCAoQykgMjAwOSBNb3ZpYWwg
Q3JlYXRpdmUgVGVjaG5vbG9naWVzIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBJZ2FsaWEg
Uy5MLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViS2l0V2ViU2V0dGluZ3MuaCIKKworI2luY2x1ZGUgIldlYktpdEdsb2JhbHNQcml2YXRlLmgi
CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2VzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S1R5cGUuaD4KKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorCisKK3N0cnVjdCBfV2ViS2l0
V2ViU2V0dGluZ3NQcml2YXRlIHsKKyAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzOwor
fTsKKworLyoqCisgKiBTRUNUSU9OOndlYmtpdHdlYnNldHRpbmdzCisgKiBAc2hvcnRfZGVzY3Jp
cHRpb246IENvbnRyb2wgdGhlIGJlaGF2aW91ciBvZiBhICNXZWJLaXRXZWJWaWV3CisgKgorICog
I1dlYktpdFdlYlNldHRpbmdzIGNhbiBiZSBhcHBsaWVkIHRvIGEgI1dlYktpdFdlYlZpZXcgdG8g
Y29udHJvbCB0ZXh0IGVuY29kaW5nLCAKKyAqIGNvbG9yLCBmb250IHNpemVzLCBwcmludGluZyBt
b2RlLCBzY3JpcHQgc3VwcG9ydCwgbG9hZGluZyBvZiBpbWFnZXMgYW5kIHZhcmlvdXMgb3RoZXIg
dGhpbmdzLiAKKyAqIEFmdGVyIGNyZWF0aW9uLCBhICNXZWJLaXRXZWJTZXR0aW5ncyBvYmplY3Qg
Y29udGFpbnMgZGVmYXVsdCBzZXR0aW5ncy4gCisgKgorICogPGluZm9ybWFsZXhhbXBsZT48cHJv
Z3JhbWxpc3Rpbmc+CisgKiAvPCEtLSAtLT4qIENyZWF0ZSBhIG5ldyB3ZWJzZXR0aW5ncyBhbmQg
ZGlzYWJsZSBqYXZhIHNjcmlwdCAqPCEtLSAtLT4vCisgKiBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0
dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldyAoKTsKKyAqIGdfb2JqZWN0X3NldCAoR19P
QkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXNjcmlwdHMiLCBGQUxTRSwgTlVMTCk7CisgKgorICog
LzwhLS0gLS0+KiBBcHBseSB0aGUgcmVzdWx0ICo8IS0tIC0tPi8KKyAqIHdlYmtpdF93ZWJfdmll
d19zZXRfc2V0dGluZ3MgKFdFQktJVF9XRUJfVklFVyhteV93ZWJ2aWV3KSwgc2V0dGluZ3MpOwor
ICogPC9wcm9ncmFtbGlzdGluZz48L2luZm9ybWFsZXhhbXBsZT4KKyAqLworCisKK0dfREVGSU5F
X1RZUEUoV2ViS2l0V2ViU2V0dGluZ3MsIHdlYmtpdF93ZWJfc2V0dGluZ3MsIEdfVFlQRV9PQkpF
Q1QpCisKK2VudW0geworICAgIFBST1BfMCwKKworICAgIFBST1BfRU5BQkxFX1NDUklQVFMsCisg
ICAgUFJPUF9BVVRPX0xPQURfSU1BR0VTLAorICAgIFBST1BfTE9BRF9JQ09OX0lHTk9SSU5HX0lN
QUdFX0xPQURfUFJFRiwKKyAgICBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9D
QUNIRSwKKyAgICBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFLAorICAgIFBST1BfRU5B
QkxFX0hUTUw1X0RBVEFCQVNFLAorICAgIFBST1BfRU5BQkxFX1hTU19BVURJVE9SLAorICAgIFBS
T1BfRU5BQkxFX0ZSQU1FX0ZMQVRURU5JTkcsCisgICAgUFJPUF9FTkFCTEVfUExVR0lOUywKKyAg
ICBQUk9QX0VOQUJMRV9KQVZBLAorICAgIFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dT
X0FVVE9NQVRJQ0FMTFksCisgICAgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HLAorfTsK
KworCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJTZXR0aW5nc0ZpbmFsaXplKEdPYmplY3QqIG9iamVj
dCk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlNldHRpbmdzU2V0UHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBw
c3BlYyk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlNldHRpbmdzR2V0UHJvcGVydHkoR09iamVj
dCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3Bl
Yyk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRX
ZWJTZXR0aW5nc0NsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFz
cyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXplID0g
d2Via2l0V2ViU2V0dGluZ3NGaW5hbGl6ZTsKKyAgICBnT2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0
eSA9IHdlYmtpdFdlYlNldHRpbmdzU2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNzLT5nZXRf
cHJvcGVydHkgPSB3ZWJraXRXZWJTZXR0aW5nc0dldFByb3BlcnR5OworCisgICAgR1BhcmFtRmxh
Z3MgZmxhZ3MgPSAoR1BhcmFtRmxhZ3MpKFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFN
X0NPTlNUUlVDVCk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1z
Y3JpcHRzCisgICAgKgorICAgICogVGhpcyBwcm9wZXJ0eSBuZWVkcyB0byBiZSBzZXQgdG8gZW5h
YmxlIHRoZSBleGVjdXRpb24gb2Ygc2NyaXB0cworICAgICogKEluY2x1ZGluZyBKYXZhc2NyaXB0
KSB3aXRoaW4gYSBwYWdlLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJPUF9FTkFCTEVfU0NSSVBUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImVuYWJsZS1zY3JpcHRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF8oIkVuYWJsZSBTY3JpcHRzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfKCJFbmFibGUgZW1iZWRkZWQgc2NyaXB0aW5nIGxhbmd1YWdlcy4iKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0
aW5nczphdXRvLWxvYWQtaW1hZ2VzCisgICAgKgorICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGlt
YWdlcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBsb2FkZWQgb3Igbm90LgorICAgICogT24gZGV2
aWNlcywgd2hlcmUgbmV0d29yayBiYW5kd2lkdGggaXMgb2YgY29uY2VybiwgaXQgbWlnaHQgYmUK
KyAgICAqIHVzZWZ1bCB0byB0dXJuIHRoaXMgcHJvcGVydHkgb2ZmLgorICAgICoKKyAgICAqLwor
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9BVVRPX0xPQURfSU1BR0VTLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXV0by1sb2FkLWltYWdlcyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJBdXRvIExvYWQgSW1hZ2VzIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJMb2FkIGltYWdlcyBhdXRv
bWF0aWNhbGx5LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioK
KyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmxvYWQtaWNvbi1pZ25vcmluZy1pbWFnZS1sb2FkLXBy
ZWYKKyAgICAqCisgICAgKiBCeSBlbmFibGluZyB0aGlzIHByb3BlcnR5LCBzaXRlIGljb25zIChl
LmcsIGZhdmljb24pIHdpbGwgYmUgbG9hZGVkCisgICAgKiBpcnJlc3BlY3RpdmUgb2YgdGhlIHZh
bHVlIG9mICdhdXRvLWxvYWQtaW1hZ2VzJy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBST1BfTE9BRF9JQ09OX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFu
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvYWQtaWNvbi1pZ25vcmlu
Zy1pbWFnZS1sb2FkLXByZWYiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XygiTG9hZCBTaXRlIEljb24gaWdub3JpbmcgaW1hZ2UgbG9hZCBwcmVmZXJlbmNlIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGxvYWQgc2l0ZSBp
Y29uIGlnbm9yaW5nIGltYWdlIGxvYWQgcHJlZmVyZW5jZS4iKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxl
LW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlCisgICAgKgorICAgICogV2hldGhlciB0byBl
bmFibGUgSFRNTDUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUgc3VwcG9ydC4gT2ZmbGlu
ZQorICAgICogV2ViIEFwcGxpY2F0aW9uIENhY2hlIGVuc3VyZXMgd2ViIGFwcGxpY2F0aW9ucyBh
cmUgYXZhaWxhYmxlIGV2ZW4gd2hlbgorICAgICogdGhlIHVzZXIgaXMgbm90IGNvbm5lY3RlZCB0
byB0aGUgbmV0d29yay4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBST1BfRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1v
ZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgb2ZmbGluZSB3ZWIgYXBw
bGljYXRpb24gY2FjaGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIG9mZmxpbmUgd2ViIGFwcGxp
Y2F0aW9uIGNhY2hlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktp
dFdlYlNldHRpbmdzOmVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlOgorICAgICoKKyAgICAqIFdo
ZXRoZXIgdG8gZW5hYmxlIEhUTUw1IGxvY2FsU3RvcmFnZSBzdXBwb3J0LiBsb2NhbFN0b3JhZ2Ug
cHJvdmlkZXMKKyAgICAqIHNpbXBsZSBzeW5jaHJvbm91cyBzdG9yYWdlIGFjY2Vzcy4KKyAgICAq
CisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFz
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0hUTUw1
X0xPQ0FMX1NUT1JBR0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3Bh
cmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxl
IEhUTUw1IExvY2FsIFN0b3JhZ2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IExvY2Fs
IFN0b3JhZ2Ugc3VwcG9ydCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdl
YktpdFdlYlNldHRpbmdzOmVuYWJsZS1odG1sNS1kYXRhYmFzZToKKyAgICAqCisgICAgKiBXaGV0
aGVyIHRvIGVuYWJsZSBIVE1MNSBjbGllbnQtc2lkZSBTUUwgZGF0YWJhc2Ugc3VwcG9ydC4gQ2xp
ZW50LXNpZGUKKyAgICAqIFNRTCBkYXRhYmFzZSBhbGxvd3Mgd2ViIHBhZ2VzIHRvIHN0b3JlIHN0
cnVjdHVyZWQgZGF0YSBhbmQgYmUgYWJsZSB0bworICAgICogdXNlIFNRTCB0byBtYW5pcHVsYXRl
IHRoYXQgZGF0YSBhc3luY2hyb25vdXNseS4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1odG1s
NS1kYXRhYmFzZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfKCJFbmFibGUgSFRNTDUgRGF0YWJhc2UiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8g
ZW5hYmxlIEhUTUw1IGRhdGFiYXNlIHN1cHBvcnQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAg
LyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUteHNzLWF1ZGl0b3IKKyAgICAqCisg
ICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgWFNTIEF1ZGl0b3IuIFRoaXMgZmVhdHVyZSBmaWx0
ZXJzIHNvbWUga2luZHMgb2YKKyAgICAqIHJlZmxlY3RpdmUgWFNTIGF0dGFja3Mgb24gdnVsbmVy
YWJsZSB3ZWIgc2l0ZXMuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUteHNzLWF1ZGl0b3IiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
RW5hYmxlIFhTUyBBdWRpdG9yIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSB0aGUgWFNTIGF1ZGl0
b3IiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbGFncykpOworCisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRp
bmdzOmVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nCisgICAgKgorICAgICogV2hldGhlciB0byBlbmFi
bGUgdGhlIEZyYW1lIEZsYXR0ZW5pbmcuIFdpdGggdGhpcyBzZXR0aW5nIGVhY2ggc3ViZnJhbWUg
aXMgZXhwYW5kZWQKKyAgICAqIHRvIGl0cyBjb250ZW50cywgd2hpY2ggd2lsbCBmbGF0dGVuIGFs
bCB0aGUgZnJhbWVzIHRvIGJlY29tZSBvbmUgc2Nyb2xsYWJsZSBwYWdlLgorICAgICogT24gdG91
Y2ggZGV2aWNlcywgaXQgaXMgZGVzaXJlZCB0byBub3QgaGF2ZSBhbnkgc2Nyb2xsYWJsZSBzdWIg
cGFydHMgb2YgdGhlIHBhZ2UgYXMKKyAgICAqIGl0IHJlc3VsdHMgaW4gYSBjb25mdXNpbmcgdXNl
ciBleHBlcmllbmNlLCB3aXRoIHNjcm9sbGluZyBzb21ldGltZXMgc2Nyb2xsaW5nIHN1YiBwYXJ0
cworICAgICogYW5kIGF0IG90aGVyIHRpbWVzIHNjcm9sbGluZyB0aGUgcGFnZSBpdHNlbGYuIEZv
ciB0aGlzIHJlYXNvbiBpZnJhbWVzIGFuZCBmcmFtZXNldHMgYXJlCisgICAgKiBiYXJlbHkgdXNh
YmxlIG9uIHRvdWNoIGRldmljZXMuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVOSU5HLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1mcmFtZS1m
bGF0dGVuaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF8oIkVuYWJsZSBGcmFtZSBGbGF0dGVuaW5nIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRv
IGVuYWJsZSBGcmFtZSBGbGF0dGVuaW5nIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgIC8qKgor
ICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLXBsdWdpbnM6CisgICAgKgorICAgICogUGx1
Z2lucyBlbWRlZGRlZCB3aXRoaW4gYSBwYWdlIGNhbiBiZSB0dXJuZWQgb2ZmIGJ5IGRpc2FibGlu
ZworICAgICogdGhpcyBwcm9wZXJ0eS4gCisgICAgKiAKKyAgICAqCisgICAgKi8KKyAgICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX1BMVUdJTlMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJlbmFibGUtcGx1Z2lucyIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgUGx1Z2lucyIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIGVtYmVkZGVkIHBsdWdpbiBvYmplY3Rz
LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgIC8qKgorICAgICogV2Vi
S2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWphdmE6CisgICAgKgorICAgICogRW5hYmxlIG9yIGRpc2Fi
bGUgc3VwcG9ydCBmb3IgdGhlIEphdmEuIFRoaXMgcHJvcGVydHkgbmVlZHMgdG8gYmUgZW5hYmxl
ZAorICAgICogZm9yIGRpc3BsYXlpbmcgamF2YSBjb250ZW50cyB2aWEgICZsdDtvYmplY3QmZ3Q7
IG9yICZsdDtlbWJlZCZndDsgdGFnLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNz
X2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUFJPUF9FTkFCTEVfSkFWQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtamF2YSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUg
SmF2YSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXygiV2hldGhlciBKYXZhIHN1cHBvcnQgc2hvdWxkIGJlIGVuYWJsZWQiKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczpqYXZhc2Ny
aXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxseQorICAgICoKKyAgICAqIFdoZXRoZXIg
SmF2YVNjcmlwdCBjYW4gb3BlbiBwb3B1cCB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgd2l0aG91dCB1
c2VyCisgICAgKiBpbnRlcnZlbnRpb24uCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9XU19BVVRPTUFUSUNB
TExZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jv
b2xlYW4oImphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5IiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkph
dmFTY3JpcHQgY2FuIG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIEph
dmFTY3JpcHQgY2FuIG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3Mp
KTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWh5cGVybGluay1h
dWRpdGluZzoKKyAgICAqCisgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzdXBwb3J0IGZvciAmbHQ7
YSBwaW5nJmd0Oy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBST1BfRU5BQkxFX0hZUEVSTElOS19BVURJVElORywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtaHlwZXJsaW5rLWF1ZGl0
aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF8oIkVuYWJsZSBIeXBlcmxpbmsgQXVkaXRpbmciKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgPGEgcGlu
Zz4gc2hvdWxkIGJlIGFibGUgdG8gc2VuZCBwaW5ncyIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19pbml0KFdlYktpdFdlYlNldHRpbmdz
KiB3ZWJTZXR0aW5ncykKK3sKKyAgICB3ZWJTZXR0aW5ncy0+cHJpdiA9IG5ldyBXZWJLaXRXZWJT
ZXR0aW5nc1ByaXZhdGU7CisgICAgd2ViU2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzID0gV0tQ
cmVmZXJlbmNlc0NyZWF0ZSgpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJTZXR0aW5nc0Zp
bmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBkZWxldGUgV0VCS0lUX1dFQl9TRVRUSU5H
UyhvYmplY3QpLT5wcml2OworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfc2V0dGluZ3Nf
cGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0
V2ViU2V0dGluZ3NTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNv
bnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYlNl
dHRpbmdzKiB3ZWJTZXR0aW5ncyA9IFdFQktJVF9XRUJfU0VUVElOR1Mob2JqZWN0KTsKKyAgICBX
ZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSB3ZWJTZXR0aW5ncy0+cHJpdjsKKworICAg
IHN3aXRjaChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9TQ1JJUFRTOgorICAgICAg
ICBXS1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlwdEVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChi
b29sKWdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0FVVE9fTE9BRF9JTUFHRVM6CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRMb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWdfdmFsdWVfZ2V0X2Jv
b2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0xPQURfSUNPTl9J
R05PUklOR19JTUFHRV9MT0FEX1BSRUY6CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRMb2Fkc1Np
dGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZShwcml2LT5wcmVmZXJlbmNlcywg
KGJvb2wpZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hFOgorICAgICAgICBX
S1ByZWZlcmVuY2VzU2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHByaXYtPnBy
ZWZlcmVuY2VzLCAoYm9vbClnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFHRToKKyAgICAgICAg
V0tQcmVmZXJlbmNlc1NldExvY2FsU3RvcmFnZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChi
b29sKWdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRToKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldERh
dGFiYXNlc0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWdfdmFsdWVfZ2V0X2Jvb2xl
YW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9YU1NfQVVE
SVRPUjoKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldFhTU0F1ZGl0b3JFbmFibGVkKHByaXYtPnBy
ZWZlcmVuY2VzLCAoYm9vbClnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRFTklORzoKKyAgICAgICAgV0tQ
cmVmZXJlbmNlc1NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChi
b29sKWdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0VOQUJMRV9QTFVHSU5TOgorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0UGx1Z2luc0Vu
YWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZBOgorICAgICAgICBX
S1ByZWZlcmVuY2VzU2V0SmF2YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWdfdmFs
dWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0pB
VkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9XU19BVVRPTUFUSUNBTExZOgorICAgICAgICBXS1ByZWZl
cmVuY2VzU2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShwcml2LT5wcmVm
ZXJlbmNlcywgKGJvb2wpZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hZUEVSTElOS19BVURJVElORzoKKyAgICAgICAgV0tQ
cmVmZXJlbmNlc1NldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywg
KGJvb2wpZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0
LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZv
aWQgd2Via2l0V2ViU2V0dGluZ3NHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BfaWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdl
YlNldHRpbmdzKiB3ZWJTZXR0aW5ncyA9IFdFQktJVF9XRUJfU0VUVElOR1Mob2JqZWN0KTsKKyAg
ICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSB3ZWJTZXR0aW5ncy0+cHJpdjsKKwor
ICAgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9FTkFCTEVfU0NSSVBUUzoKKyAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgV0tQcmVmZXJlbmNlc0dldEphdmFTY3Jp
cHRFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9BVVRPX0xPQURfSU1BR0VTOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVl
LCBXS1ByZWZlcmVuY2VzR2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVu
Y2VzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9MT0FEX0lDT05fSUdOT1JJTkdf
SU1BR0VfTE9BRF9QUkVGOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBXS1By
ZWZlcmVuY2VzR2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2Uo
cHJpdi0+cHJlZmVyZW5jZXMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJM
RV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9v
bGVhbih2YWx1ZSwgV0tQcmVmZXJlbmNlc0dldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5h
YmxlZChwcml2LT5wcmVmZXJlbmNlcykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
RU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0U6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4o
dmFsdWUsIFdLUHJlZmVyZW5jZXNHZXRMb2NhbFN0b3JhZ2VFbmFibGVkKHByaXYtPnByZWZlcmVu
Y2VzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJB
U0U6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIFdLUHJlZmVyZW5jZXNHZXRE
YXRhYmFzZXNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1I6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xl
YW4odmFsdWUsIFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRpdG9yRW5hYmxlZChwcml2LT5wcmVmZXJl
bmNlcykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRU
RU5JTkc6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIFdLUHJlZmVyZW5jZXNH
ZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfUExVR0lOUzoKKyAgICAgICAgZ192YWx1ZV9zZXRf
Ym9vbGVhbih2YWx1ZSwgV0tQcmVmZXJlbmNlc0dldFBsdWdpbnNFbmFibGVkKHByaXYtPnByZWZl
cmVuY2VzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQToKKyAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgV0tQcmVmZXJlbmNlc0dldEphdmFFbmFi
bGVkKHByaXYtPnByZWZlcmVuY2VzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9K
QVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWToKKyAgICAgICAgZ192YWx1
ZV9zZXRfYm9vbGVhbih2YWx1ZSwgV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRDYW5PcGVuV2lu
ZG93c0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkc6CisgICAgICAgIGdfdmFsdWVf
c2V0X2Jvb2xlYW4odmFsdWUsIFdLUHJlZmVyZW5jZXNHZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJs
ZWQocHJpdi0+cHJlZmVyZW5jZXMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwg
cHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9z
ZXR0aW5nc19uZXc6CisgKgorICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViU2V0dGluZ3MgaW5z
dGFuY2Ugd2l0aCBkZWZhdWx0IHZhbHVlcy4gSXQgbXVzdAorICogYmUgbWFudWFsbHkgYXR0YWNo
ZWQgdG8gYSBXZWJWaWV3LgorICoKKyAqIFJldHVybnM6IGEgbmV3ICNXZWJLaXRXZWJTZXR0aW5n
cyBpbnN0YW5jZQorICoqLworV2ViS2l0V2ViU2V0dGluZ3MqIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
bmV3KCkKK3sKKyAgICByZXR1cm4gV0VCS0lUX1dFQl9TRVRUSU5HUyhnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfV0VCX1NFVFRJTkdTLCBOVUxMKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5hOWQ0NWY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaApAQCAtMCwwICsxLDY1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFu
QGltZW5kaW8uY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA5IEphbiBNaWNoYWVsIEFsb256byA8
am1hbG9uem9AZ21haWwuY29tCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3Jv
bGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0V2Vi
U2V0dGluZ3NfaAorI2RlZmluZSBXZWJLaXRXZWJTZXR0aW5nc19oCisKKyNpbmNsdWRlIDxXZWJL
aXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisKK0dfQkVHSU5fREVDTFMK
KworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MgICAgICAgICAgICAod2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1NFVFRJTkdTKG9iaikg
ICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBF
X1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0dGluZ3MpKQorI2RlZmluZSBXRUJLSVRfV0VCX1NF
VFRJTkdTX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwg
IFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0dGluZ3NDbGFzcykpCisjZGVm
aW5lIFdFQktJVF9JU19XRUJfU0VUVElOR1Mob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5T
VEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTKSkKKyNkZWZpbmUgV0VC
S0lUX0lTX1dFQl9TRVRUSU5HU19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBF
KChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MpKQorI2RlZmluZSBXRUJLSVRfV0VC
X1NFVFRJTkdTX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2Jq
KSwgIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0dGluZ3NDbGFzcykpCisK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5ncyBXZWJLaXRXZWJTZXR0aW5nczsKK3R5
cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc0NsYXNzIFdlYktpdFdlYlNldHRpbmdzQ2xh
c3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlIFdlYktpdFdlYlNl
dHRpbmdzUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5ncyB7CisgICAgR09iamVj
dCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgKnByaXY7
Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzQ2xhc3MgeworICAgIEdPYmplY3RDbGFz
cyBwYXJlbnRfY2xhc3M7CisKKyAgICAvKiBQYWRkaW5nIGZvciBmdXR1cmUgZXhwYW5zaW9uICov
CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJr
aXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9p
ZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9pZCk7Cit9OworCitXS19FWFBP
UlQgR1R5cGUKK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3R5cGUgICAgICAgICAgKHZvaWQpOwor
CitXS19FWFBPUlQgV2ViS2l0V2ViU2V0dGluZ3MgKgord2Via2l0X3dlYl9zZXR0aW5nc19uZXcg
ICAgICAgICAgICAgICAodm9pZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiB3ZWJraXR3
ZWJzZXR0aW5nc19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5ncy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmJkMWI4NmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYwpAQCAtMCwwICsxLDIwMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWljaGFlbCBBbG9uem8KKyAqIFBvcnRpb25z
IENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVk
ZSA8d2Via2l0Mmd0ay5oPgorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NTY3Jp
cHRzKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dl
Yl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIFNjcmlwdHMgaXMgZW5hYmxlZCBieSBkZWZhdWx0
CisgICAgZ2Jvb2xlYW4gc2NyaXB0cyA9IEZBTFNFOworICAgIGdfb2JqZWN0X2dldChzZXR0aW5n
cywgImVuYWJsZS1zY3JpcHRzIiwgJnNjcmlwdHMsIE5VTEwpOworICAgIGdfYXNzZXJ0KHNjcmlw
dHMpOworICAgIGdfb2JqZWN0X3NldChzZXR0aW5ncywgImVuYWJsZS1zY3JpcHRzIiwgRkFMU0Us
IE5VTEwpOworICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywgImVuYWJsZS1zY3JpcHRzIiwgJnNj
cmlwdHMsIE5VTEwpOworICAgIGdfYXNzZXJ0KCFzY3JpcHRzKTsKK30KKworc3RhdGljIHZvaWQg
dGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b2xvYWQodm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0
aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gQnkg
ZGVmYXVsdCBhdXRvLWxvYWQtaW1hZ2UgaXMgdHJ1ZQorICAgIGdib29sZWFuIGF1dG9Mb2FkSW1h
Z2VzID0gRkFMU0U7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiYXV0by1sb2FkLWltYWdl
cyIsICZhdXRvTG9hZEltYWdlcywgTlVMTCk7CisgICAgZ19hc3NlcnQoYXV0b0xvYWRJbWFnZXMp
OworICAgIGdfb2JqZWN0X3NldChzZXR0aW5ncywgImF1dG8tbG9hZC1pbWFnZXMiLCBGQUxTRSwg
TlVMTCk7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiYXV0by1sb2FkLWltYWdlcyIsICZh
dXRvTG9hZEltYWdlcywgTlVMTCk7CisgICAgZ19hc3NlcnQoIWF1dG9Mb2FkSW1hZ2VzKTsKK30K
Kworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzTG9hZEljb25JZ25vcmluZ0ltYWdl
TG9hZFByZWYodm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJr
aXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gbG9hZC1pY29uLWlnbm9yaW5nLWltYWdl
LWxvYWQtcHJlZiBpcyBmYWxzZSBieSBkZWZhdWx0CisgICAgZ2Jvb2xlYW4gbG9hZEljb24gPSBG
QUxTRTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJsb2FkLWljb24taWdub3JpbmctaW1h
Z2UtbG9hZC1wcmVmIiwgJmxvYWRJY29uLCBOVUxMKTsKKyAgICBnX2Fzc2VydCghbG9hZEljb24p
OworICAgIGdfb2JqZWN0X3NldChzZXR0aW5ncywgImxvYWQtaWNvbi1pZ25vcmluZy1pbWFnZS1s
b2FkLXByZWYiLCBUUlVFLCBOVUxMKTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJsb2Fk
LWljb24taWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmIiwgJmxvYWRJY29uLCBOVUxMKTsKKyAgICBn
X2Fzc2VydChsb2FkSWNvbik7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5n
c09mZmxpbmVBcHBDYWNoZSh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5n
cyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisgICAgCisgICAgLy8gT2ZmbGluZSBhcHBs
aWNhdGlvbiBjYWNoZSBpcyBmYWxzZSBieSBkZWZhdWx0CisgICAgZ2Jvb2xlYW4gb2ZmbGluZUFw
cENhY2hlID0gRkFMU0U7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLW9mZmxp
bmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlIiwgJm9mZmxpbmVBcHBDYWNoZSwgTlVMTCk7CisgICAg
Z19hc3NlcnQoIW9mZmxpbmVBcHBDYWNoZSk7CisgICAgZ19vYmplY3Rfc2V0KHNldHRpbmdzLCAi
ZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlIiwgVFJVRSwgTlVMTCk7CisgICAg
Z19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNh
Y2hlIiwgJm9mZmxpbmVBcHBDYWNoZSwgTlVMTCk7CisgICAgZ19hc3NlcnQob2ZmbGluZUFwcENh
Y2hlKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzTG9jYWxTdG9yYWdl
KHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9z
ZXR0aW5nc19uZXcoKTsKKworICAgIC8vIExvY2FsIHN0b3JhZ2UgaXMgZW5hYmxlIGJ5IGRlZmF1
bHQKKyAgICBnYm9vbGVhbiBsb2NhbFN0b3JhZ2UgPSBGQUxTRTsKKyAgICBnX29iamVjdF9nZXQo
c2V0dGluZ3MsICJlbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZSIsICZsb2NhbFN0b3JhZ2UsIE5V
TEwpOworICAgIGdfYXNzZXJ0KGxvY2FsU3RvcmFnZSk7CisgICAgZ19vYmplY3Rfc2V0KHNldHRp
bmdzLCAiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiLCBGQUxTRSwgTlVMTCk7CisgICAgZ19v
YmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiLCAmbG9jYWxT
dG9yYWdlLCBOVUxMKTsKKyAgICBnX2Fzc2VydCghbG9jYWxTdG9yYWdlKTsKK30KKworc3RhdGlj
IHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzRGF0YWJhc2Uodm9pZCkKK3sKKyAgICBXZWJLaXRX
ZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAg
Ly8gSFRNTDUgZGF0YWJhc2UgaXMgZW5hYmxlZCBieSBkZWZhdWx0CisgICAgZ2Jvb2xlYW4gZGF0
YWJhc2UgPSBGQUxTRTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtaHRtbDUt
ZGF0YWJhc2UiLCAmZGF0YWJhc2UsIE5VTEwpOworICAgIGdfYXNzZXJ0KGRhdGFiYXNlKTsKKyAg
ICBnX29iamVjdF9zZXQoc2V0dGluZ3MsICJlbmFibGUtaHRtbDUtZGF0YWJhc2UiLCBGQUxTRSwg
TlVMTCk7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLWh0bWw1LWRhdGFiYXNl
IiwgJmRhdGFiYXNlLCBOVUxMKTsKKyAgICBnX2Fzc2VydCghZGF0YWJhc2UpOworfQorCitzdGF0
aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NYc3NBdWRpdG9yKHZvaWQpCit7CisgICAgV2Vi
S2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKwor
ICAgIC8vIFhTUyBBdWRpdG9yIGlzIGVuYWJsZWQgYnkgZGVmYXVsdAorICAgIGdib29sZWFuIHhz
c2F1ZGl0b3IgPSBGQUxTRTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUteHNz
LWF1ZGl0b3IiLCAmeHNzYXVkaXRvciwgTlVMTCk7CisgICAgZ19hc3NlcnQoeHNzYXVkaXRvcik7
CisgICAgZ19vYmplY3Rfc2V0KHNldHRpbmdzLCAiZW5hYmxlLXhzcy1hdWRpdG9yIiwgRkFMU0Us
IE5VTEwpOworICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywgImVuYWJsZS14c3MtYXVkaXRvciIs
ICZ4c3NhdWRpdG9yLCBOVUxMKTsKKyAgICBnX2Fzc2VydCgheHNzYXVkaXRvcik7Cit9CisKK3N0
YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0ZyYW1lRmxhdHRlcmluZyh2b2lkKQorewor
ICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3
KCk7CisKKyAgICAvLyBGcmFtZSBmbGF0dGVyaW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKKyAg
ICBnYm9vbGVhbiBmcmFtZWZsYXR0ZXJpbmcgPSBGQUxTRTsKKyAgICBnX29iamVjdF9nZXQoc2V0
dGluZ3MsICJlbmFibGUtZnJhbWUtZmxhdHRlbmluZyIsICZmcmFtZWZsYXR0ZXJpbmcsIE5VTEwp
OworICAgIGdfYXNzZXJ0KCFmcmFtZWZsYXR0ZXJpbmcpOworICAgIGdfb2JqZWN0X3NldChzZXR0
aW5ncywgImVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIiwgVFJVRSwgTlVMTCk7CisgICAgZ19vYmpl
Y3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmciLCAmZnJhbWVmbGF0dGVy
aW5nLCBOVUxMKTsKKyAgICBnX2Fzc2VydChmcmFtZWZsYXR0ZXJpbmcpOworfQorCitzdGF0aWMg
dm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NQbHVnaW5zKHZvaWQpCit7CisgICAgV2ViS2l0V2Vi
U2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8v
IFBsdWdpbnMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdAorICAgIGdib29sZWFuIHBsdWdpbnMgPSBG
QUxTRTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtcGx1Z2lucyIsICZwbHVn
aW5zLCBOVUxMKTsKKyAgICBnX2Fzc2VydChwbHVnaW5zKTsKKyAgICBnX29iamVjdF9zZXQoc2V0
dGluZ3MsICJlbmFibGUtcGx1Z2lucyIsIEZBTFNFLCBOVUxMKTsKKyAgICBnX29iamVjdF9nZXQo
c2V0dGluZ3MsICJlbmFibGUtcGx1Z2lucyIsICZwbHVnaW5zLCBOVUxMKTsKKyAgICBnX2Fzc2Vy
dCghcGx1Z2lucyk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0phdmEo
dm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3Nl
dHRpbmdzX25ldygpOworCisgICAgLy8gSmF2YSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQKKyAgICBn
Ym9vbGVhbiBqYXZhID0gRkFMU0U7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxl
LWphdmEiLCAmamF2YSwgTlVMTCk7CisgICAgZ19hc3NlcnQoamF2YSk7CisgICAgZ19vYmplY3Rf
c2V0KHNldHRpbmdzLCAiZW5hYmxlLWphdmEiLCBGQUxTRSwgTlVMTCk7CisgICAgZ19vYmplY3Rf
Z2V0KHNldHRpbmdzLCAiZW5hYmxlLWphdmEiLCAmamF2YSwgTlVMTCk7CisgICAgZ19hc3NlcnQo
IWphdmEpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NBdXRvT3Blbldp
bmRvdyh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93
ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBCeSBkZWZhdWx0LCBKYXZhU2NyaXB0IGNhbiBv
cGVuIHdpbmRvd3MgYXV0b21hdGljYWxseSBpcyBlbmFibGVkLgorICAgIGdib29sZWFuIGF1dG9P
cGVuV2luZG93ID0gRkFMU0U7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiamF2YXNjcmlw
dC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHkiLCAmYXV0b09wZW5XaW5kb3csIE5VTEwp
OworICAgIGdfYXNzZXJ0KGF1dG9PcGVuV2luZG93KTsKKyAgICBnX29iamVjdF9zZXQoc2V0dGlu
Z3MsICJqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxseSIsIEZBTFNFLCBO
VUxMKTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJqYXZhc2NyaXB0LWNhbi1vcGVuLXdp
bmRvd3MtYXV0b21hdGljYWxseSIsICZhdXRvT3BlbldpbmRvdywgTlVMTCk7CisgICAgZ19hc3Nl
cnQoIWF1dG9PcGVuV2luZG93KTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRp
bmdzSHlwZXJMaW5rQXVkaXRpbmcodm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0
dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gQnkgZGVmYXVsdCBo
eXBlciBsaW5rIGF1ZGl0aW5nIGlzIGVuYWJsZWQuCisgICAgZ2Jvb2xlYW4gaHlwZXJMaW5rQXVk
aXQgPSBGQUxTRTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtaHlwZXJsaW5r
LWF1ZGl0aW5nIiwgJmh5cGVyTGlua0F1ZGl0LCBOVUxMKTsKKyAgICBnX2Fzc2VydChoeXBlckxp
bmtBdWRpdCk7CisgICAgZ19vYmplY3Rfc2V0KHNldHRpbmdzLCAiZW5hYmxlLWh5cGVybGluay1h
dWRpdGluZyIsIEZBTFNFLCBOVUxMKTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFi
bGUtaHlwZXJsaW5rLWF1ZGl0aW5nIiwgJmh5cGVyTGlua0F1ZGl0LCBOVUxMKTsKKyAgICBnX2Fz
c2VydCghaHlwZXJMaW5rQXVkaXQpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy
Z3YpCit7CisgICAgZ190aHJlYWRfaW5pdChOVUxMKTsKKyAgICBndGtfdGVzdF9pbml0KCZhcmdj
LCAmYXJndiwgTlVMTCk7CisKKyAgICBnX3Rlc3RfYnVnX2Jhc2UoImh0dHBzOi8vYnVncy53ZWJr
aXQub3JnLyIpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJzZXR0aW5ncy9zY3Jp
cHRzIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzU2NyaXB0cyk7CisgICAgZ190ZXN0X2FkZF9mdW5j
KCIvd2Via2l0L3dlYnNldHRpbmdzL2F1dG9sb2FkIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzQXV0
b2xvYWQpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJzZXR0aW5ncy9sb2FkaWNv
bmlnbm9yaW5naW1hZ2Vsb2FkcHJlZiIsIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0xvYWRJY29uSWdu
b3JpbmdJbWFnZUxvYWRQcmVmKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vic2V0
dGluZ3Mvb2ZmbGluZWFwcGNhY2hlIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzT2ZmbGluZUFwcENh
Y2hlKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vic2V0dGluZ3MvbG9jYWxzdG9y
YWdlIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzTG9jYWxTdG9yYWdlKTsKKyAgICBnX3Rlc3RfYWRk
X2Z1bmMoIi93ZWJraXQvd2Vic2V0dGluZ3MvZGF0YWJhc2UiLCB0ZXN0V2ViS2l0V2ViU2V0dGlu
Z3NEYXRhYmFzZSk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnNldHRpbmdzL3hz
c2F1ZGl0b3IiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NYc3NBdWRpdG9yKTsKKyAgICBnX3Rlc3Rf
YWRkX2Z1bmMoIi93ZWJraXQvd2Vic2V0dGluZ3MvZnJhbWVmbGF0dGVyaW5nIiwgdGVzdFdlYktp
dFdlYlNldHRpbmdzRnJhbWVGbGF0dGVyaW5nKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJr
aXQvd2Vic2V0dGluZ3MvcGx1Z2lucyIsIHRlc3RXZWJLaXRXZWJTZXR0aW5nc1BsdWdpbnMpOwor
ICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJzZXR0aW5ncy9qYXZhIiwgdGVzdFdlYktp
dFdlYlNldHRpbmdzSmF2YSk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnNldHRp
bmdzL2F1dG9vcGVud2luZG93IiwgdGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b09wZW5XaW5kb3cp
OworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJzZXR0aW5ncy9oeXBlcmxpbmthdWRp
dGluZyIsIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0h5cGVyTGlua0F1ZGl0aW5nKTsKKworICAgIHJl
dHVybiBnX3Rlc3RfcnVuICgpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQyZ3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay93ZWJraXQyZ3RrLmgKaW5kZXggZGZlYmJiNC4uZTA4MTc1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mmd0ay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJndGsuaApAQCAtMjQsNSArMjQsNiBAQAog
I2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViQ29udGV4dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0V2ViVmlld0Jhc2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXcuaD4K
KyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlNldHRpbmdzLmg+CiAKICNlbmRpZiAvKiBfX1dF
QktJVF9IX18gKi8KLS0gCjEuNy40LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108137</attachid>
            <date>2011-09-21 05:25:16 -0700</date>
            <delta_ts>2011-09-22 00:10:40 -0700</delta_ts>
            <desc>WebKitWebSetting GTK+ API</desc>
            <filename>0001-WebKitWebSeting-GTK-API.patch</filename>
            <type>text/plain</type>
            <size>48580</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSAyYWUzNzg3OTQxNGI4NTY1MzAxY2VlZDhmYWE3MjY3NjRhNmMxMTdmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogV2VkLCAyMSBTZXAgMjAxMSAxNzo1Mzo0OCArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIFdl
YktpdFdlYlNldGluZyBHVEsrIEFQSQoKLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTkgKysKIFNvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArLQogLi4uL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcCAgICAgICAgfCAgNjU3ICsrKysrKysrKysrKysrKysr
KysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oICB8
ICAxMzkgKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5ncy5j
ICAgICAgfCAgMjAyICsrKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mmd0ay5oICAgICAgfCAgICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMTA2OCBpbnNlcnRpb25z
KCspLCAxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90
ZXN0d2Vic2V0dGluZ3MuYwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkYTQwNjkwLi41ZTZiNDJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTEtMDktMjEgIE5heWFuIEt1bWFyIEsgIDxuYXlhbmtr
QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViS2l0V2ViU2V0dGluZ3MgR1RL
KyBBUEkncy4KKworICAgICAgICBXZWJLaXRXZWJTZXR0aW5ncyBHVEsrIG9iamVjdCBpcyBjcmVh
dGVkIGFuZCBmaXJzdCBzZXQgb2YKKyAgICAgICAgQVBJJ3MgYXJlIHdyaXR0ZW4gdG8gZ2V0IG9y
IHNldCB0aGUgcHJvcGVydGllcyBvZiBXZWJLaXRXZWJTZXR0aW5ncy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MzcxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHA6IEFkZGVkLgorICAg
ICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93
ZWJfc2V0dGluZ3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJTZXR0aW5nc0ZpbmFsaXplKToK
KyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhX3NjcmlwdHMpOgor
ICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaW1hZ2VzX2F1dG9tYXRpY2Fs
bHkpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3Jp
bmdfaW1hZ2VfbG9hZGluZ19wcmVmZXJlbmNlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlX2VuYWJsZWQpOgorICAgICAgICAo
d2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9jYWxfc3RvcmFnZV9lbmFibGVkKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2RhdGFiYXNlc19lbmFibGVkKToKKyAgICAgICAgKHdl
YmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3hzc19hdWRpdG9yX2VuYWJsZWQpOgorICAgICAgICAod2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfZnJhbWVfZmxhdHRlcmluZ19lbmFibGVkKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3BsdWdpbnNfZW5hYmxlZCk6CisgICAgICAgICh3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9qYXZhX2VuYWJsZWQpOgorICAgICAgICAod2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfamF2YV9zY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KToK
KyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2h5cGVybGlua19hdWRpdGluZ19lbmFi
bGVkKToKKyAgICAgICAgKHdlYmtpdFdlYlNldHRpbmdzU2V0UHJvcGVydHkpOgorICAgICAgICAo
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YV9zY3JpcHRfZW5hYmxlZCk6CisgICAgICAgICh3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19pbWFnZXNfYXV0b21hdGljYWxseSk6CisgICAg
ICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19zaXRlX2ljb25zX2lnbm9yaW5nX2lt
YWdlX2xvYWRpbmdfcHJlZmVyZW5jZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZV9lbmFibGVkKToKKyAgICAgICAgKHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X2xvY2FsX3N0b3JhZ2VfZW5hYmxlZCk6CisgICAgICAgICh3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9kYXRhYmFzZV9lbmFibGVkKToKKyAgICAgICAgKHdlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X3hzc19hdWRpdG9yX2VuYWJsZWQpOgorICAgICAgICAod2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfZnJhbWVfZmxhdHRlbmluZ19lbmFibGVkKToKKyAgICAgICAgKHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X3BsdWdpbnNfZW5hYmxlZCk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9qYXZhX2VuYWJsZWQpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfamF2YV9zY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2h5cGVybGlua19hdWRpdGluZ19lbmFibGVkKToK
KyAgICAgICAgKHdlYmtpdFdlYlNldHRpbmdzR2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0
X3dlYl9zZXR0aW5nc19uZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlNldHRpbmdzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rl
c3R3ZWJzZXR0aW5ncy5jOiBBZGRlZC4KKyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc1Nj
cmlwdHMpOgorICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b2xvYWQpOgorICAgICAg
ICAodGVzdFdlYktpdFdlYlNldHRpbmdzTG9hZEljb25JZ25vcmluZ0ltYWdlTG9hZFByZWYpOgor
ICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdzT2ZmbGluZUFwcENhY2hlKToKKyAgICAgICAg
KHRlc3RXZWJLaXRXZWJTZXR0aW5nc0xvY2FsU3RvcmFnZSk6CisgICAgICAgICh0ZXN0V2ViS2l0
V2ViU2V0dGluZ3NEYXRhYmFzZSk6CisgICAgICAgICh0ZXN0V2ViS2l0V2ViU2V0dGluZ3NYc3NB
dWRpdG9yKToKKyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc0ZyYW1lRmxhdHRlcmluZyk6
CisgICAgICAgICh0ZXN0V2ViS2l0V2ViU2V0dGluZ3NQbHVnaW5zKToKKyAgICAgICAgKHRlc3RX
ZWJLaXRXZWJTZXR0aW5nc0phdmEpOgorICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdzQXV0
b09wZW5XaW5kb3cpOgorICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdzSHlwZXJMaW5rQXVk
aXRpbmcpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mmd0ay5oOgorCiAyMDExLTA5LTE5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQWx3YXlzIGVuYWJsZSBFTkFCTEUoRVZFTlRTT1VSQ0UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IGRlMWVmOTcuLjlmNjRhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC03
MCw2ICs3MCw3IEBAIGxpYndlYmtpdDJndGtpbmNsdWRlZGlyID0gJChsaWJ3ZWJraXRndGtpbmNs
dWRlZGlyKS93ZWJraXQyCiBsaWJ3ZWJraXQyZ3RraW5jbHVkZV9IRUFERVJTID0gXAogCSQoV2Vi
S2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIFwKIAkkKFdlYktpdDIp
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBcCisJJChXZWJLaXQyKS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmgKIAogbGlid2Via2l0Z3RraW5jbHVkZV9IRUFERVJT
ICs9IFwKQEAgLTQ1NCw2ICs0NTUsOCBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01B
Sk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBcCisJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwIFwKKwlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwKQEAgLTk4Niw3ICs5
ODksOCBAQCBDTEVBTkZJTEVTICs9IFwKICMgVW5pdCB0ZXN0cwogVEVTVF9QUk9HUyArPSBcCiAJ
UHJvZ3JhbXMvdW5pdHRlc3RzL3dlYmtpdDIvdGVzdHdlYmNvbnRleHQgXAotCVByb2dyYW1zL3Vu
aXR0ZXN0cy93ZWJraXQyL3Rlc3R3ZWJ2aWV3CisJUHJvZ3JhbXMvdW5pdHRlc3RzL3dlYmtpdDIv
dGVzdHdlYnZpZXcgXAorCVByb2dyYW1zL3VuaXR0ZXN0cy93ZWJraXQyL3Rlc3R3ZWJzZXR0aW5n
cwogCiBub2luc3RfUFJPR1JBTVMgKz0gJChURVNUX1BST0dTKQogd2Via2l0Ml90ZXN0c19jZmxh
Z3MgPSBcCkBAIC0xMDIyLDYgKzEwMjYsMTEgQEAgUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJf
dGVzdHdlYnZpZXdfQ0ZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2NmbGFncykKIFByb2dyYW1zX3Vu
aXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJ2aWV3X0xEQUREID0gJCh3ZWJraXQyX3Rlc3RzX2xkYWRk
KQogUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnZpZXdfTERGTEFHUyA9ICQod2Vi
a2l0Ml90ZXN0c19sZGZsYWdzKQogCitQcm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0d2Vi
c2V0dGluZ3NfU09VUkNFUyA9IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L3Rlc3R3ZWJzZXR0aW5ncy5jCitQcm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0d2Vic2V0
dGluZ3NfQ0ZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2NmbGFncykKK1Byb2dyYW1zX3VuaXR0ZXN0
c193ZWJraXQyX3Rlc3R3ZWJzZXR0aW5nc19MREFERCA9ICQod2Via2l0Ml90ZXN0c19sZGFkZCkK
K1Byb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJzZXR0aW5nc19MREZMQUdTID0gJCh3
ZWJraXQyX3Rlc3RzX2xkZmxhZ3MpCisKIERJU1RDTEVBTkZJTEVTICs9IFwKIAkkKHRvcF9idWls
ZGRpcikvV2ViS2l0Mi93ZWJraXQyZ3RrLUBXRUJLSVRHVEtfQVBJX1ZFUlNJT05ALnBjCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRp
bmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRp
bmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDlkMDllCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
U2V0dGluZ3MuY3BwCkBAIC0wLDAgKzEsNjU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4
IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgorICogQ29weXJpZ2h0IChD
KSAyMDA4IE51YW50aSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEphbiBNaWNoYWVsIEFsb256bworICogQ29weXJpZ2h0IChDKSAyMDA5
IE1vdmlhbCBDcmVhdGl2ZSBUZWNobm9sb2dpZXMgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5
IElnYWxpYSBTLkwuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9i
aWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJLaXRXZWJTZXR0aW5ncy5oIgorCisjaW5jbHVkZSAiV2ViS2l0R2xvYmFsc1By
aXZhdGUuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLVHlwZS5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisKKworc3RydWN0
IF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgeworICAgIFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVy
ZW5jZXM7Cit9OworCisvKioKKyAqIFNFQ1RJT046d2Via2l0d2Vic2V0dGluZ3MKKyAqIEBzaG9y
dF9kZXNjcmlwdGlvbjogQ29udHJvbCB0aGUgYmVoYXZpb3VyIG9mIGEgI1dlYktpdFdlYlZpZXcK
KyAqCisgKiAjV2ViS2l0V2ViU2V0dGluZ3MgY2FuIGJlIGFwcGxpZWQgdG8gYSAjV2ViS2l0V2Vi
VmlldyB0byBjb250cm9sIHRleHQgZW5jb2RpbmcsIAorICogY29sb3IsIGZvbnQgc2l6ZXMsIHBy
aW50aW5nIG1vZGUsIHNjcmlwdCBzdXBwb3J0LCBsb2FkaW5nIG9mIGltYWdlcyBhbmQgdmFyaW91
cyBvdGhlciB0aGluZ3MuIAorICogQWZ0ZXIgY3JlYXRpb24sIGEgI1dlYktpdFdlYlNldHRpbmdz
IG9iamVjdCBjb250YWlucyBkZWZhdWx0IHNldHRpbmdzLiAKKyAqCisgKiA8aW5mb3JtYWxleGFt
cGxlPjxwcm9ncmFtbGlzdGluZz4KKyAqIC88IS0tIC0tPiogQ3JlYXRlIGEgbmV3IHdlYnNldHRp
bmdzIGFuZCBkaXNhYmxlIGphdmEgc2NyaXB0ICo8IS0tIC0tPi8KKyAqIFdlYktpdFdlYlNldHRp
bmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3ICgpOworICogZ19vYmplY3Rf
c2V0IChHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtc2NyaXB0cyIsIEZBTFNFLCBOVUxMKTsK
KyAqCisgKiAvPCEtLSAtLT4qIEFwcGx5IHRoZSByZXN1bHQgKjwhLS0gLS0+LworICogd2Via2l0
X3dlYl92aWV3X3NldF9zZXR0aW5ncyAoV0VCS0lUX1dFQl9WSUVXKG15X3dlYnZpZXcpLCBzZXR0
aW5ncyk7CisgKiA8L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxleGFtcGxlPgorICovCisKKwor
R19ERUZJTkVfVFlQRShXZWJLaXRXZWJTZXR0aW5ncywgd2Via2l0X3dlYl9zZXR0aW5ncywgR19U
WVBFX09CSkVDVCkKKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9FTkFCTEVfSkFW
QV9TQ1JJUFQsCisgICAgUFJPUF9BVVRPX0xPQURfSU1BR0VTLAorICAgIFBST1BfTE9BRF9JQ09O
X0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRiwKKyAgICBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9B
UFBMSUNBVElPTl9DQUNIRSwKKyAgICBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFLAor
ICAgIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNFLAorICAgIFBST1BfRU5BQkxFX1hTU19BVURJ
VE9SLAorICAgIFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRURU5JTkcsCisgICAgUFJPUF9FTkFCTEVf
UExVR0lOUywKKyAgICBQUk9QX0VOQUJMRV9KQVZBLAorICAgIFBST1BfSkFWQVNDUklQVF9DQU5f
T1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFksCisgICAgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FV
RElUSU5HLAorfTsKKworCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJTZXR0aW5nc0ZpbmFsaXplKEdP
YmplY3QqIG9iamVjdCk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlNldHRpbmdzU2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBH
UGFyYW1TcGVjKiBwc3BlYyk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlNldHRpbmdzR2V0UHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBHUGFy
YW1TcGVjKiBwc3BlYyk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3Nf
aW5pdChXZWJLaXRXZWJTZXR0aW5nc0NsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3Mq
IGdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBnT2JqZWN0Q2xhc3Mt
PmZpbmFsaXplID0gd2Via2l0V2ViU2V0dGluZ3NGaW5hbGl6ZTsKKyAgICBnT2JqZWN0Q2xhc3Mt
PnNldF9wcm9wZXJ0eSA9IHdlYmtpdFdlYlNldHRpbmdzU2V0UHJvcGVydHk7CisgICAgZ09iamVj
dENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRXZWJTZXR0aW5nc0dldFByb3BlcnR5OworCisg
ICAgR1BhcmFtRmxhZ3MgZmxhZ3MgPSAoR1BhcmFtRmxhZ3MpKFdFQktJVF9QQVJBTV9SRUFEV1JJ
VEUgfCBHX1BBUkFNX0NPTlNUUlVDVCk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRp
bmdzOmVuYWJsZS1qYXZhLXNjcmlwdAorICAgICoKKyAgICAqIFRoaXMgcHJvcGVydHkgbmVlZHMg
dG8gYmUgc2V0IHRvIGVuYWJsZSB0aGUgZXhlY3V0aW9uIG9mIAorICAgICogSmF2YXNjcmlwdCB3
aXRoaW4gYSBwYWdlLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJPUF9FTkFCTEVfSkFWQV9TQ1JJUFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmFibGUtamF2YS1zY3JpcHQiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
RW5hYmxlIEphdmEgU2NyaXB0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSmF2YSBTY3JpcHQgbGFuZ3VhZ2VzLiIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsYWdzKSk7CisgICAgCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5n
czphdXRvLWxvYWQtaW1hZ2VzCisgICAgKgorICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGltYWdl
cyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBsb2FkZWQgb3Igbm90LgorICAgICogT24gZGV2aWNl
cywgd2hlcmUgbmV0d29yayBiYW5kd2lkdGggaXMgb2YgY29uY2VybiwgaXQgbWlnaHQgYmUKKyAg
ICAqIHVzZWZ1bCB0byB0dXJuIHRoaXMgcHJvcGVydHkgb2ZmLgorICAgICoKKyAgICAqLworICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9BVVRPX0xPQURfSU1BR0VTLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXV0
by1sb2FkLWltYWdlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfKCJBdXRvIExvYWQgSW1hZ2VzIiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJMb2FkIGltYWdlcyBh
dXRvbWF0aWNhbGx5LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisgICAgCisgICAgLyoqCisgICAgKiBX
ZWJLaXRXZWJTZXR0aW5nczpsb2FkLWljb24taWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmCisgICAg
KgorICAgICogQnkgZW5hYmxpbmcgdGhpcyBwcm9wZXJ0eSwgc2l0ZSBpY29ucyAoZS5nLCBmYXZp
Y29uKSB3aWxsIGJlIGxvYWRlZAorICAgICogaXJyZXNwZWN0aXZlIG9mIHRoZSB2YWx1ZSBvZiAn
YXV0by1sb2FkLWltYWdlcycuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUk9QX0xPQURfSUNPTl9JR05PUklOR19JTUFHRV9MT0FEX1BSRUYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2Fk
LWljb24taWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkxvYWQgU2l0ZSBJY29uIGlnbm9y
aW5nIGltYWdlIGxvYWQgcHJlZmVyZW5jZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBsb2FkIHNpdGUgaWNv
biBpZ25vcmluZyBpbWFnZSBsb2FkIHByZWZlcmVuY2UuIiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisK
KyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1vZmZsaW5lLXdlYi1hcHBs
aWNhdGlvbi1jYWNoZQorICAgICoKKyAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IG9mZmxp
bmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIHN1cHBvcnQuIE9mZmxpbmUKKyAgICAqIFdlYiBBcHBs
aWNhdGlvbiBDYWNoZSBlbnN1cmVzIHdlYiBhcHBsaWNhdGlvbnMgYXJlIGF2YWlsYWJsZSBldmVu
IHdoZW4KKyAgICAqIHRoZSB1c2VyIGlzIG5vdCBjb25uZWN0ZWQgdG8gdGhlIG5ldHdvcmsuCisg
ICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0
Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9P
RkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtb2ZmbGluZS13ZWItYXBwbGlj
YXRpb24tY2FjaGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiRW5hYmxlIG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlvbiBjYWNoZSIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFi
bGUtaHRtbDUtbG9jYWwtc3RvcmFnZToKKyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBI
VE1MNSBsb2NhbFN0b3JhZ2Ugc3VwcG9ydC4gbG9jYWxTdG9yYWdlIHByb3ZpZGVzCisgICAgKiBz
aW1wbGUgc3luY2hyb25vdXMgc3RvcmFnZSBhY2Nlc3MuCisgICAgKgorICAgICovCisgICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4o
ImVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBIVE1MNSBMb2NhbCBTdG9y
YWdlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBMb2NhbCBTdG9yYWdlIHN1cHBvcnQi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczpl
bmFibGUtaHRtbDUtZGF0YWJhc2U6CisgICAgKgorICAgICogV2hldGhlciB0byBlbmFibGUgSFRN
TDUgY2xpZW50LXNpZGUgU1FMIGRhdGFiYXNlIHN1cHBvcnQuIENsaWVudC1zaWRlCisgICAgKiBT
UUwgZGF0YWJhc2UgYWxsb3dzIHdlYiBwYWdlcyB0byBzdG9yZSBzdHJ1Y3R1cmVkIGRhdGEgYW5k
IGJlIGFibGUgdG8KKyAgICAqIHVzZSBTUUwgdG8gbWFuaXB1bGF0ZSB0aGF0IGRhdGEgYXN5bmNo
cm9ub3VzbHkuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
Uk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtaHRtbDUtZGF0YWJhc2UiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
RW5hYmxlIEhUTUw1IERhdGFiYXNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBkYXRh
YmFzZSBzdXBwb3J0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0
V2ViU2V0dGluZ3M6ZW5hYmxlLXhzcy1hdWRpdG9yCisgICAgKgorICAgICogV2hldGhlciB0byBl
bmFibGUgdGhlIFhTUyBBdWRpdG9yLiBUaGlzIGZlYXR1cmUgZmlsdGVycyBzb21lIGtpbmRzIG9m
CisgICAgKiByZWZsZWN0aXZlIFhTUyBhdHRhY2tzIG9uIHZ1bG5lcmFibGUgd2ViIHNpdGVzLgor
ICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVj
dENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVf
WFNTX0FVRElUT1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFt
X3NwZWNfYm9vbGVhbigiZW5hYmxlLXhzcy1hdWRpdG9yIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBYU1MgQXVkaXRv
ciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXygiV2hldGhlciB0byBlbmFibGUgdGhlIFhTUyBhdWRpdG9yIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxh
Z3MpKTsKKworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtZnJhbWUt
ZmxhdHRlbmluZworICAgICoKKyAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBGcmFtZSBGbGF0
dGVuaW5nLiBXaXRoIHRoaXMgc2V0dGluZyBlYWNoIHN1YmZyYW1lIGlzIGV4cGFuZGVkCisgICAg
KiB0byBpdHMgY29udGVudHMsIHdoaWNoIHdpbGwgZmxhdHRlbiBhbGwgdGhlIGZyYW1lcyB0byBi
ZWNvbWUgb25lIHNjcm9sbGFibGUgcGFnZS4KKyAgICAqIE9uIHRvdWNoIGRldmljZXMsIGl0IGlz
IGRlc2lyZWQgdG8gbm90IGhhdmUgYW55IHNjcm9sbGFibGUgc3ViIHBhcnRzIG9mIHRoZSBwYWdl
IGFzCisgICAgKiBpdCByZXN1bHRzIGluIGEgY29uZnVzaW5nIHVzZXIgZXhwZXJpZW5jZSwgd2l0
aCBzY3JvbGxpbmcgc29tZXRpbWVzIHNjcm9sbGluZyBzdWIgcGFydHMKKyAgICAqIGFuZCBhdCBv
dGhlciB0aW1lcyBzY3JvbGxpbmcgdGhlIHBhZ2UgaXRzZWxmLiBGb3IgdGhpcyByZWFzb24gaWZy
YW1lcyBhbmQgZnJhbWVzZXRzIGFyZQorICAgICogYmFyZWx5IHVzYWJsZSBvbiB0b3VjaCBkZXZp
Y2VzLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Z09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9F
TkFCTEVfRlJBTUVfRkxBVFRFTklORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtZnJhbWUtZmxhdHRlbmluZyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJF
bmFibGUgRnJhbWUgRmxhdHRlbmluZyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFibGUgRnJhbWUgRmxh
dHRlbmluZyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAvKioKKyAgICAqIFdlYktpdFdlYlNl
dHRpbmdzOmVuYWJsZS1wbHVnaW5zOgorICAgICoKKyAgICAqIFBsdWdpbnMgZW1kZWRkZWQgd2l0
aGluIGEgcGFnZSBjYW4gYmUgdHVybmVkIG9mZiBieSBkaXNhYmxpbmcKKyAgICAqIHRoaXMgcHJv
cGVydHkuIAorICAgICogCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUk9QX0VOQUJMRV9QTFVHSU5TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5hYmxlLXBsdWdpbnMiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxl
IFBsdWdpbnMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF8oIkVuYWJsZSBlbWJlZGRlZCBwbHVnaW4gb2JqZWN0cy4iKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFncykpOworICAgIAorICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUt
amF2YToKKyAgICAqCisgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzdXBwb3J0IGZvciB0aGUgSmF2
YS4gVGhpcyBwcm9wZXJ0eSBuZWVkcyB0byBiZSBlbmFibGVkCisgICAgKiBmb3IgZGlzcGxheWlu
ZyBqYXZhIGNvbnRlbnRzIHZpYSAgJmx0O29iamVjdCZndDsgb3IgJmx0O2VtYmVkJmd0OyB0YWcu
CisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2Jq
ZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJM
RV9KQVZBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVj
X2Jvb2xlYW4oImVuYWJsZS1qYXZhIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBKYXZhIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIEph
dmEgc3VwcG9ydCBzaG91bGQgYmUgZW5hYmxlZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAv
KioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1h
dXRvbWF0aWNhbGx5CisgICAgKgorICAgICogV2hldGhlciBKYXZhU2NyaXB0IGNhbiBvcGVuIHBv
cHVwIHdpbmRvd3MgYXV0b21hdGljYWxseSB3aXRob3V0IHVzZXIKKyAgICAqIGludGVydmVudGlv
bi4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdP
YmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfSkFW
QVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiamF2YXNjcmlwdC1jYW4t
b3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiSmF2YVNjcmlwdCBjYW4gb3BlbiB3aW5k
b3dzIGF1dG9tYXRpY2FsbHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgSmF2YVNjcmlwdCBjYW4gb3BlbiB3aW5k
b3dzIGF1dG9tYXRpY2FsbHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBX
ZWJLaXRXZWJTZXR0aW5nczplbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nOgorICAgICoKKyAgICAq
IEVuYWJsZSBvciBkaXNhYmxlIHN1cHBvcnQgZm9yICZsdDthIHBpbmcmZ3Q7LgorICAgICoKKyAg
ICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfSFlQRVJMSU5L
X0FVRElUSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9z
cGVjX2Jvb2xlYW4oImVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmciLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEh5cGVy
bGluayBBdWRpdGluZyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXygiV2hldGhlciA8YSBwaW5nPiBzaG91bGQgYmUgYWJsZSB0byBz
ZW5kIHBpbmdzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3NldHRpbmdzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIHNl
dHRpbmdzLT5wcml2ID0gbmV3IFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZTsKKyAgICBzZXR0aW5n
cy0+cHJpdi0+cHJlZmVyZW5jZXMgPSBXS1ByZWZlcmVuY2VzQ3JlYXRlKCk7Cit9CisKK3N0YXRp
YyB2b2lkIHdlYmtpdFdlYlNldHRpbmdzRmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAg
IGRlbGV0ZSBXRUJLSVRfV0VCX1NFVFRJTkdTKG9iamVjdCktPnByaXY7CisgICAgR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0X3dlYl9zZXR0aW5nc19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3Qp
OworfQorCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhX3NjcmlwdHMo
V2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAg
V2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jv
b2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHBy
aXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoZW5hYmxlZCA9PSBjdXJyZW50VmFsdWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhU2NyaXB0RW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcywgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNl
dHRpbmdzKSwgImVuYWJsZS1qYXZhLXNjcmlwdCIpOworfQorCit2b2lkIHdlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2xvYWRzX2ltYWdlc19hdXRvbWF0aWNhbGx5KFdlYktpdFdlYlNldHRpbmdzKiBz
ZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJp
dmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9
IFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5j
ZXMpOworICAgIGlmKGVuYWJsZWQgPT0gY3VycmVudFZhbHVlKQorICAgICAgICByZXR1cm47CisK
KyAgICBXS1ByZWZlcmVuY2VzU2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZl
cmVuY2VzLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3Mp
LCAiYXV0by1sb2FkLWltYWdlcyIpOworfQorCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0
X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRpbmdfcHJlZmVyZW5jZShXZWJLaXRXZWJT
ZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJT
ZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJy
ZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9h
ZGluZ1ByZWZlcmVuY2UocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmKGVuYWJsZWQgPT0gY3Vy
cmVudFZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0TG9hZHNT
aXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2UocHJpdi0+cHJlZmVyZW5jZXMs
IGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJsb2Fk
LWljb24taWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmIik7Cit9CisKK3ZvaWQgd2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGVfZW5hYmxlZChXZWJLaXRX
ZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRX
ZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBj
dXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVF
bmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZihlbmFibGVkID09IGN1cnJlbnRWYWx1
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldE9mZmxpbmVXZWJBcHBs
aWNhdGlvbkNhY2hlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgZW5hYmxlZCk7CisgICAgZ19v
YmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1vZmZsaW5lLXdlYi1hcHBs
aWNhdGlvbi1jYWNoZSIpOworfQorCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvY2Fs
X3N0b3JhZ2VfZW5hYmxlZChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVu
YWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNl
dHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5n
cy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TG9j
YWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYoZW5hYmxlZCA9PSBj
dXJyZW50VmFsdWUpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRMb2Nh
bFN0b3JhZ2VFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCBlbmFibGVkKTsKKyAgICBnX29iamVj
dF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2Ui
KTsKK30KKwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9kYXRhYmFzZXNfZW5hYmxlZChX
ZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBX
ZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9v
bGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0RGF0YWJhc2VzRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcyk7CisgICAgaWYoZW5hYmxlZCA9PSBjdXJyZW50VmFsdWUpCisgICAgICAg
IHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnBy
ZWZlcmVuY2VzLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGlu
Z3MpLCAiZW5hYmxlLWh0bWw1LWRhdGFiYXNlIik7Cit9CisKK3ZvaWQgd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfeHNzX2F1ZGl0b3JfZW5hYmxlZChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3Ms
IGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VC
X1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHBy
aXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZl
cmVuY2VzR2V0WFNTQXVkaXRvckVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmKGVu
YWJsZWQgPT0gY3VycmVudFZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVu
Y2VzU2V0WFNTQXVkaXRvckVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIGVuYWJsZWQpOworICAg
IGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUteHNzLWF1ZGl0b3Ii
KTsKK30KKwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9mcmFtZV9mbGF0dGVyaW5nX2Vu
YWJsZWQoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQorewor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOwor
CisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Cisg
ICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEZyYW1lRmxhdHRlbmlu
Z0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmKGN1cnJlbnRWYWx1ZSA9PSBlbmFi
bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0RnJhbWVGbGF0dGVu
aW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90
aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIik7Cit9CisK
K3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcGx1Z2luc19lbmFibGVkKFdlYktpdFdlYlNl
dHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNl
dHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJl
bnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRQbHVnaW5zRW5hYmxlZChwcml2LT5wcmVmZXJlbmNl
cyk7CisgICAgaWYoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFdLUHJlZmVyZW5jZXNTZXRQbHVnaW5zRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgZW5h
YmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1w
bHVnaW5zIik7Cit9CisKK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfamF2YV9lbmFibGVk
KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAg
IFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdi
b29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRKYXZhRW5hYmxlZChwcml2LT5w
cmVmZXJlbmNlcyk7CisgICAgaWYoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhRW5hYmxlZChwcml2LT5wcmVmZXJlbmNl
cywgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVu
YWJsZS1qYXZhIik7Cit9CisKK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfamF2YV9zY3Jp
cHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0
aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0
ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdL
UHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByaXYt
PnByZWZlcmVuY2VzKTsKKyAgICBpZihjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1
dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMsIGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChzZXR0aW5ncyksICJqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0
b21hdGljYWxseSIpOworfQorCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2h5cGVybGlu
a19hdWRpdGluZ19lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4g
ZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Mo
c2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRp
bmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRI
eXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmKGN1cnJl
bnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2Vz
U2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCBlbmFibGVkKTsK
KyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWh5cGVybGlu
ay1hdWRpdGluZyIpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJTZXR0aW5nc1NldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwg
R1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzID0g
V0VCS0lUX1dFQl9TRVRUSU5HUyhvYmplY3QpOworIAorICAgIHN3aXRjaChwcm9wX2lkKSB7Cisg
ICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZBX1NDUklQVDoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfZW5hYmxlX2phdmFfc2NyaXB0cyhzZXR0aW5ncywgKGJvb2wpZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVVUT19MT0FE
X0lNQUdFUzoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaW1hZ2VzX2F1
dG9tYXRpY2FsbHkoc2V0dGluZ3MsIChib29sKWdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0xPQURfSUNPTl9JR05PUklOR19JTUFHRV9M
T0FEX1BSRUY6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2ln
bm9yaW5nX2ltYWdlX2xvYWRpbmdfcHJlZmVyZW5jZShzZXR0aW5ncywgKGJvb2wpZ192YWx1ZV9n
ZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxF
X09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hFOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZV9lbmFibGVkKHNldHRpbmdzLCAo
Ym9vbClnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFHRToKKyAgICAgICAgd2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfbG9jYWxfc3RvcmFnZV9lbmFibGVkKHNldHRpbmdzLCAoYm9vbClnX3ZhbHVl
X2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFC
TEVfSFRNTDVfREFUQUJBU0U6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2RhdGFi
YXNlc19lbmFibGVkKHNldHRpbmdzLCAoYm9vbClnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1I6CisgICAg
ICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3hzc19hdWRpdG9yX2VuYWJsZWQoc2V0dGluZ3Ms
IChib29sKWdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVOSU5HOgorICAgICAgICB3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9mcmFtZV9mbGF0dGVyaW5nX2VuYWJsZWQoc2V0dGluZ3MsIChib29sKWdfdmFs
dWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VO
QUJMRV9QTFVHSU5TOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wbHVnaW5zX2Vu
YWJsZWQoc2V0dGluZ3MsIChib29sKWdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZBOgorICAgICAgICB3ZWJraXRfd2Vi
X3NldHRpbmdzX3NldF9qYXZhX2VuYWJsZWQoc2V0dGluZ3MsIChib29sKWdfdmFsdWVfZ2V0X2Jv
b2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0pBVkFTQ1JJUFRf
Q0FOX09QRU5fV0lORE9XU19BVVRPTUFUSUNBTExZOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9qYXZhX3NjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGlu
Z3MsIChib29sKWdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkc6CisgICAgICAgIHdlYmtpdF93
ZWJfc2V0dGluZ3Nfc2V0X2h5cGVybGlua19hdWRpdGluZ19lbmFibGVkKHNldHRpbmdzLCAoYm9v
bClnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHBy
b3BfaWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitnYm9vbGVhbiB3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9qYXZhX3NjcmlwdF9lbmFibGVkKFdlYktpdFdlYlNldHRpbmdz
KiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NF
VFRJTkdTKHNldHRpbmdzKSwgZmFsc2UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRl
KiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZh
U2NyaXB0RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKK2dib29sZWFuIHdlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX2ltYWdlc19hdXRvbWF0aWNhbGx5KFdlYktpdFdlYlNldHRp
bmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
X1NFVFRJTkdTKHNldHRpbmdzKSwgZmFsc2UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2
YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRM
b2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCitnYm9vbGVh
biB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19zaXRlX2ljb25zX2lnbm9yaW5nX2ltYWdl
X2xvYWRpbmdfcHJlZmVyZW5jZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIGZh
bHNlKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5w
cml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0lt
YWdlTG9hZGluZ1ByZWZlcmVuY2UocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCitnYm9vbGVhbiB3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZV9lbmFi
bGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgZmFsc2UpOworCisgICAgV2Vi
S2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJu
IFdLUHJlZmVyZW5jZXNHZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQocHJpdi0+
cHJlZmVyZW5jZXMpOworfQorCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Nh
bF9zdG9yYWdlX2VuYWJsZWQoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBmYWxz
ZSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJp
djsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldExvY2FsU3RvcmFnZUVuYWJsZWQocHJpdi0+
cHJlZmVyZW5jZXMpOworfQorCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9kYXRh
YmFzZV9lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgZmFsc2UpOwor
CisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Cisg
ICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnByZWZlcmVu
Y2VzKTsKK30KKworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfeHNzX2F1ZGl0b3Jf
ZW5hYmxlZChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIGZhbHNlKTsKKworICAg
IFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJl
dHVybiBXS1ByZWZlcmVuY2VzR2V0WFNTQXVkaXRvckVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMp
OworfQorCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9mcmFtZV9mbGF0dGVuaW5n
X2VuYWJsZWQoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBmYWxzZSk7CisKKyAg
ICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBy
ZXR1cm4gV0tQcmVmZXJlbmNlc0dldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJpdi0+cHJlZmVy
ZW5jZXMpOworfQorCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wbHVnaW5zX2Vu
YWJsZWQoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBmYWxzZSk7CisKKyAgICBX
ZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1
cm4gV0tQcmVmZXJlbmNlc0dldFBsdWdpbnNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKK30K
KworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YV9lbmFibGVkKFdlYktpdFdl
YlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgZmFsc2UpOworCisgICAgV2ViS2l0V2ViU2V0dGlu
Z3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5j
ZXNHZXRKYXZhRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKK2dib29sZWFuIHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFfc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGlj
YWxseShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIGZhbHNlKTsKKworICAgIFdl
YktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVy
biBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShw
cml2LT5wcmVmZXJlbmNlcyk7Cit9CisKK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2h5cGVybGlua19hdWRpdGluZ19lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRp
bmdzKSwgZmFsc2UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0
dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRIeXBlcmxpbmtBdWRpdGlu
Z0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJT
ZXR0aW5nc0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVl
KiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHNl
dHRpbmdzID0gV0VCS0lUX1dFQl9TRVRUSU5HUyhvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9w
X2lkKSB7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZBX1NDUklQVDoKKyAgICAgICAgZ192YWx1
ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YV9zY3JpcHRf
ZW5hYmxlZChzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVVUT19M
T0FEX0lNQUdFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfbG9hZHNfaW1hZ2VzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3MpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0xPQURfSUNPTl9JR05PUklOR19JTUFHRV9MT0FE
X1BSRUY6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2xvYWRzX3NpdGVfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZGluZ19wcmVmZXJl
bmNlKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfT0ZG
TElORV9XRUJfQVBQTElDQVRJT05fQ0FDSEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4o
dmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2Nh
Y2hlX2VuYWJsZWQoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VO
QUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZh
bHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2NhbF9zdG9yYWdlX2VuYWJsZWQoc2V0dGlu
Z3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFT
RToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZGF0YWJhc2VfZW5hYmxlZChzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfRU5BQkxFX1hTU19BVURJVE9SOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFu
KHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF94c3NfYXVkaXRvcl9lbmFibGVkKHNldHRp
bmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRF
TklORzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfZnJhbWVfZmxhdHRlbmluZ19lbmFibGVkKHNldHRpbmdzKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfUExVR0lOUzoKKyAgICAgICAgZ192YWx1ZV9zZXRf
Ym9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfcGx1Z2luc19lbmFibGVkKHNl
dHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQToKKyAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
amF2YV9lbmFibGVkKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9K
QVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWToKKyAgICAgICAgZ192YWx1
ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YV9zY3JpcHRf
Y2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HOgorICAgICAgICBnX3Zh
bHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9oeXBlcmxpbmtf
YXVkaXRpbmdfZW5hYmxlZChzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
X2lkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3NldHRpbmdzX25ldzoKKyAqCisgKiBDcmVhdGVzIGEgbmV3ICNXZWJLaXRXZWJTZXR0aW5n
cyBpbnN0YW5jZSB3aXRoIGRlZmF1bHQgdmFsdWVzLiBJdCBtdXN0CisgKiBiZSBtYW51YWxseSBh
dHRhY2hlZCB0byBhIFdlYlZpZXcuCisgKgorICogUmV0dXJuczogYSBuZXcgI1dlYktpdFdlYlNl
dHRpbmdzIGluc3RhbmNlCisgKiovCitXZWJLaXRXZWJTZXR0aW5ncyogd2Via2l0X3dlYl9zZXR0
aW5nc19uZXcoKQoreworICAgIHJldHVybiBXRUJLSVRfV0VCX1NFVFRJTkdTKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIE5VTEwpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhZGNmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oCkBAIC0wLDAg
KzEsMTM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENocmlzdGlhbiBEeXdhbiA8Y2hy
aXN0aWFuQGltZW5kaW8uY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA5IEphbiBNaWNoYWVsIEFs
b256byA8am1hbG9uem9AZ21haWwuY29tCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEg
TW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2Vi
S2l0V2ViU2V0dGluZ3NfaAorI2RlZmluZSBXZWJLaXRXZWJTZXR0aW5nc19oCisKKyNpbmNsdWRl
IDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisKK0dfQkVHSU5f
REVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MgICAgICAgICAgICAod2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1NFVFRJTkdT
KG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJ
VF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0dGluZ3MpKQorI2RlZmluZSBXRUJLSVRf
V0VCX1NFVFRJTkdTX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGts
YXNzKSwgIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0dGluZ3NDbGFzcykp
CisjZGVmaW5lIFdFQktJVF9JU19XRUJfU0VUVElOR1Mob2JqKSAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTKSkKKyNkZWZp
bmUgV0VCS0lUX0lTX1dFQl9TRVRUSU5HU19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFT
U19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MpKQorI2RlZmluZSBXRUJL
SVRfV0VCX1NFVFRJTkdTX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFT
Uygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0dGluZ3NDbGFz
cykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5ncyBXZWJLaXRXZWJTZXR0aW5n
czsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc0NsYXNzIFdlYktpdFdlYlNldHRp
bmdzQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlIFdlYktp
dFdlYlNldHRpbmdzUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5ncyB7CisgICAg
R09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUg
KnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzQ2xhc3MgeworICAgIEdPYmpl
Y3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICAvKiBQYWRkaW5nIGZvciBmdXR1cmUgZXhwYW5z
aW9uICovCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAo
Kl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQz
KSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9pZCk7Cit9OworCitX
S19FWFBPUlQgR1R5cGUKK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3R5cGUgICAgICAgICAgKHZv
aWQpOworCitXS19FWFBPUlQgV2ViS2l0V2ViU2V0dGluZ3MgKgord2Via2l0X3dlYl9zZXR0aW5n
c19uZXcgICAgICAgICAgICAgICAodm9pZCk7CisKKy8qIFByb3BlcnR5IHNldCBmdW5jdGlvbnMg
Ki8KK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YV9z
Y3JpcHRzKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCk7CisK
K1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19pbWFnZXNfYXV0
b21hdGljYWxseShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQp
OworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNf
aWdub3JpbmdfaW1hZ2VfbG9hZGluZ19wcmVmZXJlbmNlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0
aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZV9lbmFibGVkKFdlYktpdFdl
YlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCB2b2lk
Cit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2NhbF9zdG9yYWdlX2VuYWJsZWQoV2ViS2l0V2Vi
U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIHZvaWQK
K3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2RhdGFiYXNlc19lbmFibGVkKFdlYktpdFdlYlNldHRp
bmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF94c3NfYXVkaXRvcl9lbmFibGVkKFdlYktpdFdlYlNldHRpbmdz
KiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9mcmFtZV9mbGF0dGVyaW5nX2VuYWJsZWQoV2ViS2l0V2ViU2V0dGlu
Z3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X3BsdWdpbnNfZW5hYmxlZChXZWJLaXRXZWJTZXR0aW5ncyogc2V0
dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfamF2YV9lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jv
b2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9qYXZhX3NjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoV2ViS2l0V2ViU2V0
dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIHZvaWQKK3dl
YmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2h5cGVybGlua19hdWRpdGluZ19lbmFibGVkKFdlYktpdFdl
YlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKKy8qIFByb3BlcnR5IGdl
dCBmdW5jdGlvbiAqLworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9qYXZhX3NjcmlwdF9lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dL
X0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaW1hZ2VzX2F1
dG9tYXRpY2FsbHkoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIGdi
b29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19zaXRlX2ljb25zX2lnbm9yaW5n
X2ltYWdlX2xvYWRpbmdfcHJlZmVyZW5jZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOwor
CitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X29mZmxpbmVfd2Vi
X2FwcGxpY2F0aW9uX2NhY2hlX2VuYWJsZWQoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsK
KworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2NhbF9zdG9y
YWdlX2VuYWJsZWQoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIGdi
b29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9kYXRhYmFzZV9lbmFibGVkKFdlYktpdFdl
YlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfeHNzX2F1ZGl0b3JfZW5hYmxlZChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGlu
Z3MpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2ZyYW1l
X2ZsYXR0ZW5pbmdfZW5hYmxlZChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19F
WFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3BsdWdpbnNfZW5hYmxlZChX
ZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFfZW5hYmxlZChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGlu
Z3MpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFf
c2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShXZWJLaXRXZWJTZXR0aW5ncyog
c2V0dGluZ3MpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2h5cGVybGlua19hdWRpdGluZ19lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7
CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiB3ZWJraXR3ZWJzZXR0aW5nc19oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0
dGluZ3MuYyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJz
ZXR0aW5ncy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ODllMmEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90
ZXN0d2Vic2V0dGluZ3MuYwpAQCAtMCwwICsxLDIwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBKYW4gTWljaGFlbCBBbG9uem8KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBN
b3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGds
aWIuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mmd0ay5oPgorCitz
dGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NTY3JpcHRzKHZvaWQpCit7CisgICAgV2Vi
S2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKwor
ICAgIC8vIFNjcmlwdHMgaXMgZW5hYmxlZCBieSBkZWZhdWx0CisgICAgZ2Jvb2xlYW4gc2NyaXB0
cyA9IEZBTFNFOworICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywgImVuYWJsZS1qYXZhLXNjcmlw
dCIsICZzY3JpcHRzLCBOVUxMKTsKKyAgICBnX2Fzc2VydChzY3JpcHRzKTsKKyAgICBnX29iamVj
dF9zZXQoc2V0dGluZ3MsICJlbmFibGUtamF2YS1zY3JpcHQiLCBGQUxTRSwgTlVMTCk7CisgICAg
Z19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLWphdmEtc2NyaXB0IiwgJnNjcmlwdHMsIE5V
TEwpOworICAgIGdfYXNzZXJ0KCFzY3JpcHRzKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktp
dFdlYlNldHRpbmdzQXV0b2xvYWQodm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0
dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gQnkgZGVmYXVsdCBh
dXRvLWxvYWQtaW1hZ2UgaXMgdHJ1ZQorICAgIGdib29sZWFuIGF1dG9Mb2FkSW1hZ2VzID0gRkFM
U0U7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiYXV0by1sb2FkLWltYWdlcyIsICZhdXRv
TG9hZEltYWdlcywgTlVMTCk7CisgICAgZ19hc3NlcnQoYXV0b0xvYWRJbWFnZXMpOworICAgIGdf
b2JqZWN0X3NldChzZXR0aW5ncywgImF1dG8tbG9hZC1pbWFnZXMiLCBGQUxTRSwgTlVMTCk7Cisg
ICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiYXV0by1sb2FkLWltYWdlcyIsICZhdXRvTG9hZElt
YWdlcywgTlVMTCk7CisgICAgZ19hc3NlcnQoIWF1dG9Mb2FkSW1hZ2VzKTsKK30KKworc3RhdGlj
IHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzTG9hZEljb25JZ25vcmluZ0ltYWdlTG9hZFByZWYo
dm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3Nl
dHRpbmdzX25ldygpOworCisgICAgLy8gbG9hZC1pY29uLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJl
ZiBpcyBmYWxzZSBieSBkZWZhdWx0CisgICAgZ2Jvb2xlYW4gbG9hZEljb24gPSBGQUxTRTsKKyAg
ICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJsb2FkLWljb24taWdub3JpbmctaW1hZ2UtbG9hZC1w
cmVmIiwgJmxvYWRJY29uLCBOVUxMKTsKKyAgICBnX2Fzc2VydCghbG9hZEljb24pOworICAgIGdf
b2JqZWN0X3NldChzZXR0aW5ncywgImxvYWQtaWNvbi1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWYi
LCBUUlVFLCBOVUxMKTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJsb2FkLWljb24taWdu
b3JpbmctaW1hZ2UtbG9hZC1wcmVmIiwgJmxvYWRJY29uLCBOVUxMKTsKKyAgICBnX2Fzc2VydChs
b2FkSWNvbik7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc09mZmxpbmVB
cHBDYWNoZSh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtp
dF93ZWJfc2V0dGluZ3NfbmV3KCk7CisgICAgCisgICAgLy8gT2ZmbGluZSBhcHBsaWNhdGlvbiBj
YWNoZSBpcyBmYWxzZSBieSBkZWZhdWx0CisgICAgZ2Jvb2xlYW4gb2ZmbGluZUFwcENhY2hlID0g
RkFMU0U7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLW9mZmxpbmUtd2ViLWFw
cGxpY2F0aW9uLWNhY2hlIiwgJm9mZmxpbmVBcHBDYWNoZSwgTlVMTCk7CisgICAgZ19hc3NlcnQo
IW9mZmxpbmVBcHBDYWNoZSk7CisgICAgZ19vYmplY3Rfc2V0KHNldHRpbmdzLCAiZW5hYmxlLW9m
ZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlIiwgVFJVRSwgTlVMTCk7CisgICAgZ19vYmplY3Rf
Z2V0KHNldHRpbmdzLCAiZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlIiwgJm9m
ZmxpbmVBcHBDYWNoZSwgTlVMTCk7CisgICAgZ19hc3NlcnQob2ZmbGluZUFwcENhY2hlKTsKK30K
Kworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzTG9jYWxTdG9yYWdlKHZvaWQpCit7
CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19u
ZXcoKTsKKworICAgIC8vIExvY2FsIHN0b3JhZ2UgaXMgZW5hYmxlIGJ5IGRlZmF1bHQKKyAgICBn
Ym9vbGVhbiBsb2NhbFN0b3JhZ2UgPSBGQUxTRTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3Ms
ICJlbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZSIsICZsb2NhbFN0b3JhZ2UsIE5VTEwpOworICAg
IGdfYXNzZXJ0KGxvY2FsU3RvcmFnZSk7CisgICAgZ19vYmplY3Rfc2V0KHNldHRpbmdzLCAiZW5h
YmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiLCBGQUxTRSwgTlVMTCk7CisgICAgZ19vYmplY3RfZ2V0
KHNldHRpbmdzLCAiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiLCAmbG9jYWxTdG9yYWdlLCBO
VUxMKTsKKyAgICBnX2Fzc2VydCghbG9jYWxTdG9yYWdlKTsKK30KKworc3RhdGljIHZvaWQgdGVz
dFdlYktpdFdlYlNldHRpbmdzRGF0YWJhc2Uodm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5n
cyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gSFRNTDUg
ZGF0YWJhc2UgaXMgZW5hYmxlZCBieSBkZWZhdWx0CisgICAgZ2Jvb2xlYW4gZGF0YWJhc2UgPSBG
QUxTRTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtaHRtbDUtZGF0YWJhc2Ui
LCAmZGF0YWJhc2UsIE5VTEwpOworICAgIGdfYXNzZXJ0KGRhdGFiYXNlKTsKKyAgICBnX29iamVj
dF9zZXQoc2V0dGluZ3MsICJlbmFibGUtaHRtbDUtZGF0YWJhc2UiLCBGQUxTRSwgTlVMTCk7Cisg
ICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLWh0bWw1LWRhdGFiYXNlIiwgJmRhdGFi
YXNlLCBOVUxMKTsKKyAgICBnX2Fzc2VydCghZGF0YWJhc2UpOworfQorCitzdGF0aWMgdm9pZCB0
ZXN0V2ViS2l0V2ViU2V0dGluZ3NYc3NBdWRpdG9yKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0
dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIFhT
UyBBdWRpdG9yIGlzIGVuYWJsZWQgYnkgZGVmYXVsdAorICAgIGdib29sZWFuIHhzc2F1ZGl0b3Ig
PSBGQUxTRTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUteHNzLWF1ZGl0b3Ii
LCAmeHNzYXVkaXRvciwgTlVMTCk7CisgICAgZ19hc3NlcnQoeHNzYXVkaXRvcik7CisgICAgZ19v
YmplY3Rfc2V0KHNldHRpbmdzLCAiZW5hYmxlLXhzcy1hdWRpdG9yIiwgRkFMU0UsIE5VTEwpOwor
ICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywgImVuYWJsZS14c3MtYXVkaXRvciIsICZ4c3NhdWRp
dG9yLCBOVUxMKTsKKyAgICBnX2Fzc2VydCgheHNzYXVkaXRvcik7Cit9CisKK3N0YXRpYyB2b2lk
IHRlc3RXZWJLaXRXZWJTZXR0aW5nc0ZyYW1lRmxhdHRlcmluZyh2b2lkKQoreworICAgIFdlYktp
dFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAg
ICAvLyBGcmFtZSBmbGF0dGVyaW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKKyAgICBnYm9vbGVh
biBmcmFtZWZsYXR0ZXJpbmcgPSBGQUxTRTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJl
bmFibGUtZnJhbWUtZmxhdHRlbmluZyIsICZmcmFtZWZsYXR0ZXJpbmcsIE5VTEwpOworICAgIGdf
YXNzZXJ0KCFmcmFtZWZsYXR0ZXJpbmcpOworICAgIGdfb2JqZWN0X3NldChzZXR0aW5ncywgImVu
YWJsZS1mcmFtZS1mbGF0dGVuaW5nIiwgVFJVRSwgTlVMTCk7CisgICAgZ19vYmplY3RfZ2V0KHNl
dHRpbmdzLCAiZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmciLCAmZnJhbWVmbGF0dGVyaW5nLCBOVUxM
KTsKKyAgICBnX2Fzc2VydChmcmFtZWZsYXR0ZXJpbmcpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0
V2ViS2l0V2ViU2V0dGluZ3NQbHVnaW5zKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3Mg
KnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIFBsdWdpbnMg
YXJlIGVuYWJsZWQgYnkgZGVmYXVsdAorICAgIGdib29sZWFuIHBsdWdpbnMgPSBGQUxTRTsKKyAg
ICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtcGx1Z2lucyIsICZwbHVnaW5zLCBOVUxM
KTsKKyAgICBnX2Fzc2VydChwbHVnaW5zKTsKKyAgICBnX29iamVjdF9zZXQoc2V0dGluZ3MsICJl
bmFibGUtcGx1Z2lucyIsIEZBTFNFLCBOVUxMKTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3Ms
ICJlbmFibGUtcGx1Z2lucyIsICZwbHVnaW5zLCBOVUxMKTsKKyAgICBnX2Fzc2VydCghcGx1Z2lu
cyk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0phdmEodm9pZCkKK3sK
KyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25l
dygpOworCisgICAgLy8gSmF2YSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQKKyAgICBnYm9vbGVhbiBq
YXZhID0gRkFMU0U7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLWphdmEiLCAm
amF2YSwgTlVMTCk7CisgICAgZ19hc3NlcnQoamF2YSk7CisgICAgZ19vYmplY3Rfc2V0KHNldHRp
bmdzLCAiZW5hYmxlLWphdmEiLCBGQUxTRSwgTlVMTCk7CisgICAgZ19vYmplY3RfZ2V0KHNldHRp
bmdzLCAiZW5hYmxlLWphdmEiLCAmamF2YSwgTlVMTCk7CisgICAgZ19hc3NlcnQoIWphdmEpOwor
fQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NBdXRvT3BlbldpbmRvdyh2b2lk
KQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGlu
Z3NfbmV3KCk7CisKKyAgICAvLyBCeSBkZWZhdWx0LCBKYXZhU2NyaXB0IGNhbiBvcGVuIHdpbmRv
d3MgYXV0b21hdGljYWxseSBpcyBlbmFibGVkLgorICAgIGdib29sZWFuIGF1dG9PcGVuV2luZG93
ID0gRkFMU0U7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiamF2YXNjcmlwdC1jYW4tb3Bl
bi13aW5kb3dzLWF1dG9tYXRpY2FsbHkiLCAmYXV0b09wZW5XaW5kb3csIE5VTEwpOworICAgIGdf
YXNzZXJ0KGF1dG9PcGVuV2luZG93KTsKKyAgICBnX29iamVjdF9zZXQoc2V0dGluZ3MsICJqYXZh
c2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxseSIsIEZBTFNFLCBOVUxMKTsKKyAg
ICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0
b21hdGljYWxseSIsICZhdXRvT3BlbldpbmRvdywgTlVMTCk7CisgICAgZ19hc3NlcnQoIWF1dG9P
cGVuV2luZG93KTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzSHlwZXJM
aW5rQXVkaXRpbmcodm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3
ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gQnkgZGVmYXVsdCBoeXBlciBsaW5r
IGF1ZGl0aW5nIGlzIGVuYWJsZWQuCisgICAgZ2Jvb2xlYW4gaHlwZXJMaW5rQXVkaXQgPSBGQUxT
RTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5n
IiwgJmh5cGVyTGlua0F1ZGl0LCBOVUxMKTsKKyAgICBnX2Fzc2VydChoeXBlckxpbmtBdWRpdCk7
CisgICAgZ19vYmplY3Rfc2V0KHNldHRpbmdzLCAiZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyIs
IEZBTFNFLCBOVUxMKTsKKyAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtaHlwZXJs
aW5rLWF1ZGl0aW5nIiwgJmh5cGVyTGlua0F1ZGl0LCBOVUxMKTsKKyAgICBnX2Fzc2VydCghaHlw
ZXJMaW5rQXVkaXQpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7Cisg
ICAgZ190aHJlYWRfaW5pdChOVUxMKTsKKyAgICBndGtfdGVzdF9pbml0KCZhcmdjLCAmYXJndiwg
TlVMTCk7CisKKyAgICBnX3Rlc3RfYnVnX2Jhc2UoImh0dHBzOi8vYnVncy53ZWJraXQub3JnLyIp
OworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJzZXR0aW5ncy9zY3JpcHRzIiwgdGVz
dFdlYktpdFdlYlNldHRpbmdzU2NyaXB0cyk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0
L3dlYnNldHRpbmdzL2F1dG9sb2FkIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b2xvYWQpOwor
ICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJzZXR0aW5ncy9sb2FkaWNvbmlnbm9yaW5n
aW1hZ2Vsb2FkcHJlZiIsIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0xvYWRJY29uSWdub3JpbmdJbWFn
ZUxvYWRQcmVmKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vic2V0dGluZ3Mvb2Zm
bGluZWFwcGNhY2hlIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzT2ZmbGluZUFwcENhY2hlKTsKKyAg
ICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vic2V0dGluZ3MvbG9jYWxzdG9yYWdlIiwgdGVz
dFdlYktpdFdlYlNldHRpbmdzTG9jYWxTdG9yYWdlKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93
ZWJraXQvd2Vic2V0dGluZ3MvZGF0YWJhc2UiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NEYXRhYmFz
ZSk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnNldHRpbmdzL3hzc2F1ZGl0b3Ii
LCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NYc3NBdWRpdG9yKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMo
Ii93ZWJraXQvd2Vic2V0dGluZ3MvZnJhbWVmbGF0dGVyaW5nIiwgdGVzdFdlYktpdFdlYlNldHRp
bmdzRnJhbWVGbGF0dGVyaW5nKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vic2V0
dGluZ3MvcGx1Z2lucyIsIHRlc3RXZWJLaXRXZWJTZXR0aW5nc1BsdWdpbnMpOworICAgIGdfdGVz
dF9hZGRfZnVuYygiL3dlYmtpdC93ZWJzZXR0aW5ncy9qYXZhIiwgdGVzdFdlYktpdFdlYlNldHRp
bmdzSmF2YSk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnNldHRpbmdzL2F1dG9v
cGVud2luZG93IiwgdGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b09wZW5XaW5kb3cpOworICAgIGdf
dGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJzZXR0aW5ncy9oeXBlcmxpbmthdWRpdGluZyIsIHRl
c3RXZWJLaXRXZWJTZXR0aW5nc0h5cGVyTGlua0F1ZGl0aW5nKTsKKworICAgIHJldHVybiBnX3Rl
c3RfcnVuICgpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay93ZWJraXQyZ3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyZ3RrLmgKaW5kZXggZGZlYmJiNC4uZTA4MTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mmd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJndGsuaApAQCAtMjQsNSArMjQsNiBAQAogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0V2ViQ29udGV4dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2Vi
Vmlld0Jhc2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXcuaD4KKyNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFdlYlNldHRpbmdzLmg+CiAKICNlbmRpZiAvKiBfX1dFQktJVF9IX18g
Ki8KLS0gCjEuNy40LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108286</attachid>
            <date>2011-09-22 00:10:40 -0700</date>
            <delta_ts>2011-09-22 07:00:37 -0700</delta_ts>
            <desc>WebKitWebSettings GTK+ API</desc>
            <filename>0001-WebKitWebSettings-API-added.patch</filename>
            <type>text/plain</type>
            <size>56960</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSA1ZGZhZGNkYWJjNmU0ZmU0NWIzMGNkZDU2MjAzZTYyMTY2YTY1N2E0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogVGh1LCAyMiBTZXAgMjAxMSAxMjozODowOCArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIFdl
YktpdFdlYlNldHRpbmdzIEFQSSBhZGRlZAoKLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNjEgKysKIFNvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArLQogLi4uL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcCAgICAgICAgfCAgODY4ICsrKysrKysrKysrKysr
KysrKysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5o
ICB8ICAxNDggKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJjb250ZXh0
LmMgICAgICAgfCAgICAyICstCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNl
dHRpbmdzLmMgICAgICB8ICAxNjYgKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvd2Via2l0Mmd0ay5oICAgICAgfCAgICAxICsKIDcgZmlsZXMgY2hhbmdlZCwgMTI1NSBpbnNl
cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdz
LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4ZWYwZWQwLi5hMjczY2M3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMTEtMDktMjIgIE5heWFuIEt1bWFyIEsgIDxu
YXlhbmtrQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViS2l0V2ViU2V0dGlu
Z3MgR1RLKyBBUEkncy4KKworICAgICAgICBXZWJLaXRXZWJTZXR0aW5ncyBHVEsrIG9iamVjdCBp
cyBjcmVhdGVkIGFuZCBmaXJzdCBzZXQgb2YKKyAgICAgICAgQVBJJ3MgYXJlIHdyaXR0ZW4gdG8g
Z2V0IG9yIHNldCB0aGUgcHJvcGVydGllcyBvZiBXZWJLaXRXZWJTZXR0aW5ncy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MzcxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHA6IEFkZGVk
LgorICAgICAgICAod2Via2l0V2ViU2V0dGluZ3NGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRX
ZWJTZXR0aW5nc1NldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFdlYlNldHRpbmdzR2V0UHJv
cGVydHkpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRp
bmdzX25ldyk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhX3NjcmlwdF9l
bmFibGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2phdmFfc2NyaXB0X2Vu
YWJsZWQpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaW1hZ2VzX2F1
dG9tYXRpY2FsbHkpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaW1h
Z2VzX2F1dG9tYXRpY2FsbHkpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9h
ZHNfc2l0ZV9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkaW5nX3ByZWZlcmVuY2UpOgorICAgICAg
ICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfc2l0ZV9pY29uc19pZ25vcmluZ19pbWFn
ZV9sb2FkaW5nX3ByZWZlcmVuY2UpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
b2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGVfZW5hYmxlZCk6CisgICAgICAgICh3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZV9lbmFibGVkKToK
KyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvY2FsX3N0b3JhZ2VfZW5hYmxlZCk6
CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2NhbF9zdG9yYWdlX2VuYWJsZWQp
OgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZGF0YWJhc2VfZW5hYmxlZCk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9kYXRhYmFzZXNfZW5hYmxlZCk6CisgICAg
ICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF94c3NfYXVkaXRvcl9lbmFibGVkKToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3hzc19hdWRpdG9yX2VuYWJsZWQpOgorICAgICAg
ICAod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZnJhbWVfZmxhdHRlcmluZ19lbmFibGVkKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2ZyYW1lX2ZsYXR0ZXJpbmdfZW5hYmxlZCk6
CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wbHVnaW5zX2VuYWJsZWQpOgorICAg
ICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcGx1Z2luc19lbmFibGVkKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFfZW5hYmxlZCk6CisgICAgICAgICh3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9qYXZhX2VuYWJsZWQpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfamF2YV9zY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2phdmFfc2NyaXB0X2Nhbl9vcGVuX3dpbmRv
d3NfYXV0b21hdGljYWxseSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9oeXBl
cmxpbmtfYXVkaXRpbmdfZW5hYmxlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9oeXBlcmxpbmtfYXVkaXRpbmdfZW5hYmxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvdGVzdHdlYmNvbnRleHQuYzoKKyAgICAgICAgKHRlc3RXZWJDb250ZXh0RGVmYXVs
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmM6
IEFkZGVkLgorICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdzU2NyaXB0cyk6CisgICAgICAg
ICh0ZXN0V2ViS2l0V2ViU2V0dGluZ3NBdXRvbG9hZCk6CisgICAgICAgICh0ZXN0V2ViS2l0V2Vi
U2V0dGluZ3NMb2FkSWNvbklnbm9yaW5nSW1hZ2VMb2FkUHJlZik6CisgICAgICAgICh0ZXN0V2Vi
S2l0V2ViU2V0dGluZ3NPZmZsaW5lQXBwQ2FjaGUpOgorICAgICAgICAodGVzdFdlYktpdFdlYlNl
dHRpbmdzTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc0RhdGFi
YXNlKToKKyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc1hzc0F1ZGl0b3IpOgorICAgICAg
ICAodGVzdFdlYktpdFdlYlNldHRpbmdzRnJhbWVGbGF0dGVyaW5nKToKKyAgICAgICAgKHRlc3RX
ZWJLaXRXZWJTZXR0aW5nc1BsdWdpbnMpOgorICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdz
SmF2YSk6CisgICAgICAgICh0ZXN0V2ViS2l0V2ViU2V0dGluZ3NBdXRvT3BlbldpbmRvdyk6Cisg
ICAgICAgICh0ZXN0V2ViS2l0V2ViU2V0dGluZ3NIeXBlckxpbmtBdWRpdGluZyk6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyZ3RrLmg6CisKIDIw
MTEtMDktMjEgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAg
W1dLMl0gVUlQcm9jZXNzIHNob3VsZCBjaGVjayB0aGF0IFdlYlByb2Nlc3MgaXNuJ3Qgc2VuZGlu
ZyB1bmV4cGVjdGVkIGZpbGU6IFVSTHMgdG8gaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggNTNm
ZGIzNi4uMDY1OTU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0K
KysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTcwLDYgKzcwLDcgQEAgbGli
d2Via2l0Mmd0a2luY2x1ZGVkaXIgPSAkKGxpYndlYmtpdGd0a2luY2x1ZGVkaXIpL3dlYmtpdDIK
IGxpYndlYmtpdDJndGtpbmNsdWRlX0hFQURFUlMgPSBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlNldHRpbmdzLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuaAogCiBsaWJ3ZWJraXRndGtpbmNsdWRlX0hFQURFUlMgKz0gXApAQCAtNDU0LDYg
KzQ1NSw4IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdF
QktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfU09VCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwIFwKKwlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwKQEAgLTk4OSw3ICs5OTIsOCBAQCBE
SVNUQ0xFQU5GSUxFUyArPSBcCiAjIFVuaXQgdGVzdHMKIFRFU1RfUFJPR1MgKz0gXAogCVByb2dy
YW1zL3VuaXR0ZXN0cy93ZWJraXQyL3Rlc3R3ZWJjb250ZXh0IFwKLQlQcm9ncmFtcy91bml0dGVz
dHMvd2Via2l0Mi90ZXN0d2VidmlldworCVByb2dyYW1zL3VuaXR0ZXN0cy93ZWJraXQyL3Rlc3R3
ZWJ2aWV3IFwKKwlQcm9ncmFtcy91bml0dGVzdHMvd2Via2l0Mi90ZXN0d2Vic2V0dGluZ3MKIAog
bm9pbnN0X1BST0dSQU1TICs9ICQoVEVTVF9QUk9HUykKIHdlYmtpdDJfdGVzdHNfY2ZsYWdzID0g
XApAQCAtMTAyNSw2ICsxMDI5LDExIEBAIFByb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3
ZWJ2aWV3X0NGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19jZmxhZ3MpCiBQcm9ncmFtc191bml0dGVz
dHNfd2Via2l0Ml90ZXN0d2Vidmlld19MREFERCA9ICQod2Via2l0Ml90ZXN0c19sZGFkZCkKIFBy
b2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJ2aWV3X0xERkxBR1MgPSAkKHdlYmtpdDJf
dGVzdHNfbGRmbGFncykKIAorUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnNldHRp
bmdzX1NPVVJDRVMgPSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0
d2Vic2V0dGluZ3MuYworUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnNldHRpbmdz
X0NGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19jZmxhZ3MpCitQcm9ncmFtc191bml0dGVzdHNfd2Vi
a2l0Ml90ZXN0d2Vic2V0dGluZ3NfTERBREQgPSAkKHdlYmtpdDJfdGVzdHNfbGRhZGQpCitQcm9n
cmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0d2Vic2V0dGluZ3NfTERGTEFHUyA9ICQod2Via2l0
Ml90ZXN0c19sZGZsYWdzKQorCiAjIFdlYktpdFdlYlByb2Nlc3MKIGxpYmV4ZWNfUFJPR1JBTVMg
Kz0gXAogCVByb2dyYW1zL1dlYktpdFdlYlByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGRmZTBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwCkBAIC0wLDAg
KzEsODY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENocmlzdGlhbiBEeXdhbiA8Y2hy
aXN0aWFuQGltZW5kaW8uY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA5IEphbiBN
aWNoYWVsIEFsb256bworICogQ29weXJpZ2h0IChDKSAyMDA5IE1vdmlhbCBDcmVhdGl2ZSBUZWNo
bm9sb2dpZXMgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBTLkwuCisgKiBQb3J0
aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJTZXR0
aW5ncy5oIgorCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYktpdDIv
V0tQcmVmZXJlbmNlcy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tUeXBlLmg+CisjaW5jbHVkZSA8
Z2xpYi9naTE4bi1saWIuaD4KKworCitzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSB7
CisgICAgV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlczsKK307CisKKy8qKgorICogU0VDVElP
Tjp3ZWJraXR3ZWJzZXR0aW5ncworICogQHNob3J0X2Rlc2NyaXB0aW9uOiBDb250cm9sIHRoZSBi
ZWhhdmlvdXIgb2YgYSAjV2ViS2l0V2ViVmlldworICoKKyAqICNXZWJLaXRXZWJTZXR0aW5ncyBj
YW4gYmUgYXBwbGllZCB0byBhICNXZWJLaXRXZWJWaWV3IHRvIGNvbnRyb2wgdGV4dCBlbmNvZGlu
ZywgCisgKiBjb2xvciwgZm9udCBzaXplcywgcHJpbnRpbmcgbW9kZSwgc2NyaXB0IHN1cHBvcnQs
IGxvYWRpbmcgb2YgaW1hZ2VzIGFuZCB2YXJpb3VzIG90aGVyIHRoaW5ncy4gCisgKiBBZnRlciBj
cmVhdGlvbiwgYSAjV2ViS2l0V2ViU2V0dGluZ3Mgb2JqZWN0IGNvbnRhaW5zIGRlZmF1bHQgc2V0
dGluZ3MuIAorICoKKyAqIDxpbmZvcm1hbGV4YW1wbGU+PHByb2dyYW1saXN0aW5nPgorICogLzwh
LS0gLS0+KiBDcmVhdGUgYSBuZXcgd2Vic2V0dGluZ3MgYW5kIGRpc2FibGUgamF2YSBzY3JpcHQg
KjwhLS0gLS0+LworICogV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9z
ZXR0aW5nc19uZXcgKCk7CisgKiBnX29iamVjdF9zZXQgKEdfT0JKRUNUKHNldHRpbmdzKSwgImVu
YWJsZS1zY3JpcHRzIiwgRkFMU0UsIE5VTEwpOworICoKKyAqIC88IS0tIC0tPiogQXBwbHkgdGhl
IHJlc3VsdCAqPCEtLSAtLT4vCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzIChXRUJL
SVRfV0VCX1ZJRVcobXlfd2VidmlldyksIHNldHRpbmdzKTsKKyAqIDwvcHJvZ3JhbWxpc3Rpbmc+
PC9pbmZvcm1hbGV4YW1wbGU+CisgKi8KKworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYlNldHRp
bmdzLCB3ZWJraXRfd2ViX3NldHRpbmdzLCBHX1RZUEVfT0JKRUNUKQorCitlbnVtIHsKKyAgICBQ
Uk9QXzAsCisKKyAgICBQUk9QX0VOQUJMRV9KQVZBX1NDUklQVCwKKyAgICBQUk9QX0FVVE9fTE9B
RF9JTUFHRVMsCisgICAgUFJPUF9MT0FEX0lDT05fSUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGLAor
ICAgIFBST1BfRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hFLAorICAgIFBST1Bf
RU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0UsCisgICAgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJB
U0UsCisgICAgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1IsCisgICAgUFJPUF9FTkFCTEVfRlJBTUVf
RkxBVFRFUklORywKKyAgICBQUk9QX0VOQUJMRV9QTFVHSU5TLAorICAgIFBST1BfRU5BQkxFX0pB
VkEsCisgICAgUFJPUF9KQVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWSwK
KyAgICBQUk9QX0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkcsCit9OworCitzdGF0aWMgdm9pZCB3
ZWJraXRXZWJTZXR0aW5nc0ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBHX09CSkVD
VF9DTEFTUyh3ZWJraXRfd2ViX3NldHRpbmdzX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVj
dCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlNldHRpbmdzU2V0UHJvcGVydHkoR09iamVj
dCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSBXRUJLSVRfV0VC
X1NFVFRJTkdTKG9iamVjdCk7CisgCisgICAgc3dpdGNoKHByb3BfaWQpIHsKKyAgICBjYXNlIFBS
T1BfRU5BQkxFX0pBVkFfU0NSSVBUOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9q
YXZhX3NjcmlwdF9lbmFibGVkKHNldHRpbmdzLCAoYm9vbClnX3ZhbHVlX2dldF9ib29sZWFuKHZh
bHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9BVVRPX0xPQURfSU1BR0VTOgor
ICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19pbWFnZXNfYXV0b21hdGljYWxs
eShzZXR0aW5ncywgKGJvb2wpZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfTE9BRF9JQ09OX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRjoK
KyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfc2l0ZV9pY29uc19pZ25vcmlu
Z19pbWFnZV9sb2FkaW5nX3ByZWZlcmVuY2Uoc2V0dGluZ3MsIChib29sKWdfdmFsdWVfZ2V0X2Jv
b2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9PRkZM
SU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRToKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19z
ZXRfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGVfZW5hYmxlZChzZXR0aW5ncywgKGJvb2wp
Z192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBS
T1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0U6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2xvY2FsX3N0b3JhZ2VfZW5hYmxlZChzZXR0aW5ncywgKGJvb2wpZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hU
TUw1X0RBVEFCQVNFOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9kYXRhYmFzZXNf
ZW5hYmxlZChzZXR0aW5ncywgKGJvb2wpZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1hTU19BVURJVE9SOgorICAgICAgICB3
ZWJraXRfd2ViX3NldHRpbmdzX3NldF94c3NfYXVkaXRvcl9lbmFibGVkKHNldHRpbmdzLCAoYm9v
bClnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRFUklORzoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZnJhbWVfZmxhdHRlcmluZ19lbmFibGVkKHNldHRpbmdzLCAoYm9vbClnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVf
UExVR0lOUzoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcGx1Z2luc19lbmFibGVk
KHNldHRpbmdzLCAoYm9vbClnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQToKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfamF2YV9lbmFibGVkKHNldHRpbmdzLCAoYm9vbClnX3ZhbHVlX2dldF9ib29sZWFu
KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9KQVZBU0NSSVBUX0NBTl9P
UEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWToKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19z
ZXRfamF2YV9zY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzLCAo
Ym9vbClnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HOgorICAgICAgICB3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9oeXBlcmxpbmtfYXVkaXRpbmdfZW5hYmxlZChzZXR0aW5ncywgKGJvb2wpZ192
YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lk
LCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0
V2ViU2V0dGluZ3NHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdW
YWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYlNldHRpbmdz
KiBzZXR0aW5ncyA9IFdFQktJVF9XRUJfU0VUVElOR1Mob2JqZWN0KTsKKworICAgIHN3aXRjaCAo
cHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQV9TQ1JJUFQ6CisgICAgICAgIGdf
dmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFfc2Ny
aXB0X2VuYWJsZWQoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0FV
VE9fTE9BRF9JTUFHRVM6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX2ltYWdlc19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9MT0FEX0lDT05fSUdOT1JJTkdfSU1BR0Vf
TE9BRF9QUkVGOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9sb2Fkc19zaXRlX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRpbmdfcHJl
ZmVyZW5jZShzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxF
X09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29s
ZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9vZmZsaW5lX3dlYl9hcHBsaWNhdGlv
bl9jYWNoZV9lbmFibGVkKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJP
UF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFHRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9jYWxfc3RvcmFnZV9lbmFibGVkKHNl
dHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfREFU
QUJBU0U6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2RhdGFiYXNlX2VuYWJsZWQoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUjoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9v
bGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfeHNzX2F1ZGl0b3JfZW5hYmxlZChz
ZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0ZSQU1FX0ZM
QVRURVJJTkc6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2ZyYW1lX2ZsYXR0ZXJpbmdfZW5hYmxlZChzZXR0aW5ncykpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1BMVUdJTlM6CisgICAgICAgIGdfdmFsdWVf
c2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3BsdWdpbnNfZW5hYmxl
ZChzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0pBVkE6
CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X2phdmFfZW5hYmxlZChzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBS
T1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFk6CisgICAgICAgIGdf
dmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFfc2Ny
aXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncykpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hZUEVSTElOS19BVURJVElORzoKKyAgICAgICAg
Z192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfaHlwZXJs
aW5rX2F1ZGl0aW5nX2VuYWJsZWQoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwg
cHJvcF9pZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRXZWJTZXR0aW5nc0NsYXNzKiBr
bGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNT
KGtsYXNzKTsKKyAgICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0V2ViU2V0dGluZ3NG
aW5hbGl6ZTsKKyAgICBnT2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdFdlYlNldHRp
bmdzU2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRX
ZWJTZXR0aW5nc0dldFByb3BlcnR5OworCisgICAgR1BhcmFtRmxhZ3MgZmxhZ3MgPSBzdGF0aWNf
Y2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RS
VUNUKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWphdmEtc2Ny
aXB0CisgICAgKgorICAgICogVGhpcyBwcm9wZXJ0eSBuZWVkcyB0byBiZSBzZXQgdG8gZW5hYmxl
IHRoZSBleGVjdXRpb24gb2YgCisgICAgKiBKYXZhc2NyaXB0IHdpdGhpbiBhIHBhZ2UuCisgICAg
KgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xh
c3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9KQVZB
X1NDUklQVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3Bl
Y19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImVuYWJsZS1qYXZhLXNjcmlwdCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSmF2YSBTY3JpcHQi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF8oIkVuYWJsZSBKYXZhIFNjcmlwdCBsYW5ndWFnZXMuIiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsK
KyAgICAKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmF1dG8tbG9hZC1pbWFnZXMK
KyAgICAqCisgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW1hZ2VzIHNob3VsZCBiZSBhdXRvbWF0
aWNhbGx5IGxvYWRlZCBvciBub3QuCisgICAgKiBPbiBkZXZpY2VzLCB3aGVyZSBuZXR3b3JrIGJh
bmR3aWR0aCBpcyBvZiBjb25jZXJuLCBpdCBtaWdodCBiZQorICAgICogdXNlZnVsIHRvIHR1cm4g
dGhpcyBwcm9wZXJ0eSBvZmYuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUk9QX0FVVE9fTE9BRF9JTUFHRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdXRvLWxvYWQtaW1hZ2VzIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8o
IkF1dG8gTG9hZCBJbWFnZXMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF8oIkxvYWQgaW1hZ2VzIGF1dG9tYXRpY2FsbHkuIiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
UlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ3MpKTsKKyAgICAKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmxv
YWQtaWNvbi1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWYKKyAgICAqCisgICAgKiBCeSBlbmFibGlu
ZyB0aGlzIHByb3BlcnR5LCBzaXRlIGljb25zIChlLmcsIGZhdmljb24pIHdpbGwgYmUgbG9hZGVk
CisgICAgKiBpcnJlc3BlY3RpdmUgb2YgdGhlIHZhbHVlIG9mICdhdXRvLWxvYWQtaW1hZ2VzJy4K
KyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmpl
Y3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfTE9BRF9J
Q09OX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvYWQtaWNvbi1pZ25vcmluZy1pbWFn
ZS1sb2FkLXByZWYiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiTG9hZCBTaXRlIEljb24gaWdub3JpbmcgaW1hZ2UgbG9hZCBwcmVm
ZXJlbmNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGxvYWQgc2l0ZSBpY29uIGlnbm9yaW5nIGltYWdlIGxv
YWQgcHJlZmVyZW5jZS4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2Vi
S2l0V2ViU2V0dGluZ3M6ZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlCisgICAg
KgorICAgICogV2hldGhlciB0byBlbmFibGUgSFRNTDUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24g
Y2FjaGUgc3VwcG9ydC4gT2ZmbGluZQorICAgICogV2ViIEFwcGxpY2F0aW9uIENhY2hlIGVuc3Vy
ZXMgd2ViIGFwcGxpY2F0aW9ucyBhcmUgYXZhaWxhYmxlIGV2ZW4gd2hlbgorICAgICogdGhlIHVz
ZXIgaXMgbm90IGNvbm5lY3RlZCB0byB0aGUgbmV0d29yay4KKyAgICAqCisgICAgKi8KKyAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FU
SU9OX0NBQ0hFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9z
cGVjX2Jvb2xlYW4oImVuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJF
bmFibGUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5h
YmxlIG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisK
KyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1odG1sNS1sb2NhbC1zdG9y
YWdlOgorICAgICoKKyAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IGxvY2FsU3RvcmFnZSBz
dXBwb3J0LiBsb2NhbFN0b3JhZ2UgcHJvdmlkZXMKKyAgICAqIHNpbXBsZSBzeW5jaHJvbm91cyBz
dG9yYWdlIGFjY2Vzcy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh0bWw1LWxvY2Fs
LXN0b3JhZ2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXygiRW5hYmxlIEhUTUw1IExvY2FsIFN0b3JhZ2UiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIg
dG8gZW5hYmxlIEhUTUw1IExvY2FsIFN0b3JhZ2Ugc3VwcG9ydCIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7
CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1odG1sNS1kYXRhYmFz
ZToKKyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBjbGllbnQtc2lkZSBTUUwg
ZGF0YWJhc2Ugc3VwcG9ydC4gQ2xpZW50LXNpZGUKKyAgICAqIFNRTCBkYXRhYmFzZSBhbGxvd3Mg
d2ViIHBhZ2VzIHRvIHN0b3JlIHN0cnVjdHVyZWQgZGF0YSBhbmQgYmUgYWJsZSB0bworICAgICog
dXNlIFNRTCB0byBtYW5pcHVsYXRlIHRoYXQgZGF0YSBhc3luY2hyb25vdXNseS4KKyAgICAqCisg
ICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0hUTUw1X0RB
VEFCQVNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVj
X2Jvb2xlYW4oImVuYWJsZS1odG1sNS1kYXRhYmFzZSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSFRNTDUgRGF0YWJh
c2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IGRhdGFiYXNlIHN1cHBvcnQiKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUt
eHNzLWF1ZGl0b3IKKyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgWFNTIEF1ZGl0
b3IuIFRoaXMgZmVhdHVyZSBmaWx0ZXJzIHNvbWUga2luZHMgb2YKKyAgICAqIHJlZmxlY3RpdmUg
WFNTIGF0dGFja3Mgb24gdnVsbmVyYWJsZSB3ZWIgc2l0ZXMuCisgICAgKgorICAgICovCisgICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFi
bGUteHNzLWF1ZGl0b3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIFhTUyBBdWRpdG9yIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRv
IGVuYWJsZSB0aGUgWFNTIGF1ZGl0b3IiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisKKyAgICAvKioK
KyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nCisgICAgKgor
ICAgICogV2hldGhlciB0byBlbmFibGUgdGhlIEZyYW1lIEZsYXR0ZW5pbmcuIFdpdGggdGhpcyBz
ZXR0aW5nIGVhY2ggc3ViZnJhbWUgaXMgZXhwYW5kZWQKKyAgICAqIHRvIGl0cyBjb250ZW50cywg
d2hpY2ggd2lsbCBmbGF0dGVuIGFsbCB0aGUgZnJhbWVzIHRvIGJlY29tZSBvbmUgc2Nyb2xsYWJs
ZSBwYWdlLgorICAgICogT24gdG91Y2ggZGV2aWNlcywgaXQgaXMgZGVzaXJlZCB0byBub3QgaGF2
ZSBhbnkgc2Nyb2xsYWJsZSBzdWIgcGFydHMgb2YgdGhlIHBhZ2UgYXMKKyAgICAqIGl0IHJlc3Vs
dHMgaW4gYSBjb25mdXNpbmcgdXNlciBleHBlcmllbmNlLCB3aXRoIHNjcm9sbGluZyBzb21ldGlt
ZXMgc2Nyb2xsaW5nIHN1YiBwYXJ0cworICAgICogYW5kIGF0IG90aGVyIHRpbWVzIHNjcm9sbGlu
ZyB0aGUgcGFnZSBpdHNlbGYuIEZvciB0aGlzIHJlYXNvbiBpZnJhbWVzIGFuZCBmcmFtZXNldHMg
YXJlCisgICAgKiBiYXJlbHkgdXNhYmxlIG9uIHRvdWNoIGRldmljZXMuCisgICAgKgorICAgICov
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVS
SU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jv
b2xlYW4oImVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBGcmFtZSBGbGF0dGVu
aW5nIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBGcmFtZSBGbGF0dGVuaW5nIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsYWdzKSk7CisKKyAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLXBsdWdp
bnM6CisgICAgKgorICAgICogUGx1Z2lucyBlbWRlZGRlZCB3aXRoaW4gYSBwYWdlIGNhbiBiZSB0
dXJuZWQgb2ZmIGJ5IGRpc2FibGluZworICAgICogdGhpcyBwcm9wZXJ0eS4gCisgICAgKgorICAg
ICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9QTFVHSU5TLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4o
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZW5hYmxlLXBsdWdpbnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIFBsdWdpbnMiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBlbWJl
ZGRlZCBwbHVnaW4gb2JqZWN0cy4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworICAgIAorICAgLyoqCisg
ICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtamF2YToKKyAgICAqCisgICAgKiBFbmFibGUg
b3IgZGlzYWJsZSBzdXBwb3J0IGZvciB0aGUgSmF2YS4gVGhpcyBwcm9wZXJ0eSBuZWVkcyB0byBi
ZSBlbmFibGVkCisgICAgKiBmb3IgZGlzcGxheWluZyBqYXZhIGNvbnRlbnRzIHZpYSAgJmx0O29i
amVjdCZndDsgb3IgJmx0O2VtYmVkJmd0OyB0YWcuCisgICAgKgorICAgICovCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9KQVZBLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1qYXZhIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8o
IkVuYWJsZSBKYXZhIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIEphdmEgc3VwcG9ydCBzaG91bGQgYmUgZW5hYmxl
ZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdz
OmphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5CisgICAgKgorICAgICog
V2hldGhlciBKYXZhU2NyaXB0IGNhbiBvcGVuIHBvcHVwIHdpbmRvd3MgYXV0b21hdGljYWxseSB3
aXRob3V0IHVzZXIKKyAgICAqIGludGVydmVudGlvbi4KKyAgICAqCisgICAgKi8KKyAgICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FV
VE9NQVRJQ0FMTFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFt
X3NwZWNfYm9vbGVhbigiamF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHki
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXygiSmF2YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9tYXRpY2FsbHkiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldo
ZXRoZXIgSmF2YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9tYXRpY2FsbHkiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtaHlw
ZXJsaW5rLWF1ZGl0aW5nOgorICAgICoKKyAgICAqIEVuYWJsZSBvciBkaXNhYmxlIHN1cHBvcnQg
Zm9yICZsdDthIHBpbmcmZ3Q7LgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1oeXBlcmxp
bmstYXVkaXRpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiRW5hYmxlIEh5cGVybGluayBBdWRpdGluZyIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhl
ciA8YSBwaW5nPiBzaG91bGQgYmUgYWJsZSB0byBzZW5kIHBpbmdzIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3Mp
KTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdl
YlNldHRpbmdzUHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdz
X2luaXQoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIFdlYktpdFdlYlNldHRp
bmdzUHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShzZXR0aW5ncywg
V0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpOworICAg
IHNldHRpbmdzLT5wcml2ID0gcHJpdjsKKyAgICBuZXcgKHByaXYpIFdlYktpdFdlYlNldHRpbmdz
UHJpdmF0ZSgpOworICAgIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcyA9IFdLUHJlZmVyZW5j
ZXNDcmVhdGUoKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX25ldzoKKyAqCisg
KiBDcmVhdGVzIGEgbmV3ICNXZWJLaXRXZWJTZXR0aW5ncyBpbnN0YW5jZSB3aXRoIGRlZmF1bHQg
dmFsdWVzLiBJdCBtdXN0CisgKiBiZSBtYW51YWxseSBhdHRhY2hlZCB0byBhIFdlYlZpZXcuCisg
KgorICogUmV0dXJuczogYSBuZXcgI1dlYktpdFdlYlNldHRpbmdzIGluc3RhbmNlCisgKiovCitX
ZWJLaXRXZWJTZXR0aW5ncyogd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKQoreworICAgIHJldHVy
biBXRUJLSVRfV0VCX1NFVFRJTkdTKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfU0VUVElO
R1MsIE5VTEwpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhX3Nj
cmlwdF9lbmFibGVkOgorICoKKyAqIENoZWNrIGlmIEphdmEgU2NyaXB0IGV4ZWN1dGlvbiB3aXRo
aW4gYSBwYWdlIGlzIHN1cHBvcnRlZCBvciBub3QuCisgKgorICogUmV0dXJuczogVFJVRSAtIElm
IEphdmEgU2NyaXB0IGlzIGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9qYXZhX3NjcmlwdF9lbmFibGVkCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9qYXZhX3NjcmlwdF9lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0
aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdT
KHNldHRpbmdzKSwgZmFsc2UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2
ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfamF2YV9zY3JpcHRfZW5hYmxlZDoKKyAqCisgKiBUaGlzIEFQSSBjYW4gYmUgdXNl
ZCB0byBlbmFibGUvZGlzYWJsZSB0aGUgc3VwcHJ0IGZvciBKYXZhc2NyaXB0CisgKiBleGVjdXRp
b24uCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhX3Njcmlw
dF9lbmFibGVkCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2phdmFfc2NyaXB0
X2VuYWJsZWQoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQor
eworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykp
OworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7
CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRF
bmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoZW5hYmxlZCA9PSBjdXJyZW50VmFs
dWUpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhU2NyaXB0RW5h
YmxlZChwcml2LT5wcmVmZXJlbmNlcywgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdf
T0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1qYXZhLXNjcmlwdCIpOworfQorCisvKioKKyAqIHdl
YmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX2ltYWdlc19hdXRvbWF0aWNhbGx5OgorICoKKyAq
IFRoaXMgQVBJIHdpbGwgcmV0dXJuIFRSVUUgaWYgYXV0b21hdGljIGxvYWRpbmcgb2YgaW1hZ2Vz
IGlzIHR1cm5lZCBlbmFibGVkLgorICoKKyAqIFJldHVybnM6IFRSVUUgLSBJZiBhdXRvIGxvYWRp
bmcgb2YgaW1hZ2VzIGlzIGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9sb2Fkc19pbWFnZXNfYXV0b21hdGljYWxseQorICoqLworZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaW1hZ2VzX2F1dG9tYXRpY2FsbHkoV2ViS2l0V2Vi
U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBmYWxzZSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5n
c1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNl
c0dldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8q
KgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaW1hZ2VzX2F1dG9tYXRpY2FsbHk6
CisgKgorICogQXV0b21hdGljIGxvYWRpbmcgb2YgaW1hZ2VzIGNhbiBiZSB0dXJuZWQgb24vb2Zm
IHVzaW5nIHRoaXMgQVBJLiBJZiBtaWdodAorICogYmUgdXNlZnVsIHRvIHR1cm4gdGhpcyBwcm9w
ZXJ0eSBvZmYsIGluIGNhc2VzIHdoZW4gbmV0d29yayBiYW5kd2lkdGggaXMgb2YKKyAqIGNvbmNl
cm4uCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19pbWFn
ZXNfYXV0b21hdGljYWxseQorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Fk
c19pbWFnZXNfYXV0b21hdGljYWxseShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29s
ZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJ
TkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBz
ZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2Vz
R2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZihl
bmFibGVkID09IGN1cnJlbnRWYWx1ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJl
bmNlc1NldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcywgZW5hYmxl
ZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImF1dG8tbG9hZC1p
bWFnZXMiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19zaXRl
X2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRpbmdfcHJlZmVyZW5jZToKKyAqCisgKiBDaGVjayB3
aGV0aGVyIHRoZSBzaXRlIGljb25zIGNhbiBiZSBsb2FkZWQgaXJyZXNwY3RpdmUgb2YgdGhlIGlt
YWdlIGxvYWRpbmcKKyAqIHByZWZlcmVuY2UuCisgKgorICogUmV0dXJuczogVFJVRSAtIElmIHNp
dGUtaWNvbiBjYW4gYmUgbG9hZGVkIGlycmVzcGVjdGl2ZSBvZiBpbWFnZSBsb2FkaW5nIHByZWZl
cmVuY2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19z
aXRlX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRpbmdfcHJlZmVyZW5jZQorICoqLworZ2Jvb2xl
YW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfc2l0ZV9pY29uc19pZ25vcmluZ19pbWFn
ZV9sb2FkaW5nX3ByZWZlcmVuY2UoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBm
YWxzZSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+
cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldExvYWRzU2l0ZUljb25zSWdub3JpbmdJ
bWFnZUxvYWRpbmdQcmVmZXJlbmNlKHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3
ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19zaXRlX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xv
YWRpbmdfcHJlZmVyZW5jZToKKyAqCisgKiBJZiB0aGlzIEFQSSBpcyBjYWxsZWQgd2l0aCBUUlVF
LCB0aGVuIHNpdGUtaWNvbnMgKGUuZywgZmF2LWljb24pIHdpbGwgYmUKKyAqIGxvYWRlZCBldmVu
IGlmIGF1dG8gbG9hZGluZyBvZiBpbWFnZSBpcyB0dXJuZWQgb2ZmIHVzaW5nIHRoZSBtZXRob2QK
KyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX2ltYWdlc19hdXRvbWF0aWNhbGx5Cisg
KgorICogQHNlZV9hbHNvIDogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfc2l0ZV9pY29u
c19pZ25vcmluZ19pbWFnZV9sb2FkaW5nX3ByZWZlcmVuY2UKKyAqICAgICAgICAgICAgd2Via2l0
X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaW1hZ2VzX2F1dG9tYXRpY2FsbHkKKyAqKi8KK3ZvaWQg
d2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfc2l0ZV9pY29uc19pZ25vcmluZ19pbWFnZV9s
b2FkaW5nX3ByZWZlcmVuY2UoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBl
bmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhz
ZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGlu
Z3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldExv
YWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNlKHByaXYtPnByZWZlcmVu
Y2VzKTsKKyAgICBpZihlbmFibGVkID09IGN1cnJlbnRWYWx1ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgV0tQcmVmZXJlbmNlc1NldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQ
cmVmZXJlbmNlKHByaXYtPnByZWZlcmVuY2VzLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3Rp
ZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAibG9hZC1pY29uLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJl
ZiIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X29mZmxpbmVfd2ViX2Fw
cGxpY2F0aW9uX2NhY2hlX2VuYWJsZWQ6CisgKgorICogSWYgSFRNTDUgb2ZmbGluZSB3ZWIgYXBw
bGljYXRpb24gY2FjaGUgc3VwcG9ydCBpcyBlbmFibGVkLCB0aGVuIHRoaXMgZnVuY3Rpb24KKyAq
IHdpbGwgcmV0dXJuIFRSVUUuCisgKgorICogUmV0dXJuczogVFJVRSAtIElmIEhUTUw1IG9mZmxp
bmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIHN1cHBvcnQgaXMgZW5hYmxlZC4KKyAqCisgKiBAc2Vl
X2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2Nh
Y2hlX2VuYWJsZWQKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X29mZmxp
bmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlX2VuYWJsZWQoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRp
bmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Mo
c2V0dGluZ3MpLCBmYWxzZSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYg
PSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldE9mZmxpbmVXZWJB
cHBsaWNhdGlvbkNhY2hlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICog
d2Via2l0X3dlYl9zZXR0aW5nc19zZXRfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGVfZW5h
YmxlZDoKKyAqCisgKiBFbmFibGUvRGlzYWJsZSBIVE1MNSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlv
biBjYWNoZSBzdXBwb3J0LiBIVE1MNSBvZmZsaW5lCisgKiBXZWIgQXBwbGljYXRpb24gQ2FjaGUg
ZW5zdXJlcyB3ZWIgYXBwbGljYXRpb25zIGFyZSBhdmFpbGFibGUgZXZlbiB3aGVuIHRoZQorICog
dXNlciBpcyBub3QgY29ubmVjdGVkIHRvIHRoZSBuZXR3b3JrLgorICoKKyAqIEBzZWVfYWxzbzog
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGVfZW5h
YmxlZAorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9vZmZsaW5lX3dlYl9hcHBs
aWNhdGlvbl9jYWNoZV9lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xl
YW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElO
R1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNl
dHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNH
ZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOwor
ICAgIGlmKGVuYWJsZWQgPT0gY3VycmVudFZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBX
S1ByZWZlcmVuY2VzU2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHByaXYtPnBy
ZWZlcmVuY2VzLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGlu
Z3MpLCAiZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlIik7Cit9CisKKy8qKgor
ICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9jYWxfc3RvcmFnZV9lbmFibGVkOgorICoKKyAq
IENoZWNrcyB3aGV0aGVyIEhUTUw1IGxvY2FsIHN0b3JhZ2Ugc3VwcG9ydCBpcyBlbmFibGVkLgor
ICoKKyAqIFJldHVybnM6IFRSVUUgLSBJZiBIVE1MNSBsb2NhbCBzdG9yYWdlIHN1cHBvcnQgaXMg
ZW5hYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvY2Fs
X3N0b3JhZ2VfZW5hYmxlZAorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
bG9jYWxfc3RvcmFnZV9lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwg
ZmFsc2UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3Mt
PnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2NhbFN0b3JhZ2VFbmFibGVkKHBy
aXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9s
b2NhbF9zdG9yYWdlX2VuYWJsZWQ6CisgKgorICogRW5hYmxlL0Rpc2FibGUgSFRNTDUgbG9jYWwg
c3RvcmFnZSBzdXBwb3J0LiBIVE1MNSBsb2NhbCBzdG9yYWdlIHN1cHBvcnRzCisgKiBzaW1wbGUg
c3luY2hyb25vdXMgc3RvcmFnZSBhY2Nlc3MuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9sb2NhbF9zdG9yYWdlX2VuYWJsZQorICoqLwordm9pZCB3ZWJraXRfd2Vi
X3NldHRpbmdzX3NldF9sb2NhbF9zdG9yYWdlX2VuYWJsZWQoV2ViS2l0V2ViU2V0dGluZ3MqIHNl
dHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2
YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0g
V0tQcmVmZXJlbmNlc0dldExvY2FsU3RvcmFnZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOwor
ICAgIGlmKGVuYWJsZWQgPT0gY3VycmVudFZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBX
S1ByZWZlcmVuY2VzU2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgZW5h
YmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1o
dG1sNS1sb2NhbC1zdG9yYWdlIik7Cit9CisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2RhdGFiYXNlX2VuYWJsZWQ6CisgKgorICogQ2hlY2tzIHdoZXRoZXIgSFRNTDUgZGF0YWJhc2Ug
c3RvcmFnZSBzdXBwb3J0IGlzIGVuYWJsZWQuCisgKgorICogUmV0dXJuczogVFJVRSAtIElmIEhU
TUw1IGRhdGFiYXNlIHN1cHBvcnQgaXMgZW5hYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X2RhdGFiYXNlX2VuYWJsZWQKKyAqKi8KK2dib29sZWFuIHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X2RhdGFiYXNlX2VuYWJsZWQoV2ViS2l0V2ViU2V0dGluZ3MqIHNl
dHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElO
R1Moc2V0dGluZ3MpLCBmYWxzZSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHBy
aXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldERhdGFiYXNl
c0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2RhdGFiYXNlc19lbmFibGVkOgorICoKKyAqIEVuYWJsZS9EaXNhYmxlIEhUTUw1
IGNsaWVudC1zaWRlIFNRTCBkYXRhYmFzZSBzdXBwb3J0LiBDbGllbnQtc2lkZQorICogU1FMIGRh
dGFiYXNlIGFsbG93cyB3ZWIgcGFnZXMgdG8gc3RvcmUgc3RydWN0dXJlZCBkYXRhIGFuZCBiZSBh
YmxlIHRvCisgKiB1c2UgU1FMIHRvIG1hbmlwdWxhdGUgdGhhdCBkYXRhIGFzeW5jaHJvbm91c2x5
LgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZGF0YWJhc2VzX2Vu
YWJsZWQKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZGF0YWJhc2VzX2VuYWJs
ZWQoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisg
ICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAg
Z2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldERhdGFiYXNlc0VuYWJsZWQo
cHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmKGVuYWJsZWQgPT0gY3VycmVudFZhbHVlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0RGF0YWJhc2VzRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcywgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNl
dHRpbmdzKSwgImVuYWJsZS1odG1sNS1kYXRhYmFzZSIpOworfQorCisvKioKKyAqIHdlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X3hzc19hdWRpdG9yX2VuYWJsZWQ6CisgKgorICogQ2hlY2tzIHdoZXRo
ZXIgWFNTIGF1ZGl0aW5nIGlzIGVuYWJsZWQuIAorICoKKyAqIFJldHVybnM6IFRSVUUgLSBJZiBY
U1MgYXVkaXRpbmcgaXMgZW5hYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X3hzc19hdWRpdG9yX2VuYWJsZWQKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X3hzc19hdWRpdG9yX2VuYWJsZWQoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRp
bmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Mo
c2V0dGluZ3MpLCBmYWxzZSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYg
PSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldFhTU0F1ZGl0b3JF
bmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF94c3NfYXVkaXRvcl9lbmFibGVkOgorICoKKyAqIFdoZXRoZXIgdG8gZW5hYmxlL2Rp
c2FibGUgdGhlIFhTUyBBdWRpdG9yLiBUaGlzIGZlYXR1cmUgZmlsdGVycyBzb21lIGtpbmRzIG9m
CisgKiByZWZsZWN0aXZlIFhTUyBhdHRhY2tzIG9uIHZ1bG5lcmFibGUgd2ViIHNpdGVzLgorICoK
KyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfeHNzX2F1ZGl0b3JfZW5hYmxl
ZAorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF94c3NfYXVkaXRvcl9lbmFibGVk
KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAg
IFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdi
b29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRpdG9yRW5hYmxlZChw
cml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYoZW5hYmxlZCA9PSBjdXJyZW50VmFsdWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRYU1NBdWRpdG9yRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcywgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNl
dHRpbmdzKSwgImVuYWJsZS14c3MtYXVkaXRvciIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2ZyYW1lX2ZsYXR0ZXJpbmdfZW5hYmxlZDoKKyAqCisgKiBDaGVjayB3aGV0
aGVyIHRoZSBmcmFtZSBmbGF0dGVyaW5nIGlzIGVuYWJsZWQuIElmIHRoZSBmcmFtZSBmbGF0dGVy
aW5nIGlzCisgKiBlbmFibGVkLCB0aGVuIGVhY2ggc3ViZnJhbWUgd2lsbCBiZSBleHBhbmRlZCB0
byBpdHMgY29udGVudCwgd2hpY2ggd2lsbCBmbGF0dGVuCisgKiBhbGwgdGhlIGZyYW1lcyB0byBi
ZWNvbWUgb25lIHNjcm9sbGFibGUgcGFnZS4KKyAqCisgKiBSZXR1cm5zOiBUUlVFIC0gSWYgZnJh
bWUgZmxhdHRlcmluZyBpcyBlbmFibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfZnJhbWVfZmxhdHRlcmluZ19lbmFibGVkCisgKiovCitnYm9vbGVhbiB3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9mcmFtZV9mbGF0dGVyaW5nX2VuYWJsZWQoV2ViS2l0V2ViU2V0
dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19X
RUJfU0VUVElOR1Moc2V0dGluZ3MpLCBmYWxzZSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1By
aXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dl
dEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAq
IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2ZyYW1lX2ZsYXR0ZXJpbmdfZW5hYmxlZDoKKyAqCisg
KiBBUEkgdG8gZW5hYmxlL2Rpc2FibGUgZnJhbWUgZmlsdGVyaW5nIHN1cHBvcnQuIFdpdGggdGhp
cyBzZXR0aW5nIGVhY2ggc3ViZnJhbWUgaXMgZXhwYW5kZWQKKyAqIHRvIGl0cyBjb250ZW50cywg
d2hpY2ggd2lsbCBmbGF0dGVuIGFsbCB0aGUgZnJhbWVzIHRvIGJlY29tZSBvbmUgc2Nyb2xsYWJs
ZSBwYWdlLgorICogT24gdG91Y2ggZGV2aWNlcywgaXQgaXMgZGVzaXJlZCB0byBub3QgaGF2ZSBh
bnkgc2Nyb2xsYWJsZSBzdWIgcGFydHMgb2YgdGhlIHBhZ2UgYXMKKyAqIGl0IHJlc3VsdHMgaW4g
YSBjb25mdXNpbmcgdXNlciBleHBlcmllbmNlLCB3aXRoIHNjcm9sbGluZyBzb21ldGltZXMgc2Ny
b2xsaW5nIHN1YiBwYXJ0cworICogYW5kIGF0IG90aGVyIHRpbWVzIHNjcm9sbGluZyB0aGUgcGFn
ZSBpdHNlbGYuIEZvciB0aGlzIHJlYXNvbiBpZnJhbWVzIGFuZCBmcmFtZXNldHMgYXJlCisgKiBi
YXJlbHkgdXNhYmxlIG9uIHRvdWNoIGRldmljZXMuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9mcmFtZV9mbGF0dGVyaW5nX2VuYWJsZWQKKyAqKi8KK3ZvaWQgd2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfZnJhbWVfZmxhdHRlcmluZ19lbmFibGVkKFdlYktpdFdlYlNl
dHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNl
dHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJl
bnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHByaXYtPnBy
ZWZlcmVuY2VzKTsKKyAgICBpZihjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJpdi0+
cHJlZmVyZW5jZXMsIGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0
aW5ncyksICJlbmFibGUtZnJhbWUtZmxhdHRlbmluZyIpOworfQorCisvKioKKyAqIHdlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X3BsdWdpbnNfZW5hYmxlZDoKKyAqCisgKiBDaGVjayBpZiBwbHVnaW5z
IGFyZSBlbmFibGVkLiAKKyAqCisgKiBSZXR1cm5zOiBUUlVFIC0gSWYgUGx1Z2lucyBhcmUgZW5h
YmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3BsdWdpbnNf
ZW5hYmxlZAorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfcGx1Z2luc19l
bmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgZmFsc2UpOworCisgICAg
V2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0
dXJuIFdLUHJlZmVyZW5jZXNHZXRQbHVnaW5zRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9
CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcGx1Z2luc19lbmFibGVkOgorICoK
KyAqIEVuYWJsZS9EaXNhYmxlIHBsdWdpbiBzdXBwb3J0LgorICoKKyAqIEBzZWVfYWxzbzogd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfcGx1Z2luc19lbmFibGVkCisgKiovCit2b2lkIHdlYmtpdF93
ZWJfc2V0dGluZ3Nfc2V0X3BsdWdpbnNfZW5hYmxlZChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGlu
Z3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUq
IHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1By
ZWZlcmVuY2VzR2V0UGx1Z2luc0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmKGN1
cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVu
Y2VzU2V0UGx1Z2luc0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIGVuYWJsZWQpOworICAgIGdf
b2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtcGx1Z2lucyIpOworfQor
CisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFfZW5hYmxlZDoKKyAqCisgKiBD
aGVjayB3aGV0aGVyIHRoZSBzdXBwb3J0IGZvciBKYXZhIGlzIGVuYWJsZWQuIEphdmEgY29udGVu
dHMKKyAqIGVtYmVkZGVkIHZpYSAmbHQ7b2JqZWN0Jmd0OyBvciAmbHQ7ZW1iZWQmZ3Q7IHdpbGwg
bm90IGJlCisgKiBkaXNwbGF5ZWQgaWYgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9u
IGlzIEZBTFNFLgorICoKKyAqIFJldHVybnM6IFRSVUUgLSBJZiBKYXZhIGlzIGVuYWJsZWQuCisg
KgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhX2VuYWJsZWQKKyAq
Ki8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFfZW5hYmxlZChXZWJLaXRX
ZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIGZhbHNlKTsKKworICAgIFdlYktpdFdlYlNldHRp
bmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVu
Y2VzR2V0SmF2YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X2phdmFfZW5hYmxlZDoKKyAqCisgKiBFbmFibGUgb3IgZGlzYWJs
ZSBzdXBwb3J0IGZvciB0aGUgSmF2YS4gVGhpcyBwcm9wZXJ0eSBuZWVkcyB0byBiZSBlbmFibGVk
CisgKiBmb3IgZGlzcGxheWluZyBqYXZhIGNvbnRlbnRzIHZpYSAgJmx0O29iamVjdCZndDsgb3Ig
Jmx0O2VtYmVkJmd0OyB0YWcuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdz
X2dldF9qYXZhX2VuYWJsZWQKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfamF2
YV9lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkK
K3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3Mp
KTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2
OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRKYXZhRW5hYmxl
ZChwcml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhRW5hYmxlZChwcml2LT5w
cmVmZXJlbmNlcywgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRp
bmdzKSwgImVuYWJsZS1qYXZhIik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfamF2YV9zY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5OgorICoKKyAqIFJl
dHVybnMgd2hldGhlciBKYXZhc2NyaXB0IGNhbiBvcGVuIHBvcHVwIHdpbmRvd3MgYXV0b21hdGlj
YWxseSB3aXRob3V0CisgKiB1c2VyIGludGVydmVudGlvbi4KKyAqCisgKiBSZXR1cm5zOiBUUlVF
IC0gSWYgSmF2YXNjcmlwdCBjYW4gb3BlbiB3aW5kb3cgYXV0b21hdGljYWxseS4KKyAqCisgKiBA
c2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2phdmFfc2NyaXB0X2Nhbl9vcGVuX3dp
bmRvd3NfYXV0b21hdGljYWxseQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfamF2YV9zY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KFdlYktpdFdlYlNl
dHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
V0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgZmFsc2UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQ
cml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNH
ZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2Vz
KTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhX3NjcmlwdF9jYW5f
b3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHk6CisgKgorICogV2hldGhlciBKYXZhU2NyaXB0IGNh
biBvcGVuIHBvcHVwIHdpbmRvd3MgYXV0b21hdGljYWxseSB3aXRob3V0IHVzZXIKKyAqIGludGVy
dmVudGlvbi4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFf
c2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseQorICoqLwordm9pZCB3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9qYXZhX3NjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2Fs
bHkoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisg
ICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAg
Z2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRDYW5PcGVu
V2luZG93c0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmKGN1cnJlbnRW
YWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0
SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcywg
ZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImphdmFz
Y3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5Iik7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfaHlwZXJsaW5rX2F1ZGl0aW5nX2VuYWJsZWQ6CisgKgorICog
R2V0IHdoZXRoZXIgdGhlIHN1cHBvcnQgZm9yICZsdDthIHBpbmcmZ3Q7IGlzIGVuYWJsZWQuCisg
KgorICogUmV0dXJuczogVFJVRSAtIElmIGh5cGVyLWxpbmsgYXVkaXRpbmcgaXMgZW5hYmxlZAor
ICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfaHlwZXJsaW5rX2F1ZGl0
aW5nX2VuYWJsZWQKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2h5cGVy
bGlua19hdWRpdGluZ19lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwg
ZmFsc2UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3Mt
PnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJs
ZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2h5cGVybGlua19hdWRpdGluZ19lbmFibGVkOgorICoKKyAqIEVuYWJsZSBvciBkaXNhYmxl
IHN1cHBvcnQgZm9yICZsdDthIHBpbmcmZ3Q7LgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfaHlwZXJsaW5rX2F1ZGl0aW5nX2VuYWJsZWQKKyAqKi8KK3ZvaWQgd2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfaHlwZXJsaW5rX2F1ZGl0aW5nX2VuYWJsZWQoV2ViS2l0V2Vi
U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2Vi
U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3Vy
cmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcyk7CisgICAgaWYoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQo
cHJpdi0+cHJlZmVyZW5jZXMsIGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVD
VChzZXR0aW5ncyksICJlbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nIik7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTNjMGQwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaApA
QCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3
YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWlj
aGFlbCBBbG9uem8gPGptYWxvbnpvQGdtYWlsLmNvbQorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj
KSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZu
ZGVmIFdlYktpdFdlYlNldHRpbmdzX2gKKyNkZWZpbmUgV2ViS2l0V2ViU2V0dGluZ3NfaAorCisj
aW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorCitH
X0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTICAgICAgICAg
ICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9T
RVRUSU5HUyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmop
LCBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdzKSkKKyNkZWZpbmUg
V0VCS0lUX1dFQl9TRVRUSU5HU19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19D
QVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdz
Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKG9iaikgICAgICAgICAoR19U
WVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUykp
CisjZGVmaW5lIFdFQktJVF9JU19XRUJfU0VUVElOR1NfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hF
Q0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTKSkKKyNkZWZp
bmUgV0VCS0lUX1dFQl9TRVRUSU5HU19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9H
RVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRp
bmdzQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3MgV2ViS2l0V2Vi
U2V0dGluZ3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyBXZWJLaXRX
ZWJTZXR0aW5nc0NsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0
ZSBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3Mg
eworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQ
cml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc0NsYXNzIHsKKyAg
ICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgLyogUGFkZGluZyBmb3IgZnV0dXJl
IGV4cGFuc2lvbiAqLworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAg
IHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jl
c2VydmVkMykgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkNCkgKHZvaWQpOwor
fTsKKworV0tfRVhQT1JUIEdUeXBlCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF90eXBlKHZvaWQp
OworCitXS19FWFBPUlQgV2ViS2l0V2ViU2V0dGluZ3MgKgord2Via2l0X3dlYl9zZXR0aW5nc19u
ZXcodm9pZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
amF2YV9zY3JpcHRfZW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktp
dFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9qYXZhX3NjcmlwdF9lbmFibGVkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdi
b29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X2xvYWRzX2ltYWdlc19hdXRvbWF0aWNhbGx5ICAgICAgICAgICAgICAgICAgICAgICAg
IChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0
X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaW1hZ2VzX2F1dG9tYXRpY2FsbHkgICAgICAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9sb2Fkc19zaXRlX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRpbmdfcHJl
ZmVyZW5jZSAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQK
K3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX3NpdGVfaWNvbnNfaWdub3JpbmdfaW1hZ2Vf
bG9hZGluZ19wcmVmZXJlbmNlIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGVfZW5hYmxl
ZCAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9S
VCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9j
YWNoZV9lbmFibGVkICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xl
YW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvY2FsX3N0b3JhZ2VfZW5hYmxlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitX
S19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9jYWxfc3RvcmFnZV9lbmFi
bGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0
aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JU
IGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9kYXRhYmFzZV9lbmFibGVkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdz
KTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2RhdGFiYXNlc19l
bmFibGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CitXS19F
WFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3hzc19hdWRpdG9yX2VuYWJs
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0
dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfeHNzX2F1
ZGl0b3JfZW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNl
dHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsK
KworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9mcmFtZV9mbGF0
dGVyaW5nX2VuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGlu
Z3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0
X2ZyYW1lX2ZsYXR0ZXJpbmdfZW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJL
aXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5h
YmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfcGx1
Z2luc19lbmFibGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9wbHVnaW5zX2VuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29s
ZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X2phdmFfZW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dl
Yl9zZXR0aW5nc19zZXRfamF2YV9lbmFibGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9qYXZhX3NjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkgICAg
ICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dl
YmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2phdmFfc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21h
dGljYWxseSAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfaHlwZXJsaW5rX2F1ZGl0aW5nX2VuYWJsZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2
b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9oeXBlcmxpbmtfYXVkaXRpbmdfZW5hYmxlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitHX0VORF9ERUNMUworCisjZW5k
aWYgLyogd2Via2l0d2Vic2V0dGluZ3NfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYmNvbnRleHQuYyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJjb250ZXh0LmMKaW5kZXggNjVjYmI3YS4u
NWZmYzk3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvdGVzdHdlYmNvbnRleHQuYworKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy90ZXN0d2ViY29udGV4dC5jCkBAIC0yNCw3ICsyNCw3IEBACiBzdGF0aWMgdm9pZCB0
ZXN0V2ViQ29udGV4dERlZmF1bHQodm9pZCkKIHsKICAgICAvKiBDaGVjayB0aGVyZSdzIGEgc2lu
Z2xlIGluc3RhbmNlIG9mIHRoZSBkZWZhdWx0IHdlYiBjb250ZXh0LiAqLwotICAgIGdfYXNzZXJ0
KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdChjb250ZXh0KSA9PSB3ZWJraXRfd2ViX2Nv
bnRleHRfZ2V0X2RlZmF1bHQoY29udGV4dCkpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfY29u
dGV4dF9nZXRfZGVmYXVsdCgpID09IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpKTsK
IH0KIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWMxZGE4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdz
LmMKQEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSmFuIE1pY2hh
ZWwgQWxvbnpvCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxp
dHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVk
ZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHdlYmtpdDJndGsuaD4KKworc3RhdGljIHZvaWQgdGVz
dFdlYktpdFdlYlNldHRpbmdzU2NyaXB0cyh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdz
ICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBTY3JpcHRz
IGlzIGVuYWJsZWQgYnkgZGVmYXVsdAorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X2phdmFfc2NyaXB0X2VuYWJsZWQoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9qYXZhX3NjcmlwdF9lbmFibGVkKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3Nl
cnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFfc2NyaXB0X2VuYWJsZWQoc2V0dGluZ3Mp
KTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b2xvYWQodm9pZCkK
K3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdz
X25ldygpOworCisgICAgLy8gQnkgZGVmYXVsdCBhdXRvLWxvYWQtaW1hZ2UgaXMgdHJ1ZQorICAg
IGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX2ltYWdlc19hdXRvbWF0aWNh
bGx5KHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaW1hZ2Vz
X2F1dG9tYXRpY2FsbHkoc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfbG9hZHNfaW1hZ2VzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3MpKTsKK30K
Kworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzTG9hZEljb25JZ25vcmluZ0ltYWdl
TG9hZFByZWYodm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJr
aXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gbG9hZC1pY29uLWlnbm9yaW5nLWltYWdl
LWxvYWQtcHJlZiBpcyBmYWxzZSBieSBkZWZhdWx0CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2xvYWRzX3NpdGVfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZGluZ19wcmVm
ZXJlbmNlKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfc2l0
ZV9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkaW5nX3ByZWZlcmVuY2Uoc2V0dGluZ3MsIFRSVUUp
OworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX3NpdGVfaWNvbnNf
aWdub3JpbmdfaW1hZ2VfbG9hZGluZ19wcmVmZXJlbmNlKHNldHRpbmdzKSk7Cit9CisKK3N0YXRp
YyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc09mZmxpbmVBcHBDYWNoZSh2b2lkKQoreworICAg
IFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7
CisgICAgCisgICAgLy8gT2ZmbGluZSBhcHBsaWNhdGlvbiBjYWNoZSBpcyBmYWxzZSBieSBkZWZh
dWx0CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X29mZmxpbmVfd2ViX2Fw
cGxpY2F0aW9uX2NhY2hlX2VuYWJsZWQoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZV9lbmFibGVkKHNldHRpbmdzLCBU
UlVFKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9vZmZsaW5lX3dlYl9h
cHBsaWNhdGlvbl9jYWNoZV9lbmFibGVkKHNldHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRl
c3RXZWJLaXRXZWJTZXR0aW5nc0xvY2FsU3RvcmFnZSh2b2lkKQoreworICAgIFdlYktpdFdlYlNl
dHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBM
b2NhbCBzdG9yYWdlIGlzIGVuYWJsZSBieSBkZWZhdWx0CisgICAgZ19hc3NlcnQod2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfbG9jYWxfc3RvcmFnZV9lbmFibGVkKHNldHRpbmdzKSk7CisgICAgd2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfbG9jYWxfc3RvcmFnZV9lbmFibGVkKHNldHRpbmdzLCBGQUxT
RSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvY2FsX3N0b3JhZ2Vf
ZW5hYmxlZChzZXR0aW5ncykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGlu
Z3NEYXRhYmFzZSh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdl
YmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBIVE1MNSBkYXRhYmFzZSBpcyBlbmFi
bGVkIGJ5IGRlZmF1bHQKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9kYXRh
YmFzZV9lbmFibGVkKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZGF0
YWJhc2VzX2VuYWJsZWQoc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfZGF0YWJhc2VfZW5hYmxlZChzZXR0aW5ncykpOworfQorCitzdGF0aWMg
dm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NYc3NBdWRpdG9yKHZvaWQpCit7CisgICAgV2ViS2l0
V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAg
IC8vIFhTUyBBdWRpdG9yIGlzIGVuYWJsZWQgYnkgZGVmYXVsdAorICAgIGdfYXNzZXJ0KHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X3hzc19hdWRpdG9yX2VuYWJsZWQoc2V0dGluZ3MpKTsKKyAgICB3
ZWJraXRfd2ViX3NldHRpbmdzX3NldF94c3NfYXVkaXRvcl9lbmFibGVkKHNldHRpbmdzLCBGQUxT
RSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3hzc19hdWRpdG9yX2Vu
YWJsZWQoc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdz
RnJhbWVGbGF0dGVyaW5nKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdz
ID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEZyYW1lIGZsYXR0ZXJpbmcg
aXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdz
X2dldF9mcmFtZV9mbGF0dGVyaW5nX2VuYWJsZWQoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2Vi
X3NldHRpbmdzX3NldF9mcmFtZV9mbGF0dGVyaW5nX2VuYWJsZWQoc2V0dGluZ3MsIFRSVUUpOwor
ICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2ZyYW1lX2ZsYXR0ZXJpbmdfZW5h
YmxlZChzZXR0aW5ncykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NQ
bHVnaW5zKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0
X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIFBsdWdpbnMgYXJlIGVuYWJsZWQgYnkgZGVm
YXVsdAorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3BsdWdpbnNfZW5hYmxl
ZChzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3BsdWdpbnNfZW5hYmxl
ZChzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9wbHVnaW5zX2VuYWJsZWQoc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktp
dFdlYlNldHRpbmdzSmF2YSh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5n
cyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBKYXZhIGlzIGVuYWJsZWQg
YnkgZGVmYXVsdAorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFfZW5h
YmxlZChzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2phdmFfZW5hYmxl
ZChzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9qYXZhX2VuYWJsZWQoc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdl
YlNldHRpbmdzQXV0b09wZW5XaW5kb3codm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAq
c2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gQnkgZGVmYXVs
dCwgSmF2YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgaXMgZW5hYmxlZC4K
KyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhX3NjcmlwdF9jYW5fb3Bl
bl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9qYXZhX3NjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGlu
Z3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YV9z
Y3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7Cit9CisKK3N0
YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0h5cGVyTGlua0F1ZGl0aW5nKHZvaWQpCit7
CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19u
ZXcoKTsKKworICAgIC8vIEJ5IGRlZmF1bHQgaHlwZXIgbGluayBhdWRpdGluZyBpcyBlbmFibGVk
LgorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2h5cGVybGlua19hdWRpdGlu
Z19lbmFibGVkKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfaHlwZXJs
aW5rX2F1ZGl0aW5nX2VuYWJsZWQoc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfaHlwZXJsaW5rX2F1ZGl0aW5nX2VuYWJsZWQoc2V0dGluZ3Mp
KTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIGdfdGhyZWFk
X2luaXQoTlVMTCk7CisgICAgZ3RrX3Rlc3RfaW5pdCgmYXJnYywgJmFyZ3YsIE5VTEwpOworCisg
ICAgZ190ZXN0X2J1Z19iYXNlKCJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKKyAgICBnX3Rl
c3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL3NjcmlwdHMiLCB0ZXN0V2ViS2l0V2Vi
U2V0dGluZ3NTY3JpcHRzKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRp
bmdzL2F1dG9sb2FkIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b2xvYWQpOworICAgIGdfdGVz
dF9hZGRfZnVuYygiL3dlYmtpdDIvd2Vic2V0dGluZ3MvbG9hZGljb25pZ25vcmluZ2ltYWdlbG9h
ZHByZWYiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NMb2FkSWNvbklnbm9yaW5nSW1hZ2VMb2FkUHJl
Zik7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5ncy9vZmZsaW5lYXBw
Y2FjaGUiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NPZmZsaW5lQXBwQ2FjaGUpOworICAgIGdfdGVz
dF9hZGRfZnVuYygiL3dlYmtpdDIvd2Vic2V0dGluZ3MvbG9jYWxzdG9yYWdlIiwgdGVzdFdlYktp
dFdlYlNldHRpbmdzTG9jYWxTdG9yYWdlKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQy
L3dlYnNldHRpbmdzL2RhdGFiYXNlIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzRGF0YWJhc2UpOwor
ICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdDIvd2Vic2V0dGluZ3MveHNzYXVkaXRvciIsIHRl
c3RXZWJLaXRXZWJTZXR0aW5nc1hzc0F1ZGl0b3IpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dl
YmtpdDIvd2Vic2V0dGluZ3MvZnJhbWVmbGF0dGVyaW5nIiwgdGVzdFdlYktpdFdlYlNldHRpbmdz
RnJhbWVGbGF0dGVyaW5nKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRp
bmdzL3BsdWdpbnMiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NQbHVnaW5zKTsKKyAgICBnX3Rlc3Rf
YWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL2phdmEiLCB0ZXN0V2ViS2l0V2ViU2V0dGlu
Z3NKYXZhKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL2F1dG9v
cGVud2luZG93IiwgdGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b09wZW5XaW5kb3cpOworICAgIGdf
dGVzdF9hZGRfZnVuYygiL3dlYmtpdDIvd2Vic2V0dGluZ3MvaHlwZXJsaW5rYXVkaXRpbmciLCB0
ZXN0V2ViS2l0V2ViU2V0dGluZ3NIeXBlckxpbmtBdWRpdGluZyk7CisKKyAgICByZXR1cm4gZ190
ZXN0X3J1biAoKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvd2Via2l0Mmd0ay5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mmd0ay5oCmluZGV4IGRmZWJiYjQuLmUwODE3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJndGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyZ3RrLmgKQEAgLTI0LDUgKzI0LDYgQEAKICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFdlYkNvbnRleHQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdl
YlZpZXdCYXNlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJWaWV3Lmg+CisjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRXZWJTZXR0aW5ncy5oPgogCiAjZW5kaWYgLyogX19XRUJLSVRfSF9f
ICovCi0tIAoxLjcuNC4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108288</attachid>
            <date>2011-09-22 00:23:23 -0700</date>
            <delta_ts>2011-09-22 04:03:58 -0700</delta_ts>
            <desc>WebKitWebSettings GTK+ API</desc>
            <filename>0001-WebKitWebSetting-GTK-API-added.patch</filename>
            <type>text/plain</type>
            <size>53691</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSA5NmEyNTQ1N2Q1ZjI1NjU1YzBhNTk3MjQwMDllZmI3MjlhNGQ4MzJlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogVGh1LCAyMiBTZXAgMjAxMSAxMjo1MTozNiArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIFdl
YktpdFdlYlNldHRpbmcgR1RLKyBBUEkgYWRkZWQKCi0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsKIFNvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArLQogLi4uL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcCAgICAgICAgfCAgODY4ICsrKysrKysrKysr
KysrKysrKysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5n
cy5oICB8ICAxNDggKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0
aW5ncy5jICAgICAgfCAgMTY2ICsrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3dlYmtpdDJndGsuaCAgICAgIHwgICAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDEyMDYgaW5zZXJ0
aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHAKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5o
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvdGVzdHdlYnNldHRpbmdzLmMKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGVmMGVkMC4uOGVlYzk1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTA5LTIyICBOYXlhbiBLdW1hciBLICA8bmF5
YW5ra0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIFdlYktpdFdlYlNldHRpbmdz
IEdUSysgQVBJJ3MuCisKKyAgICAgICAgV2ViS2l0V2ViU2V0dGluZ3MgR1RLKyBvYmplY3QgaXMg
Y3JlYXRlZCBhbmQgZmlyc3Qgc2V0IG9mCisgICAgICAgIEFQSSdzIGFyZSB3cml0dGVuIHRvIGdl
dCBvciBzZXQgdGhlIHByb3BlcnRpZXMgb2YgV2ViS2l0V2ViU2V0dGluZ3MuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODM3MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mmd0ay5oOgorCiAyMDExLTA5LTIxICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIFVJUHJv
Y2VzcyBzaG91bGQgY2hlY2sgdGhhdCBXZWJQcm9jZXNzIGlzbid0IHNlbmRpbmcgdW5leHBlY3Rl
ZCBmaWxlOiBVUkxzIHRvIGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDUzZmRiMzYuLjA2NTk1
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC03MCw2ICs3MCw3IEBAIGxpYndlYmtpdDJndGtp
bmNsdWRlZGlyID0gJChsaWJ3ZWJraXRndGtpbmNsdWRlZGlyKS93ZWJraXQyCiBsaWJ3ZWJraXQy
Z3RraW5jbHVkZV9IRUFERVJTID0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuaCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5n
cy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmgK
IAogbGlid2Via2l0Z3RraW5jbHVkZV9IRUFERVJTICs9IFwKQEAgLTQ1NCw2ICs0NTUsOCBAQCBs
aWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJ
X01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViQ29udGV4dC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuaCBcCkBAIC05ODksNyArOTkyLDggQEAgRElTVENMRUFORklM
RVMgKz0gXAogIyBVbml0IHRlc3RzCiBURVNUX1BST0dTICs9IFwKIAlQcm9ncmFtcy91bml0dGVz
dHMvd2Via2l0Mi90ZXN0d2ViY29udGV4dCBcCi0JUHJvZ3JhbXMvdW5pdHRlc3RzL3dlYmtpdDIv
dGVzdHdlYnZpZXcKKwlQcm9ncmFtcy91bml0dGVzdHMvd2Via2l0Mi90ZXN0d2VidmlldyBcCisJ
UHJvZ3JhbXMvdW5pdHRlc3RzL3dlYmtpdDIvdGVzdHdlYnNldHRpbmdzCiAKIG5vaW5zdF9QUk9H
UkFNUyArPSAkKFRFU1RfUFJPR1MpCiB3ZWJraXQyX3Rlc3RzX2NmbGFncyA9IFwKQEAgLTEwMjUs
NiArMTAyOSwxMSBAQCBQcm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0d2Vidmlld19DRkxB
R1MgPSAkKHdlYmtpdDJfdGVzdHNfY2ZsYWdzKQogUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJf
dGVzdHdlYnZpZXdfTERBREQgPSAkKHdlYmtpdDJfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc191bml0
dGVzdHNfd2Via2l0Ml90ZXN0d2Vidmlld19MREZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxh
Z3MpCiAKK1Byb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJzZXR0aW5nc19TT1VSQ0VT
ID0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdz
LmMKK1Byb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJzZXR0aW5nc19DRkxBR1MgPSAk
KHdlYmtpdDJfdGVzdHNfY2ZsYWdzKQorUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdl
YnNldHRpbmdzX0xEQUREID0gJCh3ZWJraXQyX3Rlc3RzX2xkYWRkKQorUHJvZ3JhbXNfdW5pdHRl
c3RzX3dlYmtpdDJfdGVzdHdlYnNldHRpbmdzX0xERkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfbGRm
bGFncykKKwogIyBXZWJLaXRXZWJQcm9jZXNzCiBsaWJleGVjX1BST0dSQU1TICs9IFwKIAlQcm9n
cmFtcy9XZWJLaXRXZWJQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZThkZmUwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcApAQCAtMCwwICsxLDg2OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVu
ZGlvLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhh
bnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWljaGFlbCBBbG9u
em8KKyAqIENvcHlyaWdodCAoQykgMjAwOSBNb3ZpYWwgQ3JlYXRpdmUgVGVjaG5vbG9naWVzIElu
Yy4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBJZ2FsaWEgUy5MLgorICogUG9ydGlvbnMgQ29weXJp
Z2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViU2V0dGluZ3MuaCIKKwor
I2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5j
ZXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVHlwZS5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4t
bGliLmg+CisKKworc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgeworICAgIFdLUHJl
ZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXM7Cit9OworCisvKioKKyAqIFNFQ1RJT046d2Via2l0d2Vi
c2V0dGluZ3MKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogQ29udHJvbCB0aGUgYmVoYXZpb3VyIG9m
IGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiAjV2ViS2l0V2ViU2V0dGluZ3MgY2FuIGJlIGFwcGxp
ZWQgdG8gYSAjV2ViS2l0V2ViVmlldyB0byBjb250cm9sIHRleHQgZW5jb2RpbmcsIAorICogY29s
b3IsIGZvbnQgc2l6ZXMsIHByaW50aW5nIG1vZGUsIHNjcmlwdCBzdXBwb3J0LCBsb2FkaW5nIG9m
IGltYWdlcyBhbmQgdmFyaW91cyBvdGhlciB0aGluZ3MuIAorICogQWZ0ZXIgY3JlYXRpb24sIGEg
I1dlYktpdFdlYlNldHRpbmdzIG9iamVjdCBjb250YWlucyBkZWZhdWx0IHNldHRpbmdzLiAKKyAq
CisgKiA8aW5mb3JtYWxleGFtcGxlPjxwcm9ncmFtbGlzdGluZz4KKyAqIC88IS0tIC0tPiogQ3Jl
YXRlIGEgbmV3IHdlYnNldHRpbmdzIGFuZCBkaXNhYmxlIGphdmEgc2NyaXB0ICo8IS0tIC0tPi8K
KyAqIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3
ICgpOworICogZ19vYmplY3Rfc2V0IChHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtc2NyaXB0
cyIsIEZBTFNFLCBOVUxMKTsKKyAqCisgKiAvPCEtLSAtLT4qIEFwcGx5IHRoZSByZXN1bHQgKjwh
LS0gLS0+LworICogd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyAoV0VCS0lUX1dFQl9WSUVX
KG15X3dlYnZpZXcpLCBzZXR0aW5ncyk7CisgKiA8L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxl
eGFtcGxlPgorICovCisKKworR19ERUZJTkVfVFlQRShXZWJLaXRXZWJTZXR0aW5ncywgd2Via2l0
X3dlYl9zZXR0aW5ncywgR19UWVBFX09CSkVDVCkKKworZW51bSB7CisgICAgUFJPUF8wLAorCisg
ICAgUFJPUF9FTkFCTEVfSkFWQV9TQ1JJUFQsCisgICAgUFJPUF9BVVRPX0xPQURfSU1BR0VTLAor
ICAgIFBST1BfTE9BRF9JQ09OX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRiwKKyAgICBQUk9QX0VO
QUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRSwKKyAgICBQUk9QX0VOQUJMRV9IVE1M
NV9MT0NBTF9TVE9SQUdFLAorICAgIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNFLAorICAgIFBS
T1BfRU5BQkxFX1hTU19BVURJVE9SLAorICAgIFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRURVJJTkcs
CisgICAgUFJPUF9FTkFCTEVfUExVR0lOUywKKyAgICBQUk9QX0VOQUJMRV9KQVZBLAorICAgIFBS
T1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFksCisgICAgUFJPUF9F
TkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HLAorfTsKKworc3RhdGljIHZvaWQgd2Via2l0V2ViU2V0
dGluZ3NGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Vi
a2l0X3dlYl9zZXR0aW5nc19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworfQorCitz
dGF0aWMgdm9pZCB3ZWJraXRXZWJTZXR0aW5nc1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7
CisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzID0gV0VCS0lUX1dFQl9TRVRUSU5HUyhv
YmplY3QpOworIAorICAgIHN3aXRjaChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9K
QVZBX1NDUklQVDoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfamF2YV9zY3JpcHRf
ZW5hYmxlZChzZXR0aW5ncywgKGJvb2wpZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVVUT19MT0FEX0lNQUdFUzoKKyAgICAgICAgd2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaW1hZ2VzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3Ms
IChib29sKWdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX0xPQURfSUNPTl9JR05PUklOR19JTUFHRV9MT0FEX1BSRUY6CisgICAgICAgIHdl
YmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX3NpdGVfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9h
ZGluZ19wcmVmZXJlbmNlKHNldHRpbmdzLCAoYm9vbClnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVl
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05fQ0FDSEU6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X29mZmxpbmVf
d2ViX2FwcGxpY2F0aW9uX2NhY2hlX2VuYWJsZWQoc2V0dGluZ3MsIChib29sKWdfdmFsdWVfZ2V0
X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9I
VE1MNV9MT0NBTF9TVE9SQUdFOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Nh
bF9zdG9yYWdlX2VuYWJsZWQoc2V0dGluZ3MsIChib29sKWdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFs
dWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFT
RToKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZGF0YWJhc2VzX2VuYWJsZWQoc2V0
dGluZ3MsIChib29sKWdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUjoKKyAgICAgICAgd2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfeHNzX2F1ZGl0b3JfZW5hYmxlZChzZXR0aW5ncywgKGJvb2wpZ192YWx1ZV9n
ZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxF
X0ZSQU1FX0ZMQVRURVJJTkc6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2ZyYW1l
X2ZsYXR0ZXJpbmdfZW5hYmxlZChzZXR0aW5ncywgKGJvb2wpZ192YWx1ZV9nZXRfYm9vbGVhbih2
YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1BMVUdJTlM6Cisg
ICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3BsdWdpbnNfZW5hYmxlZChzZXR0aW5ncywg
KGJvb2wpZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfRU5BQkxFX0pBVkE6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2ph
dmFfZW5hYmxlZChzZXR0aW5ncywgKGJvb2wpZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dT
X0FVVE9NQVRJQ0FMTFk6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2phdmFfc2Ny
aXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncywgKGJvb2wpZ192YWx1
ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5B
QkxFX0hZUEVSTElOS19BVURJVElORzoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
aHlwZXJsaW5rX2F1ZGl0aW5nX2VuYWJsZWQoc2V0dGluZ3MsIChib29sKWdfdmFsdWVfZ2V0X2Jv
b2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlNldHRpbmdz
R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVl
LCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3Mg
PSBXRUJLSVRfV0VCX1NFVFRJTkdTKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BfaWQpIHsK
KyAgICBjYXNlIFBST1BfRU5BQkxFX0pBVkFfU0NSSVBUOgorICAgICAgICBnX3ZhbHVlX3NldF9i
b29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhX3NjcmlwdF9lbmFibGVk
KHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9BVVRPX0xPQURfSU1B
R0VTOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9sb2Fkc19pbWFnZXNfYXV0b21hdGljYWxseShzZXR0aW5ncykpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfTE9BRF9JQ09OX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRjoK
KyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfbG9hZHNfc2l0ZV9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkaW5nX3ByZWZlcmVuY2Uoc2V0
dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9PRkZMSU5FX1dF
Ql9BUFBMSUNBVElPTl9DQUNIRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwg
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGVfZW5h
YmxlZChzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hU
TUw1X0xPQ0FMX1NUT1JBR0U6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdl
YmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvY2FsX3N0b3JhZ2VfZW5hYmxlZChzZXR0aW5ncykpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNFOgorICAg
ICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9k
YXRhYmFzZV9lbmFibGVkKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJP
UF9FTkFCTEVfWFNTX0FVRElUT1I6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUs
IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3hzc19hdWRpdG9yX2VuYWJsZWQoc2V0dGluZ3MpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HOgor
ICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9mcmFtZV9mbGF0dGVyaW5nX2VuYWJsZWQoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX0VOQUJMRV9QTFVHSU5TOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFu
KHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wbHVnaW5zX2VuYWJsZWQoc2V0dGluZ3Mp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZBOgorICAgICAgICBn
X3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhX2Vu
YWJsZWQoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0pBVkFTQ1JJ
UFRfQ0FOX09QRU5fV0lORE9XU19BVVRPTUFUSUNBTExZOgorICAgICAgICBnX3ZhbHVlX3NldF9i
b29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhX3NjcmlwdF9jYW5fb3Bl
bl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkc6CisgICAgICAgIGdfdmFsdWVfc2V0
X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2h5cGVybGlua19hdWRpdGlu
Z19lbmFibGVkKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBz
cGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3NldHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyoga2xhc3MpCit7Cisg
ICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7Cisg
ICAgZ09iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFdlYlNldHRpbmdzRmluYWxpemU7Cisg
ICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRXZWJTZXR0aW5nc1NldFByb3Bl
cnR5OworICAgIGdPYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0V2ViU2V0dGluZ3NH
ZXRQcm9wZXJ0eTsKKworICAgIEdQYXJhbUZsYWdzIGZsYWdzID0gc3RhdGljX2Nhc3Q8R1BhcmFt
RmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVCk7CisKKyAg
ICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1qYXZhLXNjcmlwdAorICAgICoK
KyAgICAqIFRoaXMgcHJvcGVydHkgbmVlZHMgdG8gYmUgc2V0IHRvIGVuYWJsZSB0aGUgZXhlY3V0
aW9uIG9mIAorICAgICogSmF2YXNjcmlwdCB3aXRoaW4gYSBwYWdlLgorICAgICoKKyAgICAqLwor
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfSkFWQV9TQ1JJUFQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJlbmFibGUtamF2YS1zY3JpcHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEphdmEgU2NyaXB0IiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFi
bGUgSmF2YSBTY3JpcHQgbGFuZ3VhZ2VzLiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisgICAgCisgICAg
LyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczphdXRvLWxvYWQtaW1hZ2VzCisgICAgKgorICAg
ICogRGV0ZXJtaW5lcyB3aGV0aGVyIGltYWdlcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBsb2Fk
ZWQgb3Igbm90LgorICAgICogT24gZGV2aWNlcywgd2hlcmUgbmV0d29yayBiYW5kd2lkdGggaXMg
b2YgY29uY2VybiwgaXQgbWlnaHQgYmUKKyAgICAqIHVzZWZ1bCB0byB0dXJuIHRoaXMgcHJvcGVy
dHkgb2ZmLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJP
UF9BVVRPX0xPQURfSU1BR0VTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiYXV0by1sb2FkLWltYWdlcyIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJBdXRvIExvYWQg
SW1hZ2VzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfKCJMb2FkIGltYWdlcyBhdXRvbWF0aWNhbGx5LiIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdz
KSk7CisgICAgCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczpsb2FkLWljb24taWdu
b3JpbmctaW1hZ2UtbG9hZC1wcmVmCisgICAgKgorICAgICogQnkgZW5hYmxpbmcgdGhpcyBwcm9w
ZXJ0eSwgc2l0ZSBpY29ucyAoZS5nLCBmYXZpY29uKSB3aWxsIGJlIGxvYWRlZAorICAgICogaXJy
ZXNwZWN0aXZlIG9mIHRoZSB2YWx1ZSBvZiAnYXV0by1sb2FkLWltYWdlcycuCisgICAgKgorICAg
ICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0xPQURfSUNPTl9JR05PUklO
R19JTUFHRV9MT0FEX1BSRUYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJsb2FkLWljb24taWdub3JpbmctaW1hZ2UtbG9hZC1wcmVm
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF8oIkxvYWQgU2l0ZSBJY29uIGlnbm9yaW5nIGltYWdlIGxvYWQgcHJlZmVyZW5jZSIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XygiV2hldGhlciB0byBsb2FkIHNpdGUgaWNvbiBpZ25vcmluZyBpbWFnZSBsb2FkIHByZWZlcmVu
Y2UuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRp
bmdzOmVuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZQorICAgICoKKyAgICAqIFdo
ZXRoZXIgdG8gZW5hYmxlIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIHN1cHBv
cnQuIE9mZmxpbmUKKyAgICAqIFdlYiBBcHBsaWNhdGlvbiBDYWNoZSBlbnN1cmVzIHdlYiBhcHBs
aWNhdGlvbnMgYXJlIGF2YWlsYWJsZSBldmVuIHdoZW4KKyAgICAqIHRoZSB1c2VyIGlzIG5vdCBj
b25uZWN0ZWQgdG8gdGhlIG5ldHdvcmsuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFu
KCJlbmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIG9mZmxp
bmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBvZmZsaW5l
IHdlYiBhcHBsaWNhdGlvbiBjYWNoZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisg
ICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZToKKyAgICAq
CisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBsb2NhbFN0b3JhZ2Ugc3VwcG9ydC4gbG9j
YWxTdG9yYWdlIHByb3ZpZGVzCisgICAgKiBzaW1wbGUgc3luY2hyb25vdXMgc3RvcmFnZSBhY2Nl
c3MuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShn
T2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VO
QUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF8oIkVuYWJsZSBIVE1MNSBMb2NhbCBTdG9yYWdlIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBI
VE1MNSBMb2NhbCBTdG9yYWdlIHN1cHBvcnQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoq
CisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtaHRtbDUtZGF0YWJhc2U6CisgICAgKgor
ICAgICogV2hldGhlciB0byBlbmFibGUgSFRNTDUgY2xpZW50LXNpZGUgU1FMIGRhdGFiYXNlIHN1
cHBvcnQuIENsaWVudC1zaWRlCisgICAgKiBTUUwgZGF0YWJhc2UgYWxsb3dzIHdlYiBwYWdlcyB0
byBzdG9yZSBzdHJ1Y3R1cmVkIGRhdGEgYW5kIGJlIGFibGUgdG8KKyAgICAqIHVzZSBTUUwgdG8g
bWFuaXB1bGF0ZSB0aGF0IGRhdGEgYXN5bmNocm9ub3VzbHkuCisgICAgKgorICAgICovCisgICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJl
bmFibGUtaHRtbDUtZGF0YWJhc2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEhUTUw1IERhdGFiYXNlIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJX
aGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBkYXRhYmFzZSBzdXBwb3J0IiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3Mp
KTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLXhzcy1hdWRpdG9y
CisgICAgKgorICAgICogV2hldGhlciB0byBlbmFibGUgdGhlIFhTUyBBdWRpdG9yLiBUaGlzIGZl
YXR1cmUgZmlsdGVycyBzb21lIGtpbmRzIG9mCisgICAgKiByZWZsZWN0aXZlIFhTUyBhdHRhY2tz
IG9uIHZ1bG5lcmFibGUgd2ViIHNpdGVzLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1IsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLXhzcy1hdWRp
dG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF8oIkVuYWJsZSBYU1MgQXVkaXRvciIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFibGUgdGhl
IFhTUyBhdWRpdG9yIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworCisgICAgLyoqCisgICAgKiBXZWJL
aXRXZWJTZXR0aW5nczplbmFibGUtZnJhbWUtZmxhdHRlbmluZworICAgICoKKyAgICAqIFdoZXRo
ZXIgdG8gZW5hYmxlIHRoZSBGcmFtZSBGbGF0dGVuaW5nLiBXaXRoIHRoaXMgc2V0dGluZyBlYWNo
IHN1YmZyYW1lIGlzIGV4cGFuZGVkCisgICAgKiB0byBpdHMgY29udGVudHMsIHdoaWNoIHdpbGwg
ZmxhdHRlbiBhbGwgdGhlIGZyYW1lcyB0byBiZWNvbWUgb25lIHNjcm9sbGFibGUgcGFnZS4KKyAg
ICAqIE9uIHRvdWNoIGRldmljZXMsIGl0IGlzIGRlc2lyZWQgdG8gbm90IGhhdmUgYW55IHNjcm9s
bGFibGUgc3ViIHBhcnRzIG9mIHRoZSBwYWdlIGFzCisgICAgKiBpdCByZXN1bHRzIGluIGEgY29u
ZnVzaW5nIHVzZXIgZXhwZXJpZW5jZSwgd2l0aCBzY3JvbGxpbmcgc29tZXRpbWVzIHNjcm9sbGlu
ZyBzdWIgcGFydHMKKyAgICAqIGFuZCBhdCBvdGhlciB0aW1lcyBzY3JvbGxpbmcgdGhlIHBhZ2Ug
aXRzZWxmLiBGb3IgdGhpcyByZWFzb24gaWZyYW1lcyBhbmQgZnJhbWVzZXRzIGFyZQorICAgICog
YmFyZWx5IHVzYWJsZSBvbiB0b3VjaCBkZXZpY2VzLgorICAgICoKKyAgICAqLworICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRFUklORywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFi
bGUtZnJhbWUtZmxhdHRlbmluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgRnJhbWUgRmxhdHRlbmluZyIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
V2hldGhlciB0byBlbmFibGUgRnJhbWUgRmxhdHRlbmluZyIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOwor
CisgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1wbHVnaW5zOgorICAgICoK
KyAgICAqIFBsdWdpbnMgZW1kZWRkZWQgd2l0aGluIGEgcGFnZSBjYW4gYmUgdHVybmVkIG9mZiBi
eSBkaXNhYmxpbmcKKyAgICAqIHRoaXMgcHJvcGVydHkuIAorICAgICoKKyAgICAqLworICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfUExVR0lOUywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuYWJsZS1w
bHVnaW5zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF8oIkVuYWJsZSBQbHVnaW5zIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgZW1iZWRkZWQgcGx1Z2lu
IG9iamVjdHMuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKyAgICAKKyAgIC8qKgorICAgICogV2ViS2l0
V2ViU2V0dGluZ3M6ZW5hYmxlLWphdmE6CisgICAgKgorICAgICogRW5hYmxlIG9yIGRpc2FibGUg
c3VwcG9ydCBmb3IgdGhlIEphdmEuIFRoaXMgcHJvcGVydHkgbmVlZHMgdG8gYmUgZW5hYmxlZAor
ICAgICogZm9yIGRpc3BsYXlpbmcgamF2YSBjb250ZW50cyB2aWEgICZsdDtvYmplY3QmZ3Q7IG9y
ICZsdDtlbWJlZCZndDsgdGFnLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJPUF9FTkFCTEVfSkFWQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtamF2YSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSmF2
YSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXygiV2hldGhlciBKYXZhIHN1cHBvcnQgc2hvdWxkIGJlIGVuYWJsZWQiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczpqYXZhc2NyaXB0
LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxseQorICAgICoKKyAgICAqIFdoZXRoZXIgSmF2
YVNjcmlwdCBjYW4gb3BlbiBwb3B1cCB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgd2l0aG91dCB1c2Vy
CisgICAgKiBpbnRlcnZlbnRpb24uCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9XU19BVVRPTUFUSUNBTExZ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xl
YW4oImphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5IiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkphdmFT
Y3JpcHQgY2FuIG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIEphdmFT
Y3JpcHQgY2FuIG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsK
KworICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWh5cGVybGluay1hdWRp
dGluZzoKKyAgICAqCisgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzdXBwb3J0IGZvciAmbHQ7YSBw
aW5nJmd0Oy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfRU5BQkxFX0hZUEVSTElOS19BVURJVElORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5n
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF8oIkVuYWJsZSBIeXBlcmxpbmsgQXVkaXRpbmciKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgPGEgcGluZz4g
c2hvdWxkIGJlIGFibGUgdG8gc2VuZCBwaW5ncyIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBn
X3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJTZXR0aW5nc1By
aXZhdGUpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19pbml0KFdlYktp
dFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUq
IHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoc2V0dGluZ3MsIFdFQktJVF9UWVBF
X1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKTsKKyAgICBzZXR0aW5ncy0+
cHJpdiA9IHByaXY7CisgICAgbmV3IChwcml2KSBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUoKTsK
KyAgICBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMgPSBXS1ByZWZlcmVuY2VzQ3JlYXRlKCk7
Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19uZXc6CisgKgorICogQ3JlYXRlcyBh
IG5ldyAjV2ViS2l0V2ViU2V0dGluZ3MgaW5zdGFuY2Ugd2l0aCBkZWZhdWx0IHZhbHVlcy4gSXQg
bXVzdAorICogYmUgbWFudWFsbHkgYXR0YWNoZWQgdG8gYSBXZWJWaWV3LgorICoKKyAqIFJldHVy
bnM6IGEgbmV3ICNXZWJLaXRXZWJTZXR0aW5ncyBpbnN0YW5jZQorICoqLworV2ViS2l0V2ViU2V0
dGluZ3MqIHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCkKK3sKKyAgICByZXR1cm4gV0VCS0lUX1dF
Ql9TRVRUSU5HUyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTLCBOVUxMKSk7
Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YV9zY3JpcHRfZW5hYmxl
ZDoKKyAqCisgKiBDaGVjayBpZiBKYXZhIFNjcmlwdCBleGVjdXRpb24gd2l0aGluIGEgcGFnZSBp
cyBzdXBwb3J0ZWQgb3Igbm90LgorICoKKyAqIFJldHVybnM6IFRSVUUgLSBJZiBKYXZhIFNjcmlw
dCBpcyBlbmFibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
amF2YV9zY3JpcHRfZW5hYmxlZAorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfamF2YV9zY3JpcHRfZW5hYmxlZChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyks
IGZhbHNlKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdz
LT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdEVuYWJsZWQocHJp
di0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2ph
dmFfc2NyaXB0X2VuYWJsZWQ6CisgKgorICogVGhpcyBBUEkgY2FuIGJlIHVzZWQgdG8gZW5hYmxl
L2Rpc2FibGUgdGhlIHN1cHBydCBmb3IgSmF2YXNjcmlwdAorICogZXhlY3V0aW9uLgorICoKKyAq
IEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YV9zY3JpcHRfZW5hYmxlZAor
ICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhX3NjcmlwdF9lbmFibGVkKFdl
YktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdl
YktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29s
ZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0RW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGVuYWJsZWQgPT0gY3VycmVudFZhbHVlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlwdEVuYWJsZWQocHJpdi0+
cHJlZmVyZW5jZXMsIGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0
aW5ncyksICJlbmFibGUtamF2YS1zY3JpcHQiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9sb2Fkc19pbWFnZXNfYXV0b21hdGljYWxseToKKyAqCisgKiBUaGlzIEFQSSB3
aWxsIHJldHVybiBUUlVFIGlmIGF1dG9tYXRpYyBsb2FkaW5nIG9mIGltYWdlcyBpcyB0dXJuZWQg
ZW5hYmxlZC4KKyAqCisgKiBSZXR1cm5zOiBUUlVFIC0gSWYgYXV0byBsb2FkaW5nIG9mIGltYWdl
cyBpcyBlbmFibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
bG9hZHNfaW1hZ2VzX2F1dG9tYXRpY2FsbHkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2xvYWRzX2ltYWdlc19hdXRvbWF0aWNhbGx5KFdlYktpdFdlYlNldHRpbmdzKiBz
ZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJ
TkdTKHNldHRpbmdzKSwgZmFsc2UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBw
cml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX2ltYWdlc19hdXRvbWF0aWNhbGx5OgorICoKKyAqIEF1
dG9tYXRpYyBsb2FkaW5nIG9mIGltYWdlcyBjYW4gYmUgdHVybmVkIG9uL29mZiB1c2luZyB0aGlz
IEFQSS4gSWYgbWlnaHQKKyAqIGJlIHVzZWZ1bCB0byB0dXJuIHRoaXMgcHJvcGVydHkgb2ZmLCBp
biBjYXNlcyB3aGVuIG5ldHdvcmsgYmFuZHdpZHRoIGlzIG9mCisgKiBjb25jZXJuLgorICoKKyAq
IEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaW1hZ2VzX2F1dG9tYXRp
Y2FsbHkKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaW1hZ2VzX2F1
dG9tYXRpY2FsbHkoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVk
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5n
cykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnBy
aXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldExvYWRzSW1h
Z2VzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYoZW5hYmxlZCA9PSBj
dXJyZW50VmFsdWUpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRMb2Fk
c0ltYWdlc0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMsIGVuYWJsZWQpOworICAgIGdf
b2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJhdXRvLWxvYWQtaW1hZ2VzIik7Cit9
CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfc2l0ZV9pY29uc19pZ25v
cmluZ19pbWFnZV9sb2FkaW5nX3ByZWZlcmVuY2U6CisgKgorICogQ2hlY2sgd2hldGhlciB0aGUg
c2l0ZSBpY29ucyBjYW4gYmUgbG9hZGVkIGlycmVzcGN0aXZlIG9mIHRoZSBpbWFnZSBsb2FkaW5n
CisgKiBwcmVmZXJlbmNlLgorICoKKyAqIFJldHVybnM6IFRSVUUgLSBJZiBzaXRlLWljb24gY2Fu
IGJlIGxvYWRlZCBpcnJlc3BlY3RpdmUgb2YgaW1hZ2UgbG9hZGluZyBwcmVmZXJlbmNlLgorICoK
KyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfc2l0ZV9pY29uc19p
Z25vcmluZ19pbWFnZV9sb2FkaW5nX3ByZWZlcmVuY2UKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX3NpdGVfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZGluZ19w
cmVmZXJlbmNlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgZmFsc2UpOworCisg
ICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAg
cmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5n
UHJlZmVyZW5jZShwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfbG9hZHNfc2l0ZV9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkaW5nX3ByZWZl
cmVuY2U6CisgKgorICogSWYgdGhpcyBBUEkgaXMgY2FsbGVkIHdpdGggVFJVRSwgdGhlbiBzaXRl
LWljb25zIChlLmcsIGZhdi1pY29uKSB3aWxsIGJlCisgKiBsb2FkZWQgZXZlbiBpZiBhdXRvIGxv
YWRpbmcgb2YgaW1hZ2UgaXMgdHVybmVkIG9mZiB1c2luZyB0aGUgbWV0aG9kCisgKiB3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9sb2Fkc19pbWFnZXNfYXV0b21hdGljYWxseQorICoKKyAqIEBzZWVf
YWxzbyA6IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX3NpdGVfaWNvbnNfaWdub3Jpbmdf
aW1hZ2VfbG9hZGluZ19wcmVmZXJlbmNlCisgKiAgICAgICAgICAgIHdlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2xvYWRzX2ltYWdlc19hdXRvbWF0aWNhbGx5CisgKiovCit2b2lkIHdlYmtpdF93ZWJf
c2V0dGluZ3Nfc2V0X2xvYWRzX3NpdGVfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZGluZ19wcmVm
ZXJlbmNlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sK
KyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsK
KworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2Owor
ICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRMb2Fkc1NpdGVJY29u
c0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZShwcml2LT5wcmVmZXJlbmNlcyk7CisgICAg
aWYoZW5hYmxlZCA9PSBjdXJyZW50VmFsdWUpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJl
ZmVyZW5jZXNTZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZShw
cml2LT5wcmVmZXJlbmNlcywgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNU
KHNldHRpbmdzKSwgImxvYWQtaWNvbi1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWYiKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9j
YWNoZV9lbmFibGVkOgorICoKKyAqIElmIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNh
Y2hlIHN1cHBvcnQgaXMgZW5hYmxlZCwgdGhlbiB0aGlzIGZ1bmN0aW9uCisgKiB3aWxsIHJldHVy
biBUUlVFLgorICoKKyAqIFJldHVybnM6IFRSVUUgLSBJZiBIVE1MNSBvZmZsaW5lIHdlYiBhcHBs
aWNhdGlvbiBjYWNoZSBzdXBwb3J0IGlzIGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZV9lbmFibGVk
CisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9vZmZsaW5lX3dlYl9hcHBs
aWNhdGlvbl9jYWNoZV9lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwg
ZmFsc2UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3Mt
PnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRPZmZsaW5lV2ViQXBwbGljYXRpb25D
YWNoZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJf
c2V0dGluZ3Nfc2V0X29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlX2VuYWJsZWQ6CisgKgor
ICogRW5hYmxlL0Rpc2FibGUgSFRNTDUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUgc3Vw
cG9ydC4gSFRNTDUgb2ZmbGluZQorICogV2ViIEFwcGxpY2F0aW9uIENhY2hlIGVuc3VyZXMgd2Vi
IGFwcGxpY2F0aW9ucyBhcmUgYXZhaWxhYmxlIGV2ZW4gd2hlbiB0aGUKKyAqIHVzZXIgaXMgbm90
IGNvbm5lY3RlZCB0byB0aGUgbmV0d29yay4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlX2VuYWJsZWQKKyAqKi8K
K3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2Fj
aGVfZW5hYmxlZChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQp
Cit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdz
KSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJp
djsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0T2ZmbGluZVdl
YkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZihlbmFi
bGVkID09IGN1cnJlbnRWYWx1ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNl
c1NldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywg
ZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJs
ZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZSIpOworfQorCisvKioKKyAqIHdlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X2xvY2FsX3N0b3JhZ2VfZW5hYmxlZDoKKyAqCisgKiBDaGVja3Mgd2hl
dGhlciBIVE1MNSBsb2NhbCBzdG9yYWdlIHN1cHBvcnQgaXMgZW5hYmxlZC4KKyAqCisgKiBSZXR1
cm5zOiBUUlVFIC0gSWYgSFRNTDUgbG9jYWwgc3RvcmFnZSBzdXBwb3J0IGlzIGVuYWJsZWQuCisg
KgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2NhbF9zdG9yYWdlX2Vu
YWJsZWQKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvY2FsX3N0b3Jh
Z2VfZW5hYmxlZChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIGZhbHNlKTsKKwor
ICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAg
IHJldHVybiBXS1ByZWZlcmVuY2VzR2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJl
bmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9jYWxfc3RvcmFn
ZV9lbmFibGVkOgorICoKKyAqIEVuYWJsZS9EaXNhYmxlIEhUTUw1IGxvY2FsIHN0b3JhZ2Ugc3Vw
cG9ydC4gSFRNTDUgbG9jYWwgc3RvcmFnZSBzdXBwb3J0cworICogc2ltcGxlIHN5bmNocm9ub3Vz
IHN0b3JhZ2UgYWNjZXNzLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfbG9jYWxfc3RvcmFnZV9lbmFibGUKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19z
ZXRfbG9jYWxfc3RvcmFnZV9lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jv
b2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VU
VElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9
IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5j
ZXNHZXRMb2NhbFN0b3JhZ2VFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZihlbmFi
bGVkID09IGN1cnJlbnRWYWx1ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNl
c1NldExvY2FsU3RvcmFnZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIGVuYWJsZWQpOworICAg
IGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtaHRtbDUtbG9jYWwt
c3RvcmFnZSIpOworfQorLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9kYXRhYmFzZV9l
bmFibGVkOgorICoKKyAqIENoZWNrcyB3aGV0aGVyIEhUTUw1IGRhdGFiYXNlIHN0b3JhZ2Ugc3Vw
cG9ydCBpcyBlbmFibGVkLgorICoKKyAqIFJldHVybnM6IFRSVUUgLSBJZiBIVE1MNSBkYXRhYmFz
ZSBzdXBwb3J0IGlzIGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9kYXRhYmFzZV9lbmFibGVkCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9kYXRhYmFzZV9lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdz
KSwgZmFsc2UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGlu
Z3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXREYXRhYmFzZXNFbmFibGVkKHBy
aXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9k
YXRhYmFzZXNfZW5hYmxlZDoKKyAqCisgKiBFbmFibGUvRGlzYWJsZSBIVE1MNSBjbGllbnQtc2lk
ZSBTUUwgZGF0YWJhc2Ugc3VwcG9ydC4gQ2xpZW50LXNpZGUKKyAqIFNRTCBkYXRhYmFzZSBhbGxv
d3Mgd2ViIHBhZ2VzIHRvIHN0b3JlIHN0cnVjdHVyZWQgZGF0YSBhbmQgYmUgYWJsZSB0bworICog
dXNlIFNRTCB0byBtYW5pcHVsYXRlIHRoYXQgZGF0YSBhc3luY2hyb25vdXNseS4KKyAqCisgKiBA
c2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2RhdGFiYXNlc19lbmFibGVkCisgKiov
Cit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2RhdGFiYXNlc19lbmFibGVkKFdlYktpdFdl
YlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdl
YlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1
cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnByZWZl
cmVuY2VzKTsKKyAgICBpZihlbmFibGVkID09IGN1cnJlbnRWYWx1ZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgV0tQcmVmZXJlbmNlc1NldERhdGFiYXNlc0VuYWJsZWQocHJpdi0+cHJlZmVyZW5j
ZXMsIGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJl
bmFibGUtaHRtbDUtZGF0YWJhc2UiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdz
X2dldF94c3NfYXVkaXRvcl9lbmFibGVkOgorICoKKyAqIENoZWNrcyB3aGV0aGVyIFhTUyBhdWRp
dGluZyBpcyBlbmFibGVkLiAKKyAqCisgKiBSZXR1cm5zOiBUUlVFIC0gSWYgWFNTIGF1ZGl0aW5n
IGlzIGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF94
c3NfYXVkaXRvcl9lbmFibGVkCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF94c3NfYXVkaXRvcl9lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwg
ZmFsc2UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3Mt
PnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRpdG9yRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfeHNz
X2F1ZGl0b3JfZW5hYmxlZDoKKyAqCisgKiBXaGV0aGVyIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSBY
U1MgQXVkaXRvci4gVGhpcyBmZWF0dXJlIGZpbHRlcnMgc29tZSBraW5kcyBvZgorICogcmVmbGVj
dGl2ZSBYU1MgYXR0YWNrcyBvbiB2dWxuZXJhYmxlIHdlYiBzaXRlcy4KKyAqCisgKiBAc2VlX2Fs
c286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3hzc19hdWRpdG9yX2VuYWJsZWQKKyAqKi8KK3Zv
aWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfeHNzX2F1ZGl0b3JfZW5hYmxlZChXZWJLaXRXZWJT
ZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJT
ZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJy
ZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0WFNTQXVkaXRvckVuYWJsZWQocHJpdi0+cHJlZmVy
ZW5jZXMpOworICAgIGlmKGVuYWJsZWQgPT0gY3VycmVudFZhbHVlKQorICAgICAgICByZXR1cm47
CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0WFNTQXVkaXRvckVuYWJsZWQocHJpdi0+cHJlZmVyZW5j
ZXMsIGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJl
bmFibGUteHNzLWF1ZGl0b3IiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9mcmFtZV9mbGF0dGVyaW5nX2VuYWJsZWQ6CisgKgorICogQ2hlY2sgd2hldGhlciB0aGUgZnJh
bWUgZmxhdHRlcmluZyBpcyBlbmFibGVkLiBJZiB0aGUgZnJhbWUgZmxhdHRlcmluZyBpcworICog
ZW5hYmxlZCwgdGhlbiBlYWNoIHN1YmZyYW1lIHdpbGwgYmUgZXhwYW5kZWQgdG8gaXRzIGNvbnRl
bnQsIHdoaWNoIHdpbGwgZmxhdHRlbgorICogYWxsIHRoZSBmcmFtZXMgdG8gYmVjb21lIG9uZSBz
Y3JvbGxhYmxlIHBhZ2UuCisgKgorICogUmV0dXJuczogVFJVRSAtIElmIGZyYW1lIGZsYXR0ZXJp
bmcgaXMgZW5hYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0
X2ZyYW1lX2ZsYXR0ZXJpbmdfZW5hYmxlZAorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfZnJhbWVfZmxhdHRlcmluZ19lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0
aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdT
KHNldHRpbmdzKSwgZmFsc2UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2
ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRGcmFtZUZsYXR0
ZW5pbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vi
X3NldHRpbmdzX3NldF9mcmFtZV9mbGF0dGVyaW5nX2VuYWJsZWQ6CisgKgorICogQVBJIHRvIGVu
YWJsZS9kaXNhYmxlIGZyYW1lIGZpbHRlcmluZyBzdXBwb3J0LiBXaXRoIHRoaXMgc2V0dGluZyBl
YWNoIHN1YmZyYW1lIGlzIGV4cGFuZGVkCisgKiB0byBpdHMgY29udGVudHMsIHdoaWNoIHdpbGwg
ZmxhdHRlbiBhbGwgdGhlIGZyYW1lcyB0byBiZWNvbWUgb25lIHNjcm9sbGFibGUgcGFnZS4KKyAq
IE9uIHRvdWNoIGRldmljZXMsIGl0IGlzIGRlc2lyZWQgdG8gbm90IGhhdmUgYW55IHNjcm9sbGFi
bGUgc3ViIHBhcnRzIG9mIHRoZSBwYWdlIGFzCisgKiBpdCByZXN1bHRzIGluIGEgY29uZnVzaW5n
IHVzZXIgZXhwZXJpZW5jZSwgd2l0aCBzY3JvbGxpbmcgc29tZXRpbWVzIHNjcm9sbGluZyBzdWIg
cGFydHMKKyAqIGFuZCBhdCBvdGhlciB0aW1lcyBzY3JvbGxpbmcgdGhlIHBhZ2UgaXRzZWxmLiBG
b3IgdGhpcyByZWFzb24gaWZyYW1lcyBhbmQgZnJhbWVzZXRzIGFyZQorICogYmFyZWx5IHVzYWJs
ZSBvbiB0b3VjaCBkZXZpY2VzLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZnJhbWVfZmxhdHRlcmluZ19lbmFibGVkCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2ZyYW1lX2ZsYXR0ZXJpbmdfZW5hYmxlZChXZWJLaXRXZWJTZXR0aW5ncyogc2V0
dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZh
dGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBX
S1ByZWZlcmVuY2VzR2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7
CisgICAgaWYoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IFdLUHJlZmVyZW5jZXNTZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2Vz
LCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5h
YmxlLWZyYW1lLWZsYXR0ZW5pbmciKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdz
X2dldF9wbHVnaW5zX2VuYWJsZWQ6CisgKgorICogQ2hlY2sgaWYgcGx1Z2lucyBhcmUgZW5hYmxl
ZC4gCisgKgorICogUmV0dXJuczogVFJVRSAtIElmIFBsdWdpbnMgYXJlIGVuYWJsZWQuCisgKgor
ICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wbHVnaW5zX2VuYWJsZWQKKyAq
Ki8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3BsdWdpbnNfZW5hYmxlZChXZWJL
aXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIGZhbHNlKTsKKworICAgIFdlYktpdFdlYlNl
dHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZl
cmVuY2VzR2V0UGx1Z2luc0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAq
IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3BsdWdpbnNfZW5hYmxlZDoKKyAqCisgKiBFbmFibGUv
RGlzYWJsZSBwbHVnaW4gc3VwcG9ydC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X3BsdWdpbnNfZW5hYmxlZAorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdz
X3NldF9wbHVnaW5zX2VuYWJsZWQoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVh
biBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5H
UyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0
dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dl
dFBsdWdpbnNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZihjdXJyZW50VmFsdWUg
PT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldFBsdWdp
bnNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3Rp
ZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXBsdWdpbnMiKTsKK30KKworLyoqCisgKiB3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhX2VuYWJsZWQ6CisgKgorICogQ2hlY2sgd2hldGhl
ciB0aGUgc3VwcG9ydCBmb3IgSmF2YSBpcyBlbmFibGVkLiBKYXZhIGNvbnRlbnRzCisgKiBlbWJl
ZGRlZCB2aWEgJmx0O29iamVjdCZndDsgb3IgJmx0O2VtYmVkJmd0OyB3aWxsIG5vdCBiZQorICog
ZGlzcGxheWVkIGlmIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvbiBpcyBGQUxTRS4K
KyAqCisgKiBSZXR1cm5zOiBUUlVFIC0gSWYgSmF2YSBpcyBlbmFibGVkLgorICoKKyAqIEBzZWVf
YWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfamF2YV9lbmFibGVkCisgKiovCitnYm9vbGVh
biB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhX2VuYWJsZWQoV2ViS2l0V2ViU2V0dGluZ3Mq
IHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VU
VElOR1Moc2V0dGluZ3MpLCBmYWxzZSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUq
IHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEphdmFF
bmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9qYXZhX2VuYWJsZWQ6CisgKgorICogRW5hYmxlIG9yIGRpc2FibGUgc3VwcG9ydCBm
b3IgdGhlIEphdmEuIFRoaXMgcHJvcGVydHkgbmVlZHMgdG8gYmUgZW5hYmxlZAorICogZm9yIGRp
c3BsYXlpbmcgamF2YSBjb250ZW50cyB2aWEgICZsdDtvYmplY3QmZ3Q7IG9yICZsdDtlbWJlZCZn
dDsgdGFnLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YV9l
bmFibGVkCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2phdmFfZW5hYmxlZChX
ZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBX
ZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9v
bGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0SmF2YUVuYWJsZWQocHJpdi0+cHJl
ZmVyZW5jZXMpOworICAgIGlmKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMs
IGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFi
bGUtamF2YSIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFfc2Ny
aXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseToKKyAqCisgKiBSZXR1cm5zIHdoZXRo
ZXIgSmF2YXNjcmlwdCBjYW4gb3BlbiBwb3B1cCB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgd2l0aG91
dAorICogdXNlciBpbnRlcnZlbnRpb24uCisgKgorICogUmV0dXJuczogVFJVRSAtIElmIEphdmFz
Y3JpcHQgY2FuIG9wZW4gd2luZG93IGF1dG9tYXRpY2FsbHkuCisgKgorICogQHNlZV9hbHNvOiB3
ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhX3NjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9t
YXRpY2FsbHkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFfc2Ny
aXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShXZWJLaXRXZWJTZXR0aW5ncyogc2V0
dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5H
UyhzZXR0aW5ncyksIGZhbHNlKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJp
diA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlw
dENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8q
KgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfamF2YV9zY3JpcHRfY2FuX29wZW5fd2luZG93
c19hdXRvbWF0aWNhbGx5OgorICoKKyAqIFdoZXRoZXIgSmF2YVNjcmlwdCBjYW4gb3BlbiBwb3B1
cCB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgd2l0aG91dCB1c2VyCisgKiBpbnRlcnZlbnRpb24uCisg
KgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhX3NjcmlwdF9jYW5f
b3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfamF2YV9zY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KFdlYktpdFdl
YlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdl
YlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1
cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRv
bWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZihjdXJyZW50VmFsdWUgPT0gZW5h
YmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldEphdmFTY3JpcHRD
YW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMsIGVuYWJsZWQpOwor
ICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJqYXZhc2NyaXB0LWNhbi1v
cGVuLXdpbmRvd3MtYXV0b21hdGljYWxseSIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2h5cGVybGlua19hdWRpdGluZ19lbmFibGVkOgorICoKKyAqIEdldCB3aGV0aGVy
IHRoZSBzdXBwb3J0IGZvciAmbHQ7YSBwaW5nJmd0OyBpcyBlbmFibGVkLgorICoKKyAqIFJldHVy
bnM6IFRSVUUgLSBJZiBoeXBlci1saW5rIGF1ZGl0aW5nIGlzIGVuYWJsZWQKKyAqCisgKiBAc2Vl
X2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2h5cGVybGlua19hdWRpdGluZ19lbmFibGVk
CisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9oeXBlcmxpbmtfYXVkaXRp
bmdfZW5hYmxlZChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIGZhbHNlKTsKKwor
ICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAg
IHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnBy
ZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9oeXBlcmxp
bmtfYXVkaXRpbmdfZW5hYmxlZDoKKyAqCisgKiBFbmFibGUgb3IgZGlzYWJsZSBzdXBwb3J0IGZv
ciAmbHQ7YSBwaW5nJmd0Oy4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X2h5cGVybGlua19hdWRpdGluZ19lbmFibGVkCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2h5cGVybGlua19hdWRpdGluZ19lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBz
ZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJp
dmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9
IFdLUHJlZmVyZW5jZXNHZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5j
ZXMpOworICAgIGlmKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisK
KyAgICBXS1ByZWZlcmVuY2VzU2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnByZWZl
cmVuY2VzLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3Mp
LCAiZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uY2EzYzBkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmgKQEAgLTAsMCArMSwx
NDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2hyaXN0aWFuIER5d2FuIDxjaHJpc3Rp
YW5AaW1lbmRpby5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSmFuIE1pY2hhZWwgQWxvbnpv
IDxqbWFsb256b0BnbWFpbC5jb20KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rv
cm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRX
ZWJTZXR0aW5nc19oCisjZGVmaW5lIFdlYktpdFdlYlNldHRpbmdzX2gKKworI2luY2x1ZGUgPFdl
YktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKworR19CRUdJTl9ERUNM
UworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUyAgICAgICAgICAgICh3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfU0VUVElOR1Mob2Jq
KSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZ
UEVfV0VCX1NFVFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5ncykpCisjZGVmaW5lIFdFQktJVF9XRUJf
U0VUVElOR1NfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3Mp
LCAgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzKSkKKyNk
ZWZpbmUgV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19J
TlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MpKQorI2RlZmluZSBX
RUJLSVRfSVNfV0VCX1NFVFRJTkdTX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZ
UEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUykpCisjZGVmaW5lIFdFQktJVF9X
RUJfU0VUVElOR1NfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChv
YmopLCAgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzKSkK
KwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzIFdlYktpdFdlYlNldHRpbmdzOwor
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzQ2xhc3MgV2ViS2l0V2ViU2V0dGluZ3ND
bGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgV2ViS2l0V2Vi
U2V0dGluZ3NQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzIHsKKyAgICBHT2Jq
ZWN0IHBhcmVudF9pbnN0YW5jZTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSAqcHJp
djsKK307CisKK3N0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyB7CisgICAgR09iamVjdENs
YXNzIHBhcmVudF9jbGFzczsKKworICAgIC8qIFBhZGRpbmcgZm9yIGZ1dHVyZSBleHBhbnNpb24g
Ki8KKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dl
YmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2
b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2b2lkKTsKK307CisKK1dLX0VY
UE9SVCBHVHlwZQord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfdHlwZSh2b2lkKTsKKworV0tfRVhQ
T1JUIFdlYktpdFdlYlNldHRpbmdzICoKK3dlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KHZvaWQpOwor
CitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFfc2NyaXB0
X2VuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
amF2YV9zY3JpcHRfZW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktp
dFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFi
bGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fk
c19pbWFnZXNfYXV0b21hdGljYWxseSAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2xvYWRzX2ltYWdlc19hdXRvbWF0aWNhbGx5ICAgICAgICAgICAgICAgICAgICAgICAg
IChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xl
YW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfbG9hZHNfc2l0ZV9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkaW5nX3ByZWZlcmVuY2UgKFdl
YktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2Vi
X3NldHRpbmdzX3NldF9sb2Fkc19zaXRlX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRpbmdfcHJl
ZmVyZW5jZSAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlX2VuYWJsZWQgICAgICAgICAg
ICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGVfZW5hYmxl
ZCAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9sb2NhbF9zdG9yYWdlX2VuYWJsZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZv
aWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvY2FsX3N0b3JhZ2VfZW5hYmxlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgor
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZGF0YWJhc2VfZW5hYmxlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VY
UE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9kYXRhYmFzZXNfZW5hYmxlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworV0tfRVhQT1JUIGdib29s
ZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF94c3NfYXVkaXRvcl9lbmFibGVkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKwor
V0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3hzc19hdWRpdG9yX2VuYWJs
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0
dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9S
VCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZnJhbWVfZmxhdHRlcmluZ19lbmFi
bGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5n
cyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9mcmFtZV9mbGF0
dGVyaW5nX2VuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGlu
Z3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitX
S19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3BsdWdpbnNfZW5hYmxl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyog
c2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcGx1
Z2luc19lbmFibGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVk
KTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhX2Vu
YWJsZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0
dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2phdmFfZW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4g
ZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
amF2YV9zY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5ICAgICAgICAgKFdlYktp
dFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9qYXZhX3NjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkgICAg
ICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdi
b29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X2h5cGVybGlua19hdWRpdGluZ19lbmFibGVkICAgICAgICAgICAgICAgICAgICAgICAg
IChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0
X3dlYl9zZXR0aW5nc19zZXRfaHlwZXJsaW5rX2F1ZGl0aW5nX2VuYWJsZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIHdlYmtp
dHdlYnNldHRpbmdzX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5ncy5jIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMWFjMWRhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5ncy5jCkBAIC0wLDAgKzEsMTY2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEphbiBNaWNoYWVsIEFsb256bworICogUG9ydGlv
bnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNs
dWRlIDx3ZWJraXQyZ3RrLmg+CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc1Nj
cmlwdHModm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRf
d2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gU2NyaXB0cyBpcyBlbmFibGVkIGJ5IGRlZmF1
bHQKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhX3NjcmlwdF9lbmFi
bGVkKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfamF2YV9zY3JpcHRf
ZW5hYmxlZChzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9qYXZhX3NjcmlwdF9lbmFibGVkKHNldHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2b2lk
IHRlc3RXZWJLaXRXZWJTZXR0aW5nc0F1dG9sb2FkKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0
dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEJ5
IGRlZmF1bHQgYXV0by1sb2FkLWltYWdlIGlzIHRydWUKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9sb2Fkc19pbWFnZXNfYXV0b21hdGljYWxseShzZXR0aW5ncykpOworICAg
IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX2ltYWdlc19hdXRvbWF0aWNhbGx5KHNldHRp
bmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvYWRz
X2ltYWdlc19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RX
ZWJLaXRXZWJTZXR0aW5nc0xvYWRJY29uSWdub3JpbmdJbWFnZUxvYWRQcmVmKHZvaWQpCit7Cisg
ICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXco
KTsKKworICAgIC8vIGxvYWQtaWNvbi1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWYgaXMgZmFsc2Ug
YnkgZGVmYXVsdAorICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19z
aXRlX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRpbmdfcHJlZmVyZW5jZShzZXR0aW5ncykpOwor
ICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX3NpdGVfaWNvbnNfaWdub3JpbmdfaW1h
Z2VfbG9hZGluZ19wcmVmZXJlbmNlKHNldHRpbmdzLCBUUlVFKTsKKyAgICBnX2Fzc2VydCh3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19zaXRlX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRp
bmdfcHJlZmVyZW5jZShzZXR0aW5ncykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2Vi
U2V0dGluZ3NPZmZsaW5lQXBwQ2FjaGUodm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAq
c2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworICAgIAorICAgIC8vIE9mZmxp
bmUgYXBwbGljYXRpb24gY2FjaGUgaXMgZmFsc2UgYnkgZGVmYXVsdAorICAgIGdfYXNzZXJ0KCF3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZV9lbmFi
bGVkKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfb2ZmbGluZV93ZWJf
YXBwbGljYXRpb25fY2FjaGVfZW5hYmxlZChzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQo
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGVfZW5h
YmxlZChzZXR0aW5ncykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NM
b2NhbFN0b3JhZ2Uodm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3
ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gTG9jYWwgc3RvcmFnZSBpcyBlbmFi
bGUgYnkgZGVmYXVsdAorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvY2Fs
X3N0b3JhZ2VfZW5hYmxlZChzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0
X2xvY2FsX3N0b3JhZ2VfZW5hYmxlZChzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2NhbF9zdG9yYWdlX2VuYWJsZWQoc2V0dGluZ3MpKTsK
K30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzRGF0YWJhc2Uodm9pZCkKK3sK
KyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25l
dygpOworCisgICAgLy8gSFRNTDUgZGF0YWJhc2UgaXMgZW5hYmxlZCBieSBkZWZhdWx0CisgICAg
Z19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZGF0YWJhc2VfZW5hYmxlZChzZXR0aW5n
cykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2RhdGFiYXNlc19lbmFibGVkKHNldHRp
bmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2RhdGFi
YXNlX2VuYWJsZWQoc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNl
dHRpbmdzWHNzQXVkaXRvcih2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5n
cyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBYU1MgQXVkaXRvciBpcyBl
bmFibGVkIGJ5IGRlZmF1bHQKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF94
c3NfYXVkaXRvcl9lbmFibGVkKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19z
ZXRfeHNzX2F1ZGl0b3JfZW5hYmxlZChzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF94c3NfYXVkaXRvcl9lbmFibGVkKHNldHRpbmdzKSk7Cit9
CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0ZyYW1lRmxhdHRlcmluZyh2b2lk
KQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGlu
Z3NfbmV3KCk7CisKKyAgICAvLyBGcmFtZSBmbGF0dGVyaW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1
bHQKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZnJhbWVfZmxhdHRlcmlu
Z19lbmFibGVkKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZnJhbWVf
ZmxhdHRlcmluZ19lbmFibGVkKHNldHRpbmdzLCBUUlVFKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9mcmFtZV9mbGF0dGVyaW5nX2VuYWJsZWQoc2V0dGluZ3MpKTsKK30K
Kworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzUGx1Z2lucyh2b2lkKQoreworICAg
IFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7
CisKKyAgICAvLyBQbHVnaW5zIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQKKyAgICBnX2Fzc2VydCh3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wbHVnaW5zX2VuYWJsZWQoc2V0dGluZ3MpKTsKKyAgICB3
ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wbHVnaW5zX2VuYWJsZWQoc2V0dGluZ3MsIEZBTFNFKTsK
KyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfcGx1Z2luc19lbmFibGVkKHNl
dHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0phdmEodm9p
ZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRp
bmdzX25ldygpOworCisgICAgLy8gSmF2YSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQKKyAgICBnX2Fz
c2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhX2VuYWJsZWQoc2V0dGluZ3MpKTsKKyAg
ICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhX2VuYWJsZWQoc2V0dGluZ3MsIEZBTFNFKTsK
KyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YV9lbmFibGVkKHNldHRp
bmdzKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0F1dG9PcGVuV2lu
ZG93KHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dl
Yl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEJ5IGRlZmF1bHQsIEphdmFTY3JpcHQgY2FuIG9w
ZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IGlzIGVuYWJsZWQuCisgICAgZ19hc3NlcnQod2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfamF2YV9zY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNh
bGx5KHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfamF2YV9zY3JpcHRf
Y2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19h
c3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFfc2NyaXB0X2Nhbl9vcGVuX3dpbmRv
d3NfYXV0b21hdGljYWxseShzZXR0aW5ncykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0
V2ViU2V0dGluZ3NIeXBlckxpbmtBdWRpdGluZyh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRp
bmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBCeSBk
ZWZhdWx0IGh5cGVyIGxpbmsgYXVkaXRpbmcgaXMgZW5hYmxlZC4KKyAgICBnX2Fzc2VydCh3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9oeXBlcmxpbmtfYXVkaXRpbmdfZW5hYmxlZChzZXR0aW5ncykp
OworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2h5cGVybGlua19hdWRpdGluZ19lbmFibGVk
KHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2h5cGVybGlua19hdWRpdGluZ19lbmFibGVkKHNldHRpbmdzKSk7Cit9CisKK2ludCBtYWluKGlu
dCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICBnX3RocmVhZF9pbml0KE5VTEwpOworICAgIGd0
a190ZXN0X2luaXQoJmFyZ2MsICZhcmd2LCBOVUxMKTsKKworICAgIGdfdGVzdF9idWdfYmFzZSgi
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvIik7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0
Mi93ZWJzZXR0aW5ncy9zY3JpcHRzIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzU2NyaXB0cyk7Cisg
ICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5ncy9hdXRvbG9hZCIsIHRlc3RX
ZWJLaXRXZWJTZXR0aW5nc0F1dG9sb2FkKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQy
L3dlYnNldHRpbmdzL2xvYWRpY29uaWdub3JpbmdpbWFnZWxvYWRwcmVmIiwgdGVzdFdlYktpdFdl
YlNldHRpbmdzTG9hZEljb25JZ25vcmluZ0ltYWdlTG9hZFByZWYpOworICAgIGdfdGVzdF9hZGRf
ZnVuYygiL3dlYmtpdDIvd2Vic2V0dGluZ3Mvb2ZmbGluZWFwcGNhY2hlIiwgdGVzdFdlYktpdFdl
YlNldHRpbmdzT2ZmbGluZUFwcENhY2hlKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQy
L3dlYnNldHRpbmdzL2xvY2Fsc3RvcmFnZSIsIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0xvY2FsU3Rv
cmFnZSk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5ncy9kYXRhYmFz
ZSIsIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0RhdGFiYXNlKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMo
Ii93ZWJraXQyL3dlYnNldHRpbmdzL3hzc2F1ZGl0b3IiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NY
c3NBdWRpdG9yKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL2Zy
YW1lZmxhdHRlcmluZyIsIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0ZyYW1lRmxhdHRlcmluZyk7Cisg
ICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5ncy9wbHVnaW5zIiwgdGVzdFdl
YktpdFdlYlNldHRpbmdzUGx1Z2lucyk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93
ZWJzZXR0aW5ncy9qYXZhIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzSmF2YSk7CisgICAgZ190ZXN0
X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5ncy9hdXRvb3BlbndpbmRvdyIsIHRlc3RXZWJL
aXRXZWJTZXR0aW5nc0F1dG9PcGVuV2luZG93KTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJr
aXQyL3dlYnNldHRpbmdzL2h5cGVybGlua2F1ZGl0aW5nIiwgdGVzdFdlYktpdFdlYlNldHRpbmdz
SHlwZXJMaW5rQXVkaXRpbmcpOworCisgICAgcmV0dXJuIGdfdGVzdF9ydW4gKCk7Cit9CisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJndGsuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJndGsuaAppbmRleCBkZmVi
YmI0Li5lMDgxNzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyZ3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mmd0ay5oCkBAIC0yNCw1ICsyNCw2IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJD
b250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJWaWV3QmFzZS5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlldy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2Vi
U2V0dGluZ3MuaD4KIAogI2VuZGlmIC8qIF9fV0VCS0lUX0hfXyAqLwotLSAKMS43LjQuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108306</attachid>
            <date>2011-09-22 04:03:58 -0700</date>
            <delta_ts>2011-09-22 04:22:50 -0700</delta_ts>
            <desc>WebKitWebSettings GTK+ API</desc>
            <filename>0001-WebKitWebSetting-GTK-API.patch</filename>
            <type>text/plain</type>
            <size>53885</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSBmYjZhOTQ0ZjdiMDQ3YTUwZjJmOTdlZDA1MTMwNGIzNTE2YWVhYTE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogVGh1LCAyMiBTZXAgMjAxMSAxNjozMDoxNCArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIFdl
YktpdFdlYlNldHRpbmcgR1RLKyBBUEkKCi0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE1ICsKIFNvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArLQogLi4uL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcCAgICAgICAgfCAgODczICsrKysrKysrKysrKysrKysr
KysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oICB8
ICAxNDggKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5ncy5j
ICAgICAgfCAgMTY2ICsrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDJndGsuaCAgICAgIHwgICAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDEyMTMgaW5zZXJ0aW9ucygr
KSwgMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVz
dHdlYnNldHRpbmdzLmMKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGVmMGVkMC4uNmNhZjllNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTA5LTIyICBOYXlhbiBLdW1hciBLICA8bmF5YW5ra0Bt
b3Rvcm9sYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIFdlYktpdFdlYlNldHRpbmdzIEdUSysg
QVBJJ3MuCisKKyAgICAgICAgV2ViS2l0V2ViU2V0dGluZ3MgR1RLKyBvYmplY3QgaXMgY3JlYXRl
ZCBhbmQgZmlyc3Qgc2V0IG9mCisgICAgICAgIEFQSSdzIGFyZSB3cml0dGVuIHRvIGdldCBvciBz
ZXQgdGhlIHByb3BlcnRpZXMgb2YgV2ViS2l0V2ViU2V0dGluZ3MuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODM3MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYmNvbnRleHQuYzoKKyAgICAgICAgKHRl
c3RXZWJDb250ZXh0RGVmYXVsdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0
Mmd0ay5oOgorCiAyMDExLTA5LTIxICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgogCiAgICAgICAgIFtXSzJdIFVJUHJvY2VzcyBzaG91bGQgY2hlY2sgdGhhdCBXZWJQcm9jZXNz
IGlzbid0IHNlbmRpbmcgdW5leHBlY3RlZCBmaWxlOiBVUkxzIHRvIGl0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDUzZmRiMzYuLjA2NTk1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC03MCw2
ICs3MCw3IEBAIGxpYndlYmtpdDJndGtpbmNsdWRlZGlyID0gJChsaWJ3ZWJraXRndGtpbmNsdWRl
ZGlyKS93ZWJraXQyCiBsaWJ3ZWJraXQyZ3RraW5jbHVkZV9IRUFERVJTID0gXAogCSQoV2ViS2l0
MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIFwKIAkkKFdlYktpdDIpL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlLmgKIAogbGlid2Via2l0Z3RraW5jbHVkZV9IRUFERVJTICs9
IFwKQEAgLTQ1NCw2ICs0NTUsOCBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9S
X1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmggXAorCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcCBcCisJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuaCBcCkBAIC05ODks
NyArOTkyLDggQEAgRElTVENMRUFORklMRVMgKz0gXAogIyBVbml0IHRlc3RzCiBURVNUX1BST0dT
ICs9IFwKIAlQcm9ncmFtcy91bml0dGVzdHMvd2Via2l0Mi90ZXN0d2ViY29udGV4dCBcCi0JUHJv
Z3JhbXMvdW5pdHRlc3RzL3dlYmtpdDIvdGVzdHdlYnZpZXcKKwlQcm9ncmFtcy91bml0dGVzdHMv
d2Via2l0Mi90ZXN0d2VidmlldyBcCisJUHJvZ3JhbXMvdW5pdHRlc3RzL3dlYmtpdDIvdGVzdHdl
YnNldHRpbmdzCiAKIG5vaW5zdF9QUk9HUkFNUyArPSAkKFRFU1RfUFJPR1MpCiB3ZWJraXQyX3Rl
c3RzX2NmbGFncyA9IFwKQEAgLTEwMjUsNiArMTAyOSwxMSBAQCBQcm9ncmFtc191bml0dGVzdHNf
d2Via2l0Ml90ZXN0d2Vidmlld19DRkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfY2ZsYWdzKQogUHJv
Z3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnZpZXdfTERBREQgPSAkKHdlYmtpdDJfdGVz
dHNfbGRhZGQpCiBQcm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0d2Vidmlld19MREZMQUdT
ID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQy
X3Rlc3R3ZWJzZXR0aW5nc19TT1VSQ0VTID0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMKK1Byb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rl
c3R3ZWJzZXR0aW5nc19DRkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfY2ZsYWdzKQorUHJvZ3JhbXNf
dW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnNldHRpbmdzX0xEQUREID0gJCh3ZWJraXQyX3Rlc3Rz
X2xkYWRkKQorUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnNldHRpbmdzX0xERkxB
R1MgPSAkKHdlYmtpdDJfdGVzdHNfbGRmbGFncykKKwogIyBXZWJLaXRXZWJQcm9jZXNzCiBsaWJl
eGVjX1BST0dSQU1TICs9IFwKIAlQcm9ncmFtcy9XZWJLaXRXZWJQcm9jZXNzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhlM2ViOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdz
LmNwcApAQCAtMCwwICsxLDg3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDaHJpc3Rp
YW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBO
dWFudGkgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBKYW4gTWljaGFlbCBBbG9uem8KKyAqIENvcHlyaWdodCAoQykgMjAwOSBNb3ZpYWwg
Q3JlYXRpdmUgVGVjaG5vbG9naWVzIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBJZ2FsaWEg
Uy5MLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViS2l0V2ViU2V0dGluZ3MuaCIKKworI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNs
dWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVHlwZS5o
PgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisKK3N0cnVjdCBfV2ViS2l0V2ViU2V0dGlu
Z3NQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzOwor
CisgICAgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSgpCisgICAgeworICAgICAgICBwcmVmZXJl
bmNlcyA9IFdLUHJlZmVyZW5jZXNDcmVhdGUoKTsKKworICAgICAgICAvKiBCeSBkZWZhdWx0LCBv
ZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZSBpbiB0cnVlIGluIFdlYktpdC1HVEsgKi8KKyAg
ICAgICAgV0tQcmVmZXJlbmNlc1NldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChw
cmVmZXJlbmNlcywgdHJ1ZSk7CisgICAgICAgIC8qIEJ5IGRlZmF1bHQsIGphdmFzY3JpcHQtY2Fu
LW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5IGlzIGZhbHNlIGluIFdlYktpdC1HVEsgKi8KKyAg
ICAgICAgV0tQcmVmZXJlbmNlc1NldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2Fs
bHkocHJlZmVyZW5jZXMsIGZhbHNlKTsKKyAgICAgICAgLyogQnkgZGVmYXVsdCwgZW5hYmxlLWh5
cGVybGluay1hdWRpdGluZyBpcyBmYWxzZSBpbiBXZWJLaXQtR1RLICovCisgICAgICAgIFdLUHJl
ZmVyZW5jZXNTZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIGZhbHNlKTsK
KyAgICB9Cit9OworCisvKioKKyAqIFNFQ1RJT046d2Via2l0d2Vic2V0dGluZ3MKKyAqIEBzaG9y
dF9kZXNjcmlwdGlvbjogQ29udHJvbCB0aGUgYmVoYXZpb3VyIG9mIGEgI1dlYktpdFdlYlZpZXcK
KyAqCisgKiAjV2ViS2l0V2ViU2V0dGluZ3MgY2FuIGJlIGFwcGxpZWQgdG8gYSAjV2ViS2l0V2Vi
VmlldyB0byBjb250cm9sIHRleHQgZW5jb2RpbmcsIAorICogY29sb3IsIGZvbnQgc2l6ZXMsIHBy
aW50aW5nIG1vZGUsIHNjcmlwdCBzdXBwb3J0LCBsb2FkaW5nIG9mIGltYWdlcyBhbmQgdmFyaW91
cyBvdGhlciB0aGluZ3MuIAorICogQWZ0ZXIgY3JlYXRpb24sIGEgI1dlYktpdFdlYlNldHRpbmdz
IG9iamVjdCBjb250YWlucyBkZWZhdWx0IHNldHRpbmdzLiAKKyAqCisgKiA8aW5mb3JtYWxleGFt
cGxlPjxwcm9ncmFtbGlzdGluZz4KKyAqIC88IS0tIC0tPiogQ3JlYXRlIGEgbmV3IHdlYnNldHRp
bmdzIGFuZCBkaXNhYmxlIGphdmEgc2NyaXB0ICo8IS0tIC0tPi8KKyAqIFdlYktpdFdlYlNldHRp
bmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3ICgpOworICogZ19vYmplY3Rf
c2V0IChHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtc2NyaXB0cyIsIEZBTFNFLCBOVUxMKTsK
KyAqCisgKiAvPCEtLSAtLT4qIEFwcGx5IHRoZSByZXN1bHQgKjwhLS0gLS0+LworICogd2Via2l0
X3dlYl92aWV3X3NldF9zZXR0aW5ncyAoV0VCS0lUX1dFQl9WSUVXKG15X3dlYnZpZXcpLCBzZXR0
aW5ncyk7CisgKiA8L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxleGFtcGxlPgorICovCisKKwor
R19ERUZJTkVfVFlQRShXZWJLaXRXZWJTZXR0aW5ncywgd2Via2l0X3dlYl9zZXR0aW5ncywgR19U
WVBFX09CSkVDVCkKKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9FTkFCTEVfSkFW
QV9TQ1JJUFQsCisgICAgUFJPUF9BVVRPX0xPQURfSU1BR0VTLAorICAgIFBST1BfTE9BRFNfSUNP
TlNfSUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGRVJFTkNFLAorICAgIFBST1BfRU5BQkxFX09GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hFLAorICAgIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NU
T1JBR0UsCisgICAgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0UsCisgICAgUFJPUF9FTkFCTEVf
WFNTX0FVRElUT1IsCisgICAgUFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRFUklORywKKyAgICBQUk9Q
X0VOQUJMRV9QTFVHSU5TLAorICAgIFBST1BfRU5BQkxFX0pBVkEsCisgICAgUFJPUF9KQVZBU0NS
SVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWSwKKyAgICBQUk9QX0VOQUJMRV9IWVBF
UkxJTktfQVVESVRJTkcsCit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJTZXR0aW5nc1NldFBy
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUqIHZhbHVl
LCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3Mg
PSBXRUJLSVRfV0VCX1NFVFRJTkdTKG9iamVjdCk7CisgCisgICAgc3dpdGNoKHByb3BJZCkgewor
ICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQV9TQ1JJUFQ6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9qYXZhX3NjcmlwdChzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVh
bih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVVUT19MT0FEX0lNQUdF
UzoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0
aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfTE9BRFNfSUNPTlNfSUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGRVJFTkNFOgorICAg
ICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9s
b2FkX3ByZWZlcmVuY2Uoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElP
Tl9DQUNIRToKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVf
d2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVl
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RP
UkFHRToKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2Fs
X3N0b3JhZ2Uoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRToKKyAgICAgICAgd2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzLCBnX3Zh
bHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9F
TkFCTEVfWFNTX0FVRElUT1I6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV94c3NfYXVkaXRvcihzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRURVJJTkc6CisgICAg
ICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRp
bmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9FTkFCTEVfUExVR0lOUzoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
ZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZBOgorICAgICAgICB3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVh
bih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSkFWQVNDUklQVF9DQU5f
T1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFk6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2phdmFfc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncywg
Z192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBS
T1BfRU5BQkxFX0hZUEVSTElOS19BVURJVElORzoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9v
bGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09C
SkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBzcGVjKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJTZXR0aW5nc0dl
dFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBH
UGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSBX
RUJLSVRfV0VCX1NFVFRJTkdTKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAg
IGNhc2UgUFJPUF9FTkFCTEVfSkFWQV9TQ1JJUFQ6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xl
YW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhX3NjcmlwdChzZXR0
aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVVUT19MT0FEX0lNQUdFUzoK
KyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfTE9BRFNfSUNPTlNfSUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGRVJFTkNFOgorICAgICAg
ICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fk
c19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2Uoc2V0dGluZ3MpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9D
QUNIRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFH
RToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRToKKyAgICAgICAgZ192YWx1
ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZGF0YWJhc2VfZW5h
YmxlZChzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1hT
U19BVURJVE9SOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3Ioc2V0dGluZ3MpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HOgorICAgICAgICBnX3Zh
bHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfZnJh
bWVfZmxhdHRlbmluZyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
RU5BQkxFX1BMVUdJTlM6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKHNldHRpbmdzKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9v
bGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEoc2V0dGluZ3Mp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lO
RE9XU19BVVRPTUFUSUNBTExZOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhX3NjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9t
YXRpY2FsbHkoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJM
RV9IWVBFUkxJTktfQVVESVRJTkc6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUs
IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGlu
Z3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FS
Tl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwc3BlYyk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19p
bml0KFdlYktpdFdlYlNldHRpbmdzQ2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyog
Z09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIGdPYmplY3RDbGFzcy0+
c2V0X3Byb3BlcnR5ID0gd2Via2l0V2ViU2V0dGluZ3NTZXRQcm9wZXJ0eTsKKyAgICBnT2JqZWN0
Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdFdlYlNldHRpbmdzR2V0UHJvcGVydHk7CisKKyAg
ICBHUGFyYW1GbGFncyBmbGFncyA9IHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFS
QU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1QpOworCisgICAgLyoqCisgICAgKiBXZWJL
aXRXZWJTZXR0aW5nczplbmFibGUtamF2YS1zY3JpcHQKKyAgICAqCisgICAgKiBUaGlzIHByb3Bl
cnR5IG5lZWRzIHRvIGJlIHNldCB0byBlbmFibGUgdGhlIGV4ZWN1dGlvbiBvZiAKKyAgICAqIEph
dmFzY3JpcHQgd2l0aGluIGEgcGFnZS4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBST1BfRU5BQkxFX0pBVkFfU0NSSVBULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5hYmxlLWphdmEtc2Ny
aXB0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF8oIkVuYWJsZSBKYXZhIFNjcmlwdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEphdmEgU2NyaXB0IGxh
bmd1YWdlcy4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbGFncykpOworICAgIAorICAgIC8qKgorICAgICogV2ViS2l0
V2ViU2V0dGluZ3M6YXV0by1sb2FkLWltYWdlcworICAgICoKKyAgICAqIERldGVybWluZXMgd2hl
dGhlciBpbWFnZXMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgbG9hZGVkIG9yIG5vdC4KKyAgICAq
IE9uIGRldmljZXMsIHdoZXJlIG5ldHdvcmsgYmFuZHdpZHRoIGlzIG9mIGNvbmNlcm4sIGl0IG1p
Z2h0IGJlCisgICAgKiB1c2VmdWwgdG8gdHVybiB0aGlzIHByb3BlcnR5IG9mZi4KKyAgICAqCisg
ICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfQVVUT19MT0FEX0lNQUdF
UywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29s
ZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImF1dG8tbG9hZC1pbWFnZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiQXV0byBMb2FkIEltYWdlcyIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiTG9h
ZCBpbWFnZXMgYXV0b21hdGljYWxseS4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworICAgIAorICAgIC8q
KgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6bG9hZHMtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9h
ZC1wcmVmZXJlbmNlCisgICAgKgorICAgICogQnkgZW5hYmxpbmcgdGhpcyBwcm9wZXJ0eSwgc2l0
ZSBpY29ucyAoZS5nLCBmYXZpY29uKSB3aWxsIGJlIGxvYWRlZAorICAgICogaXJyZXNwZWN0aXZl
IG9mIHRoZSB2YWx1ZSBvZiAnYXV0by1sb2FkLWltYWdlcycuCisgICAgKgorICAgICovCisgICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0xPQURTX0lDT05TX0lHTk9SSU5HX0lNQUdF
X0xPQURfUFJFRkVSRU5DRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImxvYWRzLWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJl
ZmVyZW5jZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfKCJMb2FkcyBTaXRlIEljb25zIGlnbm9yaW5nIGltYWdlIGxvYWQgcHJlZmVy
ZW5jZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXygiV2hldGhlciB0byBsb2FkIHNpdGUgaWNvbiBpZ25vcmluZyBpbWFnZSBsb2Fk
IHByZWZlcmVuY2UuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktp
dFdlYlNldHRpbmdzOmVuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZQorICAgICoK
KyAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNh
Y2hlIHN1cHBvcnQuIE9mZmxpbmUKKyAgICAqIFdlYiBBcHBsaWNhdGlvbiBDYWNoZSBlbnN1cmVz
IHdlYiBhcHBsaWNhdGlvbnMgYXJlIGF2YWlsYWJsZSBldmVuIHdoZW4KKyAgICAqIHRoZSB1c2Vy
IGlzIG5vdCBjb25uZWN0ZWQgdG8gdGhlIG5ldHdvcmsuCisgICAgKgorICAgICovCisgICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElP
Tl9DQUNIRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3Bl
Y19ib29sZWFuKCJlbmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5h
YmxlIG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJs
ZSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlvbiBjYWNoZSIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAg
ICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdl
OgorICAgICoKKyAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IGxvY2FsU3RvcmFnZSBzdXBw
b3J0LiBsb2NhbFN0b3JhZ2UgcHJvdmlkZXMKKyAgICAqIHNpbXBsZSBzeW5jaHJvbm91cyBzdG9y
YWdlIGFjY2Vzcy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh0bWw1LWxvY2FsLXN0
b3JhZ2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXygiRW5hYmxlIEhUTUw1IExvY2FsIFN0b3JhZ2UiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8g
ZW5hYmxlIEhUTUw1IExvY2FsIFN0b3JhZ2Ugc3VwcG9ydCIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisK
KyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1odG1sNS1kYXRhYmFzZToK
KyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBjbGllbnQtc2lkZSBTUUwgZGF0
YWJhc2Ugc3VwcG9ydC4gQ2xpZW50LXNpZGUKKyAgICAqIFNRTCBkYXRhYmFzZSBhbGxvd3Mgd2Vi
IHBhZ2VzIHRvIHN0b3JlIHN0cnVjdHVyZWQgZGF0YSBhbmQgYmUgYWJsZSB0bworICAgICogdXNl
IFNRTCB0byBtYW5pcHVsYXRlIHRoYXQgZGF0YSBhc3luY2hyb25vdXNseS4KKyAgICAqCisgICAg
Ki8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFC
QVNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jv
b2xlYW4oImVuYWJsZS1odG1sNS1kYXRhYmFzZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSFRNTDUgRGF0YWJhc2Ui
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IGRhdGFiYXNlIHN1cHBvcnQiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUteHNz
LWF1ZGl0b3IKKyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgWFNTIEF1ZGl0b3Iu
IFRoaXMgZmVhdHVyZSBmaWx0ZXJzIHNvbWUga2luZHMgb2YKKyAgICAqIHJlZmxlY3RpdmUgWFNT
IGF0dGFja3Mgb24gdnVsbmVyYWJsZSB3ZWIgc2l0ZXMuCisgICAgKgorICAgICovCisgICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUt
eHNzLWF1ZGl0b3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiRW5hYmxlIFhTUyBBdWRpdG9yIiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVu
YWJsZSB0aGUgWFNTIGF1ZGl0b3IiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisKKyAgICAvKioKKyAg
ICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nCisgICAgKgorICAg
ICogV2hldGhlciB0byBlbmFibGUgdGhlIEZyYW1lIEZsYXR0ZW5pbmcuIFdpdGggdGhpcyBzZXR0
aW5nIGVhY2ggc3ViZnJhbWUgaXMgZXhwYW5kZWQKKyAgICAqIHRvIGl0cyBjb250ZW50cywgd2hp
Y2ggd2lsbCBmbGF0dGVuIGFsbCB0aGUgZnJhbWVzIHRvIGJlY29tZSBvbmUgc2Nyb2xsYWJsZSBw
YWdlLgorICAgICogT24gdG91Y2ggZGV2aWNlcywgaXQgaXMgZGVzaXJlZCB0byBub3QgaGF2ZSBh
bnkgc2Nyb2xsYWJsZSBzdWIgcGFydHMgb2YgdGhlIHBhZ2UgYXMKKyAgICAqIGl0IHJlc3VsdHMg
aW4gYSBjb25mdXNpbmcgdXNlciBleHBlcmllbmNlLCB3aXRoIHNjcm9sbGluZyBzb21ldGltZXMg
c2Nyb2xsaW5nIHN1YiBwYXJ0cworICAgICogYW5kIGF0IG90aGVyIHRpbWVzIHNjcm9sbGluZyB0
aGUgcGFnZSBpdHNlbGYuIEZvciB0aGlzIHJlYXNvbiBpZnJhbWVzIGFuZCBmcmFtZXNldHMgYXJl
CisgICAgKiBiYXJlbHkgdXNhYmxlIG9uIHRvdWNoIGRldmljZXMuCisgICAgKgorICAgICovCisg
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5H
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xl
YW4oImVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBGcmFtZSBGbGF0dGVuaW5n
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBGcmFtZSBGbGF0dGVuaW5nIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
YWdzKSk7CisKKyAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLXBsdWdpbnM6
CisgICAgKgorICAgICogUGx1Z2lucyBlbWRlZGRlZCB3aXRoaW4gYSBwYWdlIGNhbiBiZSB0dXJu
ZWQgb2ZmIGJ5IGRpc2FibGluZworICAgICogdGhpcyBwcm9wZXJ0eS4gCisgICAgKgorICAgICov
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9QTFVHSU5TLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZW5hYmxlLXBsdWdpbnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIFBsdWdpbnMiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBlbWJlZGRl
ZCBwbHVnaW4gb2JqZWN0cy4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworICAgIAorICAgLyoqCisgICAg
KiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtamF2YToKKyAgICAqCisgICAgKiBFbmFibGUgb3Ig
ZGlzYWJsZSBzdXBwb3J0IGZvciB0aGUgSmF2YS4gVGhpcyBwcm9wZXJ0eSBuZWVkcyB0byBiZSBl
bmFibGVkCisgICAgKiBmb3IgZGlzcGxheWluZyBqYXZhIGNvbnRlbnRzIHZpYSAgJmx0O29iamVj
dCZndDsgb3IgJmx0O2VtYmVkJmd0OyB0YWcuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9KQVZBLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1qYXZhIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVu
YWJsZSBKYXZhIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfKCJXaGV0aGVyIEphdmEgc3VwcG9ydCBzaG91bGQgYmUgZW5hYmxlZCIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmph
dmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5CisgICAgKgorICAgICogV2hl
dGhlciBKYXZhU2NyaXB0IGNhbiBvcGVuIHBvcHVwIHdpbmRvd3MgYXV0b21hdGljYWxseSB3aXRo
b3V0IHVzZXIKKyAgICAqIGludGVydmVudGlvbi4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9N
QVRJQ0FMTFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3Nw
ZWNfYm9vbGVhbigiamF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHkiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XygiSmF2YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9tYXRpY2FsbHkiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRo
ZXIgSmF2YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9tYXRpY2FsbHkiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWh5cGVy
bGluay1hdWRpdGluZzoKKyAgICAqCisgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzdXBwb3J0IGZv
ciAmbHQ7YSBwaW5nJmd0Oy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBST1BfRU5BQkxFX0hZUEVSTElOS19BVURJVElORywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtaHlwZXJsaW5r
LWF1ZGl0aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF8oIkVuYWJsZSBIeXBlcmxpbmsgQXVkaXRpbmciKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIg
PGEgcGluZz4gc2hvdWxkIGJlIGFibGUgdG8gc2VuZCBwaW5ncyIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykp
OworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoV2ViS2l0V2Vi
U2V0dGluZ3NQcml2YXRlKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
aW5pdChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgV2ViS2l0V2ViU2V0dGlu
Z3NQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHNldHRpbmdzLCBX
RUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSk7CisgICAg
c2V0dGluZ3MtPnByaXYgPSBwcml2OworICAgIG5ldyAocHJpdikgV2ViS2l0V2ViU2V0dGluZ3NQ
cml2YXRlKCk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19uZXc6CisgKgorICog
Q3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViU2V0dGluZ3MgaW5zdGFuY2Ugd2l0aCBkZWZhdWx0IHZh
bHVlcy4gSXQgbXVzdAorICogYmUgbWFudWFsbHkgYXR0YWNoZWQgdG8gYSBXZWJWaWV3LgorICoK
KyAqIFJldHVybnM6IGEgbmV3ICNXZWJLaXRXZWJTZXR0aW5ncyBpbnN0YW5jZQorICoqLworV2Vi
S2l0V2ViU2V0dGluZ3MqIHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCkKK3sKKyAgICByZXR1cm4g
V0VCS0lUX1dFQl9TRVRUSU5HUyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdT
LCBOVUxMKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2ph
dmFfc2NyaXB0OgorICoKKyAqIENoZWNrIGlmIEphdmEgU2NyaXB0IGV4ZWN1dGlvbiB3aXRoaW4g
YSBwYWdlIGlzIHN1cHBvcnRlZCBvciBub3QuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgSmF2
YSBTY3JpcHQgaXMgZW5hYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9qYXZhX3NjcmlwdAorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfZW5hYmxlX2phdmFfc2NyaXB0KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRp
bmdzKSwgRkFMU0UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0
dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0RW5hYmxl
ZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19z
ZXRfZW5hYmxlX2phdmFfc2NyaXB0OgorICoKKyAqIFRoaXMgQVBJIGNhbiBiZSB1c2VkIHRvIGVu
YWJsZS9kaXNhYmxlIHRoZSBzdXBwcnQgZm9yIEphdmFzY3JpcHQKKyAqIGV4ZWN1dGlvbi4KKyAq
CisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhX3Njcmlw
dAorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YV9zY3JpcHQo
V2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAg
V2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jv
b2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHBy
aXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoZW5hYmxlZCA9PSBjdXJyZW50VmFsdWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhU2NyaXB0RW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JK
RUNUKHNldHRpbmdzKSwgImVuYWJsZS1qYXZhLXNjcmlwdCIpOworfQorCisvKioKKyAqIHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXM6CisgKgorICogVGhpcyBBUEkgd2ls
bCByZXR1cm4gVFJVRSBpZiBhdXRvbWF0aWMgbG9hZGluZyBvZiBpbWFnZXMgaXMgdHVybmVkIGVu
YWJsZWQuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgYXV0byBsb2FkaW5nIG9mIGltYWdlcyBp
cyBlbmFibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfYXV0
b19sb2FkX2ltYWdlcworICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfYXV0
b19sb2FkX2ltYWdlcyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsK
KworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2Owor
ICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHByaXYt
PnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9hdXRv
X2xvYWRfaW1hZ2VzOgorICoKKyAqIEF1dG9tYXRpYyBsb2FkaW5nIG9mIGltYWdlcyBjYW4gYmUg
dHVybmVkIG9uL29mZiB1c2luZyB0aGlzIEFQSS4gSWYgbWlnaHQKKyAqIGJlIHVzZWZ1bCB0byB0
dXJuIHRoaXMgcHJvcGVydHkgb2ZmLCBpbiBjYXNlcyB3aGVuIG5ldHdvcmsgYmFuZHdpZHRoIGlz
IG9mCisgKiBjb25jZXJuLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfYXV0b19sb2FkX2ltYWdlcworICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9h
dXRvX2xvYWRfaW1hZ2VzKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5h
YmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0
dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdz
LT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRMb2Fk
c0ltYWdlc0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmKGVuYWJsZWQg
PT0gY3VycmVudFZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0
TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVk
KTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiYXV0by1sb2FkLWlt
YWdlcyIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25z
X2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZToKKyAqCisgKiBDaGVjayB3aGV0aGVyIHRo
ZSBzaXRlIGljb25zIGNhbiBiZSBsb2FkZWQgaXJyZXNwY3RpdmUgb2YgdGhlIGltYWdlIGxvYWRp
bmcKKyAqIHByZWZlcmVuY2UuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgc2l0ZS1pY29uIGNh
biBiZSBsb2FkZWQgaXJyZXNwZWN0aXZlIG9mIGltYWdlIGxvYWRpbmcgcHJlZmVyZW5jZS4KKyAq
CisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9y
aW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKFdlYktp
dFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgV2ViS2l0V2ViU2V0
dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVy
ZW5jZXNHZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZShwcml2
LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9h
ZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlOgorICoKKyAqIElmIHRoaXMg
QVBJIGlzIGNhbGxlZCB3aXRoIFRSVUUsIHRoZW4gc2l0ZS1pY29ucyAoZS5nLCBmYXYtaWNvbikg
d2lsbCBiZQorICogbG9hZGVkIGV2ZW4gaWYgYXV0byBsb2FkaW5nIG9mIGltYWdlIGlzIHR1cm5l
ZCBvZmYgdXNpbmcgdGhlIG1ldGhvZAorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfYXV0b19s
b2FkX2ltYWdlcworICoKKyAqIEBzZWVfYWxzbyA6IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xv
YWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZQorICogICAgICAgICAgICB3
ZWJraXRfd2ViX3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzCisgKiovCit2b2lkIHdlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVy
ZW5jZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisK
KyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAg
ICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TG9hZHNTaXRlSWNvbnNJ
Z25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2UocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlm
KGVuYWJsZWQgPT0gY3VycmVudFZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZl
cmVuY2VzU2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2UocHJp
di0+cHJlZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09C
SkVDVChzZXR0aW5ncyksICJsb2Fkcy1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWZlcmVu
Y2UiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGlu
ZV93ZWJfYXBwbGljYXRpb25fY2FjaGU6CisgKgorICogSWYgSFRNTDUgb2ZmbGluZSB3ZWIgYXBw
bGljYXRpb24gY2FjaGUgc3VwcG9ydCBpcyBlbmFibGVkLCB0aGVuIHRoaXMgZnVuY3Rpb24KKyAq
IHdpbGwgcmV0dXJuIFRSVUUuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgSFRNTDUgb2ZmbGlu
ZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUgc3VwcG9ydCBpcyBlbmFibGVkLgorICoKKyAqIEBzZWVf
YWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0
aW9uX2NhY2hlCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVf
b2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdz
KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0
dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBz
ZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldE9mZmxpbmVXZWJBcHBs
aWNhdGlvbkNhY2hlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hl
OgorICoKKyAqIEVuYWJsZS9EaXNhYmxlIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNh
Y2hlIHN1cHBvcnQuIEhUTUw1IG9mZmxpbmUKKyAqIFdlYiBBcHBsaWNhdGlvbiBDYWNoZSBlbnN1
cmVzIHdlYiBhcHBsaWNhdGlvbnMgYXJlIGF2YWlsYWJsZSBldmVuIHdoZW4gdGhlCisgKiB1c2Vy
IGlzIG5vdCBjb25uZWN0ZWQgdG8gdGhlIG5ldHdvcmsuCisgKgorICogQHNlZV9hbHNvOiB3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUK
KyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2Fw
cGxpY2F0aW9uX2NhY2hlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5h
YmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0
dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdz
LT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRPZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlm
KGVuYWJsZWQgPT0gY3VycmVudFZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZl
cmVuY2VzU2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHByaXYtPnByZWZlcmVu
Y2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGlu
Z3MpLCAiZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlIik7Cit9CisKKy8qKgor
ICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2U6Cisg
KgorICogQ2hlY2tzIHdoZXRoZXIgSFRNTDUgbG9jYWwgc3RvcmFnZSBzdXBwb3J0IGlzIGVuYWJs
ZWQuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgSFRNTDUgbG9jYWwgc3RvcmFnZSBzdXBwb3J0
IGlzIGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9l
bmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UoV2ViS2l0V2ViU2V0dGluZ3MqIHNl
dHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElO
R1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHBy
aXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldExvY2FsU3Rv
cmFnZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlOgorICoKKyAqIEVuYWJsZS9E
aXNhYmxlIEhUTUw1IGxvY2FsIHN0b3JhZ2Ugc3VwcG9ydC4gSFRNTDUgbG9jYWwgc3RvcmFnZSBz
dXBwb3J0cworICogc2ltcGxlIHN5bmNocm9ub3VzIHN0b3JhZ2UgYWNjZXNzLgorICoKKyAqIEBz
ZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9jYWxfc3RvcmFnZV9lbmFibGUKKyAq
Ki8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3Jh
Z2UoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisg
ICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAg
Z2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldExvY2FsU3RvcmFnZUVuYWJs
ZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmKGVuYWJsZWQgPT0gY3VycmVudFZhbHVlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0TG9jYWxTdG9yYWdlRW5hYmxl
ZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5
KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlIik7Cit9Cisv
KioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2RhdGFiYXNlX2VuYWJsZWQ6CisgKgorICog
Q2hlY2tzIHdoZXRoZXIgSFRNTDUgZGF0YWJhc2Ugc3RvcmFnZSBzdXBwb3J0IGlzIGVuYWJsZWQu
CisgKgorICogUmV0dXJuczogJVRSVUUgSWYgSFRNTDUgZGF0YWJhc2Ugc3VwcG9ydCBpcyBlbmFi
bGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZGF0YWJhc2Vf
ZW5hYmxlZAorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZGF0YWJhc2Vf
ZW5hYmxlZChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAg
IFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJl
dHVybiBXS1ByZWZlcmVuY2VzR2V0RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7
Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFi
YXNlOgorICoKKyAqIEVuYWJsZS9EaXNhYmxlIEhUTUw1IGNsaWVudC1zaWRlIFNRTCBkYXRhYmFz
ZSBzdXBwb3J0LiBDbGllbnQtc2lkZQorICogU1FMIGRhdGFiYXNlIGFsbG93cyB3ZWIgcGFnZXMg
dG8gc3RvcmUgc3RydWN0dXJlZCBkYXRhIGFuZCBiZSBhYmxlIHRvCisgKiB1c2UgU1FMIHRvIG1h
bmlwdWxhdGUgdGhhdCBkYXRhIGFzeW5jaHJvbm91c2x5LgorICoKKyAqIEBzZWVfYWxzbzogd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlCisgKiovCit2b2lkIHdl
YmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShXZWJLaXRXZWJTZXR0
aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0
aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50
VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNl
cyk7CisgICAgaWYoZW5hYmxlZCA9PSBjdXJyZW50VmFsdWUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFdLUHJlZmVyZW5jZXNTZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCAo
Ym9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAi
ZW5hYmxlLWh0bWw1LWRhdGFiYXNlIik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZW5hYmxlX3hzc19hdWRpdG9yOgorICoKKyAqIENoZWNrcyB3aGV0aGVyIFhTUyBhdWRp
dGluZyBpcyBlbmFibGVkLiAKKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBYU1MgYXVkaXRpbmcg
aXMgZW5hYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV94c3NfYXVkaXRvcgorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
ZW5hYmxlX3hzc19hdWRpdG9yKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFM
U0UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnBy
aXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRpdG9yRW5hYmxlZChwcml2LT5w
cmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxl
X3hzc19hdWRpdG9yOgorICoKKyAqIFdoZXRoZXIgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIFhTUyBB
dWRpdG9yLiBUaGlzIGZlYXR1cmUgZmlsdGVycyBzb21lIGtpbmRzIG9mCisgKiByZWZsZWN0aXZl
IFhTUyBhdHRhY2tzIG9uIHZ1bG5lcmFibGUgd2ViIHNpdGVzLgorICoKKyAqIEBzZWVfYWxzbzog
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yCisgKiovCit2b2lkIHdl
YmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvcihXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5n
c1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFs
dWUgPSBXS1ByZWZlcmVuY2VzR2V0WFNTQXVkaXRvckVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMp
OworICAgIGlmKGVuYWJsZWQgPT0gY3VycmVudFZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXS1ByZWZlcmVuY2VzU2V0WFNTQXVkaXRvckVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChi
b29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJl
bmFibGUteHNzLWF1ZGl0b3IiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZzoKKyAqCisgKiBDaGVjayB3aGV0aGVyIHRoZSBmcmFt
ZSBmbGF0dGVyaW5nIGlzIGVuYWJsZWQuIElmIHRoZSBmcmFtZSBmbGF0dGVyaW5nIGlzCisgKiBl
bmFibGVkLCB0aGVuIGVhY2ggc3ViZnJhbWUgd2lsbCBiZSBleHBhbmRlZCB0byBpdHMgY29udGVu
dCwgd2hpY2ggd2lsbCBmbGF0dGVuCisgKiBhbGwgdGhlIGZyYW1lcyB0byBiZWNvbWUgb25lIHNj
cm9sbGFibGUgcGFnZS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBmcmFtZSBmbGF0dGVyaW5n
IGlzIGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9l
bmFibGVfZnJhbWVfZmxhdHRlbmluZworICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdz
KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0
dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBz
ZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEZyYW1lRmxhdHRlbmlu
Z0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nOgorICoKKyAqIEFQSSB0byBlbmFibGUv
ZGlzYWJsZSBmcmFtZSBmaWx0ZXJpbmcgc3VwcG9ydC4gV2l0aCB0aGlzIHNldHRpbmcgZWFjaCBz
dWJmcmFtZSBpcyBleHBhbmRlZAorICogdG8gaXRzIGNvbnRlbnRzLCB3aGljaCB3aWxsIGZsYXR0
ZW4gYWxsIHRoZSBmcmFtZXMgdG8gYmVjb21lIG9uZSBzY3JvbGxhYmxlIHBhZ2UuCisgKiBPbiB0
b3VjaCBkZXZpY2VzLCBpdCBpcyBkZXNpcmVkIHRvIG5vdCBoYXZlIGFueSBzY3JvbGxhYmxlIHN1
YiBwYXJ0cyBvZiB0aGUgcGFnZSBhcworICogaXQgcmVzdWx0cyBpbiBhIGNvbmZ1c2luZyB1c2Vy
IGV4cGVyaWVuY2UsIHdpdGggc2Nyb2xsaW5nIHNvbWV0aW1lcyBzY3JvbGxpbmcgc3ViIHBhcnRz
CisgKiBhbmQgYXQgb3RoZXIgdGltZXMgc2Nyb2xsaW5nIHRoZSBwYWdlIGl0c2VsZi4gRm9yIHRo
aXMgcmVhc29uIGlmcmFtZXMgYW5kIGZyYW1lc2V0cyBhcmUKKyAqIGJhcmVseSB1c2FibGUgb24g
dG91Y2ggZGV2aWNlcy4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywg
Z2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
U0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJp
diA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVy
ZW5jZXNHZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBp
ZihjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVm
ZXJlbmNlc1NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29s
KWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFi
bGUtZnJhbWUtZmxhdHRlbmluZyIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9wbHVnaW5zOgorICoKKyAqIENoZWNrIGlmIHBsdWdpbnMgYXJlIGVuYWJsZWQu
IAorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIFBsdWdpbnMgYXJlIGVuYWJsZWQuCisgKgorICog
QHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucworICoqLwor
Z2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMoV2ViS2l0V2Vi
U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5n
c1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNl
c0dldFBsdWdpbnNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2luczoKKyAqCisgKiBFbmFibGUvRGlzYWJs
ZSBwbHVnaW4gc3VwcG9ydC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9wbHVnaW5zCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV9wbHVnaW5zKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxl
ZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGlu
Z3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5w
cml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRQbHVnaW5z
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYoY3VycmVudFZhbHVlID09IGVuYWJs
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRQbHVnaW5zRW5hYmxl
ZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5
KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1wbHVnaW5zIik7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmE6CisgKgorICogQ2hlY2sgd2hldGhlciB0
aGUgc3VwcG9ydCBmb3IgSmF2YSBpcyBlbmFibGVkLiBKYXZhIGNvbnRlbnRzCisgKiBlbWJlZGRl
ZCB2aWEgJmx0O29iamVjdCZndDsgb3IgJmx0O2VtYmVkJmd0OyB3aWxsIG5vdCBiZQorICogZGlz
cGxheWVkIGlmIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvbiBpcyBGQUxTRS4KKyAq
CisgKiBSZXR1cm5zOiAlVFJVRSBJZiBKYXZhIGlzIGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNv
OiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YQorICoqLworZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRp
bmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Mo
c2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYg
PSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEphdmFFbmFibGVk
KHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9lbmFibGVfamF2YToKKyAqCisgKiBFbmFibGUgb3IgZGlzYWJsZSBzdXBwb3J0IGZvciB0aGUg
SmF2YS4gVGhpcyBwcm9wZXJ0eSBuZWVkcyB0byBiZSBlbmFibGVkCisgKiBmb3IgZGlzcGxheWlu
ZyBqYXZhIGNvbnRlbnRzIHZpYSAgJmx0O29iamVjdCZndDsgb3IgJmx0O2VtYmVkJmd0OyB0YWcu
CisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YQor
ICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YShXZWJLaXRXZWJT
ZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJT
ZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJy
ZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0SmF2YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMp
OworICAgIGlmKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXS1ByZWZlcmVuY2VzU2V0SmF2YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVu
YWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUt
amF2YSIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFfc2NyaXB0
X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseToKKyAqCisgKiBSZXR1cm5zIHdoZXRoZXIg
SmF2YXNjcmlwdCBjYW4gb3BlbiBwb3B1cCB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgd2l0aG91dAor
ICogdXNlciBpbnRlcnZlbnRpb24uCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgSmF2YXNjcmlw
dCBjYW4gb3BlbiB3aW5kb3cgYXV0b21hdGljYWxseS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X2phdmFfc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGlj
YWxseQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YV9zY3JpcHRf
Y2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5n
cykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNl
dHRpbmdzKSwgRkFMU0UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0g
c2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0Q2Fu
T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhX3NjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1
dG9tYXRpY2FsbHk6CisgKgorICogV2hldGhlciBKYXZhU2NyaXB0IGNhbiBvcGVuIHBvcHVwIHdp
bmRvd3MgYXV0b21hdGljYWxseSB3aXRob3V0IHVzZXIKKyAqIGludGVydmVudGlvbi4KKyAqCisg
KiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFfc2NyaXB0X2Nhbl9vcGVu
X3dpbmRvd3NfYXV0b21hdGljYWxseQorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9qYXZhX3NjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoV2ViS2l0V2ViU2V0
dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0
dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVu
dFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRp
Y2FsbHkocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVk
KQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlwdENhbk9w
ZW5XaW5kb3dzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7
CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImphdmFzY3JpcHQtY2Fu
LW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5Iik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZzoKKyAqCisgKiBHZXQgd2hldGhl
ciB0aGUgc3VwcG9ydCBmb3IgJmx0O2EgcGluZyZndDsgaXMgZW5hYmxlZC4KKyAqCisgKiBSZXR1
cm5zOiAlVFJVRSBJZiBoeXBlci1saW5rIGF1ZGl0aW5nIGlzIGVuYWJsZWQKKyAqCisgKiBAc2Vl
X2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcK
KyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtf
YXVkaXRpbmcoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAg
ICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBy
ZXR1cm4gV0tQcmVmZXJlbmNlc0dldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChwcml2LT5wcmVm
ZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h5
cGVybGlua19hdWRpdGluZzoKKyAqCisgKiBFbmFibGUgb3IgZGlzYWJsZSBzdXBwb3J0IGZvciAm
bHQ7YSBwaW5nJmd0Oy4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGlu
Z3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUq
IHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1By
ZWZlcmVuY2VzR2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsK
KyAgICBpZihjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
V0tQcmVmZXJlbmNlc1NldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNl
cywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdz
KSwgImVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmciKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyN2E0OTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oCkBAIC0wLDAgKzEs
MTQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0
aWFuQGltZW5kaW8uY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA5IEphbiBNaWNoYWVsIEFsb256
byA8am1hbG9uem9AZ21haWwuY29tCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90
b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0
V2ViU2V0dGluZ3NfaAorI2RlZmluZSBXZWJLaXRXZWJTZXR0aW5nc19oCisKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisKK0dfQkVHSU5fREVD
TFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MgICAgICAgICAgICAod2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1NFVFRJTkdTKG9i
aikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9U
WVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0dGluZ3MpKQorI2RlZmluZSBXRUJLSVRfV0VC
X1NFVFRJTkdTX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNz
KSwgIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0dGluZ3NDbGFzcykpCisj
ZGVmaW5lIFdFQktJVF9JU19XRUJfU0VUVElOR1Mob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tf
SU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTKSkKKyNkZWZpbmUg
V0VCS0lUX0lTX1dFQl9TRVRUSU5HU19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19U
WVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MpKQorI2RlZmluZSBXRUJLSVRf
V0VCX1NFVFRJTkdTX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygo
b2JqKSwgIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0dGluZ3NDbGFzcykp
CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5ncyBXZWJLaXRXZWJTZXR0aW5nczsK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc0NsYXNzIFdlYktpdFdlYlNldHRpbmdz
Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlIFdlYktpdFdl
YlNldHRpbmdzUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5ncyB7CisgICAgR09i
amVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgKnBy
aXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzQ2xhc3MgeworICAgIEdPYmplY3RD
bGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICAvKiBQYWRkaW5nIGZvciBmdXR1cmUgZXhwYW5zaW9u
ICovCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93
ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAo
dm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9pZCk7Cit9OworCitXS19F
WFBPUlQgR1R5cGUKK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3R5cGUodm9pZCk7CisKK1dLX0VY
UE9SVCBXZWJLaXRXZWJTZXR0aW5ncyAqCit3ZWJraXRfd2ViX3NldHRpbmdzX25ldyh2b2lkKTsK
KworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2
YV9zY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
ZW5hYmxlX2phdmFfc2NyaXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJs
ZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9f
bG9hZF9pbWFnZXMgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBz
ZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9hdXRv
X2xvYWRfaW1hZ2VzICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyog
c2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VY
UE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3Jp
bmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOwor
CitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdu
b3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9v
bGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0
aW9uX2NhY2hlICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKwor
V0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dl
Yl9hcHBsaWNhdGlvbl9jYWNoZSAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0
aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JU
IGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3Rv
cmFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0
dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxl
X2h0bWw1X2xvY2FsX3N0b3JhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJs
ZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2RhdGFi
YXNlX2VuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJT
ZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jv
b2xlYW4gZW5hYmxlZCk7CitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV94c3NfYXVkaXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdl
YktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2Vi
X3NldHRpbmdzX3NldF9lbmFibGVfeHNzX2F1ZGl0b3IgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAor
d2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2
b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgor
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YV9zY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRv
bWF0aWNhbGx5ICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VY
UE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhX3NjcmlwdF9jYW5fb3Blbl93
aW5kb3dzX2F1dG9tYXRpY2FsbHkgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jv
b2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcg
ICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisK
K1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5r
X2F1ZGl0aW5nICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0
dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK0dfRU5EX0RF
Q0xTCisKKyNlbmRpZiAvKiB3ZWJraXR3ZWJzZXR0aW5nc19oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5ncy5jCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ODMxYTIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0dGlu
Z3MuYwpAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWlj
aGFlbCBBbG9uem8KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2Jp
bGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNs
dWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mmd0ay5oPgorCitzdGF0aWMgdm9pZCB0
ZXN0V2ViS2l0V2ViU2V0dGluZ3NTY3JpcHRzKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGlu
Z3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIFNjcmlw
dHMgaXMgZW5hYmxlZCBieSBkZWZhdWx0CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZW5hYmxlX2phdmFfc2NyaXB0KHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfZW5hYmxlX2phdmFfc2NyaXB0KHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3Nl
cnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhX3NjcmlwdChzZXR0aW5ncykp
OworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NBdXRvbG9hZCh2b2lkKQor
eworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3Nf
bmV3KCk7CisKKyAgICAvLyBCeSBkZWZhdWx0IGF1dG8tbG9hZC1pbWFnZSBpcyB0cnVlCisgICAg
Z19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5n
cykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGlu
Z3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfYXV0b19s
b2FkX2ltYWdlcyhzZXR0aW5ncykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0
dGluZ3NMb2FkSWNvbklnbm9yaW5nSW1hZ2VMb2FkUHJlZih2b2lkKQoreworICAgIFdlYktpdFdl
YlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAv
LyBsb2FkLWljb24taWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmIGlzIGZhbHNlIGJ5IGRlZmF1bHQK
KyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3Jp
bmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKHNldHRp
bmdzLCBUUlVFKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19p
Y29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2Uoc2V0dGluZ3MpKTsKK30KKworc3Rh
dGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzT2ZmbGluZUFwcENhY2hlKHZvaWQpCit7Cisg
ICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXco
KTsKKyAgICAKKyAgICAvLyBPZmZsaW5lIGFwcGxpY2F0aW9uIGNhY2hlIGlzIHRydWUgYnkgZGVm
YXVsdAorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5l
X3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncywgRkFM
U0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGlu
ZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVz
dFdlYktpdFdlYlNldHRpbmdzTG9jYWxTdG9yYWdlKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0
dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIExv
Y2FsIHN0b3JhZ2UgaXMgZW5hYmxlIGJ5IGRlZmF1bHQKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0aW5ncykpOworICAg
IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRp
bmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RX
ZWJLaXRXZWJTZXR0aW5nc0RhdGFiYXNlKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3Mg
KnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEhUTUw1IGRh
dGFiYXNlIGlzIGVuYWJsZWQgYnkgZGVmYXVsdAorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2RhdGFiYXNlX2VuYWJsZWQoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2Uoc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBn
X2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZGF0YWJhc2VfZW5hYmxlZChzZXR0aW5n
cykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NYc3NBdWRpdG9yKHZv
aWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0
aW5nc19uZXcoKTsKKworICAgIC8vIFhTUyBBdWRpdG9yIGlzIGVuYWJsZWQgYnkgZGVmYXVsdAor
ICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihz
ZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRv
cihzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9lbmFibGVfeHNzX2F1ZGl0b3Ioc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdl
YktpdFdlYlNldHRpbmdzRnJhbWVGbGF0dGVyaW5nKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0
dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEZy
YW1lIGZsYXR0ZXJpbmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorICAgIGdfYXNzZXJ0KCF3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncykpOwor
ICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRp
bmdzLCBUUlVFKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVf
ZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0
V2ViU2V0dGluZ3NQbHVnaW5zKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRp
bmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIFBsdWdpbnMgYXJlIGVu
YWJsZWQgYnkgZGVmYXVsdAorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9wbHVnaW5zKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5h
YmxlX3BsdWdpbnMoc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQg
dGVzdFdlYktpdFdlYlNldHRpbmdzSmF2YSh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdz
ICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBKYXZhIGlz
IGVuYWJsZWQgYnkgZGVmYXVsdAorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9qYXZhKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5h
YmxlX2phdmEoc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdl
YktpdFdlYlNldHRpbmdzQXV0b09wZW5XaW5kb3codm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0
aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gQnkg
ZGVmYXVsdCwgSmF2YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgaXMgZGlz
YWJsZWQuCisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFfc2NyaXB0
X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncykpOworICAgIHdlYmtpdF93
ZWJfc2V0dGluZ3Nfc2V0X2phdmFfc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxs
eShzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
amF2YV9zY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7Cit9
CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0h5cGVyTGlua0F1ZGl0aW5nKHZv
aWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0
aW5nc19uZXcoKTsKKworICAgIC8vIEJ5IGRlZmF1bHQgaHlwZXIgbGluayBhdWRpdGluZyBpcyBk
aXNhYmxlZC4KKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h5
cGVybGlua19hdWRpdGluZyhzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0
X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MsIFRSVUUpOworICAgIGdfYXNzZXJ0
KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGlu
Z3MpKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIGdfdGhy
ZWFkX2luaXQoTlVMTCk7CisgICAgZ3RrX3Rlc3RfaW5pdCgmYXJnYywgJmFyZ3YsIE5VTEwpOwor
CisgICAgZ190ZXN0X2J1Z19iYXNlKCJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKKyAgICBn
X3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL3NjcmlwdHMiLCB0ZXN0V2ViS2l0
V2ViU2V0dGluZ3NTY3JpcHRzKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNl
dHRpbmdzL2F1dG9sb2FkIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b2xvYWQpOworICAgIGdf
dGVzdF9hZGRfZnVuYygiL3dlYmtpdDIvd2Vic2V0dGluZ3MvbG9hZGljb25pZ25vcmluZ2ltYWdl
bG9hZHByZWYiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NMb2FkSWNvbklnbm9yaW5nSW1hZ2VMb2Fk
UHJlZik7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5ncy9vZmZsaW5l
YXBwY2FjaGUiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NPZmZsaW5lQXBwQ2FjaGUpOworICAgIGdf
dGVzdF9hZGRfZnVuYygiL3dlYmtpdDIvd2Vic2V0dGluZ3MvbG9jYWxzdG9yYWdlIiwgdGVzdFdl
YktpdFdlYlNldHRpbmdzTG9jYWxTdG9yYWdlKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJr
aXQyL3dlYnNldHRpbmdzL2RhdGFiYXNlIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzRGF0YWJhc2Up
OworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdDIvd2Vic2V0dGluZ3MveHNzYXVkaXRvciIs
IHRlc3RXZWJLaXRXZWJTZXR0aW5nc1hzc0F1ZGl0b3IpOworICAgIGdfdGVzdF9hZGRfZnVuYygi
L3dlYmtpdDIvd2Vic2V0dGluZ3MvZnJhbWVmbGF0dGVyaW5nIiwgdGVzdFdlYktpdFdlYlNldHRp
bmdzRnJhbWVGbGF0dGVyaW5nKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNl
dHRpbmdzL3BsdWdpbnMiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NQbHVnaW5zKTsKKyAgICBnX3Rl
c3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL2phdmEiLCB0ZXN0V2ViS2l0V2ViU2V0
dGluZ3NKYXZhKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL2F1
dG9vcGVud2luZG93IiwgdGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b09wZW5XaW5kb3cpOworICAg
IGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdDIvd2Vic2V0dGluZ3MvaHlwZXJsaW5rYXVkaXRpbmci
LCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NIeXBlckxpbmtBdWRpdGluZyk7CisKKyAgICByZXR1cm4g
Z190ZXN0X3J1biAoKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvd2Via2l0Mmd0ay5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mmd0ay5oCmluZGV4IGRmZWJiYjQuLmUwODE3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJndGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyZ3RrLmgKQEAgLTI0LDUgKzI0LDYgQEAKICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdFdlYkNvbnRleHQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dFdlYlZpZXdCYXNlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJWaWV3Lmg+CisjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJTZXR0aW5ncy5oPgogCiAjZW5kaWYgLyogX19XRUJLSVRf
SF9fICovCi0tIAoxLjcuNC4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108311</attachid>
            <date>2011-09-22 04:22:50 -0700</date>
            <delta_ts>2011-09-22 23:01:49 -0700</delta_ts>
            <desc>WebKitWebSetting GTK+ API</desc>
            <filename>0001-WebKitWebSetting-GTK-API.patch</filename>
            <type>text/plain</type>
            <size>53645</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSBmM2YxMDY0NzI3ODJmMWY2NjE0OTI0NmIxN2RlYjkwYTg3NmEwODRmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogVGh1LCAyMiBTZXAgMjAxMSAxNjozMDoxNCArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIFdl
YktpdFdlYlNldHRpbmcgR1RLKyBBUEkKCi0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE1ICsKIFNvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArLQogLi4uL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcCAgICAgICAgfCAgODczICsrKysrKysrKysrKysrKysr
KysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oICB8
ICAxNDggKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5ncy5j
ICAgICAgfCAgMTY2ICsrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDJndGsuaCAgICAgIHwgICAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDEyMTMgaW5zZXJ0aW9ucygr
KSwgMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVz
dHdlYnNldHRpbmdzLmMKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGVmMGVkMC4uNmNhZjllNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTA5LTIyICBOYXlhbiBLdW1hciBLICA8bmF5YW5ra0Bt
b3Rvcm9sYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIFdlYktpdFdlYlNldHRpbmdzIEdUSysg
QVBJJ3MuCisKKyAgICAgICAgV2ViS2l0V2ViU2V0dGluZ3MgR1RLKyBvYmplY3QgaXMgY3JlYXRl
ZCBhbmQgZmlyc3Qgc2V0IG9mCisgICAgICAgIEFQSSdzIGFyZSB3cml0dGVuIHRvIGdldCBvciBz
ZXQgdGhlIHByb3BlcnRpZXMgb2YgV2ViS2l0V2ViU2V0dGluZ3MuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODM3MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYmNvbnRleHQuYzoKKyAgICAgICAgKHRl
c3RXZWJDb250ZXh0RGVmYXVsdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0
Mmd0ay5oOgorCiAyMDExLTA5LTIxICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgogCiAgICAgICAgIFtXSzJdIFVJUHJvY2VzcyBzaG91bGQgY2hlY2sgdGhhdCBXZWJQcm9jZXNz
IGlzbid0IHNlbmRpbmcgdW5leHBlY3RlZCBmaWxlOiBVUkxzIHRvIGl0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDUzZmRiMzYuLjA2NTk1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC03MCw2
ICs3MCw3IEBAIGxpYndlYmtpdDJndGtpbmNsdWRlZGlyID0gJChsaWJ3ZWJraXRndGtpbmNsdWRl
ZGlyKS93ZWJraXQyCiBsaWJ3ZWJraXQyZ3RraW5jbHVkZV9IRUFERVJTID0gXAogCSQoV2ViS2l0
MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIFwKIAkkKFdlYktpdDIpL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlLmgKIAogbGlid2Via2l0Z3RraW5jbHVkZV9IRUFERVJTICs9
IFwKQEAgLTQ1NCw2ICs0NTUsOCBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9S
X1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmggXAorCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcCBcCisJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuaCBcCkBAIC05ODks
NyArOTkyLDggQEAgRElTVENMRUFORklMRVMgKz0gXAogIyBVbml0IHRlc3RzCiBURVNUX1BST0dT
ICs9IFwKIAlQcm9ncmFtcy91bml0dGVzdHMvd2Via2l0Mi90ZXN0d2ViY29udGV4dCBcCi0JUHJv
Z3JhbXMvdW5pdHRlc3RzL3dlYmtpdDIvdGVzdHdlYnZpZXcKKwlQcm9ncmFtcy91bml0dGVzdHMv
d2Via2l0Mi90ZXN0d2VidmlldyBcCisJUHJvZ3JhbXMvdW5pdHRlc3RzL3dlYmtpdDIvdGVzdHdl
YnNldHRpbmdzCiAKIG5vaW5zdF9QUk9HUkFNUyArPSAkKFRFU1RfUFJPR1MpCiB3ZWJraXQyX3Rl
c3RzX2NmbGFncyA9IFwKQEAgLTEwMjUsNiArMTAyOSwxMSBAQCBQcm9ncmFtc191bml0dGVzdHNf
d2Via2l0Ml90ZXN0d2Vidmlld19DRkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfY2ZsYWdzKQogUHJv
Z3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnZpZXdfTERBREQgPSAkKHdlYmtpdDJfdGVz
dHNfbGRhZGQpCiBQcm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0d2Vidmlld19MREZMQUdT
ID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQy
X3Rlc3R3ZWJzZXR0aW5nc19TT1VSQ0VTID0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMKK1Byb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rl
c3R3ZWJzZXR0aW5nc19DRkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfY2ZsYWdzKQorUHJvZ3JhbXNf
dW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnNldHRpbmdzX0xEQUREID0gJCh3ZWJraXQyX3Rlc3Rz
X2xkYWRkKQorUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnNldHRpbmdzX0xERkxB
R1MgPSAkKHdlYmtpdDJfdGVzdHNfbGRmbGFncykKKwogIyBXZWJLaXRXZWJQcm9jZXNzCiBsaWJl
eGVjX1BST0dSQU1TICs9IFwKIAlQcm9ncmFtcy9XZWJLaXRXZWJQcm9jZXNzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUzYmQxNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdz
LmNwcApAQCAtMCwwICsxLDg3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDaHJpc3Rp
YW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBO
dWFudGkgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBKYW4gTWljaGFlbCBBbG9uem8KKyAqIENvcHlyaWdodCAoQykgMjAwOSBNb3ZpYWwg
Q3JlYXRpdmUgVGVjaG5vbG9naWVzIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBJZ2FsaWEg
Uy5MLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViS2l0V2ViU2V0dGluZ3MuaCIKKworI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNs
dWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVHlwZS5o
PgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisKK3N0cnVjdCBfV2ViS2l0V2ViU2V0dGlu
Z3NQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzOwor
CisgICAgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSgpCisgICAgeworICAgICAgICBwcmVmZXJl
bmNlcyA9IFdLUHJlZmVyZW5jZXNDcmVhdGUoKTsKKworICAgICAgICAvKiBCeSBkZWZhdWx0LCBv
ZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZSBpbiB0cnVlIGluIFdlYktpdC1HVEsgKi8KKyAg
ICAgICAgV0tQcmVmZXJlbmNlc1NldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChw
cmVmZXJlbmNlcywgdHJ1ZSk7CisgICAgICAgIC8qIEJ5IGRlZmF1bHQsIGphdmFzY3JpcHQtY2Fu
LW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5IGlzIGZhbHNlIGluIFdlYktpdC1HVEsgKi8KKyAg
ICAgICAgV0tQcmVmZXJlbmNlc1NldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2Fs
bHkocHJlZmVyZW5jZXMsIGZhbHNlKTsKKyAgICAgICAgLyogQnkgZGVmYXVsdCwgZW5hYmxlLWh5
cGVybGluay1hdWRpdGluZyBpcyBmYWxzZSBpbiBXZWJLaXQtR1RLICovCisgICAgICAgIFdLUHJl
ZmVyZW5jZXNTZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIGZhbHNlKTsK
KyAgICB9Cit9OworCisvKioKKyAqIFNFQ1RJT046d2Via2l0d2Vic2V0dGluZ3MKKyAqIEBzaG9y
dF9kZXNjcmlwdGlvbjogQ29udHJvbCB0aGUgYmVoYXZpb3VyIG9mIGEgI1dlYktpdFdlYlZpZXcK
KyAqCisgKiAjV2ViS2l0V2ViU2V0dGluZ3MgY2FuIGJlIGFwcGxpZWQgdG8gYSAjV2ViS2l0V2Vi
VmlldyB0byBjb250cm9sIHRleHQgZW5jb2RpbmcsIAorICogY29sb3IsIGZvbnQgc2l6ZXMsIHBy
aW50aW5nIG1vZGUsIHNjcmlwdCBzdXBwb3J0LCBsb2FkaW5nIG9mIGltYWdlcyBhbmQgdmFyaW91
cyBvdGhlciB0aGluZ3MuIAorICogQWZ0ZXIgY3JlYXRpb24sIGEgI1dlYktpdFdlYlNldHRpbmdz
IG9iamVjdCBjb250YWlucyBkZWZhdWx0IHNldHRpbmdzLiAKKyAqCisgKiA8aW5mb3JtYWxleGFt
cGxlPjxwcm9ncmFtbGlzdGluZz4KKyAqIC88IS0tIC0tPiogQ3JlYXRlIGEgbmV3IHdlYnNldHRp
bmdzIGFuZCBkaXNhYmxlIGphdmEgc2NyaXB0ICo8IS0tIC0tPi8KKyAqIFdlYktpdFdlYlNldHRp
bmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3ICgpOworICogZ19vYmplY3Rf
c2V0IChHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtc2NyaXB0cyIsIEZBTFNFLCBOVUxMKTsK
KyAqCisgKiAvPCEtLSAtLT4qIEFwcGx5IHRoZSByZXN1bHQgKjwhLS0gLS0+LworICogd2Via2l0
X3dlYl92aWV3X3NldF9zZXR0aW5ncyAoV0VCS0lUX1dFQl9WSUVXKG15X3dlYnZpZXcpLCBzZXR0
aW5ncyk7CisgKiA8L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxleGFtcGxlPgorICovCisKKwor
R19ERUZJTkVfVFlQRShXZWJLaXRXZWJTZXR0aW5ncywgd2Via2l0X3dlYl9zZXR0aW5ncywgR19U
WVBFX09CSkVDVCkKKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9FTkFCTEVfSkFW
QV9TQ1JJUFQsCisgICAgUFJPUF9BVVRPX0xPQURfSU1BR0VTLAorICAgIFBST1BfTE9BRFNfSUNP
TlNfSUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGRVJFTkNFLAorICAgIFBST1BfRU5BQkxFX09GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hFLAorICAgIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NU
T1JBR0UsCisgICAgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0UsCisgICAgUFJPUF9FTkFCTEVf
WFNTX0FVRElUT1IsCisgICAgUFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRFUklORywKKyAgICBQUk9Q
X0VOQUJMRV9QTFVHSU5TLAorICAgIFBST1BfRU5BQkxFX0pBVkEsCisgICAgUFJPUF9KQVZBU0NS
SVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWSwKKyAgICBQUk9QX0VOQUJMRV9IWVBF
UkxJTktfQVVESVRJTkcsCit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJTZXR0aW5nc1NldFBy
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUqIHZhbHVl
LCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3Mg
PSBXRUJLSVRfV0VCX1NFVFRJTkdTKG9iamVjdCk7CisgCisgICAgc3dpdGNoIChwcm9wSWQpIHsK
KyAgICBjYXNlIFBST1BfRU5BQkxFX0pBVkFfU0NSSVBUOgorICAgICAgICB3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9lbmFibGVfamF2YV9zY3JpcHQoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xl
YW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0FVVE9fTE9BRF9JTUFH
RVM6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0
dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX0xPQURTX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRToKKyAg
ICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2Vf
bG9hZF9wcmVmZXJlbmNlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJ
T05fQ0FDSEU6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9vZmZsaW5l
X3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1
ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NU
T1JBR0U6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2Nh
bF9zdG9yYWdlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0U6CisgICAgICAgIHdl
YmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncywgZ192
YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
RU5BQkxFX1hTU19BVURJVE9SOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFi
bGVfeHNzX2F1ZGl0b3Ioc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HOgorICAg
ICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0
aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfRU5BQkxFX1BMVUdJTlM6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0
X2VuYWJsZV9wbHVnaW5zKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQToKKyAgICAgICAgd2Via2l0
X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xl
YW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0pBVkFTQ1JJUFRfQ0FO
X09QRU5fV0lORE9XU19BVVRPTUFUSUNBTExZOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdz
X3NldF9qYXZhX3NjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3Ms
IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Uk9QX0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkc6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jv
b2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwc3BlYyk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0V2ViU2V0dGluZ3NH
ZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwg
R1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzID0g
V0VCS0lUX1dFQl9TRVRUSU5HUyhvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAg
ICBjYXNlIFBST1BfRU5BQkxFX0pBVkFfU0NSSVBUOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29s
ZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YV9zY3JpcHQoc2V0
dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0FVVE9fTE9BRF9JTUFHRVM6
CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0xPQURTX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRToKKyAgICAg
ICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9h
ZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKHNldHRpbmdzKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05f
Q0FDSEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JB
R0U6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0U6CisgICAgICAgIGdfdmFs
dWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2RhdGFiYXNlX2Vu
YWJsZWQoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9Y
U1NfQVVESVRPUjoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdzKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRFUklORzoKKyAgICAgICAgZ192
YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2Zy
YW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X0VOQUJMRV9QTFVHSU5TOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lucyhzZXR0aW5ncykpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0pBVkE6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jv
b2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKHNldHRpbmdz
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9KQVZBU0NSSVBUX0NBTl9PUEVOX1dJ
TkRPV1NfQVVUT01BVElDQUxMWToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwg
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YV9zY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRv
bWF0aWNhbGx5KHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFC
TEVfSFlQRVJMSU5LX0FVRElUSU5HOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVl
LCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRp
bmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dB
Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcHNwZWMpOworICAgICAgICBi
cmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3Nf
aW5pdChXZWJLaXRXZWJTZXR0aW5nc0NsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3Mq
IGdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBnT2JqZWN0Q2xhc3Mt
PnNldF9wcm9wZXJ0eSA9IHdlYmtpdFdlYlNldHRpbmdzU2V0UHJvcGVydHk7CisgICAgZ09iamVj
dENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRXZWJTZXR0aW5nc0dldFByb3BlcnR5OworCisg
ICAgR1BhcmFtRmxhZ3MgZmxhZ3MgPSBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BB
UkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKTsKKworICAgIC8qKgorICAgICogV2Vi
S2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWphdmEtc2NyaXB0CisgICAgKgorICAgICogVGhpcyBwcm9w
ZXJ0eSBuZWVkcyB0byBiZSBzZXQgdG8gZW5hYmxlIHRoZSBleGVjdXRpb24gb2YgCisgICAgKiBK
YXZhc2NyaXB0IHdpdGhpbiBhIHBhZ2UuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9KQVZBX1NDUklQVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuYWJsZS1qYXZhLXNj
cmlwdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfKCJFbmFibGUgSmF2YSBTY3JpcHQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBKYXZhIFNjcmlwdCBs
YW5ndWFnZXMuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKyAgICAKKyAgICAvKioKKyAgICAqIFdlYktp
dFdlYlNldHRpbmdzOmF1dG8tbG9hZC1pbWFnZXMKKyAgICAqCisgICAgKiBEZXRlcm1pbmVzIHdo
ZXRoZXIgaW1hZ2VzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGxvYWRlZCBvciBub3QuCisgICAg
KiBPbiBkZXZpY2VzLCB3aGVyZSBuZXR3b3JrIGJhbmR3aWR0aCBpcyBvZiBjb25jZXJuLCBpdCBt
aWdodCBiZQorICAgICogdXNlZnVsIHRvIHR1cm4gdGhpcyBwcm9wZXJ0eSBvZmYuCisgICAgKgor
ICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0FVVE9fTE9BRF9JTUFH
RVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9v
bGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJhdXRvLWxvYWQtaW1hZ2VzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkF1dG8gTG9hZCBJbWFnZXMiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkxv
YWQgaW1hZ2VzIGF1dG9tYXRpY2FsbHkuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKyAgICAKKyAgICAv
KioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmxvYWRzLWljb25zLWlnbm9yaW5nLWltYWdlLWxv
YWQtcHJlZmVyZW5jZQorICAgICoKKyAgICAqIEJ5IGVuYWJsaW5nIHRoaXMgcHJvcGVydHksIHNp
dGUgaWNvbnMgKGUuZywgZmF2aWNvbikgd2lsbCBiZSBsb2FkZWQKKyAgICAqIGlycmVzcGVjdGl2
ZSBvZiB0aGUgdmFsdWUgb2YgJ2F1dG8tbG9hZC1pbWFnZXMnLgorICAgICoKKyAgICAqLworICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9MT0FEU19JQ09OU19JR05PUklOR19JTUFH
RV9MT0FEX1BSRUZFUkVOQ0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJsb2Fkcy1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXBy
ZWZlcmVuY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXygiTG9hZHMgU2l0ZSBJY29ucyBpZ25vcmluZyBpbWFnZSBsb2FkIHByZWZl
cmVuY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF8oIldoZXRoZXIgdG8gbG9hZCBzaXRlIGljb24gaWdub3JpbmcgaW1hZ2UgbG9h
ZCBwcmVmZXJlbmNlLiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJL
aXRXZWJTZXR0aW5nczplbmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUKKyAgICAq
CisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlvbiBj
YWNoZSBzdXBwb3J0LiBPZmZsaW5lCisgICAgKiBXZWIgQXBwbGljYXRpb24gQ2FjaGUgZW5zdXJl
cyB3ZWIgYXBwbGljYXRpb25zIGFyZSBhdmFpbGFibGUgZXZlbiB3aGVuCisgICAgKiB0aGUgdXNl
ciBpcyBub3QgY29ubmVjdGVkIHRvIHRoZSBuZXR3b3JrLgorICAgICoKKyAgICAqLworICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJ
T05fQ0FDSEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3Nw
ZWNfYm9vbGVhbigiZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVu
YWJsZSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlvbiBjYWNoZSIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFi
bGUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUiKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisg
ICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFn
ZToKKyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBsb2NhbFN0b3JhZ2Ugc3Vw
cG9ydC4gbG9jYWxTdG9yYWdlIHByb3ZpZGVzCisgICAgKiBzaW1wbGUgc3luY2hyb25vdXMgc3Rv
cmFnZSBhY2Nlc3MuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1odG1sNS1sb2NhbC1z
dG9yYWdlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF8oIkVuYWJsZSBIVE1MNSBMb2NhbCBTdG9yYWdlIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRv
IGVuYWJsZSBIVE1MNSBMb2NhbCBTdG9yYWdlIHN1cHBvcnQiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOwor
CisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtaHRtbDUtZGF0YWJhc2U6
CisgICAgKgorICAgICogV2hldGhlciB0byBlbmFibGUgSFRNTDUgY2xpZW50LXNpZGUgU1FMIGRh
dGFiYXNlIHN1cHBvcnQuIENsaWVudC1zaWRlCisgICAgKiBTUUwgZGF0YWJhc2UgYWxsb3dzIHdl
YiBwYWdlcyB0byBzdG9yZSBzdHJ1Y3R1cmVkIGRhdGEgYW5kIGJlIGFibGUgdG8KKyAgICAqIHVz
ZSBTUUwgdG8gbWFuaXB1bGF0ZSB0aGF0IGRhdGEgYXN5bmNocm9ub3VzbHkuCisgICAgKgorICAg
ICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9IVE1MNV9EQVRB
QkFTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19i
b29sZWFuKCJlbmFibGUtaHRtbDUtZGF0YWJhc2UiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEhUTUw1IERhdGFiYXNl
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBkYXRhYmFzZSBzdXBwb3J0IiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLXhz
cy1hdWRpdG9yCisgICAgKgorICAgICogV2hldGhlciB0byBlbmFibGUgdGhlIFhTUyBBdWRpdG9y
LiBUaGlzIGZlYXR1cmUgZmlsdGVycyBzb21lIGtpbmRzIG9mCisgICAgKiByZWZsZWN0aXZlIFhT
UyBhdHRhY2tzIG9uIHZ1bG5lcmFibGUgd2ViIHNpdGVzLgorICAgICoKKyAgICAqLworICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1IsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxl
LXhzcy1hdWRpdG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBYU1MgQXVkaXRvciIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBl
bmFibGUgdGhlIFhTUyBhdWRpdG9yIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworCisgICAgLyoqCisg
ICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtZnJhbWUtZmxhdHRlbmluZworICAgICoKKyAg
ICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBGcmFtZSBGbGF0dGVuaW5nLiBXaXRoIHRoaXMgc2V0
dGluZyBlYWNoIHN1YmZyYW1lIGlzIGV4cGFuZGVkCisgICAgKiB0byBpdHMgY29udGVudHMsIHdo
aWNoIHdpbGwgZmxhdHRlbiBhbGwgdGhlIGZyYW1lcyB0byBiZWNvbWUgb25lIHNjcm9sbGFibGUg
cGFnZS4KKyAgICAqIE9uIHRvdWNoIGRldmljZXMsIGl0IGlzIGRlc2lyZWQgdG8gbm90IGhhdmUg
YW55IHNjcm9sbGFibGUgc3ViIHBhcnRzIG9mIHRoZSBwYWdlIGFzCisgICAgKiBpdCByZXN1bHRz
IGluIGEgY29uZnVzaW5nIHVzZXIgZXhwZXJpZW5jZSwgd2l0aCBzY3JvbGxpbmcgc29tZXRpbWVz
IHNjcm9sbGluZyBzdWIgcGFydHMKKyAgICAqIGFuZCBhdCBvdGhlciB0aW1lcyBzY3JvbGxpbmcg
dGhlIHBhZ2UgaXRzZWxmLiBGb3IgdGhpcyByZWFzb24gaWZyYW1lcyBhbmQgZnJhbWVzZXRzIGFy
ZQorICAgICogYmFyZWx5IHVzYWJsZSBvbiB0b3VjaCBkZXZpY2VzLgorICAgICoKKyAgICAqLwor
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRFUklO
RywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29s
ZWFuKCJlbmFibGUtZnJhbWUtZmxhdHRlbmluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgRnJhbWUgRmxhdHRlbmlu
ZyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXygiV2hldGhlciB0byBlbmFibGUgRnJhbWUgRmxhdHRlbmluZyIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bGFncykpOworCisgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1wbHVnaW5z
OgorICAgICoKKyAgICAqIFBsdWdpbnMgZW1kZWRkZWQgd2l0aGluIGEgcGFnZSBjYW4gYmUgdHVy
bmVkIG9mZiBieSBkaXNhYmxpbmcKKyAgICAqIHRoaXMgcHJvcGVydHkuIAorICAgICoKKyAgICAq
LworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfUExVR0lOUywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImVuYWJsZS1wbHVnaW5zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBQbHVnaW5zIiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgZW1iZWRk
ZWQgcGx1Z2luIG9iamVjdHMuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKyAgICAKKyAgIC8qKgorICAg
ICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWphdmE6CisgICAgKgorICAgICogRW5hYmxlIG9y
IGRpc2FibGUgc3VwcG9ydCBmb3IgdGhlIEphdmEuIFRoaXMgcHJvcGVydHkgbmVlZHMgdG8gYmUg
ZW5hYmxlZAorICAgICogZm9yIGRpc3BsYXlpbmcgamF2YSBjb250ZW50cyB2aWEgICZsdDtvYmpl
Y3QmZ3Q7IG9yICZsdDtlbWJlZCZndDsgdGFnLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfSkFWQSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtamF2YSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJF
bmFibGUgSmF2YSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiV2hldGhlciBKYXZhIHN1cHBvcnQgc2hvdWxkIGJlIGVuYWJsZWQi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczpq
YXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxseQorICAgICoKKyAgICAqIFdo
ZXRoZXIgSmF2YVNjcmlwdCBjYW4gb3BlbiBwb3B1cCB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgd2l0
aG91dCB1c2VyCisgICAgKiBpbnRlcnZlbnRpb24uCisgICAgKgorICAgICovCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9XU19BVVRP
TUFUSUNBTExZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9z
cGVjX2Jvb2xlYW4oImphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5IiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF8oIkphdmFTY3JpcHQgY2FuIG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0
aGVyIEphdmFTY3JpcHQgY2FuIG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1oeXBl
cmxpbmstYXVkaXRpbmc6CisgICAgKgorICAgICogRW5hYmxlIG9yIGRpc2FibGUgc3VwcG9ydCBm
b3IgJmx0O2EgcGluZyZndDsuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUk9QX0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh5cGVybGlu
ay1hdWRpdGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfKCJFbmFibGUgSHlwZXJsaW5rIEF1ZGl0aW5nIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVy
IDxhIHBpbmc+IHNob3VsZCBiZSBhYmxlIHRvIHNlbmQgcGluZ3MiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3Mp
KTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdl
YlNldHRpbmdzUHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdz
X2luaXQoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIFdlYktpdFdlYlNldHRp
bmdzUHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShzZXR0aW5ncywg
V0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpOworICAg
IHNldHRpbmdzLT5wcml2ID0gcHJpdjsKKyAgICBuZXcgKHByaXYpIFdlYktpdFdlYlNldHRpbmdz
UHJpdmF0ZSgpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3OgorICoKKyAq
IENyZWF0ZXMgYSBuZXcgI1dlYktpdFdlYlNldHRpbmdzIGluc3RhbmNlIHdpdGggZGVmYXVsdCB2
YWx1ZXMuIEl0IG11c3QKKyAqIGJlIG1hbnVhbGx5IGF0dGFjaGVkIHRvIGEgV2ViVmlldy4KKyAq
CisgKiBSZXR1cm5zOiBhIG5ldyAjV2ViS2l0V2ViU2V0dGluZ3MgaW5zdGFuY2UKKyAqKi8KK1dl
YktpdFdlYlNldHRpbmdzKiB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpCit7CisgICAgcmV0dXJu
IFdFQktJVF9XRUJfU0VUVElOR1MoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9TRVRUSU5H
UywgTlVMTCkpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9q
YXZhX3NjcmlwdDoKKyAqCisgKiBDaGVjayBpZiBKYXZhIFNjcmlwdCBleGVjdXRpb24gd2l0aGlu
IGEgcGFnZSBpcyBzdXBwb3J0ZWQgb3Igbm90LgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEph
dmEgU2NyaXB0IGlzIGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9lbmFibGVfamF2YV9zY3JpcHQKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9qYXZhX3NjcmlwdChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3Mp
Cit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0
aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNl
dHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdEVuYWJs
ZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9qYXZhX3NjcmlwdDoKKyAqCisgKiBUaGlzIEFQSSBjYW4gYmUgdXNlZCB0byBl
bmFibGUvZGlzYWJsZSB0aGUgc3VwcHJ0IGZvciBKYXZhc2NyaXB0CisgKiBleGVjdXRpb24uCisg
KgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YV9zY3Jp
cHQKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFfc2NyaXB0
KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAg
IFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdi
b29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0RW5hYmxlZChw
cml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlwdEVuYWJsZWQocHJp
di0+cHJlZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09C
SkVDVChzZXR0aW5ncyksICJlbmFibGUtamF2YS1zY3JpcHQiKTsKK30KKworLyoqCisgKiB3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzOgorICoKKyAqIFRoaXMgQVBJIHdp
bGwgcmV0dXJuIFRSVUUgaWYgYXV0b21hdGljIGxvYWRpbmcgb2YgaW1hZ2VzIGlzIHR1cm5lZCBl
bmFibGVkLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIGF1dG8gbG9hZGluZyBvZiBpbWFnZXMg
aXMgZW5hYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2F1
dG9fbG9hZF9pbWFnZXMKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1
dG9fbG9hZF9pbWFnZXMoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7
CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsK
KyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShwcml2
LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfYXV0
b19sb2FkX2ltYWdlczoKKyAqCisgKiBBdXRvbWF0aWMgbG9hZGluZyBvZiBpbWFnZXMgY2FuIGJl
IHR1cm5lZCBvbi9vZmYgdXNpbmcgdGhpcyBBUEkuIElmIG1pZ2h0CisgKiBiZSB1c2VmdWwgdG8g
dHVybiB0aGlzIHByb3BlcnR5IG9mZiwgaW4gY2FzZXMgd2hlbiBuZXR3b3JrIGJhbmR3aWR0aCBp
cyBvZgorICogY29uY2Vybi4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X2F1dG9fbG9hZF9pbWFnZXMKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
YXV0b19sb2FkX2ltYWdlcyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVu
YWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNl
dHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5n
cy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TG9h
ZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVu
dFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNT
ZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVuYWJs
ZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJhdXRvLWxvYWQt
aW1hZ2VzIik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaWNv
bnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlOgorICoKKyAqIENoZWNrIHdoZXRoZXIg
dGhlIHNpdGUgaWNvbnMgY2FuIGJlIGxvYWRlZCBpcnJlc3BjdGl2ZSBvZiB0aGUgaW1hZ2UgbG9h
ZGluZworICogcHJlZmVyZW5jZS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBzaXRlLWljb24g
Y2FuIGJlIGxvYWRlZCBpcnJlc3BlY3RpdmUgb2YgaW1hZ2UgbG9hZGluZyBwcmVmZXJlbmNlLgor
ICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdu
b3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UoV2Vi
S2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJT
ZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVm
ZXJlbmNlc0dldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNlKHBy
aXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9s
b2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2U6CisgKgorICogSWYgdGhp
cyBBUEkgaXMgY2FsbGVkIHdpdGggVFJVRSwgdGhlbiBzaXRlLWljb25zIChlLmcsIGZhdi1pY29u
KSB3aWxsIGJlCisgKiBsb2FkZWQgZXZlbiBpZiBhdXRvIGxvYWRpbmcgb2YgaW1hZ2UgaXMgdHVy
bmVkIG9mZiB1c2luZyB0aGUgbWV0aG9kCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9hdXRv
X2xvYWRfaW1hZ2VzCisgKgorICogQHNlZV9hbHNvIDogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
bG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlCisgKiAgICAgICAgICAg
IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMKKyAqKi8KK3ZvaWQgd2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVm
ZXJlbmNlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sK
KyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsK
KworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2Owor
ICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRMb2Fkc1NpdGVJY29u
c0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZShwcml2LT5wcmVmZXJlbmNlcyk7CisgICAg
aWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1By
ZWZlcmVuY2VzU2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2Uo
cHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShH
X09CSkVDVChzZXR0aW5ncyksICJsb2Fkcy1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWZl
cmVuY2UiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfb2Zm
bGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGU6CisgKgorICogSWYgSFRNTDUgb2ZmbGluZSB3ZWIg
YXBwbGljYXRpb24gY2FjaGUgc3VwcG9ydCBpcyBlbmFibGVkLCB0aGVuIHRoaXMgZnVuY3Rpb24K
KyAqIHdpbGwgcmV0dXJuIFRSVUUuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgSFRNTDUgb2Zm
bGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUgc3VwcG9ydCBpcyBlbmFibGVkLgorICoKKyAqIEBz
ZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxp
Y2F0aW9uX2NhY2hlCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFi
bGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRp
bmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Mo
c2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYg
PSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldE9mZmxpbmVXZWJB
cHBsaWNhdGlvbkNhY2hlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICog
d2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2Nh
Y2hlOgorICoKKyAqIEVuYWJsZS9EaXNhYmxlIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9u
IGNhY2hlIHN1cHBvcnQuIEhUTUw1IG9mZmxpbmUKKyAqIFdlYiBBcHBsaWNhdGlvbiBDYWNoZSBl
bnN1cmVzIHdlYiBhcHBsaWNhdGlvbnMgYXJlIGF2YWlsYWJsZSBldmVuIHdoZW4gdGhlCisgKiB1
c2VyIGlzIG5vdCBjb25uZWN0ZWQgdG8gdGhlIG5ldHdvcmsuCisgKgorICogQHNlZV9hbHNvOiB3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2Fj
aGUKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2Vi
X2FwcGxpY2F0aW9uX2NhY2hlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4g
ZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Mo
c2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRp
bmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRP
ZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAg
IGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQ
cmVmZXJlbmNlc1NldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChwcml2LT5wcmVm
ZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNl
dHRpbmdzKSwgImVuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZSIpOworfQorCisv
KioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdl
OgorICoKKyAqIENoZWNrcyB3aGV0aGVyIEhUTUw1IGxvY2FsIHN0b3JhZ2Ugc3VwcG9ydCBpcyBl
bmFibGVkLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEhUTUw1IGxvY2FsIHN0b3JhZ2Ugc3Vw
cG9ydCBpcyBlbmFibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19z
ZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKFdlYktpdFdlYlNldHRpbmdz
KiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NF
VFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRl
KiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2Nh
bFN0b3JhZ2VFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZToKKyAqCisgKiBFbmFi
bGUvRGlzYWJsZSBIVE1MNSBsb2NhbCBzdG9yYWdlIHN1cHBvcnQuIEhUTUw1IGxvY2FsIHN0b3Jh
Z2Ugc3VwcG9ydHMKKyAqIHNpbXBsZSBzeW5jaHJvbm91cyBzdG9yYWdlIGFjY2Vzcy4KKyAqCisg
KiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvY2FsX3N0b3JhZ2VfZW5hYmxl
CisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9z
dG9yYWdlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sK
KyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsK
KworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2Owor
ICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRMb2NhbFN0b3JhZ2VF
bmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJs
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRMb2NhbFN0b3JhZ2VF
bmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9u
b3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiKTsK
K30KKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZGF0YWJhc2VfZW5hYmxlZDoKKyAq
CisgKiBDaGVja3Mgd2hldGhlciBIVE1MNSBkYXRhYmFzZSBzdG9yYWdlIHN1cHBvcnQgaXMgZW5h
YmxlZC4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBIVE1MNSBkYXRhYmFzZSBzdXBwb3J0IGlz
IGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9kYXRh
YmFzZV9lbmFibGVkCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9kYXRh
YmFzZV9lbmFibGVkKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwor
CisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Cisg
ICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnByZWZlcmVu
Y2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVf
ZGF0YWJhc2U6CisgKgorICogRW5hYmxlL0Rpc2FibGUgSFRNTDUgY2xpZW50LXNpZGUgU1FMIGRh
dGFiYXNlIHN1cHBvcnQuIENsaWVudC1zaWRlCisgKiBTUUwgZGF0YWJhc2UgYWxsb3dzIHdlYiBw
YWdlcyB0byBzdG9yZSBzdHJ1Y3R1cmVkIGRhdGEgYW5kIGJlIGFibGUgdG8KKyAqIHVzZSBTUUwg
dG8gbWFuaXB1bGF0ZSB0aGF0IGRhdGEgYXN5bmNocm9ub3VzbHkuCisgKgorICogQHNlZV9hbHNv
OiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UKKyAqKi8KK3Zv
aWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKFdlYktpdFdl
YlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdl
YlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1
cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnByZWZl
cmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnByZWZlcmVu
Y2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGlu
Z3MpLCAiZW5hYmxlLWh0bWw1LWRhdGFiYXNlIik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yOgorICoKKyAqIENoZWNrcyB3aGV0aGVyIFhT
UyBhdWRpdGluZyBpcyBlbmFibGVkLiAKKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBYU1MgYXVk
aXRpbmcgaXMgZW5hYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2VuYWJsZV94c3NfYXVkaXRvcgorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZW5hYmxlX3hzc19hdWRpdG9yKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdz
KSwgRkFMU0UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGlu
Z3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRpdG9yRW5hYmxlZChw
cml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
ZW5hYmxlX3hzc19hdWRpdG9yOgorICoKKyAqIFdoZXRoZXIgdG8gZW5hYmxlL2Rpc2FibGUgdGhl
IFhTUyBBdWRpdG9yLiBUaGlzIGZlYXR1cmUgZmlsdGVycyBzb21lIGtpbmRzIG9mCisgKiByZWZs
ZWN0aXZlIFhTUyBhdHRhY2tzIG9uIHZ1bG5lcmFibGUgd2ViIHNpdGVzLgorICoKKyAqIEBzZWVf
YWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yCisgKiovCit2
b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvcihXZWJLaXRXZWJT
ZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJT
ZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJy
ZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0WFNTQXVkaXRvckVuYWJsZWQocHJpdi0+cHJlZmVy
ZW5jZXMpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgV0tQcmVmZXJlbmNlc1NldFhTU0F1ZGl0b3JFbmFibGVkKHByaXYtPnByZWZlcmVu
Y2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGlu
Z3MpLCAiZW5hYmxlLXhzcy1hdWRpdG9yIik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmc6CisgKgorICogQ2hlY2sgd2hldGhlciB0
aGUgZnJhbWUgZmxhdHRlcmluZyBpcyBlbmFibGVkLiBJZiB0aGUgZnJhbWUgZmxhdHRlcmluZyBp
cworICogZW5hYmxlZCwgdGhlbiBlYWNoIHN1YmZyYW1lIHdpbGwgYmUgZXhwYW5kZWQgdG8gaXRz
IGNvbnRlbnQsIHdoaWNoIHdpbGwgZmxhdHRlbgorICogYWxsIHRoZSBmcmFtZXMgdG8gYmVjb21l
IG9uZSBzY3JvbGxhYmxlIHBhZ2UuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgZnJhbWUgZmxh
dHRlcmluZyBpcyBlbmFibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKFdlYktpdFdlYlNldHRpbmdzKiBz
ZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJ
TkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBw
cml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRGcmFtZUZs
YXR0ZW5pbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZzoKKyAqCisgKiBBUEkgdG8g
ZW5hYmxlL2Rpc2FibGUgZnJhbWUgZmlsdGVyaW5nIHN1cHBvcnQuIFdpdGggdGhpcyBzZXR0aW5n
IGVhY2ggc3ViZnJhbWUgaXMgZXhwYW5kZWQKKyAqIHRvIGl0cyBjb250ZW50cywgd2hpY2ggd2ls
bCBmbGF0dGVuIGFsbCB0aGUgZnJhbWVzIHRvIGJlY29tZSBvbmUgc2Nyb2xsYWJsZSBwYWdlLgor
ICogT24gdG91Y2ggZGV2aWNlcywgaXQgaXMgZGVzaXJlZCB0byBub3QgaGF2ZSBhbnkgc2Nyb2xs
YWJsZSBzdWIgcGFydHMgb2YgdGhlIHBhZ2UgYXMKKyAqIGl0IHJlc3VsdHMgaW4gYSBjb25mdXNp
bmcgdXNlciBleHBlcmllbmNlLCB3aXRoIHNjcm9sbGluZyBzb21ldGltZXMgc2Nyb2xsaW5nIHN1
YiBwYXJ0cworICogYW5kIGF0IG90aGVyIHRpbWVzIHNjcm9sbGluZyB0aGUgcGFnZSBpdHNlbGYu
IEZvciB0aGlzIHJlYXNvbiBpZnJhbWVzIGFuZCBmcmFtZXNldHMgYXJlCisgKiBiYXJlbHkgdXNh
YmxlIG9uIHRvdWNoIGRldmljZXMuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZworICoqLwordm9pZCB3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0
dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZh
dGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBX
S1ByZWZlcmVuY2VzR2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7
CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXS1ByZWZlcmVuY2VzU2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNl
cywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdz
KSwgImVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnM6CisgKgorICogQ2hlY2sgaWYgcGx1Z2lucyBhcmUg
ZW5hYmxlZC4gCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgUGx1Z2lucyBhcmUgZW5hYmxlZC4K
KyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5z
CisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lucyhX
ZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdl
YlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1By
ZWZlcmVuY2VzR2V0UGx1Z2luc0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioK
KyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zOgorICoKKyAqIEVuYWJs
ZS9EaXNhYmxlIHBsdWdpbiBzdXBwb3J0LgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX3BsdWdpbnMoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVh
biBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5H
UyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0
dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dl
dFBsdWdpbnNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVl
ID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRQbHVn
aW5zRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmpl
Y3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1wbHVnaW5zIik7Cit9CisKKy8q
KgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmE6CisgKgorICogQ2hlY2sg
d2hldGhlciB0aGUgc3VwcG9ydCBmb3IgSmF2YSBpcyBlbmFibGVkLiBKYXZhIGNvbnRlbnRzCisg
KiBlbWJlZGRlZCB2aWEgJmx0O29iamVjdCZndDsgb3IgJmx0O2VtYmVkJmd0OyB3aWxsIG5vdCBi
ZQorICogZGlzcGxheWVkIGlmIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvbiBpcyBG
QUxTRS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBKYXZhIGlzIGVuYWJsZWQuCisgKgorICog
QHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YQorICoqLworZ2Jv
b2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEoV2ViS2l0V2ViU2V0dGlu
Z3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
U0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZh
dGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEph
dmFFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9lbmFibGVfamF2YToKKyAqCisgKiBFbmFibGUgb3IgZGlzYWJsZSBzdXBwb3J0
IGZvciB0aGUgSmF2YS4gVGhpcyBwcm9wZXJ0eSBuZWVkcyB0byBiZSBlbmFibGVkCisgKiBmb3Ig
ZGlzcGxheWluZyBqYXZhIGNvbnRlbnRzIHZpYSAgJmx0O29iamVjdCZndDsgb3IgJmx0O2VtYmVk
Jmd0OyB0YWcuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFi
bGVfamF2YQorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YShX
ZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBX
ZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9v
bGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0SmF2YUVuYWJsZWQocHJpdi0+cHJl
ZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldEphdmFFbmFibGVkKHByaXYtPnByZWZlcmVuY2Vz
LCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3Mp
LCAiZW5hYmxlLWphdmEiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9q
YXZhX3NjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHk6CisgKgorICogUmV0dXJu
cyB3aGV0aGVyIEphdmFzY3JpcHQgY2FuIG9wZW4gcG9wdXAgd2luZG93cyBhdXRvbWF0aWNhbGx5
IHdpdGhvdXQKKyAqIHVzZXIgaW50ZXJ2ZW50aW9uLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElm
IEphdmFzY3JpcHQgY2FuIG9wZW4gd2luZG93IGF1dG9tYXRpY2FsbHkuCisgKgorICogQHNlZV9h
bHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhX3NjcmlwdF9jYW5fb3Blbl93aW5kb3dz
X2F1dG9tYXRpY2FsbHkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2ph
dmFfc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9T
RVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0
ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2
YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcyk7Cit9
CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfamF2YV9zY3JpcHRfY2FuX29wZW5f
d2luZG93c19hdXRvbWF0aWNhbGx5OgorICoKKyAqIFdoZXRoZXIgSmF2YVNjcmlwdCBjYW4gb3Bl
biBwb3B1cCB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgd2l0aG91dCB1c2VyCisgKiBpbnRlcnZlbnRp
b24uCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhX3Njcmlw
dF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfamF2YV9zY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KFdl
YktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdl
YktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29s
ZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRv
d3NBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVl
ID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZh
U2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzLCAoYm9v
bCllbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiamF2
YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHkiKTsKK30KKworLyoqCisgKiB3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nOgorICoKKyAq
IEdldCB3aGV0aGVyIHRoZSBzdXBwb3J0IGZvciAmbHQ7YSBwaW5nJmd0OyBpcyBlbmFibGVkLgor
ICoKKyAqIFJldHVybnM6ICVUUlVFIElmIGh5cGVyLWxpbmsgYXVkaXRpbmcgaXMgZW5hYmxlZAor
ICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlu
a19hdWRpdGluZworICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxl
X2h5cGVybGlua19hdWRpdGluZyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZB
TFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5w
cml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVk
KHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nOgorICoKKyAqIEVuYWJsZSBvciBkaXNhYmxlIHN1
cHBvcnQgZm9yICZsdDthIHBpbmcmZ3Q7LgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZworICoqLwordm9pZCB3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKFdlYktpdFdlYlNldHRp
bmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRp
bmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRW
YWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQocHJpdi0+cHJl
ZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JK
RUNUKHNldHRpbmdzKSwgImVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmciKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMTU0NjAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5o
CkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENocmlzdGlhbiBE
eXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA5IEphbiBN
aWNoYWVsIEFsb256byA8am1hbG9uem9AZ21haWwuY29tCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg
KGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
Zm5kZWYgV2ViS2l0V2ViU2V0dGluZ3NfaAorI2RlZmluZSBXZWJLaXRXZWJTZXR0aW5nc19oCisK
KyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisK
K0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MgICAgICAg
ICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VC
X1NFVFRJTkdTKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9i
aiksIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0dGluZ3MpKQorI2RlZmlu
ZSBXRUJLSVRfV0VCX1NFVFRJTkdTX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNT
X0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0dGlu
Z3NDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfU0VUVElOR1Mob2JqKSAgICAgICAgIChH
X1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdT
KSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9TRVRUSU5HU19DTEFTUyhrbGFzcykgKEdfVFlQRV9D
SEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MpKQorI2Rl
ZmluZSBXRUJLSVRfV0VCX1NFVFRJTkdTX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNF
X0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0
dGluZ3NDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5ncyBXZWJLaXRX
ZWJTZXR0aW5nczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc0NsYXNzIFdlYktp
dFdlYlNldHRpbmdzQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NQcml2
YXRlIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5n
cyB7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5n
c1ByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzQ2xhc3Mgewor
ICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICAvKiBQYWRkaW5nIGZvciBmdXR1
cmUgZXhwYW5zaW9uICovCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7Cisg
ICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRf
cmVzZXJ2ZWQzKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9pZCk7
Cit9OworCitXS19FWFBPUlQgR1R5cGUKK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3R5cGUodm9p
ZCk7CisKK1dLX0VYUE9SVCBXZWJLaXRXZWJTZXR0aW5ncyAqCit3ZWJraXRfd2ViX3NldHRpbmdz
X25ldyh2b2lkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9lbmFibGVfamF2YV9zY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNl
dHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdz
X3NldF9lbmFibGVfamF2YV9zY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dL
X0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdl
cyAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3Mp
OworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2lt
YWdlcyAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGlu
Z3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4K
K3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRf
cHJlZmVyZW5jZSAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZv
aWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xv
YWRfcHJlZmVyZW5jZSAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
Ym9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUgICAgICAgKFdlYktp
dFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUgICAgICAgKFdl
YktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7
CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0
bWw1X2xvY2FsX3N0b3JhZ2UgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0
dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxl
X2h0bWw1X2xvY2FsX3N0b3JhZ2UgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyog
c2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jv
b2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2RhdGFiYXNlX2VuYWJsZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQ
T1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZSAg
ICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnYm9vbGVhbiBlbmFibGVkKTsKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yICAgICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dl
Yl9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yICAgICAgICAgICAgICAgICAgICAgICAg
IChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJs
ZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9mcmFtZV9mbGF0dGVuaW5nICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3Mq
IHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV9mcmFtZV9mbGF0dGVuaW5nICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGlu
Z3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JU
IGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lucyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dL
X0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFu
IGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2phdmFfc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSAoV2ViS2l0V2ViU2V0
dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2phdmFfc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSAoV2ViS2l0V2Vi
U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tf
RVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5r
X2F1ZGl0aW5nICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7
CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJs
aW5rX2F1ZGl0aW5nICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5n
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRp
ZiAvKiB3ZWJraXR3ZWJzZXR0aW5nc19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5ncy5jCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ODMxYTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYwpAQCAtMCww
ICsxLDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWljaGFlbCBBbG9uem8K
KyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxndGsvZ3Rr
Lmg+CisjaW5jbHVkZSA8d2Via2l0Mmd0ay5oPgorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2Vi
U2V0dGluZ3NTY3JpcHRzKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdz
ID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIFNjcmlwdHMgaXMgZW5hYmxl
ZCBieSBkZWZhdWx0CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxl
X2phdmFfc2NyaXB0KHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5h
YmxlX2phdmFfc2NyaXB0KHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhX3NjcmlwdChzZXR0aW5ncykpOworfQorCitzdGF0
aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NBdXRvbG9hZCh2b2lkKQoreworICAgIFdlYktp
dFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAg
ICAvLyBCeSBkZWZhdWx0IGF1dG8tbG9hZC1pbWFnZSBpcyB0cnVlCisgICAgZ19hc3NlcnQod2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncykpOworICAgIHdl
YmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MsIEZBTFNFKTsK
KyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyhz
ZXR0aW5ncykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NMb2FkSWNv
bklnbm9yaW5nSW1hZ2VMb2FkUHJlZih2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpz
ZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBsb2FkLWljb24t
aWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmIGlzIGZhbHNlIGJ5IGRlZmF1bHQKKyAgICBnX2Fzc2Vy
dCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9h
ZF9wcmVmZXJlbmNlKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9h
ZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKHNldHRpbmdzLCBUUlVFKTsK
KyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmlu
Z19pbWFnZV9sb2FkX3ByZWZlcmVuY2Uoc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVz
dFdlYktpdFdlYlNldHRpbmdzT2ZmbGluZUFwcENhY2hlKHZvaWQpCit7CisgICAgV2ViS2l0V2Vi
U2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKyAgICAKKyAg
ICAvLyBPZmZsaW5lIGFwcGxpY2F0aW9uIGNhY2hlIGlzIHRydWUgYnkgZGVmYXVsdAorICAgIGdf
YXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNh
dGlvbl9jYWNoZShzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncywgRkFMU0UpOworICAgIGdf
YXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGlj
YXRpb25fY2FjaGUoc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNl
dHRpbmdzTG9jYWxTdG9yYWdlKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRp
bmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIExvY2FsIHN0b3JhZ2Ug
aXMgZW5hYmxlIGJ5IGRlZmF1bHQKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzLCBGQUxTRSk7
CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9sb2Nh
bF9zdG9yYWdlKHNldHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0
aW5nc0RhdGFiYXNlKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0g
d2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEhUTUw1IGRhdGFiYXNlIGlzIGVu
YWJsZWQgYnkgZGVmYXVsdAorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2Rh
dGFiYXNlX2VuYWJsZWQoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9l
bmFibGVfaHRtbDVfZGF0YWJhc2Uoc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZGF0YWJhc2VfZW5hYmxlZChzZXR0aW5ncykpOworfQorCitz
dGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NYc3NBdWRpdG9yKHZvaWQpCit7CisgICAg
V2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsK
KworICAgIC8vIFhTUyBBdWRpdG9yIGlzIGVuYWJsZWQgYnkgZGVmYXVsdAorICAgIGdfYXNzZXJ0
KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncykpOwor
ICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncywg
RkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfeHNz
X2F1ZGl0b3Ioc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRp
bmdzRnJhbWVGbGF0dGVyaW5nKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRp
bmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEZyYW1lIGZsYXR0ZXJp
bmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncykpOworICAgIHdlYmtpdF93
ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRpbmdzLCBUUlVFKTsK
KyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRl
bmluZyhzZXR0aW5ncykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NQ
bHVnaW5zKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0
X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIFBsdWdpbnMgYXJlIGVuYWJsZWQgYnkgZGVm
YXVsdAorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5z
KHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMo
c2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
ZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdl
YlNldHRpbmdzSmF2YSh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9
IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBKYXZhIGlzIGVuYWJsZWQgYnkg
ZGVmYXVsdAorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZh
KHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEoc2V0
dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5h
YmxlX2phdmEoc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRp
bmdzQXV0b09wZW5XaW5kb3codm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGlu
Z3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gQnkgZGVmYXVsdCwgSmF2
YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgaXMgZGlzYWJsZWQuCisgICAg
Z19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFfc2NyaXB0X2Nhbl9vcGVuX3dp
bmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2phdmFfc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncywg
VFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YV9zY3JpcHRf
Y2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2
b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0h5cGVyTGlua0F1ZGl0aW5nKHZvaWQpCit7CisgICAg
V2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsK
KworICAgIC8vIEJ5IGRlZmF1bHQgaHlwZXIgbGluayBhdWRpdGluZyBpcyBkaXNhYmxlZC4KKyAg
ICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRp
dGluZyhzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBl
cmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MsIFRSVUUpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MpKTsKK30KKwor
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIGdfdGhyZWFkX2luaXQoTlVM
TCk7CisgICAgZ3RrX3Rlc3RfaW5pdCgmYXJnYywgJmFyZ3YsIE5VTEwpOworCisgICAgZ190ZXN0
X2J1Z19iYXNlKCJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKKyAgICBnX3Rlc3RfYWRkX2Z1
bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL3NjcmlwdHMiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NT
Y3JpcHRzKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL2F1dG9s
b2FkIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b2xvYWQpOworICAgIGdfdGVzdF9hZGRfZnVu
YygiL3dlYmtpdDIvd2Vic2V0dGluZ3MvbG9hZGljb25pZ25vcmluZ2ltYWdlbG9hZHByZWYiLCB0
ZXN0V2ViS2l0V2ViU2V0dGluZ3NMb2FkSWNvbklnbm9yaW5nSW1hZ2VMb2FkUHJlZik7CisgICAg
Z190ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5ncy9vZmZsaW5lYXBwY2FjaGUiLCB0
ZXN0V2ViS2l0V2ViU2V0dGluZ3NPZmZsaW5lQXBwQ2FjaGUpOworICAgIGdfdGVzdF9hZGRfZnVu
YygiL3dlYmtpdDIvd2Vic2V0dGluZ3MvbG9jYWxzdG9yYWdlIiwgdGVzdFdlYktpdFdlYlNldHRp
bmdzTG9jYWxTdG9yYWdlKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRp
bmdzL2RhdGFiYXNlIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzRGF0YWJhc2UpOworICAgIGdfdGVz
dF9hZGRfZnVuYygiL3dlYmtpdDIvd2Vic2V0dGluZ3MveHNzYXVkaXRvciIsIHRlc3RXZWJLaXRX
ZWJTZXR0aW5nc1hzc0F1ZGl0b3IpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdDIvd2Vi
c2V0dGluZ3MvZnJhbWVmbGF0dGVyaW5nIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzRnJhbWVGbGF0
dGVyaW5nKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL3BsdWdp
bnMiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NQbHVnaW5zKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMo
Ii93ZWJraXQyL3dlYnNldHRpbmdzL2phdmEiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NKYXZhKTsK
KyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL2F1dG9vcGVud2luZG93
IiwgdGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b09wZW5XaW5kb3cpOworICAgIGdfdGVzdF9hZGRf
ZnVuYygiL3dlYmtpdDIvd2Vic2V0dGluZ3MvaHlwZXJsaW5rYXVkaXRpbmciLCB0ZXN0V2ViS2l0
V2ViU2V0dGluZ3NIeXBlckxpbmtBdWRpdGluZyk7CisKKyAgICByZXR1cm4gZ190ZXN0X3J1biAo
KTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mmd0ay5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mmd0ay5o
CmluZGV4IGRmZWJiYjQuLmUwODE3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3dlYmtpdDJndGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay93ZWJraXQyZ3RrLmgKQEAgLTI0LDUgKzI0LDYgQEAKICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFdlYkNvbnRleHQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXdCYXNl
Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJWaWV3Lmg+CisjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRXZWJTZXR0aW5ncy5oPgogCiAjZW5kaWYgLyogX19XRUJLSVRfSF9fICovCi0tIAox
LjcuNC4xCgo=
</data>
<flag name="review"
          id="105245"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108444</attachid>
            <date>2011-09-22 23:01:49 -0700</date>
            <delta_ts>2011-09-26 00:56:26 -0700</delta_ts>
            <desc>WebKitWebSettings GTK+ API</desc>
            <filename>0001-WebKitWebSetting-GTK-API.patch</filename>
            <type>text/plain</type>
            <size>55764</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSA2YWNhYmQ4OTI5ZDhiNmUzZGE0N2Q0ZDVmZTgxNzFiNGFmNTU4OTI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogRnJpLCAyMyBTZXAgMjAxMSAxMToyODo1OSArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIFdl
YktpdFdlYlNldHRpbmcgR1RLKyBBUEkKCi0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDU5ICsrCiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKy0KIC4uLi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHAgICAgICAgIHwgIDg2OSArKysrKysrKysrKysrKysr
KysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaCAg
fCAgMTQ4ICsrKysKIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3Mu
YyAgICAgIHwgIDE2NiArKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyZ3RrLmggICAgICB8ICAgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAxMjUzIGluc2VydGlvbnMo
KyksIDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rl
c3R3ZWJzZXR0aW5ncy5jCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDhlZjBlZDAuLmU5ODIxYWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MiBAQAorMjAxMS0wOS0yMiAgTmF5YW4gS3VtYXIgSyAgPG5heWFua2tA
bW90b3JvbGEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBXZWJLaXRXZWJTZXR0aW5ncyBHVEsr
IEFQSSdzLgorCisgICAgICAgIFdlYktpdFdlYlNldHRpbmdzIEdUSysgb2JqZWN0IGlzIGNyZWF0
ZWQgYW5kIGZpcnN0IHNldCBvZgorICAgICAgICBBUEkncyBhcmUgd3JpdHRlbiB0byBnZXQgb3Ig
c2V0IHRoZSBwcm9wZXJ0aWVzIG9mIFdlYktpdFdlYlNldHRpbmdzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgzNzEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcDogQWRkZWQuCisgICAg
ICAgIChfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlOjpfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRl
KToKKyAgICAgICAgKHdlYmtpdFdlYlNldHRpbmdzU2V0UHJvcGVydHkpOgorICAgICAgICAod2Vi
a2l0V2ViU2V0dGluZ3NHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdz
X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9qYXZhc2NyaXB0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2F1dG9fbG9hZF9pbWFnZXMpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfYXV0
b19sb2FkX2ltYWdlcyk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19p
Y29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UpOgorICAgICAgICAod2Via2l0X3dl
Yl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNl
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9h
cHBsaWNhdGlvbl9jYWNoZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFi
bGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUpOgorICAgICAgICAod2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UpOgorICAgICAgICAod2Via2l0
X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UpOgorICAgICAgICAo
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZGF0YWJhc2VfZW5hYmxlZCk6CisgICAgICAgICh3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UpOgorICAgICAgICAod2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yKToKKyAgICAgICAgKHdlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvcik6CisgICAgICAgICh3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyk6CisgICAgICAgICh3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyk6CisgICAgICAgICh3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lucyk6CisgICAgICAgICh3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyk6CisgICAgICAgICh3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9lbmFibGVfamF2YSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9lbmFibGVfamF2YSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhc2Ny
aXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0
aW5nKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtf
YXVkaXRpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdz
Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0
aW5ncy5jOiBBZGRlZC4KKyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc1NjcmlwdHMpOgor
ICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b2xvYWQpOgorICAgICAgICAodGVzdFdl
YktpdFdlYlNldHRpbmdzTG9hZEljb25JZ25vcmluZ0ltYWdlTG9hZFByZWYpOgorICAgICAgICAo
dGVzdFdlYktpdFdlYlNldHRpbmdzT2ZmbGluZUFwcENhY2hlKToKKyAgICAgICAgKHRlc3RXZWJL
aXRXZWJTZXR0aW5nc0xvY2FsU3RvcmFnZSk6CisgICAgICAgICh0ZXN0V2ViS2l0V2ViU2V0dGlu
Z3NEYXRhYmFzZSk6CisgICAgICAgICh0ZXN0V2ViS2l0V2ViU2V0dGluZ3NYc3NBdWRpdG9yKToK
KyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc0ZyYW1lRmxhdHRlcmluZyk6CisgICAgICAg
ICh0ZXN0V2ViS2l0V2ViU2V0dGluZ3NQbHVnaW5zKToKKyAgICAgICAgKHRlc3RXZWJLaXRXZWJT
ZXR0aW5nc0phdmEpOgorICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b09wZW5XaW5k
b3cpOgorICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdzSHlwZXJMaW5rQXVkaXRpbmcpOgor
ICAgICAgICAobWFpbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mmd0ay5o
OgorCiAyMDExLTA5LTIxICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXSzJdIFVJUHJvY2VzcyBzaG91bGQgY2hlY2sgdGhhdCBXZWJQcm9jZXNzIGlzbid0
IHNlbmRpbmcgdW5leHBlY3RlZCBmaWxlOiBVUkxzIHRvIGl0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IDUzZmRiMzYuLjA2NTk1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC03MCw2ICs3MCw3
IEBAIGxpYndlYmtpdDJndGtpbmNsdWRlZGlyID0gJChsaWJ3ZWJraXRndGtpbmNsdWRlZGlyKS93
ZWJraXQyCiBsaWJ3ZWJraXQyZ3RraW5jbHVkZV9IRUFERVJTID0gXAogCSQoV2ViS2l0MikvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJTZXR0aW5ncy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmgKIAogbGlid2Via2l0Z3RraW5jbHVkZV9IRUFERVJTICs9IFwKQEAg
LTQ1NCw2ICs0NTUsOCBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJ
T05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaCBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmggXAorCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcCBcCisJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBcCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuaCBcCkBAIC05ODksNyArOTky
LDggQEAgRElTVENMRUFORklMRVMgKz0gXAogIyBVbml0IHRlc3RzCiBURVNUX1BST0dTICs9IFwK
IAlQcm9ncmFtcy91bml0dGVzdHMvd2Via2l0Mi90ZXN0d2ViY29udGV4dCBcCi0JUHJvZ3JhbXMv
dW5pdHRlc3RzL3dlYmtpdDIvdGVzdHdlYnZpZXcKKwlQcm9ncmFtcy91bml0dGVzdHMvd2Via2l0
Mi90ZXN0d2VidmlldyBcCisJUHJvZ3JhbXMvdW5pdHRlc3RzL3dlYmtpdDIvdGVzdHdlYnNldHRp
bmdzCiAKIG5vaW5zdF9QUk9HUkFNUyArPSAkKFRFU1RfUFJPR1MpCiB3ZWJraXQyX3Rlc3RzX2Nm
bGFncyA9IFwKQEAgLTEwMjUsNiArMTAyOSwxMSBAQCBQcm9ncmFtc191bml0dGVzdHNfd2Via2l0
Ml90ZXN0d2Vidmlld19DRkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfY2ZsYWdzKQogUHJvZ3JhbXNf
dW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnZpZXdfTERBREQgPSAkKHdlYmtpdDJfdGVzdHNfbGRh
ZGQpCiBQcm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0d2Vidmlld19MREZMQUdTID0gJCh3
ZWJraXQyX3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3
ZWJzZXR0aW5nc19TT1VSQ0VTID0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvdGVzdHdlYnNldHRpbmdzLmMKK1Byb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJz
ZXR0aW5nc19DRkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfY2ZsYWdzKQorUHJvZ3JhbXNfdW5pdHRl
c3RzX3dlYmtpdDJfdGVzdHdlYnNldHRpbmdzX0xEQUREID0gJCh3ZWJraXQyX3Rlc3RzX2xkYWRk
KQorUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnNldHRpbmdzX0xERkxBR1MgPSAk
KHdlYmtpdDJfdGVzdHNfbGRmbGFncykKKwogIyBXZWJLaXRXZWJQcm9jZXNzCiBsaWJleGVjX1BS
T0dSQU1TICs9IFwKIAlQcm9ncmFtcy9XZWJLaXRXZWJQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRhOTg0YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcApA
QCAtMCwwICsxLDg2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3
YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkg
THRkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBKYW4gTWljaGFlbCBBbG9uem8KKyAqIENvcHlyaWdodCAoQykgMjAwOSBNb3ZpYWwgQ3JlYXRp
dmUgVGVjaG5vbG9naWVzIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBJZ2FsaWEgUy5MLgor
ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0
V2ViU2V0dGluZ3MuaCIKKworI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVHlwZS5oPgorI2lu
Y2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisKK3N0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NQcml2
YXRlIHsKK3B1YmxpYzoKKyAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzOworCisgICAg
X1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSgpCisgICAgeworICAgICAgICBwcmVmZXJlbmNlcyA9
IFdLUHJlZmVyZW5jZXNDcmVhdGUoKTsKKworICAgICAgICAvKiBCeSBkZWZhdWx0LCBvZmZsaW5l
LXdlYi1hcHBsaWNhdGlvbi1jYWNoZSBpbiB0cnVlIGluIFdlYktpdC1HVEsgKi8KKyAgICAgICAg
V0tQcmVmZXJlbmNlc1NldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChwcmVmZXJl
bmNlcywgdHJ1ZSk7CisgICAgICAgIC8qIEJ5IGRlZmF1bHQsIGphdmFzY3JpcHQtY2FuLW9wZW4t
d2luZG93cy1hdXRvbWF0aWNhbGx5IGlzIGZhbHNlIGluIFdlYktpdC1HVEsgKi8KKyAgICAgICAg
V0tQcmVmZXJlbmNlc1NldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkocHJl
ZmVyZW5jZXMsIGZhbHNlKTsKKyAgICAgICAgLyogQnkgZGVmYXVsdCwgZW5hYmxlLWh5cGVybGlu
ay1hdWRpdGluZyBpcyBmYWxzZSBpbiBXZWJLaXQtR1RLICovCisgICAgICAgIFdLUHJlZmVyZW5j
ZXNTZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIGZhbHNlKTsKKyAgICB9
Cit9OworCisvKioKKyAqIFNFQ1RJT046d2Via2l0d2Vic2V0dGluZ3MKKyAqIEBzaG9ydF9kZXNj
cmlwdGlvbjogQ29udHJvbCB0aGUgYmVoYXZpb3VyIG9mIGEgI1dlYktpdFdlYlZpZXcKKyAqCisg
KiAjV2ViS2l0V2ViU2V0dGluZ3MgY2FuIGJlIGFwcGxpZWQgdG8gYSAjV2ViS2l0V2ViVmlldyB0
byBjb250cm9sIHRleHQgZW5jb2RpbmcsIAorICogY29sb3IsIGZvbnQgc2l6ZXMsIHByaW50aW5n
IG1vZGUsIHNjcmlwdCBzdXBwb3J0LCBsb2FkaW5nIG9mIGltYWdlcyBhbmQgdmFyaW91cyBvdGhl
ciB0aGluZ3MuIAorICogQWZ0ZXIgY3JlYXRpb24sIGEgI1dlYktpdFdlYlNldHRpbmdzIG9iamVj
dCBjb250YWlucyBkZWZhdWx0IHNldHRpbmdzLiAKKyAqCisgKiA8aW5mb3JtYWxleGFtcGxlPjxw
cm9ncmFtbGlzdGluZz4KKyAqIC88IS0tIC0tPiogQ3JlYXRlIGEgbmV3IHdlYnNldHRpbmdzIGFu
ZCBkaXNhYmxlIGphdmEgc2NyaXB0ICo8IS0tIC0tPi8KKyAqIFdlYktpdFdlYlNldHRpbmdzICpz
ZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3ICgpOworICogZ19vYmplY3Rfc2V0IChH
X09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtc2NyaXB0cyIsIEZBTFNFLCBOVUxMKTsKKyAqCisg
KiAvPCEtLSAtLT4qIEFwcGx5IHRoZSByZXN1bHQgKjwhLS0gLS0+LworICogd2Via2l0X3dlYl92
aWV3X3NldF9zZXR0aW5ncyAoV0VCS0lUX1dFQl9WSUVXKG15X3dlYnZpZXcpLCBzZXR0aW5ncyk7
CisgKiA8L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxleGFtcGxlPgorICovCisKKworR19ERUZJ
TkVfVFlQRShXZWJLaXRXZWJTZXR0aW5ncywgd2Via2l0X3dlYl9zZXR0aW5ncywgR19UWVBFX09C
SkVDVCkKKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9FTkFCTEVfSkFWQVNDUklQ
VCwKKyAgICBQUk9QX0FVVE9fTE9BRF9JTUFHRVMsCisgICAgUFJPUF9MT0FEU19JQ09OU19JR05P
UklOR19JTUFHRV9MT0FEX1BSRUZFUkVOQ0UsCisgICAgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJf
QVBQTElDQVRJT05fQ0FDSEUsCisgICAgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFHRSwK
KyAgICBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRSwKKyAgICBQUk9QX0VOQUJMRV9YU1NfQVVE
SVRPUiwKKyAgICBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HLAorICAgIFBST1BfRU5BQkxF
X1BMVUdJTlMsCisgICAgUFJPUF9FTkFCTEVfSkFWQSwKKyAgICBQUk9QX0pBVkFTQ1JJUFRfQ0FO
X09QRU5fV0lORE9XU19BVVRPTUFUSUNBTExZLAorICAgIFBST1BfRU5BQkxFX0hZUEVSTElOS19B
VURJVElORywKK307CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlNldHRpbmdzU2V0UHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJh
bVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyA9IFdFQktJ
VF9XRUJfU0VUVElOR1Mob2JqZWN0KTsKKyAKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNh
c2UgUFJPUF9FTkFCTEVfSkFWQVNDUklQVDoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19z
ZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0FVVE9fTE9BRF9JTUFHRVM6CisgICAg
ICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MsIGdf
dmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X0xPQURTX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRToKKyAgICAgICAgd2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVm
ZXJlbmNlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05fQ0FDSEU6
CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBs
aWNhdGlvbl9jYWNoZShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0U6Cisg
ICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdl
KHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0U6CisgICAgICAgIHdlYmtpdF93ZWJf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncywgZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1hT
U19BVURJVE9SOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfeHNzX2F1
ZGl0b3Ioc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HOgorICAgICAgICB3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncywgZ192
YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
RU5BQkxFX1BMVUdJTlM6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9w
bHVnaW5zKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQToKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lO
RE9XU19BVVRPTUFUSUNBTExZOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZh
c2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncywgZ192YWx1ZV9n
ZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxF
X0hZUEVSTElOS19BVURJVElORzoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5h
YmxlX2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1
ZSkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJO
X0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBzcGVjKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJTZXR0aW5nc0dldFByb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSBXRUJLSVRfV0VC
X1NFVFRJTkdTKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgUFJP
UF9FTkFCTEVfSkFWQVNDUklQVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwg
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0FVVE9fTE9BRF9JTUFHRVM6CisgICAgICAgIGdf
dmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9h
ZF9pbWFnZXMoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0xPQURT
X0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRToKKyAgICAgICAgZ192YWx1ZV9z
ZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdu
b3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05fQ0FDSEU6CisgICAg
ICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0U6CisgICAgICAg
IGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0U6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xl
YW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2RhdGFiYXNlX2VuYWJsZWQoc2V0dGlu
Z3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUjoK
KyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRFUklORzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9v
bGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5p
bmcoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9QTFVH
SU5TOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9lbmFibGVfcGx1Z2lucyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfRU5BQkxFX0pBVkE6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUs
IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKHNldHRpbmdzKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9KQVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01B
VElDQUxMWToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0
dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IWVBFUkxJTktf
QVVESVRJTkc6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFdl
YlNldHRpbmdzQ2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNz
ID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIGdPYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5
ID0gd2Via2l0V2ViU2V0dGluZ3NTZXRQcm9wZXJ0eTsKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9w
cm9wZXJ0eSA9IHdlYmtpdFdlYlNldHRpbmdzR2V0UHJvcGVydHk7CisKKyAgICBHUGFyYW1GbGFn
cyBmbGFncyA9IHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRF
IHwgR19QQVJBTV9DT05TVFJVQ1QpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5n
czplbmFibGUtamF2YXNjcmlwdAorICAgICoKKyAgICAqIFRoaXMgcHJvcGVydHkgbmVlZHMgdG8g
YmUgc2V0IHRvIGVuYWJsZSB0aGUgZXhlY3V0aW9uIG9mIAorICAgICogSmF2YXNjcmlwdCB3aXRo
aW4gYSBwYWdlLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UFJPUF9FTkFCTEVfSkFWQVNDUklQVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtamF2YXNjcmlwdCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUg
SmF2YVNjcmlwdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiRW5hYmxlIEphdmFTY3JpcHQgbGFuZ3VhZ2VzLiIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsYWdzKSk7CisgICAgCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczphdXRvLWxv
YWQtaW1hZ2VzCisgICAgKgorICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGltYWdlcyBzaG91bGQg
YmUgYXV0b21hdGljYWxseSBsb2FkZWQgb3Igbm90LgorICAgICogT24gZGV2aWNlcywgd2hlcmUg
bmV0d29yayBiYW5kd2lkdGggaXMgb2YgY29uY2VybiwgaXQgbWlnaHQgYmUKKyAgICAqIHVzZWZ1
bCB0byB0dXJuIHRoaXMgcHJvcGVydHkgb2ZmLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJPUF9BVVRPX0xPQURfSU1BR0VTLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImF1dG8tbG9hZC1pbWFn
ZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXygiQXV0byBMb2FkIEltYWdlcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiTG9hZCBpbWFnZXMgYXV0b21hdGljYWxs
eS4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbGFncykpOworICAgIAorICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0
dGluZ3M6bG9hZHMtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmZXJlbmNlCisgICAgKgor
ICAgICogQnkgZW5hYmxpbmcgdGhpcyBwcm9wZXJ0eSwgc2l0ZSBpY29ucyAoZS5nLCBmYXZpY29u
KSB3aWxsIGJlIGxvYWRlZAorICAgICogaXJyZXNwZWN0aXZlIG9mIHRoZSB2YWx1ZSBvZiAnYXV0
by1sb2FkLWltYWdlcycuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUk9QX0xPQURTX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJs
b2Fkcy1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWZlcmVuY2UiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiTG9hZHMgU2l0
ZSBJY29ucyBpZ25vcmluZyBpbWFnZSBsb2FkIHByZWZlcmVuY2UiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8g
bG9hZCBzaXRlIGljb24gaWdub3JpbmcgaW1hZ2UgbG9hZCBwcmVmZXJlbmNlLiIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtb2Zm
bGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUKKyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJs
ZSBIVE1MNSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlvbiBjYWNoZSBzdXBwb3J0LiBPZmZsaW5lCisg
ICAgKiBXZWIgQXBwbGljYXRpb24gQ2FjaGUgZW5zdXJlcyB3ZWIgYXBwbGljYXRpb25zIGFyZSBh
dmFpbGFibGUgZXZlbiB3aGVuCisgICAgKiB0aGUgdXNlciBpcyBub3QgY29ubmVjdGVkIHRvIHRo
ZSBuZXR3b3JrLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05fQ0FDSEUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLW9mZmxp
bmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBvZmZsaW5lIHdlYiBhcHBsaWNh
dGlvbiBjYWNoZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFibGUgb2ZmbGluZSB3ZWIgYXBwbGljYXRp
b24gY2FjaGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJT
ZXR0aW5nczplbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZToKKyAgICAqCisgICAgKiBXaGV0aGVy
IHRvIGVuYWJsZSBIVE1MNSBsb2NhbFN0b3JhZ2Ugc3VwcG9ydC4gbG9jYWxTdG9yYWdlIHByb3Zp
ZGVzCisgICAgKiBzaW1wbGUgc3luY2hyb25vdXMgc3RvcmFnZSBhY2Nlc3MuCisgICAgKgorICAg
ICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9IVE1MNV9MT0NB
TF9TVE9SQUdFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9z
cGVjX2Jvb2xlYW4oImVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBIVE1M
NSBMb2NhbCBTdG9yYWdlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBMb2NhbCBTdG9y
YWdlIHN1cHBvcnQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRX
ZWJTZXR0aW5nczplbmFibGUtaHRtbDUtZGF0YWJhc2U6CisgICAgKgorICAgICogV2hldGhlciB0
byBlbmFibGUgSFRNTDUgY2xpZW50LXNpZGUgU1FMIGRhdGFiYXNlIHN1cHBvcnQuIENsaWVudC1z
aWRlCisgICAgKiBTUUwgZGF0YWJhc2UgYWxsb3dzIHdlYiBwYWdlcyB0byBzdG9yZSBzdHJ1Y3R1
cmVkIGRhdGEgYW5kIGJlIGFibGUgdG8KKyAgICAqIHVzZSBTUUwgdG8gbWFuaXB1bGF0ZSB0aGF0
IGRhdGEgYXN5bmNocm9ub3VzbHkuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtaHRtbDUtZGF0
YWJhc2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXygiRW5hYmxlIEhUTUw1IERhdGFiYXNlIiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJs
ZSBIVE1MNSBkYXRhYmFzZSBzdXBwb3J0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgor
ICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLXhzcy1hdWRpdG9yCisgICAgKgorICAgICog
V2hldGhlciB0byBlbmFibGUgdGhlIFhTUyBBdWRpdG9yLiBUaGlzIGZlYXR1cmUgZmlsdGVycyBz
b21lIGtpbmRzIG9mCisgICAgKiByZWZsZWN0aXZlIFhTUyBhdHRhY2tzIG9uIHZ1bG5lcmFibGUg
d2ViIHNpdGVzLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UFJPUF9FTkFCTEVfWFNTX0FVRElUT1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLXhzcy1hdWRpdG9yIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJs
ZSBYU1MgQXVkaXRvciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFibGUgdGhlIFhTUyBhdWRpdG9yIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxhZ3MpKTsKKworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczpl
bmFibGUtZnJhbWUtZmxhdHRlbmluZworICAgICoKKyAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRo
ZSBGcmFtZSBGbGF0dGVuaW5nLiBXaXRoIHRoaXMgc2V0dGluZyBlYWNoIHN1YmZyYW1lIGlzIGV4
cGFuZGVkCisgICAgKiB0byBpdHMgY29udGVudHMsIHdoaWNoIHdpbGwgZmxhdHRlbiBhbGwgdGhl
IGZyYW1lcyB0byBiZWNvbWUgb25lIHNjcm9sbGFibGUgcGFnZS4KKyAgICAqIE9uIHRvdWNoIGRl
dmljZXMsIGl0IGlzIGRlc2lyZWQgdG8gbm90IGhhdmUgYW55IHNjcm9sbGFibGUgc3ViIHBhcnRz
IG9mIHRoZSBwYWdlIGFzCisgICAgKiBpdCByZXN1bHRzIGluIGEgY29uZnVzaW5nIHVzZXIgZXhw
ZXJpZW5jZSwgd2l0aCBzY3JvbGxpbmcgc29tZXRpbWVzIHNjcm9sbGluZyBzdWIgcGFydHMKKyAg
ICAqIGFuZCBhdCBvdGhlciB0aW1lcyBzY3JvbGxpbmcgdGhlIHBhZ2UgaXRzZWxmLiBGb3IgdGhp
cyByZWFzb24gaWZyYW1lcyBhbmQgZnJhbWVzZXRzIGFyZQorICAgICogYmFyZWx5IHVzYWJsZSBv
biB0b3VjaCBkZXZpY2VzLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRFUklORywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtZnJhbWUtZmxhdHRl
bmluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfKCJFbmFibGUgRnJhbWUgRmxhdHRlbmluZyIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFi
bGUgRnJhbWUgRmxhdHRlbmluZyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAvKioKKyAgICAq
IFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1wbHVnaW5zOgorICAgICoKKyAgICAqIFBsdWdpbnMg
ZW1kZWRkZWQgd2l0aGluIGEgcGFnZSBjYW4gYmUgdHVybmVkIG9mZiBieSBkaXNhYmxpbmcKKyAg
ICAqIHRoaXMgcHJvcGVydHkuIAorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJPUF9FTkFCTEVfUExVR0lOUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtcGx1Z2lucyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFi
bGUgUGx1Z2lucyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiRW5hYmxlIGVtYmVkZGVkIHBsdWdpbiBvYmplY3RzLiIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJV
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsYWdzKSk7CisgICAgCisgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJs
ZS1qYXZhOgorICAgICoKKyAgICAqIEVuYWJsZSBvciBkaXNhYmxlIHN1cHBvcnQgZm9yIHRoZSBK
YXZhLiBUaGlzIHByb3BlcnR5IG5lZWRzIHRvIGJlIGVuYWJsZWQKKyAgICAqIGZvciBkaXNwbGF5
aW5nIGphdmEgY29udGVudHMgdmlhICAmbHQ7b2JqZWN0Jmd0OyBvciAmbHQ7ZW1iZWQmZ3Q7IHRh
Zy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdP
YmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5B
QkxFX0pBVkEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3Nw
ZWNfYm9vbGVhbigiZW5hYmxlLWphdmEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEphdmEiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIg
SmF2YSBzdXBwb3J0IHNob3VsZCBiZSBlbmFibGVkIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAg
IC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6amF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dz
LWF1dG9tYXRpY2FsbHkKKyAgICAqCisgICAgKiBXaGV0aGVyIEphdmFTY3JpcHQgY2FuIG9wZW4g
cG9wdXAgd2luZG93cyBhdXRvbWF0aWNhbGx5IHdpdGhvdXQgdXNlcgorICAgICogaW50ZXJ2ZW50
aW9uLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Z09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9K
QVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJqYXZhc2NyaXB0LWNh
bi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxseSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJKYXZhU2NyaXB0IGNhbiBvcGVuIHdp
bmRvd3MgYXV0b21hdGljYWxseSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciBKYXZhU2NyaXB0IGNhbiBvcGVuIHdp
bmRvd3MgYXV0b21hdGljYWxseSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAg
KiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nOgorICAgICoKKyAg
ICAqIEVuYWJsZSBvciBkaXNhYmxlIHN1cHBvcnQgZm9yICZsdDthIHBpbmcmZ3Q7LgorICAgICoK
KyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfSFlQRVJM
SU5LX0FVRElUSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJh
bV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmciLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEh5
cGVybGluayBBdWRpdGluZyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciA8YSBwaW5nPiBzaG91bGQgYmUgYWJsZSB0
byBzZW5kIHBpbmdzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX3R5cGVfY2xhc3NfYWRk
X3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpKTsKK30KKwor
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19pbml0KFdlYktpdFdlYlNldHRpbmdzKiBz
ZXR0aW5ncykKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBHX1RZUEVf
SU5TVEFOQ0VfR0VUX1BSSVZBVEUoc2V0dGluZ3MsIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywg
V2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKTsKKyAgICBzZXR0aW5ncy0+cHJpdiA9IHByaXY7Cisg
ICAgbmV3IChwcml2KSBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUoKTsKK30KKworLyoqCisgKiB3
ZWJraXRfd2ViX3NldHRpbmdzX25ldzoKKyAqCisgKiBDcmVhdGVzIGEgbmV3ICNXZWJLaXRXZWJT
ZXR0aW5ncyBpbnN0YW5jZSB3aXRoIGRlZmF1bHQgdmFsdWVzLiBJdCBtdXN0CisgKiBiZSBtYW51
YWxseSBhdHRhY2hlZCB0byBhIFdlYlZpZXcuCisgKgorICogUmV0dXJuczogYSBuZXcgI1dlYktp
dFdlYlNldHRpbmdzIGluc3RhbmNlCisgKiovCitXZWJLaXRXZWJTZXR0aW5ncyogd2Via2l0X3dl
Yl9zZXR0aW5nc19uZXcoKQoreworICAgIHJldHVybiBXRUJLSVRfV0VCX1NFVFRJTkdTKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIE5VTEwpKTsKK30KKworLyoqCisgKiB3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdDoKKyAqCisgKiBDaGVjayBp
ZiBKYXZhU2NyaXB0IGV4ZWN1dGlvbiB3aXRoaW4gYSBwYWdlIGlzIHN1cHBvcnRlZCBvciBub3Qu
CisgKgorICogUmV0dXJuczogJVRSVUUgSWYgSmF2YVNjcmlwdCBpcyBlbmFibGVkLgorICoKKyAq
IEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQKKyAq
Ki8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KFdl
YktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgV2ViS2l0V2Vi
U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJl
ZmVyZW5jZXNHZXRKYXZhU2NyaXB0RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8q
KgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQ6CisgKgorICog
VGhpcyBBUEkgY2FuIGJlIHVzZWQgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIHN1cHBydCBmb3IgSmF2
YXNjcmlwdAorICogZXhlY3V0aW9uLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX2phdmFzY3JpcHQoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9v
bGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRU
SU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0g
c2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNl
c0dldEphdmFTY3JpcHRFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVu
dFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNT
ZXRKYXZhU2NyaXB0RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7Cisg
ICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1qYXZhc2NyaXB0
Iik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdl
czoKKyAqCisgKiBUaGlzIEFQSSB3aWxsIHJldHVybiBUUlVFIGlmIGF1dG9tYXRpYyBsb2FkaW5n
IG9mIGltYWdlcyBpcyB0dXJuZWQgZW5hYmxlZC4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBh
dXRvIGxvYWRpbmcgb2YgaW1hZ2VzIGlzIGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzCisgKiovCitnYm9vbGVhbiB3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKFdlYktpdFdlYlNldHRpbmdzKiBz
ZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJ
TkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBw
cml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXM6CisgKgorICogQXV0b21hdGljIGxv
YWRpbmcgb2YgaW1hZ2VzIGNhbiBiZSB0dXJuZWQgb24vb2ZmIHVzaW5nIHRoaXMgQVBJLiBJZiBt
aWdodAorICogYmUgdXNlZnVsIHRvIHR1cm4gdGhpcyBwcm9wZXJ0eSBvZmYsIGluIGNhc2VzIHdo
ZW4gbmV0d29yayBiYW5kd2lkdGggaXMgb2YKKyAqIGNvbmNlcm4uCisgKgorICogQHNlZV9hbHNv
OiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzCisgKiovCit2b2lkIHdl
YmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoV2ViS2l0V2ViU2V0dGluZ3Mq
IHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQ
cml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVl
ID0gV0tQcmVmZXJlbmNlc0dldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJl
bmNlcyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHByaXYtPnBy
ZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qo
c2V0dGluZ3MpLCAiYXV0by1sb2FkLWltYWdlcyIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZToK
KyAqCisgKiBDaGVjayB3aGV0aGVyIHRoZSBzaXRlIGljb25zIGNhbiBiZSBsb2FkZWQgaXJyZXNw
Y3RpdmUgb2YgdGhlIGltYWdlIGxvYWRpbmcKKyAqIHByZWZlcmVuY2UuCisgKgorICogUmV0dXJu
czogJVRSVUUgSWYgc2l0ZS1pY29uIGNhbiBiZSBsb2FkZWQgaXJyZXNwZWN0aXZlIG9mIGltYWdl
IGxvYWRpbmcgcHJlZmVyZW5jZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZQorICoqLwor
Z2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1h
Z2VfbG9hZF9wcmVmZXJlbmNlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFM
U0UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnBy
aXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1h
Z2VMb2FkaW5nUHJlZmVyZW5jZShwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVm
ZXJlbmNlOgorICoKKyAqIElmIHRoaXMgQVBJIGlzIGNhbGxlZCB3aXRoIFRSVUUsIHRoZW4gc2l0
ZS1pY29ucyAoZS5nLCBmYXYtaWNvbikgd2lsbCBiZQorICogbG9hZGVkIGV2ZW4gaWYgYXV0byBs
b2FkaW5nIG9mIGltYWdlIGlzIHR1cm5lZCBvZmYgdXNpbmcgdGhlIG1ldGhvZAorICogd2Via2l0
X3dlYl9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcworICoKKyAqIEBzZWVfYWxzbyA6IHdl
YmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJl
ZmVyZW5jZQorICogICAgICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9hdXRvX2xvYWRf
aW1hZ2VzCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2ln
bm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3Ms
IGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VC
X1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHBy
aXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZl
cmVuY2VzR2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2UocHJp
di0+cHJlZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldExvYWRzU2l0ZUljb25zSWdub3JpbmdJ
bWFnZUxvYWRpbmdQcmVmZXJlbmNlKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsK
KyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAibG9hZHMtaWNvbnMtaWdu
b3JpbmctaW1hZ2UtbG9hZC1wcmVmZXJlbmNlIik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlOgorICoKKyAq
IElmIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIHN1cHBvcnQgaXMgZW5hYmxl
ZCwgdGhlbiB0aGlzIGZ1bmN0aW9uCisgKiB3aWxsIHJldHVybiBUUlVFLgorICoKKyAqIFJldHVy
bnM6ICVUUlVFIElmIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIHN1cHBvcnQg
aXMgZW5hYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZQorICoqLworZ2Jvb2xlYW4gd2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKFdl
YktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgV2ViS2l0V2Vi
U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJl
ZmVyZW5jZXNHZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQocHJpdi0+cHJlZmVy
ZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9vZmZs
aW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZToKKyAqCisgKiBFbmFibGUvRGlzYWJsZSBIVE1MNSBv
ZmZsaW5lIHdlYiBhcHBsaWNhdGlvbiBjYWNoZSBzdXBwb3J0LiBIVE1MNSBvZmZsaW5lCisgKiBX
ZWIgQXBwbGljYXRpb24gQ2FjaGUgZW5zdXJlcyB3ZWIgYXBwbGljYXRpb25zIGFyZSBhdmFpbGFi
bGUgZXZlbiB3aGVuIHRoZQorICogdXNlciBpcyBub3QgY29ubmVjdGVkIHRvIHRoZSBuZXR3b3Jr
LgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxp
bmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5n
c1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFs
dWUgPSBXS1ByZWZlcmVuY2VzR2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHBy
aXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRPZmZsaW5lV2ViQXBwbGljYXRpb25D
YWNoZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2Jq
ZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtb2ZmbGluZS13ZWItYXBwbGlj
YXRpb24tY2FjaGUiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFi
bGVfaHRtbDVfbG9jYWxfc3RvcmFnZToKKyAqCisgKiBDaGVja3Mgd2hldGhlciBIVE1MNSBsb2Nh
bCBzdG9yYWdlIHN1cHBvcnQgaXMgZW5hYmxlZC4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBI
VE1MNSBsb2NhbCBzdG9yYWdlIHN1cHBvcnQgaXMgZW5hYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286
IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlCisgKiov
CitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3Rv
cmFnZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdl
YktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVy
biBXS1ByZWZlcmVuY2VzR2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7
Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2Fs
X3N0b3JhZ2U6CisgKgorICogRW5hYmxlL0Rpc2FibGUgSFRNTDUgbG9jYWwgc3RvcmFnZSBzdXBw
b3J0LiBIVE1MNSBsb2NhbCBzdG9yYWdlIHN1cHBvcnRzCisgKiBzaW1wbGUgc3luY2hyb25vdXMg
c3RvcmFnZSBhY2Nlc3MuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9sb2NhbF9zdG9yYWdlX2VuYWJsZQorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3Ms
IGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VC
X1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHBy
aXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZl
cmVuY2VzR2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYg
KGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZl
cmVuY2VzU2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5h
YmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1o
dG1sNS1sb2NhbC1zdG9yYWdlIik7Cit9CisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2RhdGFiYXNlX2VuYWJsZWQ6CisgKgorICogQ2hlY2tzIHdoZXRoZXIgSFRNTDUgZGF0YWJhc2Ug
c3RvcmFnZSBzdXBwb3J0IGlzIGVuYWJsZWQuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgSFRN
TDUgZGF0YWJhc2Ugc3VwcG9ydCBpcyBlbmFibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0
X3dlYl9zZXR0aW5nc19zZXRfZGF0YWJhc2VfZW5hYmxlZAorICoqLworZ2Jvb2xlYW4gd2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfZGF0YWJhc2VfZW5hYmxlZChXZWJLaXRXZWJTZXR0aW5ncyogc2V0
dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5H
UyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJp
diA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0RGF0YWJhc2Vz
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlOgorICoKKyAqIEVuYWJsZS9EaXNhYmxlIEhU
TUw1IGNsaWVudC1zaWRlIFNRTCBkYXRhYmFzZSBzdXBwb3J0LiBDbGllbnQtc2lkZQorICogU1FM
IGRhdGFiYXNlIGFsbG93cyB3ZWIgcGFnZXMgdG8gc3RvcmUgc3RydWN0dXJlZCBkYXRhIGFuZCBi
ZSBhYmxlIHRvCisgKiB1c2UgU1FMIHRvIG1hbmlwdWxhdGUgdGhhdCBkYXRhIGFzeW5jaHJvbm91
c2x5LgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0
bWw1X2RhdGFiYXNlCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9o
dG1sNV9kYXRhYmFzZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJs
ZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRp
bmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+
cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0RGF0YWJh
c2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBl
bmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0RGF0YWJhc2Vz
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rf
bm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1odG1sNS1kYXRhYmFzZSIpOworfQor
CisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcjoKKyAq
CisgKiBDaGVja3Mgd2hldGhlciBYU1MgYXVkaXRpbmcgaXMgZW5hYmxlZC4gCisgKgorICogUmV0
dXJuczogJVRSVUUgSWYgWFNTIGF1ZGl0aW5nIGlzIGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNv
OiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfeHNzX2F1ZGl0b3IKKyAqKi8KK2dib29s
ZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihXZWJLaXRXZWJT
ZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdz
UHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2Vz
R2V0WFNTQXVkaXRvckVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdl
YmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvcjoKKyAqCisgKiBXaGV0aGVy
IHRvIGVuYWJsZS9kaXNhYmxlIHRoZSBYU1MgQXVkaXRvci4gVGhpcyBmZWF0dXJlIGZpbHRlcnMg
c29tZSBraW5kcyBvZgorICogcmVmbGVjdGl2ZSBYU1MgYXR0YWNrcyBvbiB2dWxuZXJhYmxlIHdl
YiBzaXRlcy4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV94c3NfYXVkaXRvcgorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVf
eHNzX2F1ZGl0b3IoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVk
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5n
cykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnBy
aXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFhTU0F1ZGl0
b3JFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVu
YWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRYU1NBdWRpdG9y
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rf
bm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS14c3MtYXVkaXRvciIpOworfQorCisv
KioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nOgor
ICoKKyAqIENoZWNrIHdoZXRoZXIgdGhlIGZyYW1lIGZsYXR0ZXJpbmcgaXMgZW5hYmxlZC4gSWYg
dGhlIGZyYW1lIGZsYXR0ZXJpbmcgaXMKKyAqIGVuYWJsZWQsIHRoZW4gZWFjaCBzdWJmcmFtZSB3
aWxsIGJlIGV4cGFuZGVkIHRvIGl0cyBjb250ZW50LCB3aGljaCB3aWxsIGZsYXR0ZW4KKyAqIGFs
bCB0aGUgZnJhbWVzIHRvIGJlY29tZSBvbmUgc2Nyb2xsYWJsZSBwYWdlLgorICoKKyAqIFJldHVy
bnM6ICVUUlVFIElmIGZyYW1lIGZsYXR0ZXJpbmcgaXMgZW5hYmxlZC4KKyAqCisgKiBAc2VlX2Fs
c286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nCisgKiov
CitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmlu
ZyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktp
dFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBX
S1ByZWZlcmVuY2VzR2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7
Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0
ZW5pbmc6CisgKgorICogQVBJIHRvIGVuYWJsZS9kaXNhYmxlIGZyYW1lIGZpbHRlcmluZyBzdXBw
b3J0LiBXaXRoIHRoaXMgc2V0dGluZyBlYWNoIHN1YmZyYW1lIGlzIGV4cGFuZGVkCisgKiB0byBp
dHMgY29udGVudHMsIHdoaWNoIHdpbGwgZmxhdHRlbiBhbGwgdGhlIGZyYW1lcyB0byBiZWNvbWUg
b25lIHNjcm9sbGFibGUgcGFnZS4KKyAqIE9uIHRvdWNoIGRldmljZXMsIGl0IGlzIGRlc2lyZWQg
dG8gbm90IGhhdmUgYW55IHNjcm9sbGFibGUgc3ViIHBhcnRzIG9mIHRoZSBwYWdlIGFzCisgKiBp
dCByZXN1bHRzIGluIGEgY29uZnVzaW5nIHVzZXIgZXhwZXJpZW5jZSwgd2l0aCBzY3JvbGxpbmcg
c29tZXRpbWVzIHNjcm9sbGluZyBzdWIgcGFydHMKKyAqIGFuZCBhdCBvdGhlciB0aW1lcyBzY3Jv
bGxpbmcgdGhlIHBhZ2UgaXRzZWxmLiBGb3IgdGhpcyByZWFzb24gaWZyYW1lcyBhbmQgZnJhbWVz
ZXRzIGFyZQorICogYmFyZWx5IHVzYWJsZSBvbiB0b3VjaCBkZXZpY2VzLgorICoKKyAqIEBzZWVf
YWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcKKyAq
Ki8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmco
V2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAg
V2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jv
b2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEZyYW1lRmxhdHRlbmluZ0VuYWJs
ZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldEZyYW1lRmxhdHRlbmluZ0Vu
YWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtZnJhbWUtZmxhdHRlbmluZyIpOworfQor
CisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zOgorICoKKyAq
IENoZWNrIGlmIHBsdWdpbnMgYXJlIGVuYWJsZWQuIAorICoKKyAqIFJldHVybnM6ICVUUlVFIElm
IFBsdWdpbnMgYXJlIGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9lbmFibGVfcGx1Z2lucworICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZW5hYmxlX3BsdWdpbnMoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBG
QUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+
cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldFBsdWdpbnNFbmFibGVkKHByaXYtPnBy
ZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVf
cGx1Z2luczoKKyAqCisgKiBFbmFibGUvRGlzYWJsZSBwbHVnaW4gc3VwcG9ydC4KKyAqCisgKiBA
c2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zCisgKiovCit2
b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zKFdlYktpdFdlYlNldHRp
bmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRp
bmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRW
YWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRQbHVnaW5zRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7
CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXS1ByZWZlcmVuY2VzU2V0UGx1Z2luc0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29s
KWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFi
bGUtcGx1Z2lucyIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9qYXZhOgorICoKKyAqIENoZWNrIHdoZXRoZXIgdGhlIHN1cHBvcnQgZm9yIEphdmEgaXMgZW5h
YmxlZC4gSmF2YSBjb250ZW50cworICogZW1iZWRkZWQgdmlhICZsdDtvYmplY3QmZ3Q7IG9yICZs
dDtlbWJlZCZndDsgd2lsbCBub3QgYmUKKyAqIGRpc3BsYXllZCBpZiB0aGUgcmV0dXJuIHZhbHVl
IG9mIHRoaXMgZnVuY3Rpb24gaXMgRkFMU0UuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgSmF2
YSBpcyBlbmFibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
ZW5hYmxlX2phdmEKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9qYXZhKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAg
V2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0
dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisK
Ky8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmE6CisgKgorICogRW5h
YmxlIG9yIGRpc2FibGUgc3VwcG9ydCBmb3IgdGhlIEphdmEuIFRoaXMgcHJvcGVydHkgbmVlZHMg
dG8gYmUgZW5hYmxlZAorICogZm9yIGRpc3BsYXlpbmcgamF2YSBjb250ZW50cyB2aWEgICZsdDtv
YmplY3QmZ3Q7IG9yICZsdDtlbWJlZCZndDsgdGFnLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfZW5hYmxlX2phdmEoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVh
biBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5H
UyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0
dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dl
dEphdmFFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09
IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhRW5h
YmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90
aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1qYXZhIik7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRp
Y2FsbHk6CisgKgorICogUmV0dXJucyB3aGV0aGVyIEphdmFzY3JpcHQgY2FuIG9wZW4gcG9wdXAg
d2luZG93cyBhdXRvbWF0aWNhbGx5IHdpdGhvdXQKKyAqIHVzZXIgaW50ZXJ2ZW50aW9uLgorICoK
KyAqIFJldHVybnM6ICVUUlVFIElmIEphdmFzY3JpcHQgY2FuIG9wZW4gd2luZG93IGF1dG9tYXRp
Y2FsbHkuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhc2Ny
aXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseQorICoqLworZ2Jvb2xlYW4gd2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2Fs
bHkoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJL
aXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4g
V0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkocHJp
di0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2ph
dmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5OgorICoKKyAqIFdoZXRoZXIg
SmF2YVNjcmlwdCBjYW4gb3BlbiBwb3B1cCB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgd2l0aG91dCB1
c2VyCisgKiBpbnRlcnZlbnRpb24uCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseQorICoqLwor
dm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3Nf
YXV0b21hdGljYWxseShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJs
ZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRp
bmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+
cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0SmF2YVNj
cmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcyk7CisgICAg
aWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1By
ZWZlcmVuY2VzU2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShwcml2LT5w
cmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNU
KHNldHRpbmdzKSwgImphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5Iik7
Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19h
dWRpdGluZzoKKyAqCisgKiBHZXQgd2hldGhlciB0aGUgc3VwcG9ydCBmb3IgJmx0O2EgcGluZyZn
dDsgaXMgZW5hYmxlZC4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBoeXBlci1saW5rIGF1ZGl0
aW5nIGlzIGVuYWJsZWQKKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0
X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoV2ViS2l0V2ViU2V0dGluZ3MqIHNl
dHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElO
R1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHBy
aXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEh5cGVybGlu
a0F1ZGl0aW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZzoKKyAqCisgKiBFbmFi
bGUgb3IgZGlzYWJsZSBzdXBwb3J0IGZvciAmbHQ7YSBwaW5nJmd0Oy4KKyAqCisgKiBAc2VlX2Fs
c286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcKKyAq
Ki8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGlu
ZyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAg
ICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBn
Ym9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0SHlwZXJsaW5rQXVkaXRpbmdF
bmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJs
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRIeXBlcmxpbmtBdWRp
dGluZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2Jq
ZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5n
Iik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViU2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTE3M2I4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViU2V0dGluZ3MuaApAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBKYW4gTWljaGFlbCBBbG9uem8gPGptYWxvbnpvQGdtYWlsLmNvbQorICogUG9y
dGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFdlYlNldHRpbmdzX2gKKyNkZWZpbmUgV2ViS2l0
V2ViU2V0dGluZ3NfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxn
bGliLW9iamVjdC5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VC
X1NFVFRJTkdTICAgICAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3R5cGUoKSkKKyNk
ZWZpbmUgV0VCS0lUX1dFQl9TRVRUSU5HUyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19J
TlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNl
dHRpbmdzKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9TRVRUSU5HU19DTEFTUyhrbGFzcykgICAgKEdf
VFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1Ms
IFdlYktpdFdlYlNldHRpbmdzQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1NFVFRJTkdT
KG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9U
WVBFX1dFQl9TRVRUSU5HUykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfU0VUVElOR1NfQ0xBU1Mo
a2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VC
X1NFVFRJTkdTKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9TRVRUSU5HU19HRVRfQ0xBU1Mob2JqKSAg
KEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfU0VUVElO
R1MsIFdlYktpdFdlYlNldHRpbmdzQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vi
U2V0dGluZ3MgV2ViS2l0V2ViU2V0dGluZ3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0
dGluZ3NDbGFzcyBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFdlYlNldHRpbmdzUHJpdmF0ZSBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU7CisKK3N0cnVjdCBf
V2ViS2l0V2ViU2V0dGluZ3MgeworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworCisgICAg
V2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJT
ZXR0aW5nc0NsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgLyog
UGFkZGluZyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAg
IHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jl
c2VydmVkNCkgKHZvaWQpOworfTsKKworV0tfRVhQT1JUIEdUeXBlCit3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF90eXBlKHZvaWQpOworCitXS19FWFBPUlQgV2ViS2l0V2ViU2V0dGluZ3MgKgord2Vi
a2l0X3dlYl9zZXR0aW5nc19uZXcodm9pZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQgICAgICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQgICAgICAgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFu
IGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2F1dG9fbG9hZF9pbWFnZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0
dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2F1dG9fbG9hZF9pbWFnZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tf
RVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25v
cmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7
CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19p
Z25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5n
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgor
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2Nh
Y2hlICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9p
ZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9u
X2NhY2hlICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdi
b29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlICAgICAgICAgICAgICAgICAoV2Vi
S2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsK
KworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9kYXRhYmFzZV9l
bmFibGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0
aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVf
aHRtbDVfZGF0YWJhc2UgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBz
ZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CitXS19FWFBPUlQgZ2Jvb2xl
YW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvciAgICAgICAgICAg
ICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JU
IHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvciAgICAgICAg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyAgICAgICAgICAgICAgICAgICAgKFdl
YktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2Vi
X3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxl
ZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxl
X3BsdWdpbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyog
c2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5h
YmxlX3BsdWdpbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQg
Z2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tf
RVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxs
eSAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGlj
YWxseSAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4g
ZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
ZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0
aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19z
ZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJT
ZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitHX0VO
RF9ERUNMUworCisjZW5kaWYgLyogd2Via2l0d2Vic2V0dGluZ3NfaCAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3Mu
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGM0YzM5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNl
dHRpbmdzLmMKQEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSmFu
IE1pY2hhZWwgQWxvbnpvCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEg
TW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlIDxnbGliLmg+Cisj
aW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHdlYmtpdDJndGsuaD4KKworc3RhdGljIHZv
aWQgdGVzdFdlYktpdFdlYlNldHRpbmdzU2NyaXB0cyh2b2lkKQoreworICAgIFdlYktpdFdlYlNl
dHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBT
Y3JpcHRzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdAorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fz
c2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3Mp
KTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b2xvYWQodm9pZCkK
K3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdz
X25ldygpOworCisgICAgLy8gQnkgZGVmYXVsdCBhdXRvLWxvYWQtaW1hZ2UgaXMgdHJ1ZQorICAg
IGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGlu
Z3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRp
bmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9f
bG9hZF9pbWFnZXMoc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNl
dHRpbmdzTG9hZEljb25JZ25vcmluZ0ltYWdlTG9hZFByZWYodm9pZCkKK3sKKyAgICBXZWJLaXRX
ZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAg
Ly8gbG9hZC1pY29uLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZiBpcyBmYWxzZSBieSBkZWZhdWx0
CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9y
aW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZShzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZShzZXR0
aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNf
aWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKHNldHRpbmdzKSk7Cit9CisKK3N0
YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc09mZmxpbmVBcHBDYWNoZSh2b2lkKQorewor
ICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3
KCk7CisgICAgCisgICAgLy8gT2ZmbGluZSBhcHBsaWNhdGlvbiBjYWNoZSBpcyB0cnVlIGJ5IGRl
ZmF1bHQKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGlu
ZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoc2V0dGluZ3MsIEZB
TFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxp
bmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRl
c3RXZWJLaXRXZWJTZXR0aW5nc0xvY2FsU3RvcmFnZSh2b2lkKQoreworICAgIFdlYktpdFdlYlNl
dHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBM
b2NhbCBzdG9yYWdlIGlzIGVuYWJsZSBieSBkZWZhdWx0CisgICAgZ19hc3NlcnQod2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0dGluZ3MpKTsKKyAg
ICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0
aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFi
bGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0aW5ncykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0
V2ViS2l0V2ViU2V0dGluZ3NEYXRhYmFzZSh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdz
ICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBIVE1MNSBk
YXRhYmFzZSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9kYXRhYmFzZV9lbmFibGVkKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzLCBGQUxTRSk7CisgICAg
Z19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2RhdGFiYXNlX2VuYWJsZWQoc2V0dGlu
Z3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzWHNzQXVkaXRvcih2
b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0
dGluZ3NfbmV3KCk7CisKKyAgICAvLyBYU1MgQXVkaXRvciBpcyBlbmFibGVkIGJ5IGRlZmF1bHQK
KyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3Io
c2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfeHNzX2F1ZGl0
b3Ioc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RX
ZWJLaXRXZWJTZXR0aW5nc0ZyYW1lRmxhdHRlcmluZyh2b2lkKQoreworICAgIFdlYktpdFdlYlNl
dHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBG
cmFtZSBmbGF0dGVyaW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKKyAgICBnX2Fzc2VydCghd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MpKTsK
KyAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0
aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxl
X2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktp
dFdlYlNldHRpbmdzUGx1Z2lucyh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0
aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBQbHVnaW5zIGFyZSBl
bmFibGVkIGJ5IGRlZmF1bHQKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9l
bmFibGVfcGx1Z2lucyhzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV9wbHVnaW5zKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKHNldHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2b2lk
IHRlc3RXZWJLaXRXZWJTZXR0aW5nc0phdmEodm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5n
cyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gSmF2YSBp
cyBlbmFibGVkIGJ5IGRlZmF1bHQKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9lbmFibGVfamF2YShzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV9qYXZhKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKHNldHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RX
ZWJLaXRXZWJTZXR0aW5nc0F1dG9PcGVuV2luZG93KHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0
dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEJ5
IGRlZmF1bHQsIEphdmFTY3JpcHQgY2FuIG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IGlzIGRp
c2FibGVkLgorICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhc2NyaXB0
X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncykpOworICAgIHdlYmtpdF93
ZWJfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5
KHNldHRpbmdzLCBUUlVFKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9q
YXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncykpOworfQor
CitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NIeXBlckxpbmtBdWRpdGluZyh2b2lk
KQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGlu
Z3NfbmV3KCk7CisKKyAgICAvLyBCeSBkZWZhdWx0IGh5cGVyIGxpbmsgYXVkaXRpbmcgaXMgZGlz
YWJsZWQuCisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBl
cmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9l
bmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRpbmdzLCBUUlVFKTsKKyAgICBnX2Fzc2VydCh3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRpbmdz
KSk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICBnX3RocmVh
ZF9pbml0KE5VTEwpOworICAgIGd0a190ZXN0X2luaXQoJmFyZ2MsICZhcmd2LCBOVUxMKTsKKwor
ICAgIGdfdGVzdF9idWdfYmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvIik7CisgICAgZ190
ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5ncy9zY3JpcHRzIiwgdGVzdFdlYktpdFdl
YlNldHRpbmdzU2NyaXB0cyk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0
aW5ncy9hdXRvbG9hZCIsIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0F1dG9sb2FkKTsKKyAgICBnX3Rl
c3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL2xvYWRpY29uaWdub3JpbmdpbWFnZWxv
YWRwcmVmIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzTG9hZEljb25JZ25vcmluZ0ltYWdlTG9hZFBy
ZWYpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdDIvd2Vic2V0dGluZ3Mvb2ZmbGluZWFw
cGNhY2hlIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzT2ZmbGluZUFwcENhY2hlKTsKKyAgICBnX3Rl
c3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL2xvY2Fsc3RvcmFnZSIsIHRlc3RXZWJL
aXRXZWJTZXR0aW5nc0xvY2FsU3RvcmFnZSk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0
Mi93ZWJzZXR0aW5ncy9kYXRhYmFzZSIsIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0RhdGFiYXNlKTsK
KyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL3hzc2F1ZGl0b3IiLCB0
ZXN0V2ViS2l0V2ViU2V0dGluZ3NYc3NBdWRpdG9yKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93
ZWJraXQyL3dlYnNldHRpbmdzL2ZyYW1lZmxhdHRlcmluZyIsIHRlc3RXZWJLaXRXZWJTZXR0aW5n
c0ZyYW1lRmxhdHRlcmluZyk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0
aW5ncy9wbHVnaW5zIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzUGx1Z2lucyk7CisgICAgZ190ZXN0
X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5ncy9qYXZhIiwgdGVzdFdlYktpdFdlYlNldHRp
bmdzSmF2YSk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5ncy9hdXRv
b3BlbndpbmRvdyIsIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0F1dG9PcGVuV2luZG93KTsKKyAgICBn
X3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL2h5cGVybGlua2F1ZGl0aW5nIiwg
dGVzdFdlYktpdFdlYlNldHRpbmdzSHlwZXJMaW5rQXVkaXRpbmcpOworCisgICAgcmV0dXJuIGdf
dGVzdF9ydW4gKCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3dlYmtpdDJndGsuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dl
YmtpdDJndGsuaAppbmRleCBkZmViYmI0Li5lMDgxNzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyZ3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mmd0ay5oCkBAIC0yNCw1ICsyNCw2IEBACiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRX
ZWJWaWV3QmFzZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlldy5oPgorI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0V2ViU2V0dGluZ3MuaD4KIAogI2VuZGlmIC8qIF9fV0VCS0lUX0hf
XyAqLwotLSAKMS43LjQuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108640</attachid>
            <date>2011-09-26 00:56:26 -0700</date>
            <delta_ts>2011-09-26 06:23:51 -0700</delta_ts>
            <desc>WebKitWebSettings</desc>
            <filename>WebKitWebSettings.diff</filename>
            <type>text/plain</type>
            <size>53099</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhOGFmY2QzLi40ZWZhYzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTEtMDktMjYgIE5heWFuIEt1bWFyIEsgIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4KKwor
ICAgICAgICBbR1RLXSBBZGQgV2ViS2l0V2ViU2V0dGluZ3MgR1RLKyBBUEkncworCisgICAgICAg
IFdlYktpdFdlYlNldHRpbmdzIEdUSysgb2JqZWN0IGlzIGNyZWF0ZWQgYW5kIGZpcnN0IHNldCBv
ZgorICAgICAgICBBUEkncyBhcmUgd3JpdHRlbiB0byBnZXQgb3Igc2V0IHRoZSBwcm9wZXJ0aWVz
IG9mIFdlYktpdFdlYlNldHRpbmdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjgzNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViU2V0
dGluZ3NQcml2YXRlOjpfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKToKKyAgICAgICAgKHdlYmtp
dFdlYlNldHRpbmdzU2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2ViU2V0dGluZ3NHZXRQ
cm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2NsYXNzX2luaXQpOgorICAg
ICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0
dGluZ3NfbmV3KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZh
c2NyaXB0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2Ny
aXB0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMp
OgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFn
ZV9sb2FkX3ByZWZlcmVuY2UpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9h
ZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKToKKyAgICAgICAgKHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBw
bGljYXRpb25fY2FjaGUpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxl
X2h0bWw1X2xvY2FsX3N0b3JhZ2UpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
ZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3IpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9wbHVnaW5zKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9qYXZhKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZh
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5f
d2luZG93c19hdXRvbWF0aWNhbGx5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0
X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcpOgorICAgICAg
ICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmM6IEFkZGVk
LgorICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdzU2NyaXB0cyk6CisgICAgICAgICh0ZXN0
V2ViS2l0V2ViU2V0dGluZ3NBdXRvbG9hZCk6CisgICAgICAgICh0ZXN0V2ViS2l0V2ViU2V0dGlu
Z3NMb2FkSWNvbklnbm9yaW5nSW1hZ2VMb2FkUHJlZik6CisgICAgICAgICh0ZXN0V2ViS2l0V2Vi
U2V0dGluZ3NPZmZsaW5lQXBwQ2FjaGUpOgorICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdz
TG9jYWxTdG9yYWdlKToKKyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc0RhdGFiYXNlKToK
KyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc1hzc0F1ZGl0b3IpOgorICAgICAgICAodGVz
dFdlYktpdFdlYlNldHRpbmdzRnJhbWVGbGF0dGVyaW5nKToKKyAgICAgICAgKHRlc3RXZWJLaXRX
ZWJTZXR0aW5nc1BsdWdpbnMpOgorICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdzSmF2YSk6
CisgICAgICAgICh0ZXN0V2ViS2l0V2ViU2V0dGluZ3NBdXRvT3BlbldpbmRvdyk6CisgICAgICAg
ICh0ZXN0V2ViS2l0V2ViU2V0dGluZ3NIeXBlckxpbmtBdWRpdGluZyk6CisgICAgICAgIChtYWlu
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyZ3RrLmg6CisKIDIwMTEtMDkt
MjUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBGaW5pc2ggcmVt
b3ZpbmcgUExBVEZPUk0oQlJFV01QKSBieSByZW1vdmluZyBhc3NvY2lhdGVkIGNvZGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUuYW0KaW5kZXggMDM4NWQ3NS4uOTYwMDJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0K
QEAgLTcxLDYgKzcxLDcgQEAgbGlid2Via2l0Mmd0a2luY2x1ZGVfSEVBREVSUyA9IFwKIAkkKFdl
YktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaCBcCiAJJChXZWJLaXQy
KS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAogCSQoV2ViS2l0MikvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuaCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkv
Z3RrL3dlYmtpdDJndGsuaAogCiB3ZWJraXQyX2J1aWx0X3NvdXJjZXMgKz0gXApAQCAtNDU0LDYg
KzQ1NSw4IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdF
QktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfU09VCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwIFwKKwlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwKQEAgLTk4OSw3ICs5OTIsOCBAQCBE
SVNUQ0xFQU5GSUxFUyArPSBcCiAjIFVuaXQgdGVzdHMKIFRFU1RfUFJPR1MgKz0gXAogCVByb2dy
YW1zL3VuaXR0ZXN0cy93ZWJraXQyL3Rlc3R3ZWJjb250ZXh0IFwKLQlQcm9ncmFtcy91bml0dGVz
dHMvd2Via2l0Mi90ZXN0d2VidmlldworCVByb2dyYW1zL3VuaXR0ZXN0cy93ZWJraXQyL3Rlc3R3
ZWJ2aWV3IFwKKwlQcm9ncmFtcy91bml0dGVzdHMvd2Via2l0Mi90ZXN0d2Vic2V0dGluZ3MKIAog
bm9pbnN0X1BST0dSQU1TICs9ICQoVEVTVF9QUk9HUykKIHdlYmtpdDJfdGVzdHNfY2ZsYWdzID0g
XApAQCAtMTAyNSw2ICsxMDI5LDExIEBAIFByb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3
ZWJ2aWV3X0NGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19jZmxhZ3MpCiBQcm9ncmFtc191bml0dGVz
dHNfd2Via2l0Ml90ZXN0d2Vidmlld19MREFERCA9ICQod2Via2l0Ml90ZXN0c19sZGFkZCkKIFBy
b2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJ2aWV3X0xERkxBR1MgPSAkKHdlYmtpdDJf
dGVzdHNfbGRmbGFncykKIAorUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnNldHRp
bmdzX1NPVVJDRVMgPSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0
d2Vic2V0dGluZ3MuYworUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnNldHRpbmdz
X0NGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19jZmxhZ3MpCitQcm9ncmFtc191bml0dGVzdHNfd2Vi
a2l0Ml90ZXN0d2Vic2V0dGluZ3NfTERBREQgPSAkKHdlYmtpdDJfdGVzdHNfbGRhZGQpCitQcm9n
cmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0d2Vic2V0dGluZ3NfTERGTEFHUyA9ICQod2Via2l0
Ml90ZXN0c19sZGZsYWdzKQorCiAjIFdlYktpdFdlYlByb2Nlc3MKIGxpYmV4ZWNfUFJPR1JBTVMg
Kz0gXAogCVByb2dyYW1zL1dlYktpdFdlYlByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjk2ZjgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwCkBAIC0wLDAg
KzEsODQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENocmlzdGlhbiBEeXdhbiA8Y2hy
aXN0aWFuQGltZW5kaW8uY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA5IEphbiBN
aWNoYWVsIEFsb256bworICogQ29weXJpZ2h0IChDKSAyMDA5IE1vdmlhbCBDcmVhdGl2ZSBUZWNo
bm9sb2dpZXMgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBTLkwuCisgKiBQb3J0
aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJTZXR0
aW5ncy5oIgorCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYktpdDIv
V0tQcmVmZXJlbmNlcy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tUeXBlLmg+CisjaW5jbHVkZSA8
Z2xpYi9naTE4bi1saWIuaD4KKworc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgewor
cHVibGljOgorICAgIFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXM7CisKKyAgICBfV2ViS2l0
V2ViU2V0dGluZ3NQcml2YXRlKCkKKyAgICB7CisgICAgICAgIHByZWZlcmVuY2VzID0gV0tQcmVm
ZXJlbmNlc0NyZWF0ZSgpOworCisgICAgICAgIC8qIEJ5IGRlZmF1bHQsIG9mZmxpbmUtd2ViLWFw
cGxpY2F0aW9uLWNhY2hlIGlzIHRydWUgaW4gV2ViS2l0LUdUSyAqLworICAgICAgICBXS1ByZWZl
cmVuY2VzU2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHByZWZlcmVuY2VzLCB0
cnVlKTsKKyAgICAgICAgLyogQnkgZGVmYXVsdCwgamF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dz
LWF1dG9tYXRpY2FsbHkgaXMgZmFsc2UgaW4gV2ViS2l0LUdUSyAqLworICAgICAgICBXS1ByZWZl
cmVuY2VzU2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShwcmVmZXJlbmNl
cywgZmFsc2UpOworICAgICAgICAvKiBCeSBkZWZhdWx0LCBlbmFibGUtaHlwZXJsaW5rLWF1ZGl0
aW5nIGlzIGZhbHNlIGluIFdlYktpdC1HVEsgKi8KKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldEh5
cGVybGlua0F1ZGl0aW5nRW5hYmxlZChwcmVmZXJlbmNlcywgZmFsc2UpOworICAgIH0KK307CisK
Ky8qKgorICogU0VDVElPTjp3ZWJraXR3ZWJzZXR0aW5ncworICogQHNob3J0X2Rlc2NyaXB0aW9u
OiBDb250cm9sIHRoZSBiZWhhdmlvdXIgb2YgYSAjV2ViS2l0V2ViVmlldworICoKKyAqICNXZWJL
aXRXZWJTZXR0aW5ncyBjYW4gYmUgYXBwbGllZCB0byBhICNXZWJLaXRXZWJWaWV3IHRvIGNvbnRy
b2wgdGV4dCBlbmNvZGluZywgCisgKiBjb2xvciwgZm9udCBzaXplcywgcHJpbnRpbmcgbW9kZSwg
c2NyaXB0IHN1cHBvcnQsIGxvYWRpbmcgb2YgaW1hZ2VzIGFuZCB2YXJpb3VzIG90aGVyIHRoaW5n
cy4gCisgKiBBZnRlciBjcmVhdGlvbiwgYSAjV2ViS2l0V2ViU2V0dGluZ3Mgb2JqZWN0IGNvbnRh
aW5zIGRlZmF1bHQgc2V0dGluZ3MuIAorICoKKyAqIDxpbmZvcm1hbGV4YW1wbGU+PHByb2dyYW1s
aXN0aW5nPgorICogLzwhLS0gLS0+KiBDcmVhdGUgYSBuZXcgd2Vic2V0dGluZ3MgYW5kIGRpc2Fi
bGUgamF2YSBzY3JpcHQgKjwhLS0gLS0+LworICogV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdz
ID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcgKCk7CisgKiBnX29iamVjdF9zZXQgKEdfT0JKRUNU
KHNldHRpbmdzKSwgImVuYWJsZS1zY3JpcHRzIiwgRkFMU0UsIE5VTEwpOworICoKKyAqIC88IS0t
IC0tPiogQXBwbHkgdGhlIHJlc3VsdCAqPCEtLSAtLT4vCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0
X3NldHRpbmdzIChXRUJLSVRfV0VCX1ZJRVcobXlfd2VidmlldyksIHNldHRpbmdzKTsKKyAqIDwv
cHJvZ3JhbWxpc3Rpbmc+PC9pbmZvcm1hbGV4YW1wbGU+CisgKi8KKworCitHX0RFRklORV9UWVBF
KFdlYktpdFdlYlNldHRpbmdzLCB3ZWJraXRfd2ViX3NldHRpbmdzLCBHX1RZUEVfT0JKRUNUKQor
CitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9QX0VOQUJMRV9KQVZBU0NSSVBULAorICAg
IFBST1BfQVVUT19MT0FEX0lNQUdFUywKKyAgICBQUk9QX0xPQURTX0lDT05TX0lHTk9SSU5HX0lN
QUdFX0xPQURfUFJFRkVSRU5DRSwKKyAgICBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNB
VElPTl9DQUNIRSwKKyAgICBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFLAorICAgIFBS
T1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNFLAorICAgIFBST1BfRU5BQkxFX1hTU19BVURJVE9SLAor
ICAgIFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRURVJJTkcsCisgICAgUFJPUF9FTkFCTEVfUExVR0lO
UywKKyAgICBQUk9QX0VOQUJMRV9KQVZBLAorICAgIFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9X
SU5ET1dTX0FVVE9NQVRJQ0FMTFksCisgICAgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5H
LAorfTsKKworc3RhdGljIHZvaWQgd2Via2l0V2ViU2V0dGluZ3NTZXRQcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyog
cHNwZWMpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzID0gV0VCS0lUX1dFQl9T
RVRUSU5HUyhvYmplY3QpOworIAorICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9Q
X0VOQUJMRV9KQVZBU0NSSVBUOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFi
bGVfamF2YXNjcmlwdChzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVVUT19MT0FEX0lNQUdFUzoKKyAgICAgICAgd2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncywgZ192YWx1ZV9n
ZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTE9BRFNf
SUNPTlNfSUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGRVJFTkNFOgorICAgICAgICB3ZWJraXRfd2Vi
X3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2Uo
c2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRToKKyAgICAg
ICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9u
X2NhY2hlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFHRToKKyAgICAgICAg
d2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0dGlu
Z3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRToKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFu
KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfWFNTX0FVRElU
T1I6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvcihz
ZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRURVJJTkc6CisgICAgICAgIHdlYmtpdF93ZWJf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRpbmdzLCBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVf
UExVR0lOUzoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMo
c2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZBOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9lbmFibGVfamF2YShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FV
VE9NQVRJQ0FMTFk6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRf
Y2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29s
ZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFlQRVJM
SU5LX0FVRElUSU5HOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHlw
ZXJsaW5rX2F1ZGl0aW5nKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJ
RF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAg
ICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlNldHRpbmdzR2V0UHJvcGVydHkoR09iamVj
dCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVj
KQoreworICAgIFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyA9IFdFQktJVF9XRUJfU0VUVElO
R1Mob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9QX0VOQUJM
RV9KQVZBU0NSSVBUOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncykpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfQVVUT19MT0FEX0lNQUdFUzoKKyAgICAgICAgZ192YWx1ZV9z
ZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdl
cyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTE9BRFNfSUNPTlNf
SUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGRVJFTkNFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29s
ZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmluZ19p
bWFnZV9sb2FkX3ByZWZlcmVuY2Uoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRToKKyAgICAgICAgZ192
YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX29m
ZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFHRToKKyAgICAgICAgZ192YWx1
ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1
X2xvY2FsX3N0b3JhZ2Uoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X0VOQUJMRV9IVE1MNV9EQVRBQkFTRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1
ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdz
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1I6Cisg
ICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRURVJJTkc6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xl
YW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5n
KHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfUExVR0lO
UzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0VOQUJMRV9KQVZBOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YShzZXR0aW5ncykpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJ
Q0FMTFk6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRp
bmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FV
RElUSU5HOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRpbmdzKSk7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9Q
RVJUWV9JRChvYmplY3QsIHByb3BJZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRXZWJT
ZXR0aW5nc0NsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9
IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBnT2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9
IHdlYmtpdFdlYlNldHRpbmdzU2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNzLT5nZXRfcHJv
cGVydHkgPSB3ZWJraXRXZWJTZXR0aW5nc0dldFByb3BlcnR5OworCisgICAgR1BhcmFtRmxhZ3Mg
ZmxhZ3MgPSBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8
IEdfUEFSQU1fQ09OU1RSVUNUKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6
ZW5hYmxlLWphdmFzY3JpcHQKKyAgICAqCisgICAgKiBUaGlzIHByb3BlcnR5IG5lZWRzIHRvIGJl
IHNldCB0byBlbmFibGUgdGhlIGV4ZWN1dGlvbiBvZiAKKyAgICAqIEphdmFzY3JpcHQgd2l0aGlu
IGEgcGFnZS4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfRU5BQkxFX0pBVkFTQ1JJUFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWphdmFzY3JpcHQiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEph
dmFTY3JpcHQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF8oIkVuYWJsZSBKYXZhU2NyaXB0IGxhbmd1YWdlcy4iKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bGFncykpOworICAgIAorICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6YXV0by1sb2Fk
LWltYWdlcworICAgICoKKyAgICAqIERldGVybWluZXMgd2hldGhlciBpbWFnZXMgc2hvdWxkIGJl
IGF1dG9tYXRpY2FsbHkgbG9hZGVkIG9yIG5vdC4KKyAgICAqIE9uIGRldmljZXMsIHdoZXJlIG5l
dHdvcmsgYmFuZHdpZHRoIGlzIG9mIGNvbmNlcm4sIGl0IG1pZ2h0IGJlCisgICAgKiB1c2VmdWwg
dG8gdHVybiB0aGlzIHByb3BlcnR5IG9mZi4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBST1BfQVVUT19MT0FEX0lNQUdFUywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJhdXRvLWxvYWQtaW1hZ2Vz
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF8oIkF1dG8gTG9hZCBJbWFnZXMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkxvYWQgaW1hZ2VzIGF1dG9tYXRpY2FsbHku
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ3MpKTsKKyAgICAKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRp
bmdzOmxvYWRzLWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZQorICAgICoKKyAg
ICAqIEJ5IGVuYWJsaW5nIHRoaXMgcHJvcGVydHksIHNpdGUgaWNvbnMgKGUuZywgZmF2aWNvbikg
d2lsbCBiZSBsb2FkZWQKKyAgICAqIGlycmVzcGVjdGl2ZSBvZiB0aGUgdmFsdWUgb2YgI09iamVj
dDphdXRvLWxvYWQtaW1hZ2VzLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJPUF9MT0FEU19JQ09OU19JR05PUklOR19JTUFHRV9MT0FEX1BSRUZFUkVOQ0Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVh
bigibG9hZHMtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmZXJlbmNlIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkxvYWRz
IFNpdGUgSWNvbnMgaWdub3JpbmcgaW1hZ2UgbG9hZCBwcmVmZXJlbmNlIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVy
IHRvIGxvYWQgc2l0ZSBpY29uIGlnbm9yaW5nIGltYWdlIGxvYWQgcHJlZmVyZW5jZS4iKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZB
TFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxl
LW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlCisgICAgKgorICAgICogV2hldGhlciB0byBl
bmFibGUgSFRNTDUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUgc3VwcG9ydC4gT2ZmbGlu
ZQorICAgICogV2ViIEFwcGxpY2F0aW9uIENhY2hlIGVuc3VyZXMgd2ViIGFwcGxpY2F0aW9ucyBh
cmUgYXZhaWxhYmxlIGV2ZW4gd2hlbgorICAgICogdGhlIHVzZXIgaXMgbm90IGNvbm5lY3RlZCB0
byB0aGUgbmV0d29yay4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBST1BfRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1v
ZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgb2ZmbGluZSB3ZWIgYXBw
bGljYXRpb24gY2FjaGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIG9mZmxpbmUgd2ViIGFwcGxp
Y2F0aW9uIGNhY2hlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0
V2ViU2V0dGluZ3M6ZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2U6CisgICAgKgorICAgICogV2hl
dGhlciB0byBlbmFibGUgSFRNTDUgbG9jYWxTdG9yYWdlIHN1cHBvcnQuIGxvY2FsU3RvcmFnZSBw
cm92aWRlcworICAgICogc2ltcGxlIHN5bmNocm9ub3VzIHN0b3JhZ2UgYWNjZXNzLgorICAgICoK
KyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfSFRNTDVf
TE9DQUxfU1RPUkFHRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19ib29sZWFuKCJlbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUg
SFRNTDUgTG9jYWwgU3RvcmFnZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFibGUgSFRNTDUgTG9jYWwg
U3RvcmFnZSBzdXBwb3J0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2Vi
S2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWh0bWw1LWRhdGFiYXNlOgorICAgICoKKyAgICAqIFdoZXRo
ZXIgdG8gZW5hYmxlIEhUTUw1IGNsaWVudC1zaWRlIFNRTCBkYXRhYmFzZSBzdXBwb3J0LiBDbGll
bnQtc2lkZQorICAgICogU1FMIGRhdGFiYXNlIGFsbG93cyB3ZWIgcGFnZXMgdG8gc3RvcmUgc3Ry
dWN0dXJlZCBkYXRhIGFuZCBiZSBhYmxlIHRvCisgICAgKiB1c2UgU1FMIHRvIG1hbmlwdWxhdGUg
dGhhdCBkYXRhIGFzeW5jaHJvbm91c2x5LgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh0bWw1
LWRhdGFiYXNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF8oIkVuYWJsZSBIVE1MNSBEYXRhYmFzZSIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBl
bmFibGUgSFRNTDUgZGF0YWJhc2Ugc3VwcG9ydCIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAv
KioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS14c3MtYXVkaXRvcgorICAgICoKKyAg
ICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBYU1MgQXVkaXRvci4gVGhpcyBmZWF0dXJlIGZpbHRl
cnMgc29tZSBraW5kcyBvZgorICAgICogcmVmbGVjdGl2ZSBYU1MgYXR0YWNrcyBvbiB2dWxuZXJh
YmxlIHdlYiBzaXRlcy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBST1BfRU5BQkxFX1hTU19BVURJVE9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS14c3MtYXVkaXRvciIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJF
bmFibGUgWFNTIEF1ZGl0b3IiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIHRoZSBYU1MgYXVkaXRv
ciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdzKSk7CisKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGlu
Z3M6ZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmcKKyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJs
ZSB0aGUgRnJhbWUgRmxhdHRlbmluZy4gV2l0aCB0aGlzIHNldHRpbmcgZWFjaCBzdWJmcmFtZSBp
cyBleHBhbmRlZAorICAgICogdG8gaXRzIGNvbnRlbnRzLCB3aGljaCB3aWxsIGZsYXR0ZW4gYWxs
IHRoZSBmcmFtZXMgdG8gYmVjb21lIG9uZSBzY3JvbGxhYmxlIHBhZ2UuCisgICAgKiBPbiB0b3Vj
aCBkZXZpY2VzLCBpdCBpcyBkZXNpcmVkIHRvIG5vdCBoYXZlIGFueSBzY3JvbGxhYmxlIHN1YiBw
YXJ0cyBvZiB0aGUgcGFnZSBhcworICAgICogaXQgcmVzdWx0cyBpbiBhIGNvbmZ1c2luZyB1c2Vy
IGV4cGVyaWVuY2UsIHdpdGggc2Nyb2xsaW5nIHNvbWV0aW1lcyBzY3JvbGxpbmcgc3ViIHBhcnRz
CisgICAgKiBhbmQgYXQgb3RoZXIgdGltZXMgc2Nyb2xsaW5nIHRoZSBwYWdlIGl0c2VsZi4gRm9y
IHRoaXMgcmVhc29uIGlmcmFtZXMgYW5kIGZyYW1lc2V0cyBhcmUKKyAgICAqIGJhcmVseSB1c2Fi
bGUgb24gdG91Y2ggZGV2aWNlcy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRURVJJTkcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWZyYW1lLWZs
YXR0ZW5pbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXygiRW5hYmxlIEZyYW1lIEZsYXR0ZW5pbmciKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8g
ZW5hYmxlIEZyYW1lIEZsYXR0ZW5pbmciKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgLyoqCisg
ICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtcGx1Z2luczoKKyAgICAqCisgICAgKiBQbHVn
aW5zIGVtZGVkZGVkIHdpdGhpbiBhIHBhZ2UgY2FuIGJlIHR1cm5lZCBvZmYgYnkgZGlzYWJsaW5n
CisgICAgKiB0aGlzIHByb3BlcnR5LiAKKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBST1BfRU5BQkxFX1BMVUdJTlMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLXBsdWdpbnMiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
RW5hYmxlIFBsdWdpbnMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBlbWJlZGRlZCBwbHVnaW4gb2JqZWN0cy4iKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFncykpOworICAgIAorICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczpl
bmFibGUtamF2YToKKyAgICAqCisgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzdXBwb3J0IGZvciB0
aGUgSmF2YS4gVGhpcyBwcm9wZXJ0eSBuZWVkcyB0byBiZSBlbmFibGVkCisgICAgKiBmb3IgZGlz
cGxheWluZyBqYXZhIGNvbnRlbnRzIHZpYSAgJmx0O29iamVjdCZndDsgb3IgJmx0O2VtYmVkJmd0
OyB0YWcuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9Q
X0VOQUJMRV9KQVZBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJh
bV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1qYXZhIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBKYXZhIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0
aGVyIEphdmEgc3VwcG9ydCBzaG91bGQgYmUgZW5hYmxlZCIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisK
KyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmphdmFzY3JpcHQtY2FuLW9wZW4td2lu
ZG93cy1hdXRvbWF0aWNhbGx5CisgICAgKgorICAgICogV2hldGhlciBKYXZhU2NyaXB0IGNhbiBv
cGVuIHBvcHVwIHdpbmRvd3MgYXV0b21hdGljYWxseSB3aXRob3V0IHVzZXIKKyAgICAqIGludGVy
dmVudGlvbi4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiamF2YXNjcmlw
dC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHkiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiSmF2YVNjcmlwdCBjYW4gb3Bl
biB3aW5kb3dzIGF1dG9tYXRpY2FsbHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgSmF2YVNjcmlwdCBjYW4gb3Bl
biB3aW5kb3dzIGF1dG9tYXRpY2FsbHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgor
ICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWh5cGVybGluay1hdWRpdGluZzoKKyAgICAq
CisgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzdXBwb3J0IGZvciAmbHQ7YSBwaW5nJmd0Oy4KKyAg
ICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RD
bGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0hZ
UEVSTElOS19BVURJVElORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJs
ZSBIeXBlcmxpbmsgQXVkaXRpbmciKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgPGEgcGluZz4gc2hvdWxkIGJlIGFi
bGUgdG8gc2VuZCBwaW5ncyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgZ190eXBlX2NsYXNz
X2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKSk7Cit9
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfaW5pdChXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gR19U
WVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHNldHRpbmdzLCBXRUJLSVRfVFlQRV9XRUJfU0VUVElO
R1MsIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSk7CisgICAgc2V0dGluZ3MtPnByaXYgPSBwcml2
OworICAgIG5ldyAocHJpdikgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKCk7Cit9CisKKy8qKgor
ICogd2Via2l0X3dlYl9zZXR0aW5nc19uZXc6CisgKgorICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0
V2ViU2V0dGluZ3MgaW5zdGFuY2Ugd2l0aCBkZWZhdWx0IHZhbHVlcy4gSXQgbXVzdAorICogYmUg
bWFudWFsbHkgYXR0YWNoZWQgdG8gYSBXZWJWaWV3LgorICoKKyAqIFJldHVybnM6IGEgbmV3ICNX
ZWJLaXRXZWJTZXR0aW5ncyBpbnN0YW5jZS4KKyAqKi8KK1dlYktpdFdlYlNldHRpbmdzKiB3ZWJr
aXRfd2ViX3NldHRpbmdzX25ldygpCit7CisgICAgcmV0dXJuIFdFQktJVF9XRUJfU0VUVElOR1Mo
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgTlVMTCkpOworfQorCisvKioK
KyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0OgorICoKKyAqIEdl
dCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1qYXZhc2NyaXB0LgorICoKKyAqIFJldHVybnM6ICVU
UlVFIElmIEphdmFTY3JpcHQgaXMgZW5hYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93
ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0CisgKiovCitnYm9vbGVhbiB3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChXZWJLaXRXZWJTZXR0aW5ncyogc2V0
dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5H
UyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJp
diA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlw
dEVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0OgorICoKKyAqIFNldCBwcm9wZXJ0eSAjT2JqZWN0
OmVuYWJsZS1qYXZhc2NyaXB0LgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZW5hYmxlX2phdmFzY3JpcHQKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19z
ZXRfZW5hYmxlX2phdmFzY3JpcHQoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVh
biBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5H
UyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0
dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dl
dEphdmFTY3JpcHRFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZh
bHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRK
YXZhU2NyaXB0RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1qYXZhc2NyaXB0Iik7
Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlczoK
KyAqCisgKiBHZXQgcHJvcGVydHkgI09iamVjdDphdXRvLWxvYWQtaW1hZ2VzLgorICoKKyAqIFJl
dHVybnM6ICVUUlVFIElmIGF1dG8gbG9hZGluZyBvZiBpbWFnZXMgaXMgZW5hYmxlZC4KKyAqCisg
KiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMKKyAq
Ki8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMoV2Vi
S2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJT
ZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVm
ZXJlbmNlc0dldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcyk7Cit9
CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlczoKKyAq
CisgKiBTZXQgcHJvcGVydHkgI09iamVjdDphdXRvLWxvYWQtaW1hZ2VzLgorICoKKyAqIEBzZWVf
YWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcworICoqLwordm9p
ZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzKFdlYktpdFdlYlNldHRp
bmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRp
bmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRW
YWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkocHJpdi0+cHJl
ZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShwcml2
LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JK
RUNUKHNldHRpbmdzKSwgImF1dG8tbG9hZC1pbWFnZXMiKTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVu
Y2U6CisgKgorICogR2V0IHByb3BlcnR5ICNPYmplY3Q6bG9hZHMtaWNvbnMtaWdub3JpbmctaW1h
Z2UtbG9hZC1wcmVmZXJlbmNlLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIHNpdGUtaWNvbiBj
YW4gYmUgbG9hZGVkIGlycmVzcGVjdGl2ZSBvZiBpbWFnZSBsb2FkaW5nIHByZWZlcmVuY2UuCisg
KgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25v
cmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZShXZWJL
aXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNl
dHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZl
cmVuY2VzR2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2UocHJp
di0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xv
YWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZToKKyAqCisgKiBTZXQgcHJv
cGVydHkgI09iamVjdDpsb2Fkcy1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWZlcmVuY2Uu
CisgKgorICogQHNlZV9hbHNvIDogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNf
aWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlCisgKiAgICAgICAgICAgICB3ZWJraXRfd2Vi
X3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZShXZWJL
aXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJL
aXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVh
biBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0lt
YWdlTG9hZGluZ1ByZWZlcmVuY2UocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50
VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1Nl
dExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNlKHByaXYtPnByZWZl
cmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0
dGluZ3MpLCAibG9hZHMtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmZXJlbmNlIik7Cit9
CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2Fw
cGxpY2F0aW9uX2NhY2hlOgorICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1vZmZs
aW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBIVE1M
NSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlvbiBjYWNoZSBzdXBwb3J0IGlzIGVuYWJsZWQuCisgKgor
ICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJf
YXBwbGljYXRpb25fY2FjaGUKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShXZWJLaXRXZWJTZXR0aW5ncyog
c2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRU
SU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSog
cHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0T2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoq
CisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRp
b25fY2FjaGU6CisgKgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLW9mZmxpbmUtd2Vi
LWFwcGxpY2F0aW9uLWNhY2hlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlCisgKiovCit2b2lkIHdl
YmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNo
ZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAg
ICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBn
Ym9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0T2ZmbGluZVdlYkFwcGxpY2F0
aW9uQ2FjaGVFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVl
ID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRPZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVu
YWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUt
b2ZmbGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZToKKyAqCisgKiBHZXQgcHJv
cGVydHkgI09iamVjdDplbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZS4KKyAqCisgKiBSZXR1cm5z
OiAlVFJVRSBJZiBIVE1MNSBsb2NhbCBzdG9yYWdlIHN1cHBvcnQgaXMgZW5hYmxlZC4KKyAqCisg
KiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9z
dG9yYWdlCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRt
bDVfbG9jYWxfc3RvcmFnZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNF
KTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2
OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5w
cmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxl
X2h0bWw1X2xvY2FsX3N0b3JhZ2U6CisgKgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxl
LWh0bWw1LWxvY2FsLXN0b3JhZ2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZQorICoqLwordm9pZCB3ZWJraXRfd2Vi
X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5n
c1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFs
dWUgPSBXS1ByZWZlcmVuY2VzR2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNl
cyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisK
KyAgICBXS1ByZWZlcmVuY2VzU2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNl
cywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdz
KSwgImVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlIik7Cit9CisKKy8qKgorICogd2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlOgorICoKKyAqIEdldCBwcm9wZXJ0
eSAjT2JqZWN0OmVuYWJsZS1odG1sNS1kYXRhYmFzZS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJ
ZiBIVE1MNSBkYXRhYmFzZSBzdXBwb3J0IGlzIGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3
ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UKKyAqKi8KK2dib29s
ZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShXZWJLaXRX
ZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRp
bmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVu
Y2VzR2V0RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICog
d2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlOgorICoKKyAqIFNl
dCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1odG1sNS1kYXRhYmFzZS4KKyAqCisgKiBAc2VlX2Fs
c286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZQorICoqLwor
dm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UoV2ViS2l0
V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0
V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4g
Y3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldERhdGFiYXNlc0VuYWJsZWQocHJpdi0+cHJl
ZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldERhdGFiYXNlc0VuYWJsZWQocHJpdi0+cHJlZmVy
ZW5jZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0
aW5ncyksICJlbmFibGUtaHRtbDUtZGF0YWJhc2UiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3I6CisgKgorICogR2V0IHByb3BlcnR5ICNP
YmplY3Q6ZW5hYmxlLXhzcy1hdWRpdG9yLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIFhTUyBh
dWRpdGluZyBpcyBlbmFibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX3hzc19hdWRpdG9yCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3IoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGlu
Z3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0
aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldFhTU0F1ZGl0b3JFbmFibGVk
KHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9lbmFibGVfeHNzX2F1ZGl0b3I6CisgKgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxl
LXhzcy1hdWRpdG9yLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
ZW5hYmxlX3hzc19hdWRpdG9yCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV94c3NfYXVkaXRvcihXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVu
YWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNl
dHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5n
cy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0WFNT
QXVkaXRvckVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50VmFsdWUg
PT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldFhTU0F1
ZGl0b3JFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29i
amVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXhzcy1hdWRpdG9yIik7Cit9
CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5p
bmc6CisgKgorICogR2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmcu
CisgKi4KKyAqIFJldHVybnM6ICVUUlVFIElmIGZyYW1lIGZsYXR0ZXJpbmcgaXMgZW5hYmxlZC4K
KyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9m
bGF0dGVuaW5nCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVf
ZnJhbWVfZmxhdHRlbmluZyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNF
KTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2
OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5h
YmxlX2ZyYW1lX2ZsYXR0ZW5pbmc6CisgKgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxl
LWZyYW1lLWZsYXR0ZW5pbmcuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdz
X2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZworICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGlu
Z3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUq
IHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1By
ZWZlcmVuY2VzR2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cisg
ICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBX
S1ByZWZlcmVuY2VzU2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywg
KGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwg
ImVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfZW5hYmxlX3BsdWdpbnM6CisgKgorICogR2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5h
YmxlLXBsdWdpbnMuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgUGx1Z2lucyBhcmUgZW5hYmxl
ZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVn
aW5zCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lu
cyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktp
dFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBX
S1ByZWZlcmVuY2VzR2V0UGx1Z2luc0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisv
KioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zOgorICoKKyAqIFNl
dCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1wbHVnaW5zLgorICoKKyAqIEBzZWVfYWxzbzogd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMKKyAqKi8KK3ZvaWQgd2Via2l0X3dl
Yl9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdz
LCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBw
cml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVm
ZXJlbmNlc0dldFBsdWdpbnNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3Vy
cmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5j
ZXNTZXRQbHVnaW5zRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7Cisg
ICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1wbHVnaW5zIik7
Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmE6CisgKgor
ICogR2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLWphdmEuCisgKgorICogUmV0dXJuczogJVRS
VUUgSWYgSmF2YSBpcyBlbmFibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfZW5hYmxlX2phdmEKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9qYXZhKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0Up
OworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7
CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhRW5hYmxlZChwcml2LT5wcmVmZXJlbmNl
cyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmE6Cisg
KgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLWphdmEuCisgKgorICogQHNlZV9hbHNv
OiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YQorICoqLwordm9pZCB3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3Ms
IGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VC
X1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHBy
aXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZl
cmVuY2VzR2V0SmF2YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50
VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1Nl
dEphdmFFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29i
amVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWphdmEiKTsKK30KKworLyoq
CisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3Nf
YXV0b21hdGljYWxseToKKyAqCisgKiBHZXQgcHJvcGVydHkgI09iamVjdDpqYXZhc2NyaXB0LWNh
bi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxseS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBK
YXZhc2NyaXB0IGNhbiBvcGVuIHdpbmRvdyBhdXRvbWF0aWNhbGx5LgorICoKKyAqIEBzZWVfYWxz
bzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1
dG9tYXRpY2FsbHkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFz
Y3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KFdlYktpdFdlYlNldHRpbmdzKiBz
ZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJ
TkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBw
cml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhU2Ny
aXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRv
d3NfYXV0b21hdGljYWxseToKKyAqCisgKiBTZXQgcHJvcGVydHkgI09iamVjdDpqYXZhc2NyaXB0
LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxseS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNh
bGx5CisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29w
ZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jv
b2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VU
VElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9
IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5j
ZXNHZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVu
Y2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNh
bGx5KHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3Rp
ZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiamF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9t
YXRpY2FsbHkiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVf
aHlwZXJsaW5rX2F1ZGl0aW5nOgorICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1o
eXBlcmxpbmstYXVkaXRpbmcuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgaHlwZXItbGluayBh
dWRpdGluZyBpcyBlbmFibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZworICoqLworZ2Jvb2xlYW4gd2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9T
RVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0
ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SHlw
ZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3
ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nOgorICoKKyAq
IFNldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmcuCisgKgorICog
QHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0
aW5nCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtf
YXVkaXRpbmcoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQor
eworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykp
OworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7
CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEh5cGVybGlua0F1
ZGl0aW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9
PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0SHlwZXJs
aW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAg
ICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWh5cGVybGluay1h
dWRpdGluZyIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlNldHRpbmdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZWQyZDliYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlNldHRpbmdzLmgKQEAgLTAsMCArMSwxNDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQ2hyaXN0aWFuIER5d2FuIDxjaHJpc3RpYW5AaW1lbmRpby5jb20+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgSmFuIE1pY2hhZWwgQWxvbnpvIDxqbWFsb256b0BnbWFpbC5jb20K
KyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRXZWJTZXR0aW5nc19oCisjZGVmaW5l
IFdlYktpdFdlYlNldHRpbmdzX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5j
bHVkZSA8Z2xpYi1vYmplY3QuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9U
WVBFX1dFQl9TRVRUSU5HUyAgICAgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF90eXBl
KCkpCisjZGVmaW5lIFdFQktJVF9XRUJfU0VUVElOR1Mob2JqKSAgICAgICAgICAgIChHX1RZUEVf
Q0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTLCBXZWJL
aXRXZWJTZXR0aW5ncykpCisjZGVmaW5lIFdFQktJVF9XRUJfU0VUVElOR1NfQ0xBU1Moa2xhc3Mp
ICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1NF
VFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9T
RVRUSU5HUyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBX
RUJLSVRfVFlQRV9XRUJfU0VUVElOR1MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1NFVFRJTkdT
X0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9U
WVBFX1dFQl9TRVRUSU5HUykpCisjZGVmaW5lIFdFQktJVF9XRUJfU0VUVElOR1NfR0VUX0NMQVNT
KG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VC
X1NFVFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdFdlYlNldHRpbmdzIFdlYktpdFdlYlNldHRpbmdzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFdlYlNldHRpbmdzQ2xhc3MgV2ViS2l0V2ViU2V0dGluZ3NDbGFzczsKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlOworCitz
dHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzIHsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsK
KworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2Vi
S2l0V2ViU2V0dGluZ3NDbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKKwor
ICAgIC8qIFBhZGRpbmcgZm9yIGZ1dHVyZSBleHBhbnNpb24gKi8KKyAgICB2b2lkICgqX3dlYmtp
dF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lk
KTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKKyAgICB2b2lkICgqX3dl
YmtpdF9yZXNlcnZlZDQpICh2b2lkKTsKK307CisKK1dLX0VYUE9SVCBHVHlwZQord2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfdHlwZSh2b2lkKTsKKworV0tfRVhQT1JUIFdlYktpdFdlYlNldHRpbmdz
ICoKK3dlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KHZvaWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4K
K3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZv
aWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
Ym9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktp
dFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdl
YktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7
CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaWNv
bnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0
dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNf
aWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlIChXZWJLaXRXZWJTZXR0aW5ncyog
c2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jv
b2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNh
dGlvbl9jYWNoZSAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQ
T1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBs
aWNhdGlvbl9jYWNoZSAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSAgICAgICAgICAgICAg
ICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5h
YmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5h
YmxlX2h0bWw1X2RhdGFiYXNlICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
ZW5hYmxlX2h0bWw1X2RhdGFiYXNlICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0
aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworV0tfRVhQT1JU
IGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3IgICAg
ICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dL
X0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfeHNzX2F1ZGl0b3Ig
ICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFu
IGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9wbHVnaW5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0
dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9wbHVnaW5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tf
RVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7
CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5n
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgor
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9t
YXRpY2FsbHkgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9p
ZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1
dG9tYXRpY2FsbHkgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdi
b29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcgICAgICAgICAgICAgICAgICAoV2Vi
S2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsK
KworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIHdlYmtpdHdlYnNldHRpbmdzX2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0
aW5ncy5jIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNl
dHRpbmdzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFhOTMzMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rl
c3R3ZWJzZXR0aW5ncy5jCkBAIC0wLDAgKzEsMTY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEphbiBNaWNoYWVsIEFsb256bworICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1v
dG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSA8Z2xp
Yi5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3ZWJraXQyZ3RrLmg+CisKK3N0
YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc1NjcmlwdHModm9pZCkKK3sKKyAgICBXZWJL
aXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisg
ICAgLy8gU2NyaXB0cyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQod2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MpKTsKKyAgICB3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncywgRkFMU0UpOwor
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChz
ZXR0aW5ncykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NBdXRvbG9h
ZCh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJf
c2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBCeSBkZWZhdWx0IGF1dG8tbG9hZC1pbWFnZSBpcyB0
cnVlLgorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFn
ZXMoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1h
Z2VzKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdl
YktpdFdlYlNldHRpbmdzTG9hZEljb25JZ25vcmluZ0ltYWdlTG9hZFByZWYodm9pZCkKK3sKKyAg
ICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygp
OworCisgICAgLy8gbG9hZC1pY29uLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZiBpcyBmYWxzZSBi
eSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19p
Y29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2Uoc2V0dGluZ3MpKTsKKyAgICB3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZl
cmVuY2Uoc2V0dGluZ3MsIFRSVUUpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZShzZXR0aW5ncykp
OworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NPZmZsaW5lQXBwQ2FjaGUo
dm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3Nl
dHRpbmdzX25ldygpOworICAgIAorICAgIC8vIE9mZmxpbmUgYXBwbGljYXRpb24gY2FjaGUgaXMg
dHJ1ZSBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOworICAgIHdlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShz
ZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9l
bmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoc2V0dGluZ3MpKTsKK30KKworc3Rh
dGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzTG9jYWxTdG9yYWdlKHZvaWQpCit7CisgICAg
V2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsK
KworICAgIC8vIExvY2FsIHN0b3JhZ2UgaXMgZW5hYmxlIGJ5IGRlZmF1bHQuCisgICAgZ19hc3Nl
cnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0
dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfbG9jYWxf
c3RvcmFnZShzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0aW5ncykpOworfQorCitzdGF0
aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NEYXRhYmFzZSh2b2lkKQoreworICAgIFdlYktp
dFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAg
ICAvLyBIVE1MNSBkYXRhYmFzZSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQo
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzKSk7
CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRp
bmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0
V2ViU2V0dGluZ3NYc3NBdWRpdG9yKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNl
dHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIFhTUyBBdWRpdG9y
IGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdz
X2dldF9lbmFibGVfeHNzX2F1ZGl0b3Ioc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9lbmFibGVfeHNzX2F1ZGl0b3Ioc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2Vy
dCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdzKSk7
Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0ZyYW1lRmxhdHRlcmluZyh2
b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0
dGluZ3NfbmV3KCk7CisKKyAgICAvLyBGcmFtZSBmbGF0dGVyaW5nIGlzIGRpc2FibGVkIGJ5IGRl
ZmF1bHQuCisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFt
ZV9mbGF0dGVuaW5nKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5h
YmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MsIFRSVUUpOworICAgIGdfYXNzZXJ0KHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRpbmdzKSk7Cit9
CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc1BsdWdpbnModm9pZCkKK3sKKyAg
ICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygp
OworCisgICAgLy8gUGx1Z2lucyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0
KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKHNldHRpbmdzKSk7CisgICAg
d2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MsIEZBTFNFKTsK
KyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMoc2V0
dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzSmF2YSh2b2lk
KQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGlu
Z3NfbmV3KCk7CisKKyAgICAvLyBKYXZhIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fz
c2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YShzZXR0aW5ncykpOworICAg
IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKHNldHRpbmdzLCBGQUxTRSk7Cisg
ICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKHNldHRpbmdz
KSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0F1dG9PcGVuV2luZG93
KHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9z
ZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEJ5IGRlZmF1bHQsIEphdmFTY3JpcHQgY2FuIG9wZW4g
d2luZG93cyBhdXRvbWF0aWNhbGx5IGlzIGRpc2FibGVkLgorICAgIGdfYXNzZXJ0KCF3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxs
eShzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2Fu
X29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzLCBUUlVFKTsKKyAgICBnX2Fzc2Vy
dCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0
b21hdGljYWxseShzZXR0aW5ncykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0
dGluZ3NIeXBlckxpbmtBdWRpdGluZyh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpz
ZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBCeSBkZWZhdWx0
IGh5cGVyIGxpbmsgYXVkaXRpbmcgaXMgZGlzYWJsZWQuCisgICAgZ19hc3NlcnQoIXdlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MpKTsKKyAg
ICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRp
bmdzLCBUUlVFKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVf
aHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRpbmdzKSk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBj
aGFyICoqYXJndikKK3sKKyAgICBnX3RocmVhZF9pbml0KE5VTEwpOworICAgIGd0a190ZXN0X2lu
aXQoJmFyZ2MsICZhcmd2LCBOVUxMKTsKKworICAgIGdfdGVzdF9idWdfYmFzZSgiaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvIik7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0
aW5ncy9zY3JpcHRzIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzU2NyaXB0cyk7CisgICAgZ190ZXN0
X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5ncy9hdXRvbG9hZCIsIHRlc3RXZWJLaXRXZWJT
ZXR0aW5nc0F1dG9sb2FkKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRp
bmdzL2xvYWRpY29uaWdub3JpbmdpbWFnZWxvYWRwcmVmIiwgdGVzdFdlYktpdFdlYlNldHRpbmdz
TG9hZEljb25JZ25vcmluZ0ltYWdlTG9hZFByZWYpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dl
YmtpdDIvd2Vic2V0dGluZ3Mvb2ZmbGluZWFwcGNhY2hlIiwgdGVzdFdlYktpdFdlYlNldHRpbmdz
T2ZmbGluZUFwcENhY2hlKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRp
bmdzL2xvY2Fsc3RvcmFnZSIsIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0xvY2FsU3RvcmFnZSk7Cisg
ICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5ncy9kYXRhYmFzZSIsIHRlc3RX
ZWJLaXRXZWJTZXR0aW5nc0RhdGFiYXNlKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQy
L3dlYnNldHRpbmdzL3hzc2F1ZGl0b3IiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NYc3NBdWRpdG9y
KTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL2ZyYW1lZmxhdHRl
cmluZyIsIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0ZyYW1lRmxhdHRlcmluZyk7CisgICAgZ190ZXN0
X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5ncy9wbHVnaW5zIiwgdGVzdFdlYktpdFdlYlNl
dHRpbmdzUGx1Z2lucyk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5n
cy9qYXZhIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzSmF2YSk7CisgICAgZ190ZXN0X2FkZF9mdW5j
KCIvd2Via2l0Mi93ZWJzZXR0aW5ncy9hdXRvb3BlbndpbmRvdyIsIHRlc3RXZWJLaXRXZWJTZXR0
aW5nc0F1dG9PcGVuV2luZG93KTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNl
dHRpbmdzL2h5cGVybGlua2F1ZGl0aW5nIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzSHlwZXJMaW5r
QXVkaXRpbmcpOworCisgICAgcmV0dXJuIGdfdGVzdF9ydW4gKCk7Cit9CisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJndGsuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJndGsuaAppbmRleCBkZmViYmI0Li5lMDgx
NzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQy
Z3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mmd0ay5o
CkBAIC0yNCw1ICsyNCw2IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJDb250ZXh0Lmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJWaWV3QmFzZS5oPgogI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0V2ViVmlldy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViU2V0dGluZ3Mu
aD4KIAogI2VuZGlmIC8qIF9fV0VCS0lUX0hfXyAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108659</attachid>
            <date>2011-09-26 06:23:51 -0700</date>
            <delta_ts>2011-09-28 04:59:27 -0700</delta_ts>
            <desc>WebKitWebSetting API</desc>
            <filename>0001-WebKitWebSettings-GTK-API.patch</filename>
            <type>text/plain</type>
            <size>55805</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSAyYzY5Yjc5NDk3NDllOGViZmNjOTRhNjdhMDVlNmM0YmRiNTNkYTQ0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogTW9uLCAyNiBTZXAgMjAxMSAxNTowNjo1NyArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIFdl
YktpdFdlYlNldHRpbmdzIEdUSysgQVBJCgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1OSArKwogU291cmNlL1dlYktpdDIvR05VbWFr
ZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgIDExICstCiAuLi4vVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwICAgICAgICB8ICA4ODEgKysrKysrKysrKysrKysr
KysrKysKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmgg
IHwgIDE0OCArKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmggICB8ICAgIDQgKy0KIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0
dGluZ3MuYyAgICAgIHwgIDE2NiArKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyZ3RrLmggICAgICB8ICAgIDEgKwogNyBmaWxlcyBjaGFuZ2VkLCAxMjY3IGluc2Vy
dGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3Mu
aAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL3Rlc3R3ZWJzZXR0aW5ncy5jCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGE4YWZjZDMuLjRlZmFjNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAxMS0wOS0yNiAgTmF5YW4gS3VtYXIgSyAgPG5h
eWFua2tAbW90b3JvbGEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBXZWJLaXRXZWJTZXR0aW5n
cyBHVEsrIEFQSSdzCisKKyAgICAgICAgV2ViS2l0V2ViU2V0dGluZ3MgR1RLKyBvYmplY3QgaXMg
Y3JlYXRlZCBhbmQgZmlyc3Qgc2V0IG9mCisgICAgICAgIEFQSSdzIGFyZSB3cml0dGVuIHRvIGdl
dCBvciBzZXQgdGhlIHByb3BlcnRpZXMgb2YgV2ViS2l0V2ViU2V0dGluZ3MuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODM3MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwOiBBZGRlZC4K
KyAgICAgICAgKF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU6Ol9XZWJLaXRXZWJTZXR0aW5nc1By
aXZhdGUpOgorICAgICAgICAod2Via2l0V2ViU2V0dGluZ3NTZXRQcm9wZXJ0eSk6CisgICAgICAg
ICh3ZWJraXRXZWJTZXR0aW5nc0dldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0
dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2luaXQpOgor
ICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19uZXcpOgorICAgICAgICAod2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfYXV0b19sb2FkX2ltYWdlcyk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9hdXRvX2xvYWRfaW1hZ2VzKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xv
YWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZSk6CisgICAgICAgICh3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZl
cmVuY2UpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVf
d2ViX2FwcGxpY2F0aW9uX2NhY2hlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0
X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZSk6CisgICAgICAgICh3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSk6CisgICAgICAgICh3
ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSk6CisgICAg
ICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UpOgorICAg
ICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcik6CisgICAg
ICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfeHNzX2F1ZGl0b3IpOgorICAgICAg
ICAod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcpOgorICAg
ICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcpOgor
ICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMpOgorICAgICAg
ICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMpOgorICAgICAgICAod2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEpOgorICAgICAgICAod2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfZW5hYmxlX2phdmEpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkpOgorICAgICAgICAo
d2Via2l0X3dlYl9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9t
YXRpY2FsbHkpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVy
bGlua19hdWRpdGluZyk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVf
aHlwZXJsaW5rX2F1ZGl0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJTZXR0aW5ncy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90
ZXN0d2Vic2V0dGluZ3MuYzogQWRkZWQuCisgICAgICAgICh0ZXN0V2ViS2l0V2ViU2V0dGluZ3NT
Y3JpcHRzKToKKyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc0F1dG9sb2FkKToKKyAgICAg
ICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc0xvYWRJY29uSWdub3JpbmdJbWFnZUxvYWRQcmVmKToK
KyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc09mZmxpbmVBcHBDYWNoZSk6CisgICAgICAg
ICh0ZXN0V2ViS2l0V2ViU2V0dGluZ3NMb2NhbFN0b3JhZ2UpOgorICAgICAgICAodGVzdFdlYktp
dFdlYlNldHRpbmdzRGF0YWJhc2UpOgorICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdzWHNz
QXVkaXRvcik6CisgICAgICAgICh0ZXN0V2ViS2l0V2ViU2V0dGluZ3NGcmFtZUZsYXR0ZXJpbmcp
OgorICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdzUGx1Z2lucyk6CisgICAgICAgICh0ZXN0
V2ViS2l0V2ViU2V0dGluZ3NKYXZhKToKKyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc0F1
dG9PcGVuV2luZG93KToKKyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc0h5cGVyTGlua0F1
ZGl0aW5nKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dl
YmtpdDJndGsuaDoKKwogMjAxMS0wOS0yNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEZpbmlzaCByZW1vdmluZyBQTEFURk9STShCUkVXTVApIGJ5IHJlbW92aW5n
IGFzc29jaWF0ZWQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUu
YW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCAwMzg1ZDc1Li45NjAwMmYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtNzEsNiArNzEsNyBAQCBsaWJ3ZWJraXQyZ3RraW5j
bHVkZV9IRUFERVJTID0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Q29udGV4dC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
aCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwK
KwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmggXAogCSQo
V2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mmd0ay5oCiAKIHdlYmtpdDJfYnVpbHRf
c291cmNlcyArPSBcCkBAIC00NTQsNiArNDU1LDggQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RL
X0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmggXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0
ZS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5n
cy5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRp
bmdzLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
aCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAg
XAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmgg
XApAQCAtOTg5LDcgKzk5Miw4IEBAIERJU1RDTEVBTkZJTEVTICs9IFwKICMgVW5pdCB0ZXN0cwog
VEVTVF9QUk9HUyArPSBcCiAJUHJvZ3JhbXMvdW5pdHRlc3RzL3dlYmtpdDIvdGVzdHdlYmNvbnRl
eHQgXAotCVByb2dyYW1zL3VuaXR0ZXN0cy93ZWJraXQyL3Rlc3R3ZWJ2aWV3CisJUHJvZ3JhbXMv
dW5pdHRlc3RzL3dlYmtpdDIvdGVzdHdlYnZpZXcgXAorCVByb2dyYW1zL3VuaXR0ZXN0cy93ZWJr
aXQyL3Rlc3R3ZWJzZXR0aW5ncwogCiBub2luc3RfUFJPR1JBTVMgKz0gJChURVNUX1BST0dTKQog
d2Via2l0Ml90ZXN0c19jZmxhZ3MgPSBcCkBAIC0xMDI1LDYgKzEwMjksMTEgQEAgUHJvZ3JhbXNf
dW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnZpZXdfQ0ZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2Nm
bGFncykKIFByb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJ2aWV3X0xEQUREID0gJCh3
ZWJraXQyX3Rlc3RzX2xkYWRkKQogUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnZp
ZXdfTERGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19sZGZsYWdzKQogCitQcm9ncmFtc191bml0dGVz
dHNfd2Via2l0Ml90ZXN0d2Vic2V0dGluZ3NfU09VUkNFUyA9IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5ncy5jCitQcm9ncmFtc191bml0dGVzdHNf
d2Via2l0Ml90ZXN0d2Vic2V0dGluZ3NfQ0ZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2NmbGFncykK
K1Byb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJzZXR0aW5nc19MREFERCA9ICQod2Vi
a2l0Ml90ZXN0c19sZGFkZCkKK1Byb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJzZXR0
aW5nc19MREZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxhZ3MpCisKICMgV2ViS2l0V2ViUHJv
Y2VzcwogbGliZXhlY19QUk9HUkFNUyArPSBcCiAJUHJvZ3JhbXMvV2ViS2l0V2ViUHJvY2Vzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0
dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0
dGluZ3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjYTE4YWJhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViU2V0dGluZ3MuY3BwCkBAIC0wLDAgKzEsODgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA4IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgorICogQ29weXJpZ2h0
IChDKSAyMDA4IE51YW50aSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEphbiBNaWNoYWVsIEFsb256bworICogQ29weXJpZ2h0IChDKSAy
MDA5IE1vdmlhbCBDcmVhdGl2ZSBUZWNobm9sb2dpZXMgSW5jLgorICogQ29weXJpZ2h0IChDKSAy
MDA5IElnYWxpYSBTLkwuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEg
TW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJLaXRXZWJTZXR0aW5ncy5oIgorCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0
ZS5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlcy5oPgorI2luY2x1ZGUgPFdlYktp
dDIvV0tUeXBlLmg+CisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKworc3RydWN0IF9XZWJL
aXRXZWJTZXR0aW5nc1ByaXZhdGUgeworcHVibGljOgorICAgIFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXM7CisKKyAgICBfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKCkKKyAgICB7CisgICAg
ICAgIHByZWZlcmVuY2VzID0gV0tQcmVmZXJlbmNlc0NyZWF0ZSgpOworCisgICAgICAgIC8qIEJ5
IGRlZmF1bHQsIG9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlIGlzIHRydWUgaW4gV2ViS2l0
LUdUSyAqLworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2Fj
aGVFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKKyAgICAgICAgLyogQnkgZGVmYXVsdCwgamF2
YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHkgaXMgZmFsc2UgaW4gV2ViS2l0
LUdUSyAqLworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dz
QXV0b21hdGljYWxseShwcmVmZXJlbmNlcywgZmFsc2UpOworICAgICAgICAvKiBCeSBkZWZhdWx0
LCBlbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nIGlzIGZhbHNlIGluIFdlYktpdC1HVEsgKi8KKyAg
ICAgICAgV0tQcmVmZXJlbmNlc1NldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChwcmVmZXJlbmNl
cywgZmFsc2UpOworICAgIH0KK307CisKKy8qKgorICogU0VDVElPTjp3ZWJraXR3ZWJzZXR0aW5n
cworICogQHNob3J0X2Rlc2NyaXB0aW9uOiBDb250cm9sIHRoZSBiZWhhdmlvdXIgb2YgYSAjV2Vi
S2l0V2ViVmlldworICoKKyAqICNXZWJLaXRXZWJTZXR0aW5ncyBjYW4gYmUgYXBwbGllZCB0byBh
ICNXZWJLaXRXZWJWaWV3IHRvIGNvbnRyb2wgdGV4dCBlbmNvZGluZywgCisgKiBjb2xvciwgZm9u
dCBzaXplcywgcHJpbnRpbmcgbW9kZSwgc2NyaXB0IHN1cHBvcnQsIGxvYWRpbmcgb2YgaW1hZ2Vz
IGFuZCB2YXJpb3VzIG90aGVyIHRoaW5ncy4gCisgKiBBZnRlciBjcmVhdGlvbiwgYSAjV2ViS2l0
V2ViU2V0dGluZ3Mgb2JqZWN0IGNvbnRhaW5zIGRlZmF1bHQgc2V0dGluZ3MuIAorICoKKyAqIDxp
bmZvcm1hbGV4YW1wbGU+PHByb2dyYW1saXN0aW5nPgorICogLzwhLS0gLS0+KiBDcmVhdGUgYSBu
ZXcgd2Vic2V0dGluZ3MgYW5kIGRpc2FibGUgamF2YSBzY3JpcHQgKjwhLS0gLS0+LworICogV2Vi
S2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcgKCk7Cisg
KiBnX29iamVjdF9zZXQgKEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1zY3JpcHRzIiwgRkFM
U0UsIE5VTEwpOworICoKKyAqIC88IS0tIC0tPiogQXBwbHkgdGhlIHJlc3VsdCAqPCEtLSAtLT4v
CisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzIChXRUJLSVRfV0VCX1ZJRVcobXlfd2Vi
dmlldyksIHNldHRpbmdzKTsKKyAqIDwvcHJvZ3JhbWxpc3Rpbmc+PC9pbmZvcm1hbGV4YW1wbGU+
CisgKi8KKworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYlNldHRpbmdzLCB3ZWJraXRfd2ViX3Nl
dHRpbmdzLCBHX1RZUEVfT0JKRUNUKQorCitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9Q
X0VOQUJMRV9KQVZBU0NSSVBULAorICAgIFBST1BfQVVUT19MT0FEX0lNQUdFUywKKyAgICBQUk9Q
X0xPQURTX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRSwKKyAgICBQUk9QX0VO
QUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRSwKKyAgICBQUk9QX0VOQUJMRV9IVE1M
NV9MT0NBTF9TVE9SQUdFLAorICAgIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNFLAorICAgIFBS
T1BfRU5BQkxFX1hTU19BVURJVE9SLAorICAgIFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRURVJJTkcs
CisgICAgUFJPUF9FTkFCTEVfUExVR0lOUywKKyAgICBQUk9QX0VOQUJMRV9KQVZBLAorICAgIFBS
T1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFksCisgICAgUFJPUF9F
TkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HLAorfTsKKworc3RhdGljIHZvaWQgd2Via2l0V2ViU2V0
dGluZ3NTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1Zh
bHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3Mq
IHNldHRpbmdzID0gV0VCS0lUX1dFQl9TRVRUSU5HUyhvYmplY3QpOworIAorICAgIHN3aXRjaCAo
cHJvcElkKSB7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZBU0NSSVBUOgorICAgICAgICB3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncywgZ192YWx1ZV9n
ZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVVUT19M
T0FEX0lNQUdFUzoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2lt
YWdlcyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfTE9BRFNfSUNPTlNfSUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGRVJF
TkNFOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmlu
Z19pbWFnZV9sb2FkX3ByZWZlcmVuY2Uoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFs
dWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9B
UFBMSUNBVElPTl9DQUNIRToKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxl
X29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29s
ZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVf
TE9DQUxfU1RPUkFHRToKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0
bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRToKKyAg
ICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRp
bmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1I6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1
ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRURVJJ
Tkc6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVu
aW5nKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9FTkFCTEVfUExVR0lOUzoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFs
dWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZBOgorICAgICAg
ICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YShzZXR0aW5ncywgZ192YWx1ZV9n
ZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSkFWQVND
UklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFk6CisgICAgICAgIHdlYmtpdF93ZWJf
c2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNl
dHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HOgorICAgICAgICB3ZWJraXRfd2Vi
X3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRpbmdzLCBnX3ZhbHVl
X2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcHNw
ZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlNl
dHRpbmdzR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSog
dmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzKiBzZXR0
aW5ncyA9IFdFQktJVF9XRUJfU0VUVElOR1Mob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElk
KSB7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZBU0NSSVBUOgorICAgICAgICBnX3ZhbHVlX3Nl
dF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlw
dChzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVVUT19MT0FEX0lN
QUdFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfTE9BRFNfSUNPTlNfSUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGRVJFTkNFOgor
ICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2Uoc2V0dGluZ3MpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNB
VElPTl9DQUNIRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRp
bmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxf
U1RPUkFHRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0dGluZ3MpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRToKKyAgICAgICAg
Z192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxl
X2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJP
UF9FTkFCTEVfWFNTX0FVRElUT1I6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUs
IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncykpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRURVJJTkc6Cisg
ICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FTkFCTEVfUExVR0lOUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2
YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZBOgorICAgICAgICBnX3Zh
bHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2
YShzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSkFWQVNDUklQVF9D
QU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFk6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xl
YW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2lu
ZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29s
ZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0
aW5nKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdf
T0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcHNwZWMpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGlu
Z3NfY2xhc3NfaW5pdChXZWJLaXRXZWJTZXR0aW5nc0NsYXNzKiBrbGFzcykKK3sKKyAgICBHT2Jq
ZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBnT2Jq
ZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdFdlYlNldHRpbmdzU2V0UHJvcGVydHk7Cisg
ICAgZ09iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRXZWJTZXR0aW5nc0dldFByb3Bl
cnR5OworCisgICAgR1BhcmFtRmxhZ3MgZmxhZ3MgPSBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4o
V0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKTsKKworICAgIC8qKgor
ICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWphdmFzY3JpcHQKKyAgICAqCisgICAgKiBU
aGlzIHByb3BlcnR5IG5lZWRzIHRvIGJlIHNldCB0byBlbmFibGUgdGhlIGV4ZWN1dGlvbiBvZiAK
KyAgICAqIEphdmFzY3JpcHQgd2l0aGluIGEgcGFnZS4KKyAgICAqCisgICAgKi8KKyAgICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0pBVkFTQ1JJUFQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWph
dmFzY3JpcHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXygiRW5hYmxlIEphdmFTY3JpcHQiKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBKYXZhU2NyaXB0
IGxhbmd1YWdlcy4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworICAgIAorICAgIC8qKgorICAgICogV2Vi
S2l0V2ViU2V0dGluZ3M6YXV0by1sb2FkLWltYWdlcworICAgICoKKyAgICAqIERldGVybWluZXMg
d2hldGhlciBpbWFnZXMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgbG9hZGVkIG9yIG5vdC4KKyAg
ICAqIE9uIGRldmljZXMsIHdoZXJlIG5ldHdvcmsgYmFuZHdpZHRoIGlzIG9mIGNvbmNlcm4sIGl0
IG1pZ2h0IGJlCisgICAgKiB1c2VmdWwgdG8gdHVybiB0aGlzIHByb3BlcnR5IG9mZi4KKyAgICAq
CisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFz
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfQVVUT19MT0FEX0lN
QUdFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19i
b29sZWFuKCJhdXRvLWxvYWQtaW1hZ2VzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkF1dG8gTG9hZCBJbWFnZXMiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkxv
YWQgaW1hZ2VzIGF1dG9tYXRpY2FsbHkuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKyAgICAKKyAgICAv
KioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmxvYWRzLWljb25zLWlnbm9yaW5nLWltYWdlLWxv
YWQtcHJlZmVyZW5jZQorICAgICoKKyAgICAqIEJ5IGVuYWJsaW5nIHRoaXMgcHJvcGVydHksIHNp
dGUgaWNvbnMgKGUuZywgZmF2aWNvbikgd2lsbCBiZSBsb2FkZWQKKyAgICAqIGlycmVzcGVjdGl2
ZSBvZiB0aGUgdmFsdWUgb2YgI09iamVjdDphdXRvLWxvYWQtaW1hZ2VzLgorICAgICoKKyAgICAq
LworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9MT0FEU19JQ09OU19JR05PUklO
R19JTUFHRV9MT0FEX1BSRUZFUkVOQ0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigibG9hZHMtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9h
ZC1wcmVmZXJlbmNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF8oIkxvYWRzIFNpdGUgSWNvbnMgaWdub3JpbmcgaW1hZ2UgbG9hZCBw
cmVmZXJlbmNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGxvYWQgc2l0ZSBpY29uIGlnbm9yaW5nIGltYWdl
IGxvYWQgcHJlZmVyZW5jZS4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICog
V2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlCisg
ICAgKgorICAgICogV2hldGhlciB0byBlbmFibGUgSFRNTDUgb2ZmbGluZSB3ZWIgYXBwbGljYXRp
b24gY2FjaGUgc3VwcG9ydC4gT2ZmbGluZQorICAgICogV2ViIEFwcGxpY2F0aW9uIENhY2hlIGVu
c3VyZXMgd2ViIGFwcGxpY2F0aW9ucyBhcmUgYXZhaWxhYmxlIGV2ZW4gd2hlbgorICAgICogdGhl
IHVzZXIgaXMgbm90IGNvbm5lY3RlZCB0byB0aGUgbmV0d29yay4KKyAgICAqCisgICAgKi8KKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJ
Q0FUSU9OX0NBQ0hFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJh
bV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
KCJFbmFibGUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8g
ZW5hYmxlIG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsK
KworICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWh0bWw1LWxvY2FsLXN0
b3JhZ2U6CisgICAgKgorICAgICogV2hldGhlciB0byBlbmFibGUgSFRNTDUgbG9jYWxTdG9yYWdl
IHN1cHBvcnQuIGxvY2FsU3RvcmFnZSBwcm92aWRlcworICAgICogc2ltcGxlIHN5bmNocm9ub3Vz
IHN0b3JhZ2UgYWNjZXNzLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFHRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtaHRtbDUtbG9j
YWwtc3RvcmFnZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfKCJFbmFibGUgSFRNTDUgTG9jYWwgU3RvcmFnZSIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhl
ciB0byBlbmFibGUgSFRNTDUgTG9jYWwgU3RvcmFnZSBzdXBwb3J0IiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3Mp
KTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWh0bWw1LWRhdGFi
YXNlOgorICAgICoKKyAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IGNsaWVudC1zaWRlIFNR
TCBkYXRhYmFzZSBzdXBwb3J0LiBDbGllbnQtc2lkZQorICAgICogU1FMIGRhdGFiYXNlIGFsbG93
cyB3ZWIgcGFnZXMgdG8gc3RvcmUgc3RydWN0dXJlZCBkYXRhIGFuZCBiZSBhYmxlIHRvCisgICAg
KiB1c2UgU1FMIHRvIG1hbmlwdWxhdGUgdGhhdCBkYXRhIGFzeW5jaHJvbm91c2x5LgorICAgICoK
KyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfSFRNTDVf
REFUQUJBU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3Nw
ZWNfYm9vbGVhbigiZW5hYmxlLWh0bWw1LWRhdGFiYXNlIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBIVE1MNSBEYXRh
YmFzZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXygiV2hldGhlciB0byBlbmFibGUgSFRNTDUgZGF0YWJhc2Ugc3VwcG9ydCIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJs
ZS14c3MtYXVkaXRvcgorICAgICoKKyAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBYU1MgQXVk
aXRvci4gVGhpcyBmZWF0dXJlIGZpbHRlcnMgc29tZSBraW5kcyBvZgorICAgICogcmVmbGVjdGl2
ZSBYU1MgYXR0YWNrcyBvbiB2dWxuZXJhYmxlIHdlYiBzaXRlcy4KKyAgICAqCisgICAgKi8KKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX1hTU19BVURJVE9SLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVu
YWJsZS14c3MtYXVkaXRvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgWFNTIEF1ZGl0b3IiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIg
dG8gZW5hYmxlIHRoZSBYU1MgYXVkaXRvciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKworICAgIC8q
KgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmcKKyAgICAq
CisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgRnJhbWUgRmxhdHRlbmluZy4gV2l0aCB0aGlz
IHNldHRpbmcgZWFjaCBzdWJmcmFtZSBpcyBleHBhbmRlZAorICAgICogdG8gaXRzIGNvbnRlbnRz
LCB3aGljaCB3aWxsIGZsYXR0ZW4gYWxsIHRoZSBmcmFtZXMgdG8gYmVjb21lIG9uZSBzY3JvbGxh
YmxlIHBhZ2UuCisgICAgKiBPbiB0b3VjaCBkZXZpY2VzLCBpdCBpcyBkZXNpcmVkIHRvIG5vdCBo
YXZlIGFueSBzY3JvbGxhYmxlIHN1YiBwYXJ0cyBvZiB0aGUgcGFnZSBhcworICAgICogaXQgcmVz
dWx0cyBpbiBhIGNvbmZ1c2luZyB1c2VyIGV4cGVyaWVuY2UsIHdpdGggc2Nyb2xsaW5nIHNvbWV0
aW1lcyBzY3JvbGxpbmcgc3ViIHBhcnRzCisgICAgKiBhbmQgYXQgb3RoZXIgdGltZXMgc2Nyb2xs
aW5nIHRoZSBwYWdlIGl0c2VsZi4gRm9yIHRoaXMgcmVhc29uIGlmcmFtZXMgYW5kIGZyYW1lc2V0
cyBhcmUKKyAgICAqIGJhcmVseSB1c2FibGUgb24gdG91Y2ggZGV2aWNlcy4KKyAgICAqCisgICAg
Ki8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRU
RVJJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNf
Ym9vbGVhbigiZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmciLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEZyYW1lIEZsYXR0
ZW5pbmciKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIEZyYW1lIEZsYXR0ZW5pbmciKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxhZ3MpKTsKKworICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtcGx1
Z2luczoKKyAgICAqCisgICAgKiBQbHVnaW5zIGVtZGVkZGVkIHdpdGhpbiBhIHBhZ2UgY2FuIGJl
IHR1cm5lZCBvZmYgYnkgZGlzYWJsaW5nCisgICAgKiB0aGlzIHByb3BlcnR5LiAKKyAgICAqCisg
ICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX1BMVUdJTlMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVh
bigiZW5hYmxlLXBsdWdpbnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIFBsdWdpbnMiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBlbWJl
ZGRlZCBwbHVnaW4gb2JqZWN0cy4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworICAgIAorICAgLyoqCisg
ICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtamF2YToKKyAgICAqCisgICAgKiBFbmFibGUg
b3IgZGlzYWJsZSBzdXBwb3J0IGZvciB0aGUgSmF2YS4gVGhpcyBwcm9wZXJ0eSBuZWVkcyB0byBi
ZSBlbmFibGVkCisgICAgKiBmb3IgZGlzcGxheWluZyBqYXZhIGNvbnRlbnRzIHZpYSAgJmx0O29i
amVjdCZndDsgb3IgJmx0O2VtYmVkJmd0OyB0YWcuCisgICAgKgorICAgICovCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9KQVZBLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1qYXZhIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8o
IkVuYWJsZSBKYXZhIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIEphdmEgc3VwcG9ydCBzaG91bGQgYmUgZW5hYmxl
ZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdz
OmphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5CisgICAgKgorICAgICog
V2hldGhlciBKYXZhU2NyaXB0IGNhbiBvcGVuIHBvcHVwIHdpbmRvd3MgYXV0b21hdGljYWxseSB3
aXRob3V0IHVzZXIKKyAgICAqIGludGVydmVudGlvbi4KKyAgICAqCisgICAgKi8KKyAgICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FV
VE9NQVRJQ0FMTFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFt
X3NwZWNfYm9vbGVhbigiamF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHki
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXygiSmF2YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9tYXRpY2FsbHkiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldo
ZXRoZXIgSmF2YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9tYXRpY2FsbHkiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWh5
cGVybGluay1hdWRpdGluZzoKKyAgICAqCisgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzdXBwb3J0
IGZvciAmbHQ7YSBwaW5nJmd0Oy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBST1BfRU5BQkxFX0hZUEVSTElOS19BVURJVElORywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtaHlwZXJs
aW5rLWF1ZGl0aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBIeXBlcmxpbmsgQXVkaXRpbmciKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRo
ZXIgPGEgcGluZz4gc2hvdWxkIGJlIGFibGUgdG8gc2VuZCBwaW5ncyIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFn
cykpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoV2ViS2l0
V2ViU2V0dGluZ3NQcml2YXRlKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGlu
Z3NfaW5pdChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgV2ViS2l0V2ViU2V0
dGluZ3NQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHNldHRpbmdz
LCBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSk7Cisg
ICAgc2V0dGluZ3MtPnByaXYgPSBwcml2OworICAgIG5ldyAocHJpdikgV2ViS2l0V2ViU2V0dGlu
Z3NQcml2YXRlKCk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19uZXc6CisgKgor
ICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViU2V0dGluZ3MgaW5zdGFuY2Ugd2l0aCBkZWZhdWx0
IHZhbHVlcy4gSXQgbXVzdAorICogYmUgbWFudWFsbHkgYXR0YWNoZWQgdG8gYSBXZWJWaWV3Lgor
ICoKKyAqIFJldHVybnM6IGEgbmV3ICNXZWJLaXRXZWJTZXR0aW5ncyBpbnN0YW5jZS4KKyAqKi8K
K1dlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpCit7CisgICAgcmV0
dXJuIFdFQktJVF9XRUJfU0VUVElOR1MoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9TRVRU
SU5HUywgTlVMTCkpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9qYXZhc2NyaXB0OgorICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1qYXZhc2Ny
aXB0LgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICoKKyAqIFJldHVybnM6
ICVUUlVFIElmIEphdmFTY3JpcHQgaXMgZW5hYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0KCkKKyAqKi8KK2dib29sZWFuIHdl
YmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KFdlYktpdFdlYlNldHRpbmdz
KiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NF
VFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRl
KiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZh
U2NyaXB0RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dl
Yl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQ6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktp
dFdlYlNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHBy
b3BlcnR5ICNPYmplY3Q6ZW5hYmxlLWphdmFzY3JpcHQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdCgpCisgKiovCit2b2lkIHdlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0KFdlYktpdFdlYlNldHRpbmdzKiBz
ZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJp
dmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9
IFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cisg
ICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBX
S1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlwdEVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29s
KWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFi
bGUtamF2YXNjcmlwdCIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1
dG9fbG9hZF9pbWFnZXM6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKgor
ICogR2V0IHByb3BlcnR5ICNPYmplY3Q6YXV0by1sb2FkLWltYWdlcy4KKyAqCisgKiBSZXR1cm5z
OiAlVFJVRSBJZiBhdXRvIGxvYWRpbmcgb2YgaW1hZ2VzIGlzIGVuYWJsZWQuCisgKgorICogQHNl
ZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzKCkKKyAqKi8K
K2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMoV2ViS2l0
V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0
aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJl
bmNlc0dldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisK
Ky8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlczoKKyAqIEBz
ZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBz
ZXQKKyAqCisgKiBTZXQgcHJvcGVydHkgI09iamVjdDphdXRvLWxvYWQtaW1hZ2VzLgorICoKKyAq
IEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcygpCisg
KiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoV2ViS2l0
V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0
V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4g
Y3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShw
cml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5KHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3Rp
ZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiYXV0by1sb2FkLWltYWdlcyIpOworfQorCisvKioKKyAq
IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRf
cHJlZmVyZW5jZToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqCisgKiBH
ZXQgcHJvcGVydHkgI09iamVjdDpsb2Fkcy1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWZl
cmVuY2UuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgc2l0ZS1pY29uIGNhbiBiZSBsb2FkZWQg
aXJyZXNwZWN0aXZlIG9mIGltYWdlIGxvYWRpbmcgcHJlZmVyZW5jZS4KKyAqCisgKiBAc2VlX2Fs
c286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xv
YWRfcHJlZmVyZW5jZSgpCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9s
b2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UoV2ViS2l0V2ViU2V0dGlu
Z3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
U0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZh
dGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldExv
YWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNlKHByaXYtPnByZWZlcmVu
Y2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19p
Z25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2U6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdl
YlNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHByb3Bl
cnR5ICNPYmplY3Q6bG9hZHMtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmZXJlbmNlLgor
ICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdu
b3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKCkKKyAqICAgICAgICAgICAgIHdlYmtpdF93ZWJf
c2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoKQorICoqLwordm9pZCB3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UoV2Vi
S2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2Vi
S2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xl
YW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldExvYWRzU2l0ZUljb25zSWdub3JpbmdJ
bWFnZUxvYWRpbmdQcmVmZXJlbmNlKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVu
dFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNT
ZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZShwcml2LT5wcmVm
ZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNl
dHRpbmdzKSwgImxvYWRzLWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZSIpOwor
fQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9h
cHBsaWNhdGlvbl9jYWNoZToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAq
CisgKiBHZXQgcHJvcGVydHkgI09iamVjdDplbmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24t
Y2FjaGUuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgSFRNTDUgb2ZmbGluZSB3ZWIgYXBwbGlj
YXRpb24gY2FjaGUgc3VwcG9ydCBpcyBlbmFibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0
X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKCkK
KyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dl
Yl9hcHBsaWNhdGlvbl9jYWNoZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZB
TFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5w
cml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2Fj
aGVFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGU6CisgKiBAc2V0
dGluZ3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0
CisgKgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0
aW9uLWNhY2hlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5h
YmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3dl
Yl9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKFdlYktp
dFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktp
dFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFu
IGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNo
ZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5h
YmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldE9mZmxpbmVXZWJB
cHBsaWNhdGlvbkNhY2hlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7
CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1vZmZsaW5l
LXdlYi1hcHBsaWNhdGlvbi1jYWNoZSIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlOgorICogQHNldHRpbmdzOiBhICNXZWJL
aXRXZWJTZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1odG1sNS1s
b2NhbC1zdG9yYWdlLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEhUTUw1IGxvY2FsIHN0b3Jh
Z2Ugc3VwcG9ydCBpcyBlbmFibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UoKQorICoqLworZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UoV2ViS2l0V2Vi
U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5n
c1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNl
c0dldExvY2FsU3RvcmFnZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAq
IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlOgorICog
QHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJl
IHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1odG1sNS1sb2NhbC1zdG9y
YWdlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0
bWw1X2xvY2FsX3N0b3JhZ2UoKQorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9l
bmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdi
b29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NF
VFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYg
PSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVu
Y2VzR2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGN1
cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVu
Y2VzU2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxl
ZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1odG1s
NS1sb2NhbC1zdG9yYWdlIik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
ZW5hYmxlX2h0bWw1X2RhdGFiYXNlOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5n
cworICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1odG1sNS1kYXRhYmFzZS4KKyAq
CisgKiBSZXR1cm5zOiAlVFJVRSBJZiBIVE1MNSBkYXRhYmFzZSBzdXBwb3J0IGlzIGVuYWJsZWQu
CisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVf
ZGF0YWJhc2UoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxl
X2h0bWw1X2RhdGFiYXNlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0Up
OworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7
CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnByZWZl
cmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRt
bDVfZGF0YWJhc2U6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKiBAZW5h
YmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxl
LWh0bWw1LWRhdGFiYXNlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywg
Z2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
U0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJp
diA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVy
ZW5jZXNHZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3Vy
cmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5j
ZXNTZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsK
KyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWh0bWw1LWRh
dGFiYXNlIik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3hz
c19hdWRpdG9yOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICoKKyAqIEdl
dCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS14c3MtYXVkaXRvci4KKyAqCisgKiBSZXR1cm5zOiAl
VFJVRSBJZiBYU1MgYXVkaXRpbmcgaXMgZW5hYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvcigpCisgKiovCitnYm9vbGVhbiB3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3IoV2ViS2l0V2ViU2V0dGlu
Z3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
U0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZh
dGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldFhT
U0F1ZGl0b3JFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9lbmFibGVfeHNzX2F1ZGl0b3I6CisgKiBAc2V0dGluZ3M6IGEgI1dl
YktpdFdlYlNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0
IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLXhzcy1hdWRpdG9yLgorICoKKyAqIEBzZWVfYWxzbzog
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yKCkKKyAqKi8KK3ZvaWQg
d2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKFdlYktpdFdlYlNldHRp
bmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRp
bmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRW
YWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRpdG9yRW5hYmxlZChwcml2LT5wcmVmZXJlbmNl
cyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisK
KyAgICBXS1ByZWZlcmVuY2VzU2V0WFNTQXVkaXRvckVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMs
IChib29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyks
ICJlbmFibGUteHNzLWF1ZGl0b3IiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdz
X2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZzoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2Vi
U2V0dGluZ3MKKyAqCisgKiBHZXQgcHJvcGVydHkgI09iamVjdDplbmFibGUtZnJhbWUtZmxhdHRl
bmluZy4KKyAqLgorICogUmV0dXJuczogJVRSVUUgSWYgZnJhbWUgZmxhdHRlcmluZyBpcyBlbmFi
bGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2Zy
YW1lX2ZsYXR0ZW5pbmcoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
ZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3Mp
LCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5n
cy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEZyYW1lRmxhdHRlbmluZ0VuYWJs
ZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJT
ZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0
eSAjT2JqZWN0OmVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nLgorICoKKyAqIEBzZWVfYWxzbzogd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoKQorICoqLwordm9p
ZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhXZWJLaXRX
ZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRX
ZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBj
dXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChw
cml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdf
T0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIik7Cit9CisKKy8qKgor
ICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnM6CisgKiBAc2V0dGluZ3M6
IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKgorICogR2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxl
LXBsdWdpbnMuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgUGx1Z2lucyBhcmUgZW5hYmxlZC4K
KyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5z
KCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5z
KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgV2ViS2l0
V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdL
UHJlZmVyZW5jZXNHZXRQbHVnaW5zRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8q
KgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnM6CisgKiBAc2V0dGlu
Z3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0Cisg
KgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLXBsdWdpbnMuCisgKgorICogQHNlZV9h
bHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lucygpCisgKiovCit2b2lk
IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zKFdlYktpdFdlYlNldHRpbmdz
KiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdz
UHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1
ZSA9IFdLUHJlZmVyZW5jZXNHZXRQbHVnaW5zRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cisg
ICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBX
S1ByZWZlcmVuY2VzU2V0UGx1Z2luc0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVu
YWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUt
cGx1Z2lucyIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9q
YXZhOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICoKKyAqIEdldCBwcm9w
ZXJ0eSAjT2JqZWN0OmVuYWJsZS1qYXZhLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEphdmEg
aXMgZW5hYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV9qYXZhKCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9qYXZhKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAg
V2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0
dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisK
Ky8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmE6CisgKiBAc2V0dGlu
Z3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0Cisg
KgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLWphdmEuCisgKgorICogQHNlZV9hbHNv
OiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YSgpCisgKiovCit2b2lkIHdlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5n
cywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSog
cHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJl
ZmVyZW5jZXNHZXRKYXZhRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJl
bnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2Vz
U2V0SmF2YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAgIGdf
b2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtamF2YSIpOworfQorCisv
KioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93
c19hdXRvbWF0aWNhbGx5OgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICoK
KyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRv
bWF0aWNhbGx5LgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEphdmFzY3JpcHQgY2FuIG9wZW4g
d2luZG93IGF1dG9tYXRpY2FsbHkuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSgpCisgKiov
CitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dp
bmRvd3NfYXV0b21hdGljYWxseShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZB
TFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5w
cml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dz
QXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dl
Yl9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHk6
CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUg
dG8gYmUgc2V0CisgKgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6amF2YXNjcmlwdC1jYW4tb3Bl
bi13aW5kb3dzLWF1dG9tYXRpY2FsbHkuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSgpCisg
KiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2lu
ZG93c19hdXRvbWF0aWNhbGx5KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4g
ZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Mo
c2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRp
bmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRK
YXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzKTsK
KyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IFdLUHJlZmVyZW5jZXNTZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHBy
aXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19P
QkpFQ1Qoc2V0dGluZ3MpLCAiamF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2Fs
bHkiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJs
aW5rX2F1ZGl0aW5nOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICoKKyAq
IEdldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmcuCisgKgorICog
UmV0dXJuczogJVRSVUUgSWYgaHlwZXItbGluayBhdWRpdGluZyBpcyBlbmFibGVkLgorICoKKyAq
IEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRp
dGluZygpCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHlw
ZXJsaW5rX2F1ZGl0aW5nKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0Up
OworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7
CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQocHJp
di0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV9oeXBlcmxpbmtfYXVkaXRpbmc6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRp
bmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHByb3BlcnR5ICNP
YmplY3Q6ZW5hYmxlLWh5cGVybGluay1hdWRpdGluZy4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoKQorICoqLwordm9p
ZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKFdlYktp
dFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktp
dFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFu
IGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQo
cHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldEh5cGVybGlua0F1ZGl0aW5nRW5h
YmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90
aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmciKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNl
dHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0
aW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkMmQ5YmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJT
ZXR0aW5ncy5oCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENo
cmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEphbiBNaWNoYWVsIEFsb256byA8am1hbG9uem9AZ21haWwuY29tCisgKiBQb3J0aW9ucyBD
b3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpZm5kZWYgV2ViS2l0V2ViU2V0dGluZ3NfaAorI2RlZmluZSBXZWJLaXRXZWJTZXR0
aW5nc19oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPGdsaWItb2Jq
ZWN0Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfU0VUVElO
R1MgICAgICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfdHlwZSgpKQorI2RlZmluZSBX
RUJLSVRfV0VCX1NFVFRJTkdTKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0dGluZ3Mp
KQorI2RlZmluZSBXRUJLSVRfV0VCX1NFVFRJTkdTX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NI
RUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0
V2ViU2V0dGluZ3NDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfU0VUVElOR1Mob2JqKSAg
ICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VC
X1NFVFRJTkdTKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9TRVRUSU5HU19DTEFTUyhrbGFzcykg
KEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfU0VUVElO
R1MpKQorI2RlZmluZSBXRUJLSVRfV0VCX1NFVFRJTkdTX0dFVF9DTEFTUyhvYmopICAoR19UWVBF
X0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2Vi
S2l0V2ViU2V0dGluZ3NDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5n
cyBXZWJLaXRXZWJTZXR0aW5nczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc0Ns
YXNzIFdlYktpdFdlYlNldHRpbmdzQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0
dGluZ3NQcml2YXRlIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRX
ZWJTZXR0aW5ncyB7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRX
ZWJTZXR0aW5nc1ByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdz
Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICAvKiBQYWRkaW5n
IGZvciBmdXR1cmUgZXhwYW5zaW9uICovCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAo
dm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAo
Kl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0
KSAodm9pZCk7Cit9OworCitXS19FWFBPUlQgR1R5cGUKK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X3R5cGUodm9pZCk7CisKK1dLX0VYUE9SVCBXZWJLaXRXZWJTZXR0aW5ncyAqCit3ZWJraXRfd2Vi
X3NldHRpbmdzX25ldyh2b2lkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgKFdl
YktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2Vi
X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdCAgICAgICAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxl
ZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfYXV0b19s
b2FkX2ltYWdlcyAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyog
c2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfYXV0
b19sb2FkX2ltYWdlcyAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQg
Z2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2lt
YWdlX2xvYWRfcHJlZmVyZW5jZSAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tf
RVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5n
X2ltYWdlX2xvYWRfcHJlZmVyZW5jZSAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUgICAg
ICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUg
ICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4g
ZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
ZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0
aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19z
ZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJT
ZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXS19F
WFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRh
YmFzZSAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsK
KworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9k
YXRhYmFzZSAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yICAgICAgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAor
d2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yICAgICAgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29s
ZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKwor
V0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lu
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5n
cyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfcGx1
Z2lucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0
aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVh
bgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQg
dm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5ICAoV2Vi
S2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJf
c2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5ICAo
V2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVk
KTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVf
aHlwZXJsaW5rX2F1ZGl0aW5nICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBz
ZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFi
bGVfaHlwZXJsaW5rX2F1ZGl0aW5nICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdz
KiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK0dfRU5EX0RFQ0xT
CisKKyNlbmRpZiAvKiB3ZWJraXR3ZWJzZXR0aW5nc19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggMzA1YmM1Ni4uYmQ2YTE4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuaApAQCAtMjMsOCArMjMsOCBAQAogI2lmbmRlZiBXZWJLaXRXZWJWaWV3X2gKICNkZWZpbmUg
V2ViS2l0V2ViVmlld19oCiAKLSNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkNvbnRleHQuaD4K
LSNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXdCYXNlLmg+CisjaW5jbHVkZSAiV2ViS2l0
V2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlLmgiCiAKIEdfQkVHSU5f
REVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvdGVzdHdlYnNldHRpbmdzLmMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5mMWE5MzMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMKQEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgSmFuIE1pY2hhZWwgQWxvbnpvCisgKiBQb3J0aW9ucyBDb3B5cmln
aHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHdlYmtp
dDJndGsuaD4KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzU2NyaXB0cyh2b2lk
KQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGlu
Z3NfbmV3KCk7CisKKyAgICAvLyBTY3JpcHRzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBn
X2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5n
cykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRp
bmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9qYXZhc2NyaXB0KHNldHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJT
ZXR0aW5nc0F1dG9sb2FkKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdz
ID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEJ5IGRlZmF1bHQgYXV0by1s
b2FkLWltYWdlIGlzIHRydWUuCisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
YXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0
X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncykpOworfQorCitzdGF0
aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NMb2FkSWNvbklnbm9yaW5nSW1hZ2VMb2FkUHJl
Zih2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJf
c2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBsb2FkLWljb24taWdub3JpbmctaW1hZ2UtbG9hZC1w
cmVmIGlzIGZhbHNlIGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZShzZXR0aW5n
cykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2lt
YWdlX2xvYWRfcHJlZmVyZW5jZShzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJl
bmNlKHNldHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc09m
ZmxpbmVBcHBDYWNoZSh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9
IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisgICAgCisgICAgLy8gT2ZmbGluZSBhcHBsaWNh
dGlvbiBjYWNoZSBpcyB0cnVlIGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdz
KSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxp
Y2F0aW9uX2NhY2hlKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5n
cykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NMb2NhbFN0b3JhZ2Uo
dm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3Nl
dHRpbmdzX25ldygpOworCisgICAgLy8gTG9jYWwgc3RvcmFnZSBpcyBlbmFibGUgYnkgZGVmYXVs
dC4KKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9j
YWxfc3RvcmFnZShzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdl
YmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdz
KSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0RhdGFiYXNlKHZvaWQp
Cit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5n
c19uZXcoKTsKKworICAgIC8vIEhUTUw1IGRhdGFiYXNlIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4K
KyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJh
c2Uoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVf
ZGF0YWJhc2Uoc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2
b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc1hzc0F1ZGl0b3Iodm9pZCkKK3sKKyAgICBXZWJLaXRX
ZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAg
Ly8gWFNTIEF1ZGl0b3IgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncykpOworICAgIHdl
YmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncywgRkFMU0Up
OworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0
b3Ioc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzRnJh
bWVGbGF0dGVyaW5nKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0g
d2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEZyYW1lIGZsYXR0ZXJpbmcgaXMg
ZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncywgVFJVRSk7CisgICAg
Z19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmco
c2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzUGx1Z2lu
cyh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJf
c2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBQbHVnaW5zIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQu
CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMoc2V0
dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyhzZXR0
aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFi
bGVfcGx1Z2lucyhzZXR0aW5ncykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0
dGluZ3NKYXZhKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Vi
a2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEphdmEgaXMgZW5hYmxlZCBieSBkZWZh
dWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKHNl
dHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEoc2V0dGlu
Z3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxl
X2phdmEoc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdz
QXV0b09wZW5XaW5kb3codm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3Mg
PSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gQnkgZGVmYXVsdCwgSmF2YVNj
cmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgaXMgZGlzYWJsZWQuCisgICAgZ19h
c3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93
c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
amF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3MsIFRSVUUp
OworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29w
ZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRl
c3RXZWJLaXRXZWJTZXR0aW5nc0h5cGVyTGlua0F1ZGl0aW5nKHZvaWQpCit7CisgICAgV2ViS2l0
V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAg
IC8vIEJ5IGRlZmF1bHQgaHlwZXIgbGluayBhdWRpdGluZyBpcyBkaXNhYmxlZC4KKyAgICBnX2Fz
c2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhz
ZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtf
YXVkaXRpbmcoc2V0dGluZ3MsIFRSVUUpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MpKTsKK30KKworaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIGdfdGhyZWFkX2luaXQoTlVMTCk7Cisg
ICAgZ3RrX3Rlc3RfaW5pdCgmYXJnYywgJmFyZ3YsIE5VTEwpOworCisgICAgZ190ZXN0X2J1Z19i
YXNlKCJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93
ZWJraXQyL3dlYnNldHRpbmdzL3NjcmlwdHMiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NTY3JpcHRz
KTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL2F1dG9sb2FkIiwg
dGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b2xvYWQpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dl
YmtpdDIvd2Vic2V0dGluZ3MvbG9hZGljb25pZ25vcmluZ2ltYWdlbG9hZHByZWYiLCB0ZXN0V2Vi
S2l0V2ViU2V0dGluZ3NMb2FkSWNvbklnbm9yaW5nSW1hZ2VMb2FkUHJlZik7CisgICAgZ190ZXN0
X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5ncy9vZmZsaW5lYXBwY2FjaGUiLCB0ZXN0V2Vi
S2l0V2ViU2V0dGluZ3NPZmZsaW5lQXBwQ2FjaGUpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dl
YmtpdDIvd2Vic2V0dGluZ3MvbG9jYWxzdG9yYWdlIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzTG9j
YWxTdG9yYWdlKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL2Rh
dGFiYXNlIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzRGF0YWJhc2UpOworICAgIGdfdGVzdF9hZGRf
ZnVuYygiL3dlYmtpdDIvd2Vic2V0dGluZ3MveHNzYXVkaXRvciIsIHRlc3RXZWJLaXRXZWJTZXR0
aW5nc1hzc0F1ZGl0b3IpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdDIvd2Vic2V0dGlu
Z3MvZnJhbWVmbGF0dGVyaW5nIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzRnJhbWVGbGF0dGVyaW5n
KTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL3BsdWdpbnMiLCB0
ZXN0V2ViS2l0V2ViU2V0dGluZ3NQbHVnaW5zKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJr
aXQyL3dlYnNldHRpbmdzL2phdmEiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NKYXZhKTsKKyAgICBn
X3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL2F1dG9vcGVud2luZG93IiwgdGVz
dFdlYktpdFdlYlNldHRpbmdzQXV0b09wZW5XaW5kb3cpOworICAgIGdfdGVzdF9hZGRfZnVuYygi
L3dlYmtpdDIvd2Vic2V0dGluZ3MvaHlwZXJsaW5rYXVkaXRpbmciLCB0ZXN0V2ViS2l0V2ViU2V0
dGluZ3NIeXBlckxpbmtBdWRpdGluZyk7CisKKyAgICByZXR1cm4gZ190ZXN0X3J1biAoKTsKK30K
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mmd0
ay5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mmd0ay5oCmluZGV4
IGRmZWJiYjQuLmUwODE3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3dlYmtpdDJndGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyZ3RrLmgKQEAgLTI0LDUgKzI0LDYgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dFdlYkNvbnRleHQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXdCYXNlLmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJWaWV3Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRXZWJTZXR0aW5ncy5oPgogCiAjZW5kaWYgLyogX19XRUJLSVRfSF9fICovCi0tIAoxLjcuNC4x
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109004</attachid>
            <date>2011-09-28 04:59:27 -0700</date>
            <delta_ts>2011-09-29 02:30:23 -0700</delta_ts>
            <desc>WebKitWebSettings GTK+ API</desc>
            <filename>0001-WebKitWebSettings-GTK-API.patch</filename>
            <type>text/plain</type>
            <size>55782</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSBkNTM5ZWZiNWM1ODcyNGQ0ZjQyNjNlNDM2NjY3OTFlMDMzZTQzZTkxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogV2VkLCAyOCBTZXAgMjAxMSAxNzoyNjo0MCArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIFdl
YktpdFdlYlNldHRpbmdzIEdUSysgQVBJCgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1NyArKwogU291cmNlL1dlYktpdDIvR05VbWFr
ZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgIDExICstCiAuLi4vVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwICAgICAgICB8ICA4ODYgKysrKysrKysrKysrKysr
KysrKysKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmgg
IHwgIDE0OCArKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdz
LmMgICAgICB8ICAxNjYgKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mi5oICAgICAgICAgfCAgICAyICsKIDYgZmlsZXMgY2hhbmdlZCwgMTI2OSBpbnNlcnRpb25z
KCspLCAxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90
ZXN0d2Vic2V0dGluZ3MuYwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlYTg1OWZlLi5jN2U0OTk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTEtMDktMjggIE5heWFuIEt1bWFyIEsgIDxuYXlhbmtr
QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViS2l0V2ViU2V0dGluZ3MgR1RL
KyBBUEkncy4KKworICAgICAgICBXZWJLaXRXZWJTZXR0aW5ncyBHVEsrIG9iamVjdCBpcyBjcmVh
dGVkIGFuZCBmaXJzdCBzZXQgb2YKKyAgICAgICAgQVBJJ3MgYXJlIHdyaXR0ZW4gdG8gZ2V0IG9y
IHNldCB0aGUgcHJvcGVydGllcyBvZiBXZWJLaXRXZWJTZXR0aW5ncy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MzcxCisKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5hbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5n
cy5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZTo6X1dlYktp
dFdlYlNldHRpbmdzUHJpdmF0ZSk6CisgICAgICAgICh3ZWJraXRXZWJTZXR0aW5nc1NldFByb3Bl
cnR5KToKKyAgICAgICAgKHdlYmtpdFdlYlNldHRpbmdzR2V0UHJvcGVydHkpOgorICAgICAgICAo
d2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0
dGluZ3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX25ldyk6CisgICAgICAg
ICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdCk6CisgICAgICAgICh3
ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdCk6CisgICAgICAgICh3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKToKKyAgICAgICAgKHdlYmtpdF93
ZWJfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMpOgorICAgICAgICAod2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKToK
KyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2lt
YWdlX2xvYWRfcHJlZmVyZW5jZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9l
bmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUpOgorICAgICAgICAod2Via2l0X3dl
Yl9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdl
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9z
dG9yYWdlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9k
YXRhYmFzZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVf
ZGF0YWJhc2UpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3hzc19h
dWRpdG9yKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVk
aXRvcik6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxh
dHRlbmluZyk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVf
ZmxhdHRlbmluZyk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfcGx1
Z2lucyk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyk6
CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YSk6CisgICAgICAg
ICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YSk6CisgICAgICAgICh3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxs
eSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVu
X3dpbmRvd3NfYXV0b21hdGljYWxseSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5ncy5jOiBBZGRlZC4KKyAgICAgICAgKHRlc3RXZWJL
aXRXZWJTZXR0aW5nc1NjcmlwdHMpOgorICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdzQXV0
b2xvYWQpOgorICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdzTG9hZEljb25JZ25vcmluZ0lt
YWdlTG9hZFByZWYpOgorICAgICAgICAodGVzdFdlYktpdFdlYlNldHRpbmdzT2ZmbGluZUFwcENh
Y2hlKToKKyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc0xvY2FsU3RvcmFnZSk6CisgICAg
ICAgICh0ZXN0V2ViS2l0V2ViU2V0dGluZ3NEYXRhYmFzZSk6CisgICAgICAgICh0ZXN0V2ViS2l0
V2ViU2V0dGluZ3NYc3NBdWRpdG9yKToKKyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc0Zy
YW1lRmxhdHRlcmluZyk6CisgICAgICAgICh0ZXN0V2ViS2l0V2ViU2V0dGluZ3NQbHVnaW5zKToK
KyAgICAgICAgKHRlc3RXZWJLaXRXZWJTZXR0aW5nc0phdmEpOgorICAgICAgICAodGVzdFdlYktp
dFdlYlNldHRpbmdzQXV0b09wZW5XaW5kb3cpOgorICAgICAgICAodGVzdFdlYktpdFdlYlNldHRp
bmdzSHlwZXJMaW5rQXVkaXRpbmcpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oOgorCiAyMDExLTA5LTI3ICBNYXJrIEhhaG5lbmJlcmcgIDxt
aGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN0YXRpYyB2ZXJzaW9uIG9mIEpT
Q2VsbDo6Z2V0Q2FsbERhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggYzQwMDQ5NS4uY2FjNDdm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNl
L1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTcwLDYgKzcwLDcgQEAgbGlid2Via2l0Mmd0a19A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QF9sYV9IRUEKIGxpYndlYmtpdDJndGtpbmNsdWRlZGlyID0gJChsaWJ3ZWJraXRndGtpbmNsdWRl
ZGlyKS93ZWJraXQyCiBsaWJ3ZWJraXQyZ3RraW5jbHVkZV9IRUFERVJTID0gXAogCSQoV2ViS2l0
MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIFwKKwkkKFdlYktpdDIpL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmggXAogCSQoV2ViS2l0MikvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mi5oCkBAIC00NTcsNiArNDU4LDggQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQ
SV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmggXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5o
IFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5j
cHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdz
LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmggXApA
QCAtOTkwLDcgKzk5Myw4IEBAIERJU1RDTEVBTkZJTEVTICs9IFwKICMgVW5pdCB0ZXN0cwogVEVT
VF9QUk9HUyArPSBcCiAJUHJvZ3JhbXMvdW5pdHRlc3RzL3dlYmtpdDIvdGVzdHdlYmNvbnRleHQg
XAotCVByb2dyYW1zL3VuaXR0ZXN0cy93ZWJraXQyL3Rlc3R3ZWJ2aWV3CisJUHJvZ3JhbXMvdW5p
dHRlc3RzL3dlYmtpdDIvdGVzdHdlYnZpZXcgXAorCVByb2dyYW1zL3VuaXR0ZXN0cy93ZWJraXQy
L3Rlc3R3ZWJzZXR0aW5ncwogCiBub2luc3RfUFJPR1JBTVMgKz0gJChURVNUX1BST0dTKQogd2Vi
a2l0Ml90ZXN0c19jZmxhZ3MgPSBcCkBAIC0xMDI2LDYgKzEwMzAsMTEgQEAgUHJvZ3JhbXNfdW5p
dHRlc3RzX3dlYmtpdDJfdGVzdHdlYnZpZXdfQ0ZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2NmbGFn
cykKIFByb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJ2aWV3X0xEQUREID0gJCh3ZWJr
aXQyX3Rlc3RzX2xkYWRkKQogUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnZpZXdf
TERGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19sZGZsYWdzKQogCitQcm9ncmFtc191bml0dGVzdHNf
d2Via2l0Ml90ZXN0d2Vic2V0dGluZ3NfU09VUkNFUyA9IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5ncy5jCitQcm9ncmFtc191bml0dGVzdHNfd2Vi
a2l0Ml90ZXN0d2Vic2V0dGluZ3NfQ0ZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2NmbGFncykKK1By
b2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJzZXR0aW5nc19MREFERCA9ICQod2Via2l0
Ml90ZXN0c19sZGFkZCkKK1Byb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJzZXR0aW5n
c19MREZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxhZ3MpCisKICMgV2ViS2l0V2ViUHJvY2Vz
cwogbGliZXhlY19QUk9HUkFNUyArPSBcCiAJUHJvZ3JhbXMvV2ViS2l0V2ViUHJvY2VzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGlu
Z3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5OTI1NzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJT
ZXR0aW5ncy5jcHAKQEAgLTAsMCArMSw4ODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Q2hyaXN0aWFuIER5d2FuIDxjaHJpc3RpYW5AaW1lbmRpby5jb20+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggTnVhbnRpIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgSmFuIE1pY2hhZWwgQWxvbnpvCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
TW92aWFsIENyZWF0aXZlIFRlY2hub2xvZ2llcyBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
SWdhbGlhIFMuTC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2Jp
bGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYktpdFdlYlNldHRpbmdzLmgiCisKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgi
CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2VzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S1R5cGUuaD4KKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorCitzdHJ1Y3QgX1dlYktpdFdl
YlNldHRpbmdzUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJl
bmNlczsKKworICAgIF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUoKQorICAgIHsKKyAgICAgICAg
cHJlZmVyZW5jZXMgPSBXS1ByZWZlcmVuY2VzQ3JlYXRlKCk7CisgICAgfQorfTsKKworLyoqCisg
KiBTRUNUSU9OOndlYmtpdHdlYnNldHRpbmdzCisgKiBAc2hvcnRfZGVzY3JpcHRpb246IENvbnRy
b2wgdGhlIGJlaGF2aW91ciBvZiBhICNXZWJLaXRXZWJWaWV3CisgKgorICogI1dlYktpdFdlYlNl
dHRpbmdzIGNhbiBiZSBhcHBsaWVkIHRvIGEgI1dlYktpdFdlYlZpZXcgdG8gY29udHJvbCB0ZXh0
IGVuY29kaW5nLCAKKyAqIGNvbG9yLCBmb250IHNpemVzLCBwcmludGluZyBtb2RlLCBzY3JpcHQg
c3VwcG9ydCwgbG9hZGluZyBvZiBpbWFnZXMgYW5kIHZhcmlvdXMgb3RoZXIgdGhpbmdzLiAKKyAq
IEFmdGVyIGNyZWF0aW9uLCBhICNXZWJLaXRXZWJTZXR0aW5ncyBvYmplY3QgY29udGFpbnMgZGVm
YXVsdCBzZXR0aW5ncy4gCisgKgorICogPGluZm9ybWFsZXhhbXBsZT48cHJvZ3JhbWxpc3Rpbmc+
CisgKiAvPCEtLSAtLT4qIENyZWF0ZSBhIG5ldyB3ZWJzZXR0aW5ncyBhbmQgZGlzYWJsZSBqYXZh
IHNjcmlwdCAqPCEtLSAtLT4vCisgKiBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJr
aXRfd2ViX3NldHRpbmdzX25ldyAoKTsKKyAqIGdfb2JqZWN0X3NldCAoR19PQkpFQ1Qoc2V0dGlu
Z3MpLCAiZW5hYmxlLXNjcmlwdHMiLCBGQUxTRSwgTlVMTCk7CisgKgorICogLzwhLS0gLS0+KiBB
cHBseSB0aGUgcmVzdWx0ICo8IS0tIC0tPi8KKyAqIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGlu
Z3MgKFdFQktJVF9XRUJfVklFVyhteV93ZWJ2aWV3KSwgc2V0dGluZ3MpOworICogPC9wcm9ncmFt
bGlzdGluZz48L2luZm9ybWFsZXhhbXBsZT4KKyAqLworCisKK0dfREVGSU5FX1RZUEUoV2ViS2l0
V2ViU2V0dGluZ3MsIHdlYmtpdF93ZWJfc2V0dGluZ3MsIEdfVFlQRV9PQkpFQ1QpCisKK2VudW0g
eworICAgIFBST1BfMCwKKworICAgIFBST1BfRU5BQkxFX0pBVkFTQ1JJUFQsCisgICAgUFJPUF9B
VVRPX0xPQURfSU1BR0VTLAorICAgIFBST1BfTE9BRFNfSUNPTlNfSUdOT1JJTkdfSU1BR0VfTE9B
RF9QUkVGRVJFTkNFLAorICAgIFBST1BfRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OX0NB
Q0hFLAorICAgIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0UsCisgICAgUFJPUF9FTkFC
TEVfSFRNTDVfREFUQUJBU0UsCisgICAgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1IsCisgICAgUFJP
UF9FTkFCTEVfRlJBTUVfRkxBVFRFUklORywKKyAgICBQUk9QX0VOQUJMRV9QTFVHSU5TLAorICAg
IFBST1BfRU5BQkxFX0pBVkEsCisgICAgUFJPUF9KQVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1Nf
QVVUT01BVElDQUxMWSwKKyAgICBQUk9QX0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkcsCit9Owor
CitzdGF0aWMgdm9pZCB3ZWJraXRXZWJTZXR0aW5nc1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykK
K3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSBXRUJLSVRfV0VCX1NFVFRJTkdT
KG9iamVjdCk7CisgCisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIFBST1BfRU5BQkxF
X0pBVkFTQ1JJUFQ6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZh
c2NyaXB0KHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9BVVRPX0xPQURfSU1BR0VTOgorICAgICAgICB3ZWJraXRfd2Vi
X3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29s
ZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9MT0FEU19JQ09OU19J
R05PUklOR19JTUFHRV9MT0FEX1BSRUZFUkVOQ0U6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZShzZXR0aW5n
cywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hFOgorICAgICAgICB3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUo
c2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFOgorICAgICAgICB3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0aW5ncywgZ192
YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
RU5BQkxFX0hUTUw1X0RBVEFCQVNFOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9l
bmFibGVfaHRtbDVfZGF0YWJhc2Uoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUjoKKyAg
ICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdz
LCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRFUklORzoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xl
YW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9QTFVHSU5T
OgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyhzZXR0aW5n
cywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfRU5BQkxFX0pBVkE6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9qYXZhKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9KQVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElD
QUxMWToKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Bl
bl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFs
dWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IWVBFUkxJTktfQVVE
SVRJTkc6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtf
YXVkaXRpbmcoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BF
UlRZX0lEKG9iamVjdCwgcHJvcElkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30K
Kworc3RhdGljIHZvaWQgd2Via2l0V2ViU2V0dGluZ3NHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7Cisg
ICAgV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzID0gV0VCS0lUX1dFQl9TRVRUSU5HUyhvYmpl
Y3QpOworCisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0pBVkFT
Q1JJUFQ6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9BVVRPX0xPQURfSU1BR0VTOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29s
ZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRp
bmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9MT0FEU19JQ09OU19JR05PUklO
R19JTUFHRV9MT0FEX1BSRUZFUkVOQ0U6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFs
dWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xv
YWRfcHJlZmVyZW5jZShzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
RU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hFOgorICAgICAgICBnX3ZhbHVlX3Nl
dF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93
ZWJfYXBwbGljYXRpb25fY2FjaGUoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFOgorICAgICAgICBnX3ZhbHVlX3NldF9i
b29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxf
c3RvcmFnZShzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxF
X0hUTUw1X0RBVEFCQVNFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2Uoc2V0dGluZ3MpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUjoKKyAgICAgICAg
Z192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxl
X3hzc19hdWRpdG9yKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9F
TkFCTEVfRlJBTUVfRkxBVFRFUklORzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1
ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGlu
Z3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9QTFVHSU5TOgorICAg
ICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9l
bmFibGVfcGx1Z2lucyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
RU5BQkxFX0pBVkE6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9KQVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWToK
KyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3MpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkc6
CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lE
KG9iamVjdCwgcHJvcElkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFdlYlNldHRpbmdz
Q2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpF
Q1RfQ0xBU1Moa2xhc3MpOworICAgIGdPYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0
V2ViU2V0dGluZ3NTZXRQcm9wZXJ0eTsKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9
IHdlYmtpdFdlYlNldHRpbmdzR2V0UHJvcGVydHk7CisKKyAgICBHUGFyYW1GbGFncyBmbGFncyA9
IHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJB
TV9DT05TVFJVQ1QpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUt
amF2YXNjcmlwdAorICAgICoKKyAgICAqIFRoaXMgcHJvcGVydHkgbmVlZHMgdG8gYmUgc2V0IHRv
IGVuYWJsZSB0aGUgZXhlY3V0aW9uIG9mIAorICAgICogSmF2YXNjcmlwdCB3aXRoaW4gYSBwYWdl
LgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09i
amVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFC
TEVfSkFWQVNDUklQVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19ib29sZWFuKCJlbmFibGUtamF2YXNjcmlwdCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSmF2YVNjcmlw
dCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXygiRW5hYmxlIEphdmFTY3JpcHQgbGFuZ3VhZ2VzLiIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7
CisgICAgCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczphdXRvLWxvYWQtaW1hZ2Vz
CisgICAgKgorICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGltYWdlcyBzaG91bGQgYmUgYXV0b21h
dGljYWxseSBsb2FkZWQgb3Igbm90LgorICAgICogT24gZGV2aWNlcywgd2hlcmUgbmV0d29yayBi
YW5kd2lkdGggaXMgb2YgY29uY2VybiwgaXQgbWlnaHQgYmUKKyAgICAqIHVzZWZ1bCB0byB0dXJu
IHRoaXMgcHJvcGVydHkgb2ZmLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJPUF9BVVRPX0xPQURfSU1BR0VTLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImF1dG8tbG9hZC1pbWFnZXMiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
QXV0byBMb2FkIEltYWdlcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXygiTG9hZCBpbWFnZXMgYXV0b21hdGljYWxseS4iKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbGFncykpOworICAgIAorICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6bG9h
ZHMtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmZXJlbmNlCisgICAgKgorICAgICogQnkg
ZW5hYmxpbmcgdGhpcyBwcm9wZXJ0eSwgc2l0ZSBpY29ucyAoZS5nLCBmYXZpY29uKSB3aWxsIGJl
IGxvYWRlZAorICAgICogaXJyZXNwZWN0aXZlIG9mIHRoZSB2YWx1ZSBvZiAjT2JqZWN0OmF1dG8t
bG9hZC1pbWFnZXMuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX0xPQURTX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJsb2Fk
cy1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWZlcmVuY2UiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiTG9hZHMgU2l0ZSBJ
Y29ucyBpZ25vcmluZyBpbWFnZSBsb2FkIHByZWZlcmVuY2UiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gbG9h
ZCBzaXRlIGljb24gaWdub3JpbmcgaW1hZ2UgbG9hZCBwcmVmZXJlbmNlLiIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtb2ZmbGlu
ZS13ZWItYXBwbGljYXRpb24tY2FjaGUKKyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBI
VE1MNSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlvbiBjYWNoZSBzdXBwb3J0LiBPZmZsaW5lCisgICAg
KiBXZWIgQXBwbGljYXRpb24gQ2FjaGUgZW5zdXJlcyB3ZWIgYXBwbGljYXRpb25zIGFyZSBhdmFp
bGFibGUgZXZlbiB3aGVuCisgICAgKiB0aGUgdXNlciBpcyBub3QgY29ubmVjdGVkIHRvIHRoZSBu
ZXR3b3JrLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJP
UF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05fQ0FDSEUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLW9mZmxpbmUt
d2ViLWFwcGxpY2F0aW9uLWNhY2hlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlv
biBjYWNoZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFibGUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24g
Y2FjaGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0
aW5nczplbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZToKKyAgICAqCisgICAgKiBXaGV0aGVyIHRv
IGVuYWJsZSBIVE1MNSBsb2NhbFN0b3JhZ2Ugc3VwcG9ydC4gbG9jYWxTdG9yYWdlIHByb3ZpZGVz
CisgICAgKiBzaW1wbGUgc3luY2hyb25vdXMgc3RvcmFnZSBhY2Nlc3MuCisgICAgKgorICAgICov
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9T
VE9SQUdFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVj
X2Jvb2xlYW4oImVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBIVE1MNSBM
b2NhbCBTdG9yYWdlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBMb2NhbCBTdG9yYWdl
IHN1cHBvcnQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJT
ZXR0aW5nczplbmFibGUtaHRtbDUtZGF0YWJhc2U6CisgICAgKgorICAgICogV2hldGhlciB0byBl
bmFibGUgSFRNTDUgY2xpZW50LXNpZGUgU1FMIGRhdGFiYXNlIHN1cHBvcnQuIENsaWVudC1zaWRl
CisgICAgKiBTUUwgZGF0YWJhc2UgYWxsb3dzIHdlYiBwYWdlcyB0byBzdG9yZSBzdHJ1Y3R1cmVk
IGRhdGEgYW5kIGJlIGFibGUgdG8KKyAgICAqIHVzZSBTUUwgdG8gbWFuaXB1bGF0ZSB0aGF0IGRh
dGEgYXN5bmNocm9ub3VzbHkuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtaHRtbDUtZGF0YWJh
c2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXygiRW5hYmxlIEhUTUw1IERhdGFiYXNlIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBI
VE1MNSBkYXRhYmFzZSBzdXBwb3J0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAg
ICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLXhzcy1hdWRpdG9yCisgICAgKgorICAgICogV2hl
dGhlciB0byBlbmFibGUgdGhlIFhTUyBBdWRpdG9yLiBUaGlzIGZlYXR1cmUgZmlsdGVycyBzb21l
IGtpbmRzIG9mCisgICAgKiByZWZsZWN0aXZlIFhTUyBhdHRhY2tzIG9uIHZ1bG5lcmFibGUgd2Vi
IHNpdGVzLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJP
UF9FTkFCTEVfWFNTX0FVRElUT1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLXhzcy1hdWRpdG9yIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBY
U1MgQXVkaXRvciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFibGUgdGhlIFhTUyBhdWRpdG9yIiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
UlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ3MpKTsKKworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFi
bGUtZnJhbWUtZmxhdHRlbmluZworICAgICoKKyAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBG
cmFtZSBGbGF0dGVuaW5nLiBXaXRoIHRoaXMgc2V0dGluZyBlYWNoIHN1YmZyYW1lIGlzIGV4cGFu
ZGVkCisgICAgKiB0byBpdHMgY29udGVudHMsIHdoaWNoIHdpbGwgZmxhdHRlbiBhbGwgdGhlIGZy
YW1lcyB0byBiZWNvbWUgb25lIHNjcm9sbGFibGUgcGFnZS4KKyAgICAqIE9uIHRvdWNoIGRldmlj
ZXMsIGl0IGlzIGRlc2lyZWQgdG8gbm90IGhhdmUgYW55IHNjcm9sbGFibGUgc3ViIHBhcnRzIG9m
IHRoZSBwYWdlIGFzCisgICAgKiBpdCByZXN1bHRzIGluIGEgY29uZnVzaW5nIHVzZXIgZXhwZXJp
ZW5jZSwgd2l0aCBzY3JvbGxpbmcgc29tZXRpbWVzIHNjcm9sbGluZyBzdWIgcGFydHMKKyAgICAq
IGFuZCBhdCBvdGhlciB0aW1lcyBzY3JvbGxpbmcgdGhlIHBhZ2UgaXRzZWxmLiBGb3IgdGhpcyBy
ZWFzb24gaWZyYW1lcyBhbmQgZnJhbWVzZXRzIGFyZQorICAgICogYmFyZWx5IHVzYWJsZSBvbiB0
b3VjaCBkZXZpY2VzLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRFUklORywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtZnJhbWUtZmxhdHRlbmlu
ZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfKCJFbmFibGUgRnJhbWUgRmxhdHRlbmluZyIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFibGUg
RnJhbWUgRmxhdHRlbmluZyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAvKioKKyAgICAqIFdl
YktpdFdlYlNldHRpbmdzOmVuYWJsZS1wbHVnaW5zOgorICAgICoKKyAgICAqIFBsdWdpbnMgZW1k
ZWRkZWQgd2l0aGluIGEgcGFnZSBjYW4gYmUgdHVybmVkIG9mZiBieSBkaXNhYmxpbmcKKyAgICAq
IHRoaXMgcHJvcGVydHkuIAorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJPUF9FTkFCTEVfUExVR0lOUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtcGx1Z2lucyIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUg
UGx1Z2lucyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXygiRW5hYmxlIGVtYmVkZGVkIHBsdWdpbiBvYmplY3RzLiIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsYWdzKSk7CisgICAgCisgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1q
YXZhOgorICAgICoKKyAgICAqIEVuYWJsZSBvciBkaXNhYmxlIHN1cHBvcnQgZm9yIHRoZSBKYXZh
LiBUaGlzIHByb3BlcnR5IG5lZWRzIHRvIGJlIGVuYWJsZWQKKyAgICAqIGZvciBkaXNwbGF5aW5n
IGphdmEgY29udGVudHMgdmlhICAmbHQ7b2JqZWN0Jmd0OyBvciAmbHQ7ZW1iZWQmZ3Q7IHRhZy4K
KyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmpl
Y3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxF
X0pBVkEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNf
Ym9vbGVhbigiZW5hYmxlLWphdmEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEphdmEiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgSmF2
YSBzdXBwb3J0IHNob3VsZCBiZSBlbmFibGVkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8q
KgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6amF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1
dG9tYXRpY2FsbHkKKyAgICAqCisgICAgKiBXaGV0aGVyIEphdmFTY3JpcHQgY2FuIG9wZW4gcG9w
dXAgd2luZG93cyBhdXRvbWF0aWNhbGx5IHdpdGhvdXQgdXNlcgorICAgICogaW50ZXJ2ZW50aW9u
LgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09i
amVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9KQVZB
U0NSSVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJqYXZhc2NyaXB0LWNhbi1v
cGVuLXdpbmRvd3MtYXV0b21hdGljYWxseSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJKYXZhU2NyaXB0IGNhbiBvcGVuIHdpbmRv
d3MgYXV0b21hdGljYWxseSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciBKYXZhU2NyaXB0IGNhbiBvcGVuIHdpbmRv
d3MgYXV0b21hdGljYWxseSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBX
ZWJLaXRXZWJTZXR0aW5nczplbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nOgorICAgICoKKyAgICAq
IEVuYWJsZSBvciBkaXNhYmxlIHN1cHBvcnQgZm9yICZsdDthIHBpbmcmZ3Q7LgorICAgICoKKyAg
ICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfSFlQRVJMSU5L
X0FVRElUSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9z
cGVjX2Jvb2xlYW4oImVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmciLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEh5cGVy
bGluayBBdWRpdGluZyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXygiV2hldGhlciA8YSBwaW5nPiBzaG91bGQgYmUgYWJsZSB0byBz
ZW5kIHBpbmdzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3By
aXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpKTsKK30KKworc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19pbml0KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0
aW5ncykKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5T
VEFOQ0VfR0VUX1BSSVZBVEUoc2V0dGluZ3MsIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2Vi
S2l0V2ViU2V0dGluZ3NQcml2YXRlKTsKKyAgICBzZXR0aW5ncy0+cHJpdiA9IHByaXY7CisgICAg
bmV3IChwcml2KSBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUoKTsKK30KKworLyoqCisgKiB3ZWJr
aXRfd2ViX3NldHRpbmdzX25ldzoKKyAqCisgKiBDcmVhdGVzIGEgbmV3ICNXZWJLaXRXZWJTZXR0
aW5ncyBpbnN0YW5jZSB3aXRoIGRlZmF1bHQgdmFsdWVzLiBJdCBtdXN0CisgKiBiZSBtYW51YWxs
eSBhdHRhY2hlZCB0byBhIFdlYlZpZXcuCisgKgorICogUmV0dXJuczogYSBuZXcgI1dlYktpdFdl
YlNldHRpbmdzIGluc3RhbmNlLgorICoqLworV2ViS2l0V2ViU2V0dGluZ3MqIHdlYmtpdF93ZWJf
c2V0dGluZ3NfbmV3KCkKK3sKKyAgICByZXR1cm4gV0VCS0lUX1dFQl9TRVRUSU5HUyhnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTLCBOVUxMKSk7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQ6CisgKgorICogR2V0IHByb3Bl
cnR5ICNPYmplY3Q6ZW5hYmxlLWphdmFzY3JpcHQuCisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdl
YlNldHRpbmdzCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgSmF2YVNjcmlwdCBpcyBlbmFibGVk
LgorICogICAgICAgICAgJUZBTFNFIElmIEphdmFTY3JpcHQgaXMgbm90IGVuYWJsZWQuCisgKgor
ICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdCgp
CisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlw
dChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktp
dFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBX
S1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdEVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQor
CisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0OgorICog
QHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJl
IHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1qYXZhc2NyaXB0LgorICoK
KyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQo
KQorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdChX
ZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBX
ZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9v
bGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdEVuYWJsZWQocHJp
di0+cHJlZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldEphdmFTY3JpcHRFbmFibGVkKHByaXYt
PnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpF
Q1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWphdmFzY3JpcHQiKTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzOgorICogQHNldHRpbmdzOiBhICNXZWJL
aXRXZWJTZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmF1dG8tbG9hZC1pbWFn
ZXMuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgYXV0byBsb2FkaW5nIG9mIGltYWdlcyBpcyBl
bmFibGVkLgorICogICAgICAgICAgJUZBTFNFIElmIGF1dG8gbG9hZGluZyBvZiBpbWFnZXMgaXMg
ZGlzYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9hdXRv
X2xvYWRfaW1hZ2VzKCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1
dG9fbG9hZF9pbWFnZXMoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7
CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsK
KyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShwcml2
LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfYXV0
b19sb2FkX2ltYWdlczoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqIEBl
bmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgcHJvcGVydHkgI09iamVjdDphdXRv
LWxvYWQtaW1hZ2VzLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
YXV0b19sb2FkX2ltYWdlcygpCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2F1
dG9fbG9hZF9pbWFnZXMoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFi
bGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0
aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3Mt
PnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldExvYWRz
SW1hZ2VzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRW
YWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0
TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVk
KTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiYXV0by1sb2FkLWlt
YWdlcyIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25z
X2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0
V2ViU2V0dGluZ3MKKyAqCisgKiBHZXQgcHJvcGVydHkgI09iamVjdDpsb2Fkcy1pY29ucy1pZ25v
cmluZy1pbWFnZS1sb2FkLXByZWZlcmVuY2UuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgc2l0
ZS1pY29uIGNhbiBiZSBsb2FkZWQgaXJyZXNwZWN0aXZlIG9mIGltYWdlIGxvYWRpbmcgcHJlZmVy
ZW5jZS4KKyAqICAgICAgICAgICVGQUxTRSBJZiBzaXRlLWljb25zIGNhbiBub3QgYmUgbG9hZGVk
LgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNf
aWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5j
ZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktp
dFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBX
S1ByZWZlcmVuY2VzR2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVu
Y2UocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZToKKyAqIEBzZXR0
aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQK
KyAqCisgKiBTZXQgcHJvcGVydHkgI09iamVjdDpsb2Fkcy1pY29ucy1pZ25vcmluZy1pbWFnZS1s
b2FkLXByZWZlcmVuY2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UoKQorICogICAgICAg
ICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcygpCisgKiovCit2
b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xv
YWRfcHJlZmVyZW5jZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJs
ZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRp
bmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+
cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TG9hZHNT
aXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2UocHJpdi0+cHJlZmVyZW5jZXMp
OworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgV0tQcmVmZXJlbmNlc1NldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVm
ZXJlbmNlKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9u
b3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAibG9hZHMtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9h
ZC1wcmVmZXJlbmNlIik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5h
YmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlOgorICogQHNldHRpbmdzOiBhICNXZWJL
aXRXZWJTZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1vZmZsaW5l
LXdlYi1hcHBsaWNhdGlvbi1jYWNoZS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBIVE1MNSBv
ZmZsaW5lIHdlYiBhcHBsaWNhdGlvbiBjYWNoZSBzdXBwb3J0IGlzIGVuYWJsZWQuCisgKiAgICAg
ICAgICAlRkFMU0UgSWYgSFRNTDUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUgc3VwcG9y
dCBpcyBkaXNhYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0
X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZSgpCisgKiovCitnYm9vbGVhbiB3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2Fj
aGUoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJL
aXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4g
V0tQcmVmZXJlbmNlc0dldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChwcml2LT5w
cmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxl
X29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRX
ZWJTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9w
ZXJ0eSAjT2JqZWN0OmVuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZS4KKyAqCisg
KiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9h
cHBsaWNhdGlvbl9jYWNoZSgpCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0
dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZh
dGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBX
S1ByZWZlcmVuY2VzR2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHByaXYtPnBy
ZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVu
YWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24t
Y2FjaGUiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRt
bDVfbG9jYWxfc3RvcmFnZToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAq
CisgKiBHZXQgcHJvcGVydHkgI09iamVjdDplbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZS4KKyAq
CisgKiBSZXR1cm5zOiAlVFJVRSBJZiBIVE1MNSBsb2NhbCBzdG9yYWdlIHN1cHBvcnQgaXMgZW5h
YmxlZC4KKyAqICAgICAgICAgICVGQUxTRSBJZiBIVE1MNSBsb2NhbCBzdG9yYWdlIGlzIGRpc2Fi
bGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0
bWw1X2xvY2FsX3N0b3JhZ2UoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdz
KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0
dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBz
ZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldExvY2FsU3RvcmFnZUVu
YWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlOgorICogQHNldHRpbmdzOiBhICNXZWJL
aXRXZWJTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBw
cm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlLgorICoKKyAqIEBzZWVf
YWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Uo
KQorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfbG9jYWxf
c3RvcmFnZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7
CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsK
KyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TG9jYWxTdG9yYWdl
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFi
bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0TG9jYWxTdG9yYWdl
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rf
bm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlIik7
Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFi
YXNlOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICoKKyAqIEdldCBwcm9w
ZXJ0eSAjT2JqZWN0OmVuYWJsZS1odG1sNS1kYXRhYmFzZS4KKyAqCisgKiBSZXR1cm5zOiAlVFJV
RSBJZiBIVE1MNSBkYXRhYmFzZSBzdXBwb3J0IGlzIGVuYWJsZWQuCisgKiAgICAgICAgICAlRkFM
U0UgSWYgSFRNTDUgZGF0YWJhc2Ugc3VwcG9ydCBpcyBkaXNhYmxlZC4KKyAqCisgKiBAc2VlX2Fs
c286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZSgpCisgKiov
CitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2Uo
V2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRX
ZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQ
cmVmZXJlbmNlc0dldERhdGFiYXNlc0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisv
KioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZToKKyAq
IEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBi
ZSBzZXQKKyAqCisgKiBTZXQgcHJvcGVydHkgI09iamVjdDplbmFibGUtaHRtbDUtZGF0YWJhc2Uu
CisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVf
ZGF0YWJhc2UoKQorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRt
bDVfZGF0YWJhc2UoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVk
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5n
cykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnBy
aXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldERhdGFiYXNl
c0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5h
YmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldERhdGFiYXNlc0Vu
YWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtaHRtbDUtZGF0YWJhc2UiKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3I6CisgKiBA
c2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKgorICogR2V0IHByb3BlcnR5ICNPYmpl
Y3Q6ZW5hYmxlLXhzcy1hdWRpdG9yLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIFhTUyBhdWRp
dGluZyBpcyBlbmFibGVkLgorICogICAgICAgICAgJUZBTFNFIElmIFhTUyBhdWRpdGluZyBpcyBk
aXNhYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV94c3NfYXVkaXRvcigpCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9l
bmFibGVfeHNzX2F1ZGl0b3IoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxT
RSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJp
djsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldFhTU0F1ZGl0b3JFbmFibGVkKHByaXYtPnBy
ZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVf
eHNzX2F1ZGl0b3I6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKiBAZW5h
YmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxl
LXhzcy1hdWRpdG9yLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
ZW5hYmxlX3hzc19hdWRpdG9yKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
ZW5hYmxlX3hzc19hdWRpdG9yKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4g
ZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Mo
c2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRp
bmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRY
U1NBdWRpdG9yRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRWYWx1
ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0WFNT
QXVkaXRvckVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAgIGdf
b2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUteHNzLWF1ZGl0b3IiKTsK
K30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRl
bmluZzoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqCisgKiBHZXQgcHJv
cGVydHkgI09iamVjdDplbmFibGUtZnJhbWUtZmxhdHRlbmluZy4KKyAqLgorICogUmV0dXJuczog
JVRSVUUgSWYgZnJhbWUgZmxhdHRlbmluZyBpcyBlbmFibGVkLgorICogICAgICAgICAgJUZBTFNF
IElmIGZyYW1lIGZsYXR0ZW5pbmcgaXMgbm90IGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3
ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZygpCisgKiovCitn
Ym9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhX
ZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdl
YlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1By
ZWZlcmVuY2VzR2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9
CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5p
bmc6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFs
dWUgdG8gYmUgc2V0CisgKgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLWZyYW1lLWZs
YXR0ZW5pbmcuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFi
bGVfZnJhbWVfZmxhdHRlbmluZygpCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0
X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jv
b2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VU
VElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9
IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5j
ZXNHZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAo
Y3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVy
ZW5jZXNTZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCll
bmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxl
LWZyYW1lLWZsYXR0ZW5pbmciKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9lbmFibGVfcGx1Z2luczoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAq
CisgKiBHZXQgcHJvcGVydHkgI09iamVjdDplbmFibGUtcGx1Z2lucy4KKyAqCisgKiBSZXR1cm5z
OiAlVFJVRSBJZiBQbHVnaW5zIGFyZSBlbmFibGVkLgorICogICAgICAgICAgJUZBTFNFIElmIHBs
dWdpbnMgYXJlIG5vdCBlbmFibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3Mp
LCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5n
cy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldFBsdWdpbnNFbmFibGVkKHByaXYt
PnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFi
bGVfcGx1Z2luczoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqIEBlbmFi
bGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgcHJvcGVydHkgI09iamVjdDplbmFibGUt
cGx1Z2lucy4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9wbHVnaW5zKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX3Bs
dWdpbnMoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQorewor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOwor
CisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Cisg
ICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFBsdWdpbnNFbmFibGVk
KHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRQbHVnaW5zRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JK
RUNUKHNldHRpbmdzKSwgImVuYWJsZS1wbHVnaW5zIik7Cit9CisKKy8qKgorICogd2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmE6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNl
dHRpbmdzCisgKgorICogR2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLWphdmEuCisgKgorICog
UmV0dXJuczogJVRSVUUgSWYgSmF2YSBpcyBlbmFibGVkLgorICogICAgICAgICAgJUZBTFNFIElm
IEphdmEgaXMgbm90IGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9lbmFibGVfamF2YSgpCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3NldHRpbmdz
X2dldF9lbmFibGVfamF2YShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNF
KTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2
OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5j
ZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhOgor
ICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRv
IGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1qYXZhLgorICoKKyAq
IEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEoKQorICoqLwor
dm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YShXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5n
c1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFs
dWUgPSBXS1ByZWZlcmVuY2VzR2V0SmF2YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAg
IGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQ
cmVmZXJlbmNlc1NldEphdmFFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVk
KTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWphdmEi
KTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9v
cGVuX3dpbmRvd3NfYXV0b21hdGljYWxseToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0
dGluZ3MKKyAqCisgKiBHZXQgcHJvcGVydHkgI09iamVjdDpqYXZhc2NyaXB0LWNhbi1vcGVuLXdp
bmRvd3MtYXV0b21hdGljYWxseS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBKYXZhU2NyaXB0
IGNhbiBvcGVuIHdpbmRvdyBhdXRvbWF0aWNhbGx5LgorICogICAgICAgICAgJUZBTFNFIElmIEph
dmFTY3JpcHQgaXMgbm90IGFsbG93ZWQgdG8gb3BlbiB3aW5kb3cgYXV0b21hdGljYWxseS4gCisg
KgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9v
cGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSgpCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShXZWJL
aXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNl
dHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZl
cmVuY2VzR2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShwcml2LT5wcmVm
ZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfamF2YXNjcmlw
dF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHk6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktp
dFdlYlNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHBy
b3BlcnR5ICNPYmplY3Q6amF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHku
CisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nh
bl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSgpCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KFdlYktp
dFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktp
dFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFu
IGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NB
dXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09
IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhU2Ny
aXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCll
bmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiamF2YXNj
cmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHkiKTsKK30KKworLyoqCisgKiB3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nOgorICogQHNldHRp
bmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmVu
YWJsZS1oeXBlcmxpbmstYXVkaXRpbmcuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgaHlwZXIt
bGluayBhdWRpdGluZyBpcyBlbmFibGVkLgorICogICAgICAgICAgJUZBTFNFIElmIGh5cGVyLWxp
bmsgYXVkaXRpbmcgaXMgZGlzYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKCkKKyAqKi8KK2dib29sZWFuIHdl
YmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoV2ViS2l0V2Vi
U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5n
c1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNl
c0dldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8q
KgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZzoK
KyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0
byBiZSBzZXQKKyAqCisgKiBTZXQgcHJvcGVydHkgI09iamVjdDplbmFibGUtaHlwZXJsaW5rLWF1
ZGl0aW5nLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxl
X2h5cGVybGlua19hdWRpdGluZygpCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0
X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBn
Ym9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9T
RVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2
ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJl
bmNlc0dldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7CisgICAg
aWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1By
ZWZlcmVuY2VzU2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCAo
Ym9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAi
ZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZWQyZDliYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmgKQEAgLTAsMCArMSwxNDgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2hyaXN0aWFuIER5d2FuIDxjaHJpc3RpYW5A
aW1lbmRpby5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSmFuIE1pY2hhZWwgQWxvbnpvIDxq
bWFsb256b0BnbWFpbC5jb20KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9s
YSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRXZWJT
ZXR0aW5nc19oCisjZGVmaW5lIFdlYktpdFdlYlNldHRpbmdzX2gKKworI2luY2x1ZGUgPFdlYktp
dDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKworR19CRUdJTl9ERUNMUwor
CisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUyAgICAgICAgICAgICh3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfU0VUVElOR1Mob2JqKSAg
ICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVf
V0VCX1NFVFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5ncykpCisjZGVmaW5lIFdFQktJVF9XRUJfU0VU
VElOR1NfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAg
V0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzKSkKKyNkZWZp
bmUgV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNU
QU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MpKQorI2RlZmluZSBXRUJL
SVRfSVNfV0VCX1NFVFRJTkdTX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUo
KGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUykpCisjZGVmaW5lIFdFQktJVF9XRUJf
U0VUVElOR1NfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmop
LCAgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzKSkKKwor
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzIFdlYktpdFdlYlNldHRpbmdzOwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzQ2xhc3MgV2ViS2l0V2ViU2V0dGluZ3NDbGFz
czsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgV2ViS2l0V2ViU2V0
dGluZ3NQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzIHsKKyAgICBHT2JqZWN0
IHBhcmVudF9pbnN0YW5jZTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSAqcHJpdjsK
K307CisKK3N0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyB7CisgICAgR09iamVjdENsYXNz
IHBhcmVudF9jbGFzczsKKworICAgIC8qIFBhZGRpbmcgZm9yIGZ1dHVyZSBleHBhbnNpb24gKi8K
KyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtp
dF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lk
KTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2b2lkKTsKK307CisKK1dLX0VYUE9S
VCBHVHlwZQord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfdHlwZSh2b2lkKTsKKworV0tfRVhQT1JU
IFdlYktpdFdlYlNldHRpbmdzICoKK3dlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KHZvaWQpOworCitX
S19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2Ny
aXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdz
KTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZh
c2NyaXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRp
bmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFu
Cit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2
b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlIChXZWJL
aXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlIChX
ZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQp
OworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9v
ZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZSAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNl
dHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZSAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3Mq
IHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdi
b29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFn
ZSAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VY
UE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfbG9jYWxfc3Rv
cmFnZSAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlICAgICAgICAgICAgICAgICAgICAg
IChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0
X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVu
YWJsZWQpOworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFi
bGVfeHNzX2F1ZGl0b3IgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdz
KiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9l
bmFibGVfeHNzX2F1ZGl0b3IgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRp
bmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9S
VCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5p
bmcgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitX
S19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0
ZW5pbmcgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dl
YmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVh
biBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9lbmFibGVfamF2YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNl
dHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdz
X3NldF9lbmFibGVfamF2YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dL
X0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5f
b3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3Mp
OworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9j
YW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGlu
Z3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4K
K3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcgICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZv
aWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcgICAg
ICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
Ym9vbGVhbiBlbmFibGVkKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIHdlYmtpdHdlYnNl
dHRpbmdzX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL3Rlc3R3ZWJzZXR0aW5ncy5jIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMzkzYjg2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5ncy5jCkBAIC0wLDAgKzEsMTY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEphbiBNaWNoYWVsIEFsb256bworICogUG9ydGlvbnMgQ29w
eXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3
ZWJraXQyL3dlYmtpdDIuaD4KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRpbmdzU2Ny
aXB0cyh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93
ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBTY3JpcHRzIGlzIGVuYWJsZWQgYnkgZGVmYXVs
dC4KKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlw
dChzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2Ny
aXB0KHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RX
ZWJLaXRXZWJTZXR0aW5nc0F1dG9sb2FkKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3Mg
KnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEJ5IGRlZmF1
bHQgYXV0by1sb2FkLWltYWdlIGlzIHRydWUuCisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2Vy
dCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncykpOwor
fQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NMb2FkSWNvbklnbm9yaW5nSW1h
Z2VMb2FkUHJlZih2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdl
YmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBsb2FkLWljb24taWdub3JpbmctaW1h
Z2UtbG9hZC1wcmVmIGlzIGZhbHNlIGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQoIXdlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5j
ZShzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2ln
bm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZShzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3Nl
cnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9h
ZF9wcmVmZXJlbmNlKHNldHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJT
ZXR0aW5nc09mZmxpbmVBcHBDYWNoZSh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpz
ZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisgICAgCisgICAgLy8gT2ZmbGlu
ZSBhcHBsaWNhdGlvbiBjYWNoZSBpcyB0cnVlIGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQod2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hl
KHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVf
d2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdl
YmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNo
ZShzZXR0aW5ncykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NMb2Nh
bFN0b3JhZ2Uodm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJr
aXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gTG9jYWwgc3RvcmFnZSBpcyBlbmFibGUg
YnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVf
aHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19h
c3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdl
KHNldHRpbmdzKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0RhdGFi
YXNlKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dl
Yl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEhUTUw1IGRhdGFiYXNlIGlzIGVuYWJsZWQgYnkg
ZGVmYXVsdC4KKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRt
bDVfZGF0YWJhc2Uoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFi
bGVfaHRtbDVfZGF0YWJhc2Uoc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzKSk7Cit9CisK
K3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc1hzc0F1ZGl0b3Iodm9pZCkKK3sKKyAg
ICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygp
OworCisgICAgLy8gWFNTIEF1ZGl0b3IgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNz
ZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncykp
OworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5n
cywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVf
eHNzX2F1ZGl0b3Ioc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNl
dHRpbmdzRnJhbWVGbGF0dGVyaW5nKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNl
dHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEZyYW1lIGZsYXR0
ZXJpbmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MpKTsKKyAgICB3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncywgVFJV
RSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2Zs
YXR0ZW5pbmcoc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlNldHRp
bmdzUGx1Z2lucyh2b2lkKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdl
YmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBQbHVnaW5zIGFyZSBlbmFibGVkIGJ5
IGRlZmF1bHQuCisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3Bs
dWdpbnMoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfcGx1
Z2lucyhzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdz
X2dldF9lbmFibGVfcGx1Z2lucyhzZXR0aW5ncykpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2Vi
S2l0V2ViU2V0dGluZ3NKYXZhKHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRp
bmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEphdmEgaXMgZW5hYmxl
ZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9qYXZhKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2ph
dmEoc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdFdl
YlNldHRpbmdzQXV0b09wZW5XaW5kb3codm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAq
c2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gQnkgZGVmYXVs
dCwgSmF2YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgaXMgZGlzYWJsZWQu
CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29w
ZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGlu
Z3MsIFRSVUUpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFzY3Jp
cHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7Cit9CisKK3N0YXRp
YyB2b2lkIHRlc3RXZWJLaXRXZWJTZXR0aW5nc0h5cGVyTGlua0F1ZGl0aW5nKHZvaWQpCit7Cisg
ICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXco
KTsKKworICAgIC8vIEJ5IGRlZmF1bHQgaHlwZXIgbGluayBhdWRpdGluZyBpcyBkaXNhYmxlZC4K
KyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19h
dWRpdGluZyhzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9o
eXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MsIFRSVUUpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MpKTsKK30K
KworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIGdfdGhyZWFkX2luaXQo
TlVMTCk7CisgICAgZ3RrX3Rlc3RfaW5pdCgmYXJnYywgJmFyZ3YsIE5VTEwpOworCisgICAgZ190
ZXN0X2J1Z19iYXNlKCJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKKyAgICBnX3Rlc3RfYWRk
X2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL3NjcmlwdHMiLCB0ZXN0V2ViS2l0V2ViU2V0dGlu
Z3NTY3JpcHRzKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL2F1
dG9sb2FkIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b2xvYWQpOworICAgIGdfdGVzdF9hZGRf
ZnVuYygiL3dlYmtpdDIvd2Vic2V0dGluZ3MvbG9hZGljb25pZ25vcmluZ2ltYWdlbG9hZHByZWYi
LCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NMb2FkSWNvbklnbm9yaW5nSW1hZ2VMb2FkUHJlZik7Cisg
ICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5ncy9vZmZsaW5lYXBwY2FjaGUi
LCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NPZmZsaW5lQXBwQ2FjaGUpOworICAgIGdfdGVzdF9hZGRf
ZnVuYygiL3dlYmtpdDIvd2Vic2V0dGluZ3MvbG9jYWxzdG9yYWdlIiwgdGVzdFdlYktpdFdlYlNl
dHRpbmdzTG9jYWxTdG9yYWdlKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNl
dHRpbmdzL2RhdGFiYXNlIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzRGF0YWJhc2UpOworICAgIGdf
dGVzdF9hZGRfZnVuYygiL3dlYmtpdDIvd2Vic2V0dGluZ3MveHNzYXVkaXRvciIsIHRlc3RXZWJL
aXRXZWJTZXR0aW5nc1hzc0F1ZGl0b3IpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdDIv
d2Vic2V0dGluZ3MvZnJhbWVmbGF0dGVyaW5nIiwgdGVzdFdlYktpdFdlYlNldHRpbmdzRnJhbWVG
bGF0dGVyaW5nKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL3Bs
dWdpbnMiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NQbHVnaW5zKTsKKyAgICBnX3Rlc3RfYWRkX2Z1
bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL2phdmEiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3NKYXZh
KTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL2F1dG9vcGVud2lu
ZG93IiwgdGVzdFdlYktpdFdlYlNldHRpbmdzQXV0b09wZW5XaW5kb3cpOworICAgIGdfdGVzdF9h
ZGRfZnVuYygiL3dlYmtpdDIvd2Vic2V0dGluZ3MvaHlwZXJsaW5rYXVkaXRpbmciLCB0ZXN0V2Vi
S2l0V2ViU2V0dGluZ3NIeXBlckxpbmtBdWRpdGluZyk7CisKKyAgICByZXR1cm4gZ190ZXN0X3J1
biAoKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmlu
ZGV4IDdlMWM0OGMuLjkzY2Y1NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxp
dHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIx
LDYgKzIyLDcgQEAKICNkZWZpbmUgX19XRUJLSVQyX0hfXwogCiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRXZWJDb250ZXh0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJTZXR0aW5ncy5o
PgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlld0Jhc2UuaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdFdlYlZpZXcuaD4KIAotLSAKMS43LjQuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109140</attachid>
            <date>2011-09-29 02:30:23 -0700</date>
            <delta_ts>2011-09-29 02:36:05 -0700</delta_ts>
            <desc>WebKitWebSettings GTK+ API added.</desc>
            <filename>0001-WebKitWebSettings-WebKit-GTK-API.patch</filename>
            <type>text/plain</type>
            <size>54281</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSBiMDc3M2NjMGEyMDU5OTIxNzJjNmRiNmRjMGEyZTVhZGQ0ZjMzYWUxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogVGh1LCAyOSBTZXAgMjAxMSAxNDo1NzoxOCArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIFdl
YktpdFdlYlNldHRpbmdzIFdlYktpdC1HVEsgQVBJCgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1NCArKwogU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgIDExICstCiAuLi4vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwICAgICAgICB8ICA4ODYgKysrKysrKysr
KysrKysrKysrKysKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRp
bmdzLmggIHwgIDE0OCArKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNl
dHRpbmdzLmMgICAgICB8ICAxMDAgKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmggICAgICAgICB8ICAgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCAxMjAwIGluc2Vy
dGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3Mu
aAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL3Rlc3R3ZWJzZXR0aW5ncy5jCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDU2MDYyZTcuLjJjNDY3ZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxMS0wOS0yOSAgTmF5YW4gS3VtYXIgSyAgPG5h
eWFua2tAbW90b3JvbGEuY29tPgorCisgICAgICAgIFtHVEtdW1dFQktJVDJdIEFkZCBXZWJLaXRX
ZWJTZXR0aW5ncyBHVEsrIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjgzNzEKKworICAgICAgICBXZWJLaXRXZWJTZXR0aW5ncyBHVEsrIG9iamVj
dCBpcyBjcmVhdGVkIGFuZCBmaXJzdCBzZXQgb2YKKyAgICAgICAgQVBJJ3MgYXJlIHdyaXR0ZW4g
dG8gZ2V0IG9yIHNldCB0aGUgcHJvcGVydGllcyBvZiBXZWJLaXRXZWJTZXR0aW5ncy4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcDog
QWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlOjpfV2ViS2l0V2ViU2V0
dGluZ3NQcml2YXRlKTogUHJpdmF0ZSBtZW1iZXIgb2YgV2ViS2l0V2ViU2V0dGluZ3MuCisgICAg
ICAgICh3ZWJraXRXZWJTZXR0aW5nc1NldFByb3BlcnR5KTogU2V0IHByb3BlcnR5IGZ1bmN0aW9u
LgorICAgICAgICAod2Via2l0V2ViU2V0dGluZ3NHZXRQcm9wZXJ0eSk6IEdldCBwcm9wZXJ0eSBm
dW5jdGlvbi4KKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdCk6IENsYXNz
IGluaXQgZnVuY3Rpb24uCisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2luaXQpOiBJbnN0
YW5jZSBpbml0IGZ1bmN0aW9uLgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19uZXcpOiBD
cmVhdGVzIFdlYktpdFdlYlNldHRpbmdzIEdPYmplY3QuCisgICAgICAgICh3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdCk6IEZ1bmN0aW9uIHRvIGdldCAnZW5hYmxlLWph
dmFzY3JpcHQnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5h
YmxlX2phdmFzY3JpcHQpOiBGdW5jdGlvbiB0byBzZXQgJ2VuYWJsZS1qYXZhc2NyaXB5JyBwcm9w
ZXJ0eS4KKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMp
OiBHZXQgJ2F1dG8tbG9hZC1pbWFnZXMnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyk6IFNldCAnYXV0by1sb2FkLWltYWdlcycgcHJv
cGVydHkuCisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25v
cmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UpOiBGdW5jdGlvbiB0byBnZXQKKyAgICAgICAgJ2xv
YWRzLWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZScgcHJvcGVydHkuCisgICAg
ICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9s
b2FkX3ByZWZlcmVuY2UpOiBGdW5jdGlvbiB0byBzZXQKKyAgICAgICAgJ2xvYWRzLWljb25zLWln
bm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZScgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUpOiBH
ZXQgdGhlIHZhbHVlIG9mIAorICAgICAgICBwcm9wZXJ0eSAnZW5hYmxlLW9mZmxpbmUtd2ViLWFw
cGxpY2F0aW9uLWNhY2hlJy4KKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZSk6IFNldCB0aGUgdmFsdWUgb2YKKyAgICAg
ICAgcHJvcGVydHkgJ2VuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZScuCisgICAg
ICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSk6
IEdldCBwcm9wZXJ0eSAnZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UnLgorICAgICAgICAod2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UpOiBTZXQgcHJv
cGVydHkgJ2VuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlJy4KKyAgICAgICAgKHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZSk6IEdldCBwcm9wZXJ0eSAnZW5hYmxl
LWh0bWw1LWRhdGFiYXNlJy4KKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9odG1sNV9kYXRhYmFzZSk6IFNldCBwcm9wZXJ0eSAnZW5hYmxlLWh0bWw1LWRhdGFiYXNlJy4K
KyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcik6IEdl
dCBwcm9wZXJ0eSAnZW5hYmxlLXhzcy1lZGl0b3InLgorICAgICAgICAod2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKTogU2V0IHByb3BlcnR5ICdlbmFibGUteHNzLWVk
aXRvcicuCisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxh
dHRlbmluZyk6IEdldCBwcm9wZXJ0eSAnZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmcnLgorICAgICAg
ICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcpOiBTZXQg
cHJvcGVydHkgJ2VuYWJsZS1mcmFtZS1mbGF0dGVuaW5nJy4KKyAgICAgICAgKHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKTogR2V0IHByb3BlcnR5ICdlbmFibGUtcGx1Z2lu
cycuCisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyk6IFNl
dCBwcm9wZXJ0eSAnZW5hYmxlLXBsdWdpbnMnLgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZW5hYmxlX2phdmEpOiBGdW5jdGlvbiB0byBnZXQgJ2VuYWJsZS1qYXZhJyBwcm9wZXJ0
eS4KKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKTogRnVuY3Rp
b24gdG8gc2V0ICdlbmFibGUtamF2YScgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSk6IEdl
dCB0aGUgcHJvcGVydHkgCisgICAgICAgICdqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0
b21hdGljYWxseScuCisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhc2NyaXB0
X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSk6IFNldCB0aGUgcHJvcGVydHkKKyAgICAg
ICAgJ2phdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5Jy4KKyAgICAgICAg
KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcpOiBHZXQg
J2VuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmcnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3dl
Yl9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyk6IFNldCAnZW5hYmxlLWh5
cGVybGluay1hdWRpdGluZycgcHJvcGVydHkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvdGVzdHdlYnNldHRpbmdzLmM6IEFkZGVkLgorICAgICAgICAodGVzdFdlYktpdFdlYlNl
dHRpbmdzKTogVW5pdHRlc3RzIHRvIHRlc3QgJ1dlYktpdFdlYlNldHRpbmdzJy4KKyAgICAgICAg
KG1haW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDoKKwogMjAxMS0w
OS0yOCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAg
Rml4IHRoZSBXZWJHTCBidWlsZCBvbiBXZWJLaXQyIEdUSysuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IGUzYjhmZTQuLjljYTcwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC03Miw2ICs3Miw3
IEBAIHdlYmtpdDJndGtfaGVhZGVycyA9IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEVycm9yLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Q29udGV4dC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRl
ckNsaWVudC5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRp
bmdzLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwK
IAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmggXAogCSQo
V2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC00NzIsNiArNDczLDggQEAg
bGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQ
SV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcCBcCisJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwIFwKKwlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwKQEAgLTEwNzcsNyArMTA4MCw4IEBA
IERJU1RDTEVBTkZJTEVTICs9IFwKIFRFU1RfUFJPR1MgKz0gXAogCVByb2dyYW1zL3VuaXR0ZXN0
cy93ZWJraXQyL3Rlc3R3ZWJjb250ZXh0IFwKIAlQcm9ncmFtcy91bml0dGVzdHMvd2Via2l0Mi90
ZXN0d2VidmlldyBcCi0JUHJvZ3JhbXMvdW5pdHRlc3RzL3dlYmtpdDIvdGVzdGxvYWRpbmcKKwlQ
cm9ncmFtcy91bml0dGVzdHMvd2Via2l0Mi90ZXN0bG9hZGluZyBcCisJUHJvZ3JhbXMvdW5pdHRl
c3RzL3dlYmtpdDIvdGVzdHdlYnNldHRpbmdzCiAKIG5vaW5zdF9QUk9HUkFNUyArPSAkKFRFU1Rf
UFJPR1MpCiB3ZWJraXQyX3Rlc3RzX2NmbGFncyA9IFwKQEAgLTExMjAsNiArMTEyNCwxMSBAQCBQ
cm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0bG9hZGluZ19DRkxBR1MgPSAkKHdlYmtpdDJf
dGVzdHNfY2ZsYWdzKQogUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdGxvYWRpbmdfTERB
REQgPSAkKHdlYmtpdDJfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90
ZXN0bG9hZGluZ19MREZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1z
X3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJzZXR0aW5nc19TT1VSQ0VTID0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMKK1Byb2dyYW1zX3Vu
aXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJzZXR0aW5nc19DRkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNf
Y2ZsYWdzKQorUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnNldHRpbmdzX0xEQURE
ID0gJCh3ZWJraXQyX3Rlc3RzX2xkYWRkKQorUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVz
dHdlYnNldHRpbmdzX0xERkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfbGRmbGFncykKKwogIyBXZWJL
aXRXZWJQcm9jZXNzCiBsaWJleGVjX1BST0dSQU1TICs9IFwKIAlQcm9ncmFtcy9XZWJLaXRXZWJQ
cm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJTZXR0aW5ncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk5
MjU3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlNldHRpbmdzLmNwcApAQCAtMCwwICsxLDg4NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENv
cHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxh
Ym9yYSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRo
ZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWljaGFlbCBBbG9uem8KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBNb3ZpYWwgQ3JlYXRpdmUgVGVjaG5vbG9naWVzIEluYy4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBJZ2FsaWEgUy5MLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1v
dG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViU2V0dGluZ3MuaCIKKworI2luY2x1ZGUgIldlYktp
dFByaXZhdGUuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLVHlwZS5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisKK3N0cnVj
dCBfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzOworCisgICAgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSgpCisgICAg
eworICAgICAgICBwcmVmZXJlbmNlcyA9IFdLUHJlZmVyZW5jZXNDcmVhdGUoKTsKKyAgICB9Cit9
OworCisvKioKKyAqIFNFQ1RJT046d2Via2l0d2Vic2V0dGluZ3MKKyAqIEBzaG9ydF9kZXNjcmlw
dGlvbjogQ29udHJvbCB0aGUgYmVoYXZpb3VyIG9mIGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiAj
V2ViS2l0V2ViU2V0dGluZ3MgY2FuIGJlIGFwcGxpZWQgdG8gYSAjV2ViS2l0V2ViVmlldyB0byBj
b250cm9sIHRleHQgZW5jb2RpbmcsIAorICogY29sb3IsIGZvbnQgc2l6ZXMsIHByaW50aW5nIG1v
ZGUsIHNjcmlwdCBzdXBwb3J0LCBsb2FkaW5nIG9mIGltYWdlcyBhbmQgdmFyaW91cyBvdGhlciB0
aGluZ3MuIAorICogQWZ0ZXIgY3JlYXRpb24sIGEgI1dlYktpdFdlYlNldHRpbmdzIG9iamVjdCBj
b250YWlucyBkZWZhdWx0IHNldHRpbmdzLiAKKyAqCisgKiA8aW5mb3JtYWxleGFtcGxlPjxwcm9n
cmFtbGlzdGluZz4KKyAqIC88IS0tIC0tPiogQ3JlYXRlIGEgbmV3IHdlYnNldHRpbmdzIGFuZCBk
aXNhYmxlIGphdmEgc2NyaXB0ICo8IS0tIC0tPi8KKyAqIFdlYktpdFdlYlNldHRpbmdzICpzZXR0
aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3ICgpOworICogZ19vYmplY3Rfc2V0IChHX09C
SkVDVChzZXR0aW5ncyksICJlbmFibGUtc2NyaXB0cyIsIEZBTFNFLCBOVUxMKTsKKyAqCisgKiAv
PCEtLSAtLT4qIEFwcGx5IHRoZSByZXN1bHQgKjwhLS0gLS0+LworICogd2Via2l0X3dlYl92aWV3
X3NldF9zZXR0aW5ncyAoV0VCS0lUX1dFQl9WSUVXKG15X3dlYnZpZXcpLCBzZXR0aW5ncyk7Cisg
KiA8L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxleGFtcGxlPgorICovCisKKworR19ERUZJTkVf
VFlQRShXZWJLaXRXZWJTZXR0aW5ncywgd2Via2l0X3dlYl9zZXR0aW5ncywgR19UWVBFX09CSkVD
VCkKKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9FTkFCTEVfSkFWQVNDUklQVCwK
KyAgICBQUk9QX0FVVE9fTE9BRF9JTUFHRVMsCisgICAgUFJPUF9MT0FEU19JQ09OU19JR05PUklO
R19JTUFHRV9MT0FEX1BSRUZFUkVOQ0UsCisgICAgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05fQ0FDSEUsCisgICAgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFHRSwKKyAg
ICBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRSwKKyAgICBQUk9QX0VOQUJMRV9YU1NfQVVESVRP
UiwKKyAgICBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HLAorICAgIFBST1BfRU5BQkxFX1BM
VUdJTlMsCisgICAgUFJPUF9FTkFCTEVfSkFWQSwKKyAgICBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09Q
RU5fV0lORE9XU19BVVRPTUFUSUNBTExZLAorICAgIFBST1BfRU5BQkxFX0hZUEVSTElOS19BVURJ
VElORywKK307CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlNldHRpbmdzU2V0UHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNw
ZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyA9IFdFQktJVF9X
RUJfU0VUVElOR1Mob2JqZWN0KTsKKyAKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2Ug
UFJPUF9FTkFCTEVfSkFWQVNDUklQVDoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
ZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0FVVE9fTE9BRF9JTUFHRVM6CisgICAgICAg
IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MsIGdfdmFs
dWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0xP
QURTX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRToKKyAgICAgICAgd2Via2l0
X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJl
bmNlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05fQ0FDSEU6Cisg
ICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNh
dGlvbl9jYWNoZShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0U6CisgICAg
ICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNl
dHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0U6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9v
bGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1hTU19B
VURJVE9SOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfeHNzX2F1ZGl0
b3Ioc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HOgorICAgICAgICB3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncywgZ192YWx1
ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5B
QkxFX1BMVUdJTlM6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVn
aW5zKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQToKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9X
U19BVVRPTUFUSUNBTExZOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhc2Ny
aXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncywgZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hZ
UEVSTElOS19BVURJVElORzoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxl
X2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lO
VkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJTZXR0aW5nc0dldFByb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBw
c3BlYykKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSBXRUJLSVRfV0VCX1NF
VFRJTkdTKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9F
TkFCTEVfSkFWQVNDUklQVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0FVVE9fTE9BRF9JTUFHRVM6CisgICAgICAgIGdfdmFs
dWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9p
bWFnZXMoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0xPQURTX0lD
T05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRToKKyAgICAgICAgZ192YWx1ZV9zZXRf
Ym9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3Jp
bmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05fQ0FDSEU6CisgICAgICAg
IGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0U6CisgICAgICAgIGdf
dmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9o
dG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0U6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4o
dmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0
aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1hTU19BVURJVE9S
OgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdz
X2dldF9lbmFibGVfeHNzX2F1ZGl0b3Ioc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HOgorICAgICAgICBnX3ZhbHVlX3NldF9i
b29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRl
bmluZyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1BM
VUdJTlM6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FTkFCTEVfSkFWQToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1
ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9XU19BVVRP
TUFUSUNBTExZOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShz
ZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hZUEVSTElO
S19BVURJVElORzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncykpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURf
UFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0
V2ViU2V0dGluZ3NDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xh
c3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVy
dHkgPSB3ZWJraXRXZWJTZXR0aW5nc1NldFByb3BlcnR5OworICAgIGdPYmplY3RDbGFzcy0+Z2V0
X3Byb3BlcnR5ID0gd2Via2l0V2ViU2V0dGluZ3NHZXRQcm9wZXJ0eTsKKworICAgIEdQYXJhbUZs
YWdzIGZsYWdzID0gc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJ
VEUgfCBHX1BBUkFNX0NPTlNUUlVDVCk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRp
bmdzOmVuYWJsZS1qYXZhc2NyaXB0CisgICAgKgorICAgICogVGhpcyBwcm9wZXJ0eSBuZWVkcyB0
byBiZSBzZXQgdG8gZW5hYmxlIHRoZSBleGVjdXRpb24gb2YgCisgICAgKiBKYXZhc2NyaXB0IHdp
dGhpbiBhIHBhZ2UuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX0VOQUJMRV9KQVZBU0NSSVBULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1qYXZhc2NyaXB0IiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJs
ZSBKYXZhU2NyaXB0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSmF2YVNjcmlwdCBsYW5ndWFnZXMuIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxhZ3MpKTsKKyAgICAKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmF1dG8t
bG9hZC1pbWFnZXMKKyAgICAqCisgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW1hZ2VzIHNob3Vs
ZCBiZSBhdXRvbWF0aWNhbGx5IGxvYWRlZCBvciBub3QuCisgICAgKiBPbiBkZXZpY2VzLCB3aGVy
ZSBuZXR3b3JrIGJhbmR3aWR0aCBpcyBvZiBjb25jZXJuLCBpdCBtaWdodCBiZQorICAgICogdXNl
ZnVsIHRvIHR1cm4gdGhpcyBwcm9wZXJ0eSBvZmYuCisgICAgKgorICAgICovCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQUk9QX0FVVE9fTE9BRF9JTUFHRVMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiYXV0by1sb2FkLWlt
YWdlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfKCJBdXRvIExvYWQgSW1hZ2VzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJMb2FkIGltYWdlcyBhdXRvbWF0aWNh
bGx5LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdzKSk7CisgICAgCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJT
ZXR0aW5nczpsb2Fkcy1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWZlcmVuY2UKKyAgICAq
CisgICAgKiBCeSBlbmFibGluZyB0aGlzIHByb3BlcnR5LCBzaXRlIGljb25zIChlLmcsIGZhdmlj
b24pIHdpbGwgYmUgbG9hZGVkCisgICAgKiBpcnJlc3BlY3RpdmUgb2YgdGhlIHZhbHVlIG9mICNP
YmplY3Q6YXV0by1sb2FkLWltYWdlcy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBST1BfTE9BRFNfSUNPTlNfSUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGRVJF
TkNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jv
b2xlYW4oImxvYWRzLWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJM
b2FkcyBTaXRlIEljb25zIGlnbm9yaW5nIGltYWdlIGxvYWQgcHJlZmVyZW5jZSIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hl
dGhlciB0byBsb2FkIHNpdGUgaWNvbiBpZ25vcmluZyBpbWFnZSBsb2FkIHByZWZlcmVuY2UuIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVu
YWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZQorICAgICoKKyAgICAqIFdoZXRoZXIg
dG8gZW5hYmxlIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIHN1cHBvcnQuIE9m
ZmxpbmUKKyAgICAqIFdlYiBBcHBsaWNhdGlvbiBDYWNoZSBlbnN1cmVzIHdlYiBhcHBsaWNhdGlv
bnMgYXJlIGF2YWlsYWJsZSBldmVuIHdoZW4KKyAgICAqIHRoZSB1c2VyIGlzIG5vdCBjb25uZWN0
ZWQgdG8gdGhlIG5ldHdvcmsuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFi
bGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIG9mZmxpbmUgd2Vi
IGFwcGxpY2F0aW9uIGNhY2hlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBvZmZsaW5lIHdlYiBh
cHBsaWNhdGlvbiBjYWNoZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdl
YktpdFdlYlNldHRpbmdzOmVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlOgorICAgICoKKyAgICAq
IFdoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IGxvY2FsU3RvcmFnZSBzdXBwb3J0LiBsb2NhbFN0b3Jh
Z2UgcHJvdmlkZXMKKyAgICAqIHNpbXBsZSBzeW5jaHJvbm91cyBzdG9yYWdlIGFjY2Vzcy4KKyAg
ICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RD
bGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0hU
TUw1X0xPQ0FMX1NUT1JBR0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5h
YmxlIEhUTUw1IExvY2FsIFN0b3JhZ2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IExv
Y2FsIFN0b3JhZ2Ugc3VwcG9ydCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAq
IFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1odG1sNS1kYXRhYmFzZToKKyAgICAqCisgICAgKiBX
aGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBjbGllbnQtc2lkZSBTUUwgZGF0YWJhc2Ugc3VwcG9ydC4g
Q2xpZW50LXNpZGUKKyAgICAqIFNRTCBkYXRhYmFzZSBhbGxvd3Mgd2ViIHBhZ2VzIHRvIHN0b3Jl
IHN0cnVjdHVyZWQgZGF0YSBhbmQgYmUgYWJsZSB0bworICAgICogdXNlIFNRTCB0byBtYW5pcHVs
YXRlIHRoYXQgZGF0YSBhc3luY2hyb25vdXNseS4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1o
dG1sNS1kYXRhYmFzZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSFRNTDUgRGF0YWJhc2UiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIg
dG8gZW5hYmxlIEhUTUw1IGRhdGFiYXNlIHN1cHBvcnQiKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisg
ICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUteHNzLWF1ZGl0b3IKKyAgICAq
CisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgWFNTIEF1ZGl0b3IuIFRoaXMgZmVhdHVyZSBm
aWx0ZXJzIHNvbWUga2luZHMgb2YKKyAgICAqIHJlZmxlY3RpdmUgWFNTIGF0dGFja3Mgb24gdnVs
bmVyYWJsZSB3ZWIgc2l0ZXMuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUteHNzLWF1ZGl0b3IiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XygiRW5hYmxlIFhTUyBBdWRpdG9yIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSB0aGUgWFNTIGF1
ZGl0b3IiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncykpOworCisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNl
dHRpbmdzOmVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nCisgICAgKgorICAgICogV2hldGhlciB0byBl
bmFibGUgdGhlIEZyYW1lIEZsYXR0ZW5pbmcuIFdpdGggdGhpcyBzZXR0aW5nIGVhY2ggc3ViZnJh
bWUgaXMgZXhwYW5kZWQKKyAgICAqIHRvIGl0cyBjb250ZW50cywgd2hpY2ggd2lsbCBmbGF0dGVu
IGFsbCB0aGUgZnJhbWVzIHRvIGJlY29tZSBvbmUgc2Nyb2xsYWJsZSBwYWdlLgorICAgICogT24g
dG91Y2ggZGV2aWNlcywgaXQgaXMgZGVzaXJlZCB0byBub3QgaGF2ZSBhbnkgc2Nyb2xsYWJsZSBz
dWIgcGFydHMgb2YgdGhlIHBhZ2UgYXMKKyAgICAqIGl0IHJlc3VsdHMgaW4gYSBjb25mdXNpbmcg
dXNlciBleHBlcmllbmNlLCB3aXRoIHNjcm9sbGluZyBzb21ldGltZXMgc2Nyb2xsaW5nIHN1YiBw
YXJ0cworICAgICogYW5kIGF0IG90aGVyIHRpbWVzIHNjcm9sbGluZyB0aGUgcGFnZSBpdHNlbGYu
IEZvciB0aGlzIHJlYXNvbiBpZnJhbWVzIGFuZCBmcmFtZXNldHMgYXJlCisgICAgKiBiYXJlbHkg
dXNhYmxlIG9uIHRvdWNoIGRldmljZXMuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1mcmFt
ZS1mbGF0dGVuaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBGcmFtZSBGbGF0dGVuaW5nIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVy
IHRvIGVuYWJsZSBGcmFtZSBGbGF0dGVuaW5nIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgIC8q
KgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLXBsdWdpbnM6CisgICAgKgorICAgICog
UGx1Z2lucyBlbWRlZGRlZCB3aXRoaW4gYSBwYWdlIGNhbiBiZSB0dXJuZWQgb2ZmIGJ5IGRpc2Fi
bGluZworICAgICogdGhpcyBwcm9wZXJ0eS4gCisgICAgKgorICAgICovCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9QTFVHSU5TLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1wbHVnaW5zIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF8oIkVuYWJsZSBQbHVnaW5zIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgZW1iZWRkZWQgcGx1Z2luIG9iamVjdHMu
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ3MpKTsKKyAgICAKKyAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGlu
Z3M6ZW5hYmxlLWphdmE6CisgICAgKgorICAgICogRW5hYmxlIG9yIGRpc2FibGUgc3VwcG9ydCBm
b3IgdGhlIEphdmEuIFRoaXMgcHJvcGVydHkgbmVlZHMgdG8gYmUgZW5hYmxlZAorICAgICogZm9y
IGRpc3BsYXlpbmcgamF2YSBjb250ZW50cyB2aWEgICZsdDtvYmplY3QmZ3Q7IG9yICZsdDtlbWJl
ZCZndDsgdGFnLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UFJPUF9FTkFCTEVfSkFWQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtamF2YSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSmF2YSIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
V2hldGhlciBKYXZhIHN1cHBvcnQgc2hvdWxkIGJlIGVuYWJsZWQiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykp
OworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczpqYXZhc2NyaXB0LWNhbi1vcGVu
LXdpbmRvd3MtYXV0b21hdGljYWxseQorICAgICoKKyAgICAqIFdoZXRoZXIgSmF2YVNjcmlwdCBj
YW4gb3BlbiBwb3B1cCB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgd2l0aG91dCB1c2VyCisgICAgKiBp
bnRlcnZlbnRpb24uCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9XU19BVVRPTUFUSUNBTExZLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImphdmFz
Y3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5IiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkphdmFTY3JpcHQgY2Fu
IG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIEphdmFTY3JpcHQgY2Fu
IG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAv
KioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmc6Cisg
ICAgKgorICAgICogRW5hYmxlIG9yIGRpc2FibGUgc3VwcG9ydCBmb3IgJmx0O2EgcGluZyZndDsu
CisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2Jq
ZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJM
RV9IWVBFUkxJTktfQVVESVRJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJF
bmFibGUgSHlwZXJsaW5rIEF1ZGl0aW5nIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIDxhIHBpbmc+IHNob3VsZCBi
ZSBhYmxlIHRvIHNlbmQgcGluZ3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfdHlwZV9j
bGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkp
OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2luaXQoV2ViS2l0V2ViU2V0
dGluZ3MqIHNldHRpbmdzKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9
IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShzZXR0aW5ncywgV0VCS0lUX1RZUEVfV0VCX1NF
VFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpOworICAgIHNldHRpbmdzLT5wcml2ID0g
cHJpdjsKKyAgICBuZXcgKHByaXYpIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSgpOworfQorCisv
KioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3OgorICoKKyAqIENyZWF0ZXMgYSBuZXcgI1dl
YktpdFdlYlNldHRpbmdzIGluc3RhbmNlIHdpdGggZGVmYXVsdCB2YWx1ZXMuIEl0IG11c3QKKyAq
IGJlIG1hbnVhbGx5IGF0dGFjaGVkIHRvIGEgV2ViVmlldy4KKyAqCisgKiBSZXR1cm5zOiBhIG5l
dyAjV2ViS2l0V2ViU2V0dGluZ3MgaW5zdGFuY2UuCisgKiovCitXZWJLaXRXZWJTZXR0aW5ncyog
d2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKQoreworICAgIHJldHVybiBXRUJLSVRfV0VCX1NFVFRJ
TkdTKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIE5VTEwpKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdDoKKyAqCisg
KiBHZXQgcHJvcGVydHkgI09iamVjdDplbmFibGUtamF2YXNjcmlwdC4KKyAqIEBzZXR0aW5nczog
YSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBKYXZhU2NyaXB0
IGlzIGVuYWJsZWQuCisgKiAgICAgICAgICAlRkFMU0UgSWYgSmF2YVNjcmlwdCBpcyBub3QgZW5h
YmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9q
YXZhc2NyaXB0KCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9qYXZhc2NyaXB0KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwor
CisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Cisg
ICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0RW5hYmxlZChwcml2LT5wcmVmZXJl
bmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFz
Y3JpcHQ6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKiBAZW5hYmxlZDog
VmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLWphdmFz
Y3JpcHQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVf
amF2YXNjcmlwdCgpCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9q
YXZhc2NyaXB0KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkK
K3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3Mp
KTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2
OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFi
bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlwdEVu
YWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtamF2YXNjcmlwdCIpOworfQorCisvKioK
KyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXM6CisgKiBAc2V0dGlu
Z3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKgorICogR2V0IHByb3BlcnR5ICNPYmplY3Q6YXV0
by1sb2FkLWltYWdlcy4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBhdXRvIGxvYWRpbmcgb2Yg
aW1hZ2VzIGlzIGVuYWJsZWQuCisgKiAgICAgICAgICAlRkFMU0UgSWYgYXV0byBsb2FkaW5nIG9m
IGltYWdlcyBpcyBkaXNhYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5n
cyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRp
bmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0TG9hZHNJbWFnZXNBdXRvbWF0
aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0
aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAj
T2JqZWN0OmF1dG8tbG9hZC1pbWFnZXMuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdi
b29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NF
VFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYg
PSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVu
Y2VzR2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBp
ZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJl
ZmVyZW5jZXNTZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMsIChi
b29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJh
dXRvLWxvYWQtaW1hZ2VzIik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
bG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlOgorICogQHNldHRpbmdz
OiBhICNXZWJLaXRXZWJTZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmxvYWRz
LWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZS4KKyAqCisgKiBSZXR1cm5zOiAl
VFJVRSBJZiBzaXRlLWljb24gY2FuIGJlIGxvYWRlZCBpcnJlc3BlY3RpdmUgb2YgaW1hZ2UgbG9h
ZGluZyBwcmVmZXJlbmNlLgorICogICAgICAgICAgJUZBTFNFIElmIHNpdGUtaWNvbnMgY2FuIG5v
dCBiZSBsb2FkZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9s
b2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UoKQorICoqLworZ2Jvb2xl
YW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9h
ZF9wcmVmZXJlbmNlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwor
CisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Cisg
ICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2Fk
aW5nUHJlZmVyZW5jZShwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dl
Yl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNl
OgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVl
IHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAjT2JqZWN0OmxvYWRzLWljb25zLWlnbm9y
aW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZSgp
CisgKiAgICAgICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2Vz
KCkKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3Jp
bmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jv
b2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VU
VElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9
IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5j
ZXNHZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZShwcml2LT5w
cmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdl
TG9hZGluZ1ByZWZlcmVuY2UocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAg
IGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJsb2Fkcy1pY29ucy1pZ25vcmlu
Zy1pbWFnZS1sb2FkLXByZWZlcmVuY2UiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGU6CisgKiBAc2V0dGlu
Z3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKgorICogR2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5h
YmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlLgorICoKKyAqIFJldHVybnM6ICVUUlVF
IElmIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIHN1cHBvcnQgaXMgZW5hYmxl
ZC4KKyAqICAgICAgICAgICVGQUxTRSBJZiBIVE1MNSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlvbiBj
YWNoZSBzdXBwb3J0IGlzIGRpc2FibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKCkKKyAqKi8K
K2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBs
aWNhdGlvbl9jYWNoZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsK
KworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2Owor
ICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkKHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdz
X3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGU6CisgKiBAc2V0dGluZ3M6
IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgor
ICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNh
Y2hlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX29m
ZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKFdlYktpdFdlYlNl
dHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNl
dHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJl
bnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJs
ZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldE9mZmxpbmVXZWJBcHBsaWNh
dGlvbkNhY2hlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1vZmZsaW5lLXdlYi1h
cHBsaWNhdGlvbi1jYWNoZSIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJT
ZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1odG1sNS1sb2NhbC1z
dG9yYWdlLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEhUTUw1IGxvY2FsIHN0b3JhZ2Ugc3Vw
cG9ydCBpcyBlbmFibGVkLgorICogICAgICAgICAgJUZBTFNFIElmIEhUTUw1IGxvY2FsIHN0b3Jh
Z2UgaXMgZGlzYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSgpCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9T
RVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0
ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0TG9j
YWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2U6CisgKiBAc2V0dGlu
Z3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0Cisg
KgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UuCisg
KgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9j
YWxfc3RvcmFnZSgpCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9o
dG1sNV9sb2NhbF9zdG9yYWdlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4g
ZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Mo
c2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRp
bmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRM
b2NhbFN0b3JhZ2VFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZh
bHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRM
b2NhbFN0b3JhZ2VFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAg
ICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWh0bWw1LWxvY2Fs
LXN0b3JhZ2UiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVf
aHRtbDVfZGF0YWJhc2U6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKgor
ICogR2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLWh0bWw1LWRhdGFiYXNlLgorICoKKyAqIFJl
dHVybnM6ICVUUlVFIElmIEhUTUw1IGRhdGFiYXNlIHN1cHBvcnQgaXMgZW5hYmxlZC4KKyAqICAg
ICAgICAgICVGQUxTRSBJZiBIVE1MNSBkYXRhYmFzZSBzdXBwb3J0IGlzIGRpc2FibGVkLgorICoK
KyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFi
YXNlKCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1s
NV9kYXRhYmFzZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKwor
ICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAg
IHJldHVybiBXS1ByZWZlcmVuY2VzR2V0RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNl
cyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2Rh
dGFiYXNlOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICogQGVuYWJsZWQ6
IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1odG1s
NS1kYXRhYmFzZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9odG1sNV9kYXRhYmFzZSgpCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0
X2VuYWJsZV9odG1sNV9kYXRhYmFzZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29s
ZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJ
TkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBz
ZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2Vz
R2V0RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRW
YWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0
RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1odG1sNS1kYXRhYmFz
ZSIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVk
aXRvcjoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqCisgKiBHZXQgcHJv
cGVydHkgI09iamVjdDplbmFibGUteHNzLWF1ZGl0b3IuCisgKgorICogUmV0dXJuczogJVRSVUUg
SWYgWFNTIGF1ZGl0aW5nIGlzIGVuYWJsZWQuCisgKiAgICAgICAgICAlRkFMU0UgSWYgWFNTIGF1
ZGl0aW5nIGlzIGRpc2FibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3Mp
Cit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0
aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNl
dHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0WFNTQXVkaXRvckVuYWJs
ZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2VuYWJsZV94c3NfYXVkaXRvcjoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGlu
Z3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgcHJvcGVydHkgI09i
amVjdDplbmFibGUteHNzLWF1ZGl0b3IuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3IoKQorICoqLwordm9pZCB3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9lbmFibGVfeHNzX2F1ZGl0b3IoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdz
LCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBw
cml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVm
ZXJlbmNlc0dldFhTU0F1ZGl0b3JFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAo
Y3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVy
ZW5jZXNTZXRYU1NBdWRpdG9yRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxl
ZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS14c3Mt
YXVkaXRvciIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9m
cmFtZV9mbGF0dGVuaW5nOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICoK
KyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nLgorICouCisg
KiBSZXR1cm5zOiAlVFJVRSBJZiBmcmFtZSBmbGF0dGVuaW5nIGlzIGVuYWJsZWQuCisgKiAgICAg
ICAgICAlRkFMU0UgSWYgZnJhbWUgZmxhdHRlbmluZyBpcyBub3QgZW5hYmxlZC4KKyAqCisgKiBA
c2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5n
KCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9m
bGF0dGVuaW5nKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisg
ICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAg
cmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHByaXYtPnByZWZl
cmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfZnJh
bWVfZmxhdHRlbmluZzoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqIEBl
bmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgcHJvcGVydHkgI09iamVjdDplbmFi
bGUtZnJhbWUtZmxhdHRlbmluZy4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoV2ViS2l0V2ViU2V0dGluZ3MqIHNl
dHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2
YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0g
V0tQcmVmZXJlbmNlc0dldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMp
OworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgV0tQcmVmZXJlbmNlc1NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5j
ZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5n
cyksICJlbmFibGUtZnJhbWUtZmxhdHRlbmluZyIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJT
ZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1wbHVnaW5zLgorICoK
KyAqIFJldHVybnM6ICVUUlVFIElmIFBsdWdpbnMgYXJlIGVuYWJsZWQuCisgKiAgICAgICAgICAl
RkFMU0UgSWYgcGx1Z2lucyBhcmUgbm90IGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucygpCisgKiovCitnYm9vbGVhbiB3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lucyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0
dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5H
UyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJp
diA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0UGx1Z2luc0Vu
YWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9wbHVnaW5zOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5n
cworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAjT2Jq
ZWN0OmVuYWJsZS1wbHVnaW5zLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZW5hYmxlX3BsdWdpbnMoKQorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9lbmFibGVfcGx1Z2lucyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVu
YWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNl
dHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5n
cy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0UGx1
Z2luc0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0g
ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldFBsdWdpbnNF
bmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9u
b3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXBsdWdpbnMiKTsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YToKKyAqIEBzZXR0aW5nczogYSAj
V2ViS2l0V2ViU2V0dGluZ3MKKyAqCisgKiBHZXQgcHJvcGVydHkgI09iamVjdDplbmFibGUtamF2
YS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBKYXZhIGlzIGVuYWJsZWQuCisgKiAgICAgICAg
ICAlRkFMU0UgSWYgSmF2YSBpcyBub3QgZW5hYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRp
bmdzKSwgRkFMU0UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0
dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5h
YmxlX2phdmE6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKiBAZW5hYmxl
ZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLWph
dmEuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2
YSgpCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKFdlYktp
dFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktp
dFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFu
IGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRKYXZhRW5hYmxlZChwcml2LT5wcmVmZXJl
bmNlcyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChi
b29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJl
bmFibGUtamF2YSIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFz
Y3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5OgorICogQHNldHRpbmdzOiBhICNX
ZWJLaXRXZWJTZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmphdmFzY3JpcHQt
Y2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5LgorICoKKyAqIFJldHVybnM6ICVUUlVFIElm
IEphdmFTY3JpcHQgY2FuIG9wZW4gd2luZG93IGF1dG9tYXRpY2FsbHkuCisgKiAgICAgICAgICAl
RkFMU0UgSWYgSmF2YVNjcmlwdCBpcyBub3QgYWxsb3dlZCB0byBvcGVuIHdpbmRvdyBhdXRvbWF0
aWNhbGx5LiAKKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2phdmFz
Y3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KCkKKyAqKi8KK2dib29sZWFuIHdl
YmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0
aWNhbGx5KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAg
V2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0
dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5
KHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseToKKyAqIEBzZXR0aW5n
czogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAq
CisgKiBTZXQgcHJvcGVydHkgI09iamVjdDpqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0
b21hdGljYWxseS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2ph
dmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KCkKKyAqKi8KK3ZvaWQgd2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRp
Y2FsbHkoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQorewor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOwor
CisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Cisg
ICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRDYW5P
cGVuV2luZG93c0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmIChjdXJy
ZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNl
c1NldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5j
ZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5n
cyksICJqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxseSIpOworfQorCisv
KioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmc6
CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKgorICogR2V0IHByb3BlcnR5
ICNPYmplY3Q6ZW5hYmxlLWh5cGVybGluay1hdWRpdGluZy4KKyAqCisgKiBSZXR1cm5zOiAlVFJV
RSBJZiBoeXBlci1saW5rIGF1ZGl0aW5nIGlzIGVuYWJsZWQuCisgKiAgICAgICAgICAlRkFMU0Ug
SWYgaHlwZXItbGluayBhdWRpdGluZyBpcyBkaXNhYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdl
YmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoKQorICoqLwor
Z2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGlu
ZyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktp
dFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBX
S1ByZWZlcmVuY2VzR2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2Vz
KTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5r
X2F1ZGl0aW5nOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICogQGVuYWJs
ZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1o
eXBlcmxpbmstYXVkaXRpbmcuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdz
X2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhXZWJLaXRXZWJTZXR0aW5ncyog
c2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1By
aXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUg
PSBXS1ByZWZlcmVuY2VzR2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnByZWZlcmVu
Y2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIFdLUHJlZmVyZW5jZXNTZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQocHJpdi0+cHJl
ZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChz
ZXR0aW5ncyksICJlbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nIik7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDJkOWJhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaApAQCAt
MCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3YW4g
PGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWljaGFl
bCBBbG9uem8gPGptYWxvbnpvQGdtYWlsLmNvbQorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAy
MDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVm
IFdlYktpdFdlYlNldHRpbmdzX2gKKyNkZWZpbmUgV2ViS2l0V2ViU2V0dGluZ3NfaAorCisjaW5j
bHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorCitHX0JF
R0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTICAgICAgICAgICAg
KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9TRVRU
SU5HUyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBX
RUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdzKSkKKyNkZWZpbmUgV0VC
S0lUX1dFQl9TRVRUSU5HU19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNU
KChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdzQ2xh
c3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKG9iaikgICAgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUykpCisj
ZGVmaW5lIFdFQktJVF9JU19XRUJfU0VUVElOR1NfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTKSkKKyNkZWZpbmUg
V0VCS0lUX1dFQl9TRVRUSU5HU19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRf
Q0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdz
Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3MgV2ViS2l0V2ViU2V0
dGluZ3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyBXZWJLaXRXZWJT
ZXR0aW5nc0NsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSBX
ZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3Mgewor
ICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2
YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc0NsYXNzIHsKKyAgICBH
T2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgLyogUGFkZGluZyBmb3IgZnV0dXJlIGV4
cGFuc2lvbiAqLworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZv
aWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkMykgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkNCkgKHZvaWQpOworfTsK
KworV0tfRVhQT1JUIEdUeXBlCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF90eXBlKHZvaWQpOwor
CitXS19FWFBPUlQgV2ViS2l0V2ViU2V0dGluZ3MgKgord2Via2l0X3dlYl9zZXR0aW5nc19uZXco
dm9pZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5h
YmxlX2phdmFzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
ZW5hYmxlX2phdmFzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0
aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBP
UlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKwor
V0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZl
cmVuY2UgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3
ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3By
ZWZlcmVuY2UgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xl
YW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlICAgICAgIChXZWJLaXRXZWJT
ZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlICAgICAgIChXZWJLaXRX
ZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitX
S19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9s
b2NhbF9zdG9yYWdlICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdz
KTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1s
NV9sb2NhbF9zdG9yYWdlICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRp
bmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFu
Cit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UgICAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2
b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UgICAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2Jvb2xlYW4gZW5hYmxlZCk7CitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvciAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvciAgICAgICAgICAgICAgICAgICAgICAgICAoV2Vi
S2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsK
KworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfZnJh
bWVfZmxhdHRlbmluZyAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0
aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVf
ZnJhbWVfZmxhdHRlbmluZyAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBz
ZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9v
bGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBP
UlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
V2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93
ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFi
bGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZh
c2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSAgKFdlYktpdFdlYlNldHRpbmdz
KiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9q
YXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSAgKFdlYktpdFdlYlNldHRp
bmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9S
VCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRp
dGluZyAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitX
S19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19h
dWRpdGluZyAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyog
d2Via2l0d2Vic2V0dGluZ3NfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi45YzZiMjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMKQEAgLTAsMCArMSwx
MDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSmFuIE1pY2hhZWwgQWxvbnpvCisgKiBQ
b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgor
I2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2Vi
U2V0dGluZ3Modm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJr
aXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gU2NyaXB0cyBpcyBlbmFibGVkIGJ5IGRl
ZmF1bHQuCisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFz
Y3JpcHQoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2
YXNjcmlwdChzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncykpOworCisgICAgLy8gQnkgZGVmYXVs
dCBhdXRvLWxvYWQtaW1hZ2UgaXMgdHJ1ZS4KKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0
KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzKSk7CisK
KyAgICAvLyBsb2FkLWljb24taWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmIGlzIGZhbHNlIGJ5IGRl
ZmF1bHQuCisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25z
X2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZShzZXR0aW5ncykpOworICAgIHdlYmtpdF93
ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5j
ZShzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
bG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKHNldHRpbmdzKSk7Cisg
ICAgCisgICAgLy8gT2ZmbGluZSBhcHBsaWNhdGlvbiBjYWNoZSBpcyB0cnVlIGJ5IGRlZmF1bHQu
CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2Vi
X2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19z
ZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzLCBGQUxTRSk7
CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dl
Yl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOworCisgICAgLy8gTG9jYWwgc3RvcmFnZSBp
cyBlbmFibGUgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzLCBGQUxTRSk7
CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9sb2Nh
bF9zdG9yYWdlKHNldHRpbmdzKSk7CisKKyAgICAvLyBIVE1MNSBkYXRhYmFzZSBpcyBlbmFibGVk
IGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxl
X2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
ZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdl
YmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncykpOwor
CisgICAgLy8gWFNTIEF1ZGl0b3IgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0
KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncykpOwor
ICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncywg
RkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfeHNz
X2F1ZGl0b3Ioc2V0dGluZ3MpKTsKKworICAgIC8vIEZyYW1lIGZsYXR0ZXJpbmcgaXMgZGlzYWJs
ZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5h
YmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRpbmdz
X3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3Nl
cnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGlu
Z3MpKTsKKworICAgIC8vIFBsdWdpbnMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fz
c2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lucyhzZXR0aW5ncykpOwor
ICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zKHNldHRpbmdzLCBGQUxT
RSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5z
KHNldHRpbmdzKSk7CisKKyAgICAvLyBKYXZhIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBn
X2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YShzZXR0aW5ncykpOwor
ICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKHNldHRpbmdzLCBGQUxTRSk7
CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKHNldHRp
bmdzKSk7CisKKyAgICAvLyBCeSBkZWZhdWx0LCBKYXZhU2NyaXB0IGNhbiBvcGVuIHdpbmRvd3Mg
YXV0b21hdGljYWxseSBpcyBkaXNhYmxlZC4KKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGlu
Z3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dp
bmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2Fs
bHkoc2V0dGluZ3MpKTsKKworICAgIC8vIEJ5IGRlZmF1bHQgaHlwZXIgbGluayBhdWRpdGluZyBp
cyBkaXNhYmxlZC4KKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxl
X2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MsIFRSVUUpOworICAgIGdfYXNz
ZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0
dGluZ3MpKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIGdf
dGhyZWFkX2luaXQoTlVMTCk7CisgICAgZ3RrX3Rlc3RfaW5pdCgmYXJnYywgJmFyZ3YsIE5VTEwp
OworCisgICAgZ190ZXN0X2J1Z19iYXNlKCJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKKyAg
ICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYnNldHRpbmdzL3Rlc3R3ZWJzZXR0aW5ncyIs
IHRlc3RXZWJLaXRXZWJTZXR0aW5ncyk7CisKKyAgICByZXR1cm4gZ190ZXN0X3J1biAoKTsKK30K
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4IGVmOTNh
ZGMuLmMyNzlmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQy
LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwu
CisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzI0LDcg
QEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEVudW1UeXBlcy5oPgogI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0RXJyb3IuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkNvbnRleHQuaD4K
KyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlNldHRpbmdzLmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRXZWJWaWV3QmFzZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlldy5o
PgogCi0tIAoxLjcuNC4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109141</attachid>
            <date>2011-09-29 02:36:05 -0700</date>
            <delta_ts>2011-09-29 03:09:38 -0700</delta_ts>
            <desc>WebKitWebSettings GTK+ API</desc>
            <filename>0001-WebKitWebSettings-WebKit-GTK-API.patch</filename>
            <type>text/plain</type>
            <size>54324</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSA3NzdjM2NlMDQzNDBhOTk5OWYwYjJhNmJlZTJmOGM1Y2JhZWViNjI1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogVGh1LCAyOSBTZXAgMjAxMSAxNDo1NzoxOCArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIFdl
YktpdFdlYlNldHRpbmdzIFdlYktpdC1HVEsgQVBJCgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1NCArKwogU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgIDExICstCiAuLi4vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwICAgICAgICB8ICA4ODYgKysrKysrKysr
KysrKysrKysrKysKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRp
bmdzLmggIHwgIDE0OCArKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNl
dHRpbmdzLmMgICAgICB8ICAxMDIgKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmggICAgICAgICB8ICAgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCAxMjAyIGluc2Vy
dGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3Mu
aAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL3Rlc3R3ZWJzZXR0aW5ncy5jCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDU2MDYyZTcuLjJjNDY3ZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxMS0wOS0yOSAgTmF5YW4gS3VtYXIgSyAgPG5h
eWFua2tAbW90b3JvbGEuY29tPgorCisgICAgICAgIFtHVEtdW1dFQktJVDJdIEFkZCBXZWJLaXRX
ZWJTZXR0aW5ncyBHVEsrIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjgzNzEKKworICAgICAgICBXZWJLaXRXZWJTZXR0aW5ncyBHVEsrIG9iamVj
dCBpcyBjcmVhdGVkIGFuZCBmaXJzdCBzZXQgb2YKKyAgICAgICAgQVBJJ3MgYXJlIHdyaXR0ZW4g
dG8gZ2V0IG9yIHNldCB0aGUgcHJvcGVydGllcyBvZiBXZWJLaXRXZWJTZXR0aW5ncy4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcDog
QWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlOjpfV2ViS2l0V2ViU2V0
dGluZ3NQcml2YXRlKTogUHJpdmF0ZSBtZW1iZXIgb2YgV2ViS2l0V2ViU2V0dGluZ3MuCisgICAg
ICAgICh3ZWJraXRXZWJTZXR0aW5nc1NldFByb3BlcnR5KTogU2V0IHByb3BlcnR5IGZ1bmN0aW9u
LgorICAgICAgICAod2Via2l0V2ViU2V0dGluZ3NHZXRQcm9wZXJ0eSk6IEdldCBwcm9wZXJ0eSBm
dW5jdGlvbi4KKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdCk6IENsYXNz
IGluaXQgZnVuY3Rpb24uCisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2luaXQpOiBJbnN0
YW5jZSBpbml0IGZ1bmN0aW9uLgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19uZXcpOiBD
cmVhdGVzIFdlYktpdFdlYlNldHRpbmdzIEdPYmplY3QuCisgICAgICAgICh3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdCk6IEZ1bmN0aW9uIHRvIGdldCAnZW5hYmxlLWph
dmFzY3JpcHQnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5h
YmxlX2phdmFzY3JpcHQpOiBGdW5jdGlvbiB0byBzZXQgJ2VuYWJsZS1qYXZhc2NyaXB5JyBwcm9w
ZXJ0eS4KKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMp
OiBHZXQgJ2F1dG8tbG9hZC1pbWFnZXMnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyk6IFNldCAnYXV0by1sb2FkLWltYWdlcycgcHJv
cGVydHkuCisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25v
cmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UpOiBGdW5jdGlvbiB0byBnZXQKKyAgICAgICAgJ2xv
YWRzLWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZScgcHJvcGVydHkuCisgICAg
ICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9s
b2FkX3ByZWZlcmVuY2UpOiBGdW5jdGlvbiB0byBzZXQKKyAgICAgICAgJ2xvYWRzLWljb25zLWln
bm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZScgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUpOiBH
ZXQgdGhlIHZhbHVlIG9mIAorICAgICAgICBwcm9wZXJ0eSAnZW5hYmxlLW9mZmxpbmUtd2ViLWFw
cGxpY2F0aW9uLWNhY2hlJy4KKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZSk6IFNldCB0aGUgdmFsdWUgb2YKKyAgICAg
ICAgcHJvcGVydHkgJ2VuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZScuCisgICAg
ICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSk6
IEdldCBwcm9wZXJ0eSAnZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UnLgorICAgICAgICAod2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UpOiBTZXQgcHJv
cGVydHkgJ2VuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlJy4KKyAgICAgICAgKHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZSk6IEdldCBwcm9wZXJ0eSAnZW5hYmxl
LWh0bWw1LWRhdGFiYXNlJy4KKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9odG1sNV9kYXRhYmFzZSk6IFNldCBwcm9wZXJ0eSAnZW5hYmxlLWh0bWw1LWRhdGFiYXNlJy4K
KyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcik6IEdl
dCBwcm9wZXJ0eSAnZW5hYmxlLXhzcy1lZGl0b3InLgorICAgICAgICAod2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKTogU2V0IHByb3BlcnR5ICdlbmFibGUteHNzLWVk
aXRvcicuCisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxh
dHRlbmluZyk6IEdldCBwcm9wZXJ0eSAnZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmcnLgorICAgICAg
ICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcpOiBTZXQg
cHJvcGVydHkgJ2VuYWJsZS1mcmFtZS1mbGF0dGVuaW5nJy4KKyAgICAgICAgKHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKTogR2V0IHByb3BlcnR5ICdlbmFibGUtcGx1Z2lu
cycuCisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyk6IFNl
dCBwcm9wZXJ0eSAnZW5hYmxlLXBsdWdpbnMnLgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZW5hYmxlX2phdmEpOiBGdW5jdGlvbiB0byBnZXQgJ2VuYWJsZS1qYXZhJyBwcm9wZXJ0
eS4KKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKTogRnVuY3Rp
b24gdG8gc2V0ICdlbmFibGUtamF2YScgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSk6IEdl
dCB0aGUgcHJvcGVydHkgCisgICAgICAgICdqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0
b21hdGljYWxseScuCisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhc2NyaXB0
X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSk6IFNldCB0aGUgcHJvcGVydHkKKyAgICAg
ICAgJ2phdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5Jy4KKyAgICAgICAg
KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcpOiBHZXQg
J2VuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmcnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3dl
Yl9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyk6IFNldCAnZW5hYmxlLWh5
cGVybGluay1hdWRpdGluZycgcHJvcGVydHkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvdGVzdHdlYnNldHRpbmdzLmM6IEFkZGVkLgorICAgICAgICAodGVzdFdlYktpdFdlYlNl
dHRpbmdzKTogVW5pdHRlc3RzIHRvIHRlc3QgJ1dlYktpdFdlYlNldHRpbmdzJy4KKyAgICAgICAg
KG1haW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDoKKwogMjAxMS0w
OS0yOCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAg
Rml4IHRoZSBXZWJHTCBidWlsZCBvbiBXZWJLaXQyIEdUSysuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IGUzYjhmZTQuLjljYTcwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC03Miw2ICs3Miw3
IEBAIHdlYmtpdDJndGtfaGVhZGVycyA9IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEVycm9yLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Q29udGV4dC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRl
ckNsaWVudC5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRp
bmdzLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwK
IAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmggXAogCSQo
V2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC00NzIsNiArNDczLDggQEAg
bGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQ
SV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcCBcCisJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwIFwKKwlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwKQEAgLTEwNzcsNyArMTA4MCw4IEBA
IERJU1RDTEVBTkZJTEVTICs9IFwKIFRFU1RfUFJPR1MgKz0gXAogCVByb2dyYW1zL3VuaXR0ZXN0
cy93ZWJraXQyL3Rlc3R3ZWJjb250ZXh0IFwKIAlQcm9ncmFtcy91bml0dGVzdHMvd2Via2l0Mi90
ZXN0d2VidmlldyBcCi0JUHJvZ3JhbXMvdW5pdHRlc3RzL3dlYmtpdDIvdGVzdGxvYWRpbmcKKwlQ
cm9ncmFtcy91bml0dGVzdHMvd2Via2l0Mi90ZXN0bG9hZGluZyBcCisJUHJvZ3JhbXMvdW5pdHRl
c3RzL3dlYmtpdDIvdGVzdHdlYnNldHRpbmdzCiAKIG5vaW5zdF9QUk9HUkFNUyArPSAkKFRFU1Rf
UFJPR1MpCiB3ZWJraXQyX3Rlc3RzX2NmbGFncyA9IFwKQEAgLTExMjAsNiArMTEyNCwxMSBAQCBQ
cm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0bG9hZGluZ19DRkxBR1MgPSAkKHdlYmtpdDJf
dGVzdHNfY2ZsYWdzKQogUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdGxvYWRpbmdfTERB
REQgPSAkKHdlYmtpdDJfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90
ZXN0bG9hZGluZ19MREZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1z
X3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJzZXR0aW5nc19TT1VSQ0VTID0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMKK1Byb2dyYW1zX3Vu
aXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJzZXR0aW5nc19DRkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNf
Y2ZsYWdzKQorUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnNldHRpbmdzX0xEQURE
ID0gJCh3ZWJraXQyX3Rlc3RzX2xkYWRkKQorUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVz
dHdlYnNldHRpbmdzX0xERkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfbGRmbGFncykKKwogIyBXZWJL
aXRXZWJQcm9jZXNzCiBsaWJleGVjX1BST0dSQU1TICs9IFwKIAlQcm9ncmFtcy9XZWJLaXRXZWJQ
cm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJTZXR0aW5ncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk5
MjU3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlNldHRpbmdzLmNwcApAQCAtMCwwICsxLDg4NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENv
cHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxh
Ym9yYSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRo
ZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWljaGFlbCBBbG9uem8KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBNb3ZpYWwgQ3JlYXRpdmUgVGVjaG5vbG9naWVzIEluYy4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBJZ2FsaWEgUy5MLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1v
dG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViU2V0dGluZ3MuaCIKKworI2luY2x1ZGUgIldlYktp
dFByaXZhdGUuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLVHlwZS5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisKK3N0cnVj
dCBfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzOworCisgICAgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSgpCisgICAg
eworICAgICAgICBwcmVmZXJlbmNlcyA9IFdLUHJlZmVyZW5jZXNDcmVhdGUoKTsKKyAgICB9Cit9
OworCisvKioKKyAqIFNFQ1RJT046d2Via2l0d2Vic2V0dGluZ3MKKyAqIEBzaG9ydF9kZXNjcmlw
dGlvbjogQ29udHJvbCB0aGUgYmVoYXZpb3VyIG9mIGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiAj
V2ViS2l0V2ViU2V0dGluZ3MgY2FuIGJlIGFwcGxpZWQgdG8gYSAjV2ViS2l0V2ViVmlldyB0byBj
b250cm9sIHRleHQgZW5jb2RpbmcsIAorICogY29sb3IsIGZvbnQgc2l6ZXMsIHByaW50aW5nIG1v
ZGUsIHNjcmlwdCBzdXBwb3J0LCBsb2FkaW5nIG9mIGltYWdlcyBhbmQgdmFyaW91cyBvdGhlciB0
aGluZ3MuIAorICogQWZ0ZXIgY3JlYXRpb24sIGEgI1dlYktpdFdlYlNldHRpbmdzIG9iamVjdCBj
b250YWlucyBkZWZhdWx0IHNldHRpbmdzLiAKKyAqCisgKiA8aW5mb3JtYWxleGFtcGxlPjxwcm9n
cmFtbGlzdGluZz4KKyAqIC88IS0tIC0tPiogQ3JlYXRlIGEgbmV3IHdlYnNldHRpbmdzIGFuZCBk
aXNhYmxlIGphdmEgc2NyaXB0ICo8IS0tIC0tPi8KKyAqIFdlYktpdFdlYlNldHRpbmdzICpzZXR0
aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3ICgpOworICogZ19vYmplY3Rfc2V0IChHX09C
SkVDVChzZXR0aW5ncyksICJlbmFibGUtc2NyaXB0cyIsIEZBTFNFLCBOVUxMKTsKKyAqCisgKiAv
PCEtLSAtLT4qIEFwcGx5IHRoZSByZXN1bHQgKjwhLS0gLS0+LworICogd2Via2l0X3dlYl92aWV3
X3NldF9zZXR0aW5ncyAoV0VCS0lUX1dFQl9WSUVXKG15X3dlYnZpZXcpLCBzZXR0aW5ncyk7Cisg
KiA8L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxleGFtcGxlPgorICovCisKKworR19ERUZJTkVf
VFlQRShXZWJLaXRXZWJTZXR0aW5ncywgd2Via2l0X3dlYl9zZXR0aW5ncywgR19UWVBFX09CSkVD
VCkKKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9FTkFCTEVfSkFWQVNDUklQVCwK
KyAgICBQUk9QX0FVVE9fTE9BRF9JTUFHRVMsCisgICAgUFJPUF9MT0FEU19JQ09OU19JR05PUklO
R19JTUFHRV9MT0FEX1BSRUZFUkVOQ0UsCisgICAgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05fQ0FDSEUsCisgICAgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFHRSwKKyAg
ICBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRSwKKyAgICBQUk9QX0VOQUJMRV9YU1NfQVVESVRP
UiwKKyAgICBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HLAorICAgIFBST1BfRU5BQkxFX1BM
VUdJTlMsCisgICAgUFJPUF9FTkFCTEVfSkFWQSwKKyAgICBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09Q
RU5fV0lORE9XU19BVVRPTUFUSUNBTExZLAorICAgIFBST1BfRU5BQkxFX0hZUEVSTElOS19BVURJ
VElORywKK307CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlNldHRpbmdzU2V0UHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNw
ZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyA9IFdFQktJVF9X
RUJfU0VUVElOR1Mob2JqZWN0KTsKKyAKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2Ug
UFJPUF9FTkFCTEVfSkFWQVNDUklQVDoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
ZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0FVVE9fTE9BRF9JTUFHRVM6CisgICAgICAg
IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MsIGdfdmFs
dWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0xP
QURTX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRToKKyAgICAgICAgd2Via2l0
X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJl
bmNlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05fQ0FDSEU6Cisg
ICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNh
dGlvbl9jYWNoZShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0U6CisgICAg
ICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNl
dHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0U6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9v
bGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1hTU19B
VURJVE9SOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfeHNzX2F1ZGl0
b3Ioc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HOgorICAgICAgICB3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncywgZ192YWx1
ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5B
QkxFX1BMVUdJTlM6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVn
aW5zKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQToKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9X
U19BVVRPTUFUSUNBTExZOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhc2Ny
aXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncywgZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hZ
UEVSTElOS19BVURJVElORzoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxl
X2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lO
VkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJTZXR0aW5nc0dldFByb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBw
c3BlYykKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSBXRUJLSVRfV0VCX1NF
VFRJTkdTKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9F
TkFCTEVfSkFWQVNDUklQVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0FVVE9fTE9BRF9JTUFHRVM6CisgICAgICAgIGdfdmFs
dWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9p
bWFnZXMoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0xPQURTX0lD
T05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRToKKyAgICAgICAgZ192YWx1ZV9zZXRf
Ym9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3Jp
bmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05fQ0FDSEU6CisgICAgICAg
IGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0U6CisgICAgICAgIGdf
dmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9o
dG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0U6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4o
dmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0
aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1hTU19BVURJVE9S
OgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdz
X2dldF9lbmFibGVfeHNzX2F1ZGl0b3Ioc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HOgorICAgICAgICBnX3ZhbHVlX3NldF9i
b29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRl
bmluZyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1BM
VUdJTlM6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FTkFCTEVfSkFWQToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1
ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9XU19BVVRP
TUFUSUNBTExZOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShz
ZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hZUEVSTElO
S19BVURJVElORzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncykpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURf
UFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0
V2ViU2V0dGluZ3NDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xh
c3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVy
dHkgPSB3ZWJraXRXZWJTZXR0aW5nc1NldFByb3BlcnR5OworICAgIGdPYmplY3RDbGFzcy0+Z2V0
X3Byb3BlcnR5ID0gd2Via2l0V2ViU2V0dGluZ3NHZXRQcm9wZXJ0eTsKKworICAgIEdQYXJhbUZs
YWdzIGZsYWdzID0gc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJ
VEUgfCBHX1BBUkFNX0NPTlNUUlVDVCk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRp
bmdzOmVuYWJsZS1qYXZhc2NyaXB0CisgICAgKgorICAgICogVGhpcyBwcm9wZXJ0eSBuZWVkcyB0
byBiZSBzZXQgdG8gZW5hYmxlIHRoZSBleGVjdXRpb24gb2YgCisgICAgKiBKYXZhc2NyaXB0IHdp
dGhpbiBhIHBhZ2UuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX0VOQUJMRV9KQVZBU0NSSVBULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1qYXZhc2NyaXB0IiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJs
ZSBKYXZhU2NyaXB0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSmF2YVNjcmlwdCBsYW5ndWFnZXMuIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxhZ3MpKTsKKyAgICAKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmF1dG8t
bG9hZC1pbWFnZXMKKyAgICAqCisgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW1hZ2VzIHNob3Vs
ZCBiZSBhdXRvbWF0aWNhbGx5IGxvYWRlZCBvciBub3QuCisgICAgKiBPbiBkZXZpY2VzLCB3aGVy
ZSBuZXR3b3JrIGJhbmR3aWR0aCBpcyBvZiBjb25jZXJuLCBpdCBtaWdodCBiZQorICAgICogdXNl
ZnVsIHRvIHR1cm4gdGhpcyBwcm9wZXJ0eSBvZmYuCisgICAgKgorICAgICovCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQUk9QX0FVVE9fTE9BRF9JTUFHRVMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiYXV0by1sb2FkLWlt
YWdlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfKCJBdXRvIExvYWQgSW1hZ2VzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJMb2FkIGltYWdlcyBhdXRvbWF0aWNh
bGx5LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdzKSk7CisgICAgCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJT
ZXR0aW5nczpsb2Fkcy1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWZlcmVuY2UKKyAgICAq
CisgICAgKiBCeSBlbmFibGluZyB0aGlzIHByb3BlcnR5LCBzaXRlIGljb25zIChlLmcsIGZhdmlj
b24pIHdpbGwgYmUgbG9hZGVkCisgICAgKiBpcnJlc3BlY3RpdmUgb2YgdGhlIHZhbHVlIG9mICNP
YmplY3Q6YXV0by1sb2FkLWltYWdlcy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBST1BfTE9BRFNfSUNPTlNfSUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGRVJF
TkNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jv
b2xlYW4oImxvYWRzLWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJM
b2FkcyBTaXRlIEljb25zIGlnbm9yaW5nIGltYWdlIGxvYWQgcHJlZmVyZW5jZSIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hl
dGhlciB0byBsb2FkIHNpdGUgaWNvbiBpZ25vcmluZyBpbWFnZSBsb2FkIHByZWZlcmVuY2UuIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVu
YWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZQorICAgICoKKyAgICAqIFdoZXRoZXIg
dG8gZW5hYmxlIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIHN1cHBvcnQuIE9m
ZmxpbmUKKyAgICAqIFdlYiBBcHBsaWNhdGlvbiBDYWNoZSBlbnN1cmVzIHdlYiBhcHBsaWNhdGlv
bnMgYXJlIGF2YWlsYWJsZSBldmVuIHdoZW4KKyAgICAqIHRoZSB1c2VyIGlzIG5vdCBjb25uZWN0
ZWQgdG8gdGhlIG5ldHdvcmsuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFi
bGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIG9mZmxpbmUgd2Vi
IGFwcGxpY2F0aW9uIGNhY2hlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBvZmZsaW5lIHdlYiBh
cHBsaWNhdGlvbiBjYWNoZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdl
YktpdFdlYlNldHRpbmdzOmVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlOgorICAgICoKKyAgICAq
IFdoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IGxvY2FsU3RvcmFnZSBzdXBwb3J0LiBsb2NhbFN0b3Jh
Z2UgcHJvdmlkZXMKKyAgICAqIHNpbXBsZSBzeW5jaHJvbm91cyBzdG9yYWdlIGFjY2Vzcy4KKyAg
ICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RD
bGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0hU
TUw1X0xPQ0FMX1NUT1JBR0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5h
YmxlIEhUTUw1IExvY2FsIFN0b3JhZ2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IExv
Y2FsIFN0b3JhZ2Ugc3VwcG9ydCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAq
IFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1odG1sNS1kYXRhYmFzZToKKyAgICAqCisgICAgKiBX
aGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBjbGllbnQtc2lkZSBTUUwgZGF0YWJhc2Ugc3VwcG9ydC4g
Q2xpZW50LXNpZGUKKyAgICAqIFNRTCBkYXRhYmFzZSBhbGxvd3Mgd2ViIHBhZ2VzIHRvIHN0b3Jl
IHN0cnVjdHVyZWQgZGF0YSBhbmQgYmUgYWJsZSB0bworICAgICogdXNlIFNRTCB0byBtYW5pcHVs
YXRlIHRoYXQgZGF0YSBhc3luY2hyb25vdXNseS4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1o
dG1sNS1kYXRhYmFzZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSFRNTDUgRGF0YWJhc2UiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIg
dG8gZW5hYmxlIEhUTUw1IGRhdGFiYXNlIHN1cHBvcnQiKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisg
ICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUteHNzLWF1ZGl0b3IKKyAgICAq
CisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgWFNTIEF1ZGl0b3IuIFRoaXMgZmVhdHVyZSBm
aWx0ZXJzIHNvbWUga2luZHMgb2YKKyAgICAqIHJlZmxlY3RpdmUgWFNTIGF0dGFja3Mgb24gdnVs
bmVyYWJsZSB3ZWIgc2l0ZXMuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUteHNzLWF1ZGl0b3IiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XygiRW5hYmxlIFhTUyBBdWRpdG9yIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSB0aGUgWFNTIGF1
ZGl0b3IiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncykpOworCisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNl
dHRpbmdzOmVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nCisgICAgKgorICAgICogV2hldGhlciB0byBl
bmFibGUgdGhlIEZyYW1lIEZsYXR0ZW5pbmcuIFdpdGggdGhpcyBzZXR0aW5nIGVhY2ggc3ViZnJh
bWUgaXMgZXhwYW5kZWQKKyAgICAqIHRvIGl0cyBjb250ZW50cywgd2hpY2ggd2lsbCBmbGF0dGVu
IGFsbCB0aGUgZnJhbWVzIHRvIGJlY29tZSBvbmUgc2Nyb2xsYWJsZSBwYWdlLgorICAgICogT24g
dG91Y2ggZGV2aWNlcywgaXQgaXMgZGVzaXJlZCB0byBub3QgaGF2ZSBhbnkgc2Nyb2xsYWJsZSBz
dWIgcGFydHMgb2YgdGhlIHBhZ2UgYXMKKyAgICAqIGl0IHJlc3VsdHMgaW4gYSBjb25mdXNpbmcg
dXNlciBleHBlcmllbmNlLCB3aXRoIHNjcm9sbGluZyBzb21ldGltZXMgc2Nyb2xsaW5nIHN1YiBw
YXJ0cworICAgICogYW5kIGF0IG90aGVyIHRpbWVzIHNjcm9sbGluZyB0aGUgcGFnZSBpdHNlbGYu
IEZvciB0aGlzIHJlYXNvbiBpZnJhbWVzIGFuZCBmcmFtZXNldHMgYXJlCisgICAgKiBiYXJlbHkg
dXNhYmxlIG9uIHRvdWNoIGRldmljZXMuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1mcmFt
ZS1mbGF0dGVuaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBGcmFtZSBGbGF0dGVuaW5nIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVy
IHRvIGVuYWJsZSBGcmFtZSBGbGF0dGVuaW5nIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgIC8q
KgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLXBsdWdpbnM6CisgICAgKgorICAgICog
UGx1Z2lucyBlbWRlZGRlZCB3aXRoaW4gYSBwYWdlIGNhbiBiZSB0dXJuZWQgb2ZmIGJ5IGRpc2Fi
bGluZworICAgICogdGhpcyBwcm9wZXJ0eS4gCisgICAgKgorICAgICovCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9QTFVHSU5TLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1wbHVnaW5zIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF8oIkVuYWJsZSBQbHVnaW5zIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgZW1iZWRkZWQgcGx1Z2luIG9iamVjdHMu
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ3MpKTsKKyAgICAKKyAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGlu
Z3M6ZW5hYmxlLWphdmE6CisgICAgKgorICAgICogRW5hYmxlIG9yIGRpc2FibGUgc3VwcG9ydCBm
b3IgdGhlIEphdmEuIFRoaXMgcHJvcGVydHkgbmVlZHMgdG8gYmUgZW5hYmxlZAorICAgICogZm9y
IGRpc3BsYXlpbmcgamF2YSBjb250ZW50cyB2aWEgICZsdDtvYmplY3QmZ3Q7IG9yICZsdDtlbWJl
ZCZndDsgdGFnLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UFJPUF9FTkFCTEVfSkFWQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtamF2YSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSmF2YSIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
V2hldGhlciBKYXZhIHN1cHBvcnQgc2hvdWxkIGJlIGVuYWJsZWQiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykp
OworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczpqYXZhc2NyaXB0LWNhbi1vcGVu
LXdpbmRvd3MtYXV0b21hdGljYWxseQorICAgICoKKyAgICAqIFdoZXRoZXIgSmF2YVNjcmlwdCBj
YW4gb3BlbiBwb3B1cCB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgd2l0aG91dCB1c2VyCisgICAgKiBp
bnRlcnZlbnRpb24uCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9XU19BVVRPTUFUSUNBTExZLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImphdmFz
Y3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5IiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkphdmFTY3JpcHQgY2Fu
IG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIEphdmFTY3JpcHQgY2Fu
IG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAv
KioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmc6Cisg
ICAgKgorICAgICogRW5hYmxlIG9yIGRpc2FibGUgc3VwcG9ydCBmb3IgJmx0O2EgcGluZyZndDsu
CisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2Jq
ZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJM
RV9IWVBFUkxJTktfQVVESVRJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJF
bmFibGUgSHlwZXJsaW5rIEF1ZGl0aW5nIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIDxhIHBpbmc+IHNob3VsZCBi
ZSBhYmxlIHRvIHNlbmQgcGluZ3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfdHlwZV9j
bGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkp
OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2luaXQoV2ViS2l0V2ViU2V0
dGluZ3MqIHNldHRpbmdzKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9
IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShzZXR0aW5ncywgV0VCS0lUX1RZUEVfV0VCX1NF
VFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpOworICAgIHNldHRpbmdzLT5wcml2ID0g
cHJpdjsKKyAgICBuZXcgKHByaXYpIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSgpOworfQorCisv
KioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3OgorICoKKyAqIENyZWF0ZXMgYSBuZXcgI1dl
YktpdFdlYlNldHRpbmdzIGluc3RhbmNlIHdpdGggZGVmYXVsdCB2YWx1ZXMuIEl0IG11c3QKKyAq
IGJlIG1hbnVhbGx5IGF0dGFjaGVkIHRvIGEgV2ViVmlldy4KKyAqCisgKiBSZXR1cm5zOiBhIG5l
dyAjV2ViS2l0V2ViU2V0dGluZ3MgaW5zdGFuY2UuCisgKiovCitXZWJLaXRXZWJTZXR0aW5ncyog
d2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKQoreworICAgIHJldHVybiBXRUJLSVRfV0VCX1NFVFRJ
TkdTKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIE5VTEwpKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdDoKKyAqCisg
KiBHZXQgcHJvcGVydHkgI09iamVjdDplbmFibGUtamF2YXNjcmlwdC4KKyAqIEBzZXR0aW5nczog
YSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBKYXZhU2NyaXB0
IGlzIGVuYWJsZWQuCisgKiAgICAgICAgICAlRkFMU0UgSWYgSmF2YVNjcmlwdCBpcyBub3QgZW5h
YmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9q
YXZhc2NyaXB0KCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9qYXZhc2NyaXB0KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwor
CisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Cisg
ICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0RW5hYmxlZChwcml2LT5wcmVmZXJl
bmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFz
Y3JpcHQ6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKiBAZW5hYmxlZDog
VmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLWphdmFz
Y3JpcHQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVf
amF2YXNjcmlwdCgpCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9q
YXZhc2NyaXB0KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkK
K3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3Mp
KTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2
OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFi
bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlwdEVu
YWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtamF2YXNjcmlwdCIpOworfQorCisvKioK
KyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXM6CisgKiBAc2V0dGlu
Z3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKgorICogR2V0IHByb3BlcnR5ICNPYmplY3Q6YXV0
by1sb2FkLWltYWdlcy4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBhdXRvIGxvYWRpbmcgb2Yg
aW1hZ2VzIGlzIGVuYWJsZWQuCisgKiAgICAgICAgICAlRkFMU0UgSWYgYXV0byBsb2FkaW5nIG9m
IGltYWdlcyBpcyBkaXNhYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5n
cyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRp
bmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0TG9hZHNJbWFnZXNBdXRvbWF0
aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0
aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAj
T2JqZWN0OmF1dG8tbG9hZC1pbWFnZXMuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdi
b29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NF
VFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYg
PSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVu
Y2VzR2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBp
ZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJl
ZmVyZW5jZXNTZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMsIChi
b29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJh
dXRvLWxvYWQtaW1hZ2VzIik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
bG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlOgorICogQHNldHRpbmdz
OiBhICNXZWJLaXRXZWJTZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmxvYWRz
LWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZS4KKyAqCisgKiBSZXR1cm5zOiAl
VFJVRSBJZiBzaXRlLWljb24gY2FuIGJlIGxvYWRlZCBpcnJlc3BlY3RpdmUgb2YgaW1hZ2UgbG9h
ZGluZyBwcmVmZXJlbmNlLgorICogICAgICAgICAgJUZBTFNFIElmIHNpdGUtaWNvbnMgY2FuIG5v
dCBiZSBsb2FkZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9s
b2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UoKQorICoqLworZ2Jvb2xl
YW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9h
ZF9wcmVmZXJlbmNlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwor
CisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Cisg
ICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2Fk
aW5nUHJlZmVyZW5jZShwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dl
Yl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNl
OgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVl
IHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAjT2JqZWN0OmxvYWRzLWljb25zLWlnbm9y
aW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZSgp
CisgKiAgICAgICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2Vz
KCkKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3Jp
bmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jv
b2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VU
VElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9
IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5j
ZXNHZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZShwcml2LT5w
cmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdl
TG9hZGluZ1ByZWZlcmVuY2UocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAg
IGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJsb2Fkcy1pY29ucy1pZ25vcmlu
Zy1pbWFnZS1sb2FkLXByZWZlcmVuY2UiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGU6CisgKiBAc2V0dGlu
Z3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKgorICogR2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5h
YmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlLgorICoKKyAqIFJldHVybnM6ICVUUlVF
IElmIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIHN1cHBvcnQgaXMgZW5hYmxl
ZC4KKyAqICAgICAgICAgICVGQUxTRSBJZiBIVE1MNSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlvbiBj
YWNoZSBzdXBwb3J0IGlzIGRpc2FibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKCkKKyAqKi8K
K2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBs
aWNhdGlvbl9jYWNoZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsK
KworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2Owor
ICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkKHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdz
X3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGU6CisgKiBAc2V0dGluZ3M6
IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgor
ICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNh
Y2hlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX29m
ZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKFdlYktpdFdlYlNl
dHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNl
dHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJl
bnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJs
ZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldE9mZmxpbmVXZWJBcHBsaWNh
dGlvbkNhY2hlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1vZmZsaW5lLXdlYi1h
cHBsaWNhdGlvbi1jYWNoZSIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJT
ZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1odG1sNS1sb2NhbC1z
dG9yYWdlLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEhUTUw1IGxvY2FsIHN0b3JhZ2Ugc3Vw
cG9ydCBpcyBlbmFibGVkLgorICogICAgICAgICAgJUZBTFNFIElmIEhUTUw1IGxvY2FsIHN0b3Jh
Z2UgaXMgZGlzYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSgpCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9T
RVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0
ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0TG9j
YWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2U6CisgKiBAc2V0dGlu
Z3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0Cisg
KgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UuCisg
KgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9j
YWxfc3RvcmFnZSgpCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9o
dG1sNV9sb2NhbF9zdG9yYWdlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4g
ZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Mo
c2V0dGluZ3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRp
bmdzLT5wcml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRM
b2NhbFN0b3JhZ2VFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZh
bHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRM
b2NhbFN0b3JhZ2VFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAg
ICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWh0bWw1LWxvY2Fs
LXN0b3JhZ2UiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVf
aHRtbDVfZGF0YWJhc2U6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKgor
ICogR2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLWh0bWw1LWRhdGFiYXNlLgorICoKKyAqIFJl
dHVybnM6ICVUUlVFIElmIEhUTUw1IGRhdGFiYXNlIHN1cHBvcnQgaXMgZW5hYmxlZC4KKyAqICAg
ICAgICAgICVGQUxTRSBJZiBIVE1MNSBkYXRhYmFzZSBzdXBwb3J0IGlzIGRpc2FibGVkLgorICoK
KyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFi
YXNlKCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1s
NV9kYXRhYmFzZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKwor
ICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAg
IHJldHVybiBXS1ByZWZlcmVuY2VzR2V0RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNl
cyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2Rh
dGFiYXNlOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICogQGVuYWJsZWQ6
IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1odG1s
NS1kYXRhYmFzZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9odG1sNV9kYXRhYmFzZSgpCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0
X2VuYWJsZV9odG1sNV9kYXRhYmFzZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29s
ZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJ
TkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBz
ZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2Vz
R2V0RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRW
YWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0
RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1odG1sNS1kYXRhYmFz
ZSIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVk
aXRvcjoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqCisgKiBHZXQgcHJv
cGVydHkgI09iamVjdDplbmFibGUteHNzLWF1ZGl0b3IuCisgKgorICogUmV0dXJuczogJVRSVUUg
SWYgWFNTIGF1ZGl0aW5nIGlzIGVuYWJsZWQuCisgKiAgICAgICAgICAlRkFMU0UgSWYgWFNTIGF1
ZGl0aW5nIGlzIGRpc2FibGVkLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3Mp
Cit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0
aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNl
dHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0WFNTQXVkaXRvckVuYWJs
ZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2VuYWJsZV94c3NfYXVkaXRvcjoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGlu
Z3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgcHJvcGVydHkgI09i
amVjdDplbmFibGUteHNzLWF1ZGl0b3IuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3IoKQorICoqLwordm9pZCB3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9lbmFibGVfeHNzX2F1ZGl0b3IoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdz
LCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBw
cml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVm
ZXJlbmNlc0dldFhTU0F1ZGl0b3JFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAo
Y3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVy
ZW5jZXNTZXRYU1NBdWRpdG9yRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxl
ZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS14c3Mt
YXVkaXRvciIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9m
cmFtZV9mbGF0dGVuaW5nOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICoK
KyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nLgorICouCisg
KiBSZXR1cm5zOiAlVFJVRSBJZiBmcmFtZSBmbGF0dGVuaW5nIGlzIGVuYWJsZWQuCisgKiAgICAg
ICAgICAlRkFMU0UgSWYgZnJhbWUgZmxhdHRlbmluZyBpcyBub3QgZW5hYmxlZC4KKyAqCisgKiBA
c2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5n
KCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9m
bGF0dGVuaW5nKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisg
ICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAg
cmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHByaXYtPnByZWZl
cmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfZnJh
bWVfZmxhdHRlbmluZzoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqIEBl
bmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgcHJvcGVydHkgI09iamVjdDplbmFi
bGUtZnJhbWUtZmxhdHRlbmluZy4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoV2ViS2l0V2ViU2V0dGluZ3MqIHNl
dHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2
YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0g
V0tQcmVmZXJlbmNlc0dldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMp
OworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgV0tQcmVmZXJlbmNlc1NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5j
ZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5n
cyksICJlbmFibGUtZnJhbWUtZmxhdHRlbmluZyIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJT
ZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1wbHVnaW5zLgorICoK
KyAqIFJldHVybnM6ICVUUlVFIElmIFBsdWdpbnMgYXJlIGVuYWJsZWQuCisgKiAgICAgICAgICAl
RkFMU0UgSWYgcGx1Z2lucyBhcmUgbm90IGVuYWJsZWQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucygpCisgKiovCitnYm9vbGVhbiB3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lucyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0
dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5H
UyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJp
diA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0UGx1Z2luc0Vu
YWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9wbHVnaW5zOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5n
cworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAjT2Jq
ZWN0OmVuYWJsZS1wbHVnaW5zLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZW5hYmxlX3BsdWdpbnMoKQorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9lbmFibGVfcGx1Z2lucyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVu
YWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNl
dHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5n
cy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0UGx1
Z2luc0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0g
ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldFBsdWdpbnNF
bmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9u
b3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXBsdWdpbnMiKTsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YToKKyAqIEBzZXR0aW5nczogYSAj
V2ViS2l0V2ViU2V0dGluZ3MKKyAqCisgKiBHZXQgcHJvcGVydHkgI09iamVjdDplbmFibGUtamF2
YS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBKYXZhIGlzIGVuYWJsZWQuCisgKiAgICAgICAg
ICAlRkFMU0UgSWYgSmF2YSBpcyBub3QgZW5hYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRp
bmdzKSwgRkFMU0UpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0
dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5h
YmxlX2phdmE6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKiBAZW5hYmxl
ZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLWph
dmEuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2
YSgpCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKFdlYktp
dFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktp
dFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29sZWFu
IGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRKYXZhRW5hYmxlZChwcml2LT5wcmVmZXJl
bmNlcyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChi
b29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJl
bmFibGUtamF2YSIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFz
Y3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5OgorICogQHNldHRpbmdzOiBhICNX
ZWJLaXRXZWJTZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmphdmFzY3JpcHQt
Y2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5LgorICoKKyAqIFJldHVybnM6ICVUUlVFIElm
IEphdmFTY3JpcHQgY2FuIG9wZW4gd2luZG93IGF1dG9tYXRpY2FsbHkuCisgKiAgICAgICAgICAl
RkFMU0UgSWYgSmF2YVNjcmlwdCBpcyBub3QgYWxsb3dlZCB0byBvcGVuIHdpbmRvdyBhdXRvbWF0
aWNhbGx5LiAKKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2phdmFz
Y3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KCkKKyAqKi8KK2dib29sZWFuIHdl
YmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0
aWNhbGx5KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAg
V2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0
dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5
KHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseToKKyAqIEBzZXR0aW5n
czogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAq
CisgKiBTZXQgcHJvcGVydHkgI09iamVjdDpqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0
b21hdGljYWxseS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2ph
dmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KCkKKyAqKi8KK3ZvaWQgd2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRp
Y2FsbHkoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQorewor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOwor
CisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Cisg
ICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRDYW5P
cGVuV2luZG93c0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmIChjdXJy
ZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNl
c1NldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5j
ZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5n
cyksICJqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxseSIpOworfQorCisv
KioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmc6
CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKgorICogR2V0IHByb3BlcnR5
ICNPYmplY3Q6ZW5hYmxlLWh5cGVybGluay1hdWRpdGluZy4KKyAqCisgKiBSZXR1cm5zOiAlVFJV
RSBJZiBoeXBlci1saW5rIGF1ZGl0aW5nIGlzIGVuYWJsZWQuCisgKiAgICAgICAgICAlRkFMU0Ug
SWYgaHlwZXItbGluayBhdWRpdGluZyBpcyBkaXNhYmxlZC4KKyAqCisgKiBAc2VlX2Fsc286IHdl
YmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoKQorICoqLwor
Z2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGlu
ZyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktp
dFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBX
S1ByZWZlcmVuY2VzR2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2Vz
KTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5r
X2F1ZGl0aW5nOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICogQGVuYWJs
ZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1o
eXBlcmxpbmstYXVkaXRpbmcuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdz
X2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhXZWJLaXRXZWJTZXR0aW5ncyog
c2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1By
aXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUg
PSBXS1ByZWZlcmVuY2VzR2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnByZWZlcmVu
Y2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIFdLUHJlZmVyZW5jZXNTZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQocHJpdi0+cHJl
ZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChz
ZXR0aW5ncyksICJlbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nIik7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDJkOWJhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuaApAQCAt
MCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3YW4g
PGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWljaGFl
bCBBbG9uem8gPGptYWxvbnpvQGdtYWlsLmNvbQorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAy
MDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVm
IFdlYktpdFdlYlNldHRpbmdzX2gKKyNkZWZpbmUgV2ViS2l0V2ViU2V0dGluZ3NfaAorCisjaW5j
bHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorCitHX0JF
R0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTICAgICAgICAgICAg
KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9TRVRU
SU5HUyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBX
RUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdzKSkKKyNkZWZpbmUgV0VC
S0lUX1dFQl9TRVRUSU5HU19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNU
KChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdzQ2xh
c3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKG9iaikgICAgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUykpCisj
ZGVmaW5lIFdFQktJVF9JU19XRUJfU0VUVElOR1NfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTKSkKKyNkZWZpbmUg
V0VCS0lUX1dFQl9TRVRUSU5HU19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRf
Q0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdz
Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3MgV2ViS2l0V2ViU2V0
dGluZ3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyBXZWJLaXRXZWJT
ZXR0aW5nc0NsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSBX
ZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3Mgewor
ICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2
YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc0NsYXNzIHsKKyAgICBH
T2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgLyogUGFkZGluZyBmb3IgZnV0dXJlIGV4
cGFuc2lvbiAqLworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZv
aWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkMykgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkNCkgKHZvaWQpOworfTsK
KworV0tfRVhQT1JUIEdUeXBlCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF90eXBlKHZvaWQpOwor
CitXS19FWFBPUlQgV2ViS2l0V2ViU2V0dGluZ3MgKgord2Via2l0X3dlYl9zZXR0aW5nc19uZXco
dm9pZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5h
YmxlX2phdmFzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
ZW5hYmxlX2phdmFzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0
aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBP
UlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKwor
V0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZl
cmVuY2UgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3
ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3By
ZWZlcmVuY2UgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xl
YW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlICAgICAgIChXZWJLaXRXZWJT
ZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlICAgICAgIChXZWJLaXRX
ZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitX
S19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9s
b2NhbF9zdG9yYWdlICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdz
KTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1s
NV9sb2NhbF9zdG9yYWdlICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRp
bmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFu
Cit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UgICAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2
b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UgICAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2Jvb2xlYW4gZW5hYmxlZCk7CitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvciAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvciAgICAgICAgICAgICAgICAgICAgICAgICAoV2Vi
S2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsK
KworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfZnJh
bWVfZmxhdHRlbmluZyAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0
aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVf
ZnJhbWVfZmxhdHRlbmluZyAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBz
ZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9v
bGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBP
UlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
V2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93
ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFi
bGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZh
c2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSAgKFdlYktpdFdlYlNldHRpbmdz
KiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9q
YXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSAgKFdlYktpdFdlYlNldHRp
bmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9S
VCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRp
dGluZyAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitX
S19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19h
dWRpdGluZyAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyog
d2Via2l0d2Vic2V0dGluZ3NfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wMTQyZGI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMKQEAgLTAsMCArMSwx
MDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSmFuIE1pY2hhZWwgQWxvbnpvCisgKiBQ
b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgor
I2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2Vi
U2V0dGluZ3Modm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJr
aXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8gU2NyaXB0cyBpcyBlbmFibGVkIGJ5IGRl
ZmF1bHQuCisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFz
Y3JpcHQoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2
YXNjcmlwdChzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncykpOworCisgICAgLy8gQnkgZGVmYXVs
dCBhdXRvLWxvYWQtaW1hZ2UgaXMgdHJ1ZS4KKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0
KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzKSk7CisK
KyAgICAvLyBsb2FkLWljb24taWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmIGlzIGZhbHNlIGJ5IGRl
ZmF1bHQuCisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25z
X2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZShzZXR0aW5ncykpOworICAgIHdlYmtpdF93
ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5j
ZShzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
bG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKHNldHRpbmdzKSk7Cisg
ICAgCisgICAgLy8gT2ZmbGluZSBhcHBsaWNhdGlvbiBjYWNoZSBpcyB0cnVlIGJ5IGRlZmF1bHQu
CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2Vi
X2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19z
ZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzLCBGQUxTRSk7
CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dl
Yl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOworCisgICAgLy8gTG9jYWwgc3RvcmFnZSBp
cyBlbmFibGUgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzLCBGQUxTRSk7
CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9sb2Nh
bF9zdG9yYWdlKHNldHRpbmdzKSk7CisKKyAgICAvLyBIVE1MNSBkYXRhYmFzZSBpcyBlbmFibGVk
IGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxl
X2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
ZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdl
YmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncykpOwor
CisgICAgLy8gWFNTIEF1ZGl0b3IgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0
KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncykpOwor
ICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncywg
RkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfeHNz
X2F1ZGl0b3Ioc2V0dGluZ3MpKTsKKworICAgIC8vIEZyYW1lIGZsYXR0ZXJpbmcgaXMgZGlzYWJs
ZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5h
YmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRpbmdz
X3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3Nl
cnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGlu
Z3MpKTsKKworICAgIC8vIFBsdWdpbnMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fz
c2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lucyhzZXR0aW5ncykpOwor
ICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zKHNldHRpbmdzLCBGQUxT
RSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5z
KHNldHRpbmdzKSk7CisKKyAgICAvLyBKYXZhIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBn
X2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YShzZXR0aW5ncykpOwor
ICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKHNldHRpbmdzLCBGQUxTRSk7
CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKHNldHRp
bmdzKSk7CisKKyAgICAvLyBCeSBkZWZhdWx0LCBKYXZhU2NyaXB0IGNhbiBvcGVuIHdpbmRvd3Mg
YXV0b21hdGljYWxseSBpcyBkaXNhYmxlZC4KKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGlu
Z3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dp
bmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2Fs
bHkoc2V0dGluZ3MpKTsKKworICAgIC8vIEJ5IGRlZmF1bHQgaHlwZXIgbGluayBhdWRpdGluZyBp
cyBkaXNhYmxlZC4KKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxl
X2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MsIFRSVUUpOworICAgIGdfYXNz
ZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0
dGluZ3MpKTsKKworICAgIGdfb2JqZWN0X3VucmVmKEdfT0JKRUNUKHNldHRpbmdzKSk7Cit9CisK
K2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICBnX3RocmVhZF9pbml0KE5V
TEwpOworICAgIGd0a190ZXN0X2luaXQoJmFyZ2MsICZhcmd2LCBOVUxMKTsKKworICAgIGdfdGVz
dF9idWdfYmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvIik7CisgICAgZ190ZXN0X2FkZF9m
dW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5ncy90ZXN0d2Vic2V0dGluZ3MiLCB0ZXN0V2ViS2l0V2Vi
U2V0dGluZ3MpOworCisgICAgcmV0dXJuIGdfdGVzdF9ydW4gKCk7Cit9CisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCBlZjkzYWRjLi5jMjc5ZjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogUG9ydGlvbnMg
Q29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMyw2ICsyNCw3IEBACiAjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRFbnVtVHlwZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEVycm9y
Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJDb250ZXh0Lmg+CisjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRXZWJTZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmll
d0Jhc2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXcuaD4KIAotLSAKMS43LjQu
MQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109143</attachid>
            <date>2011-09-29 03:09:38 -0700</date>
            <delta_ts>2011-10-11 07:52:44 -0700</delta_ts>
            <desc>WebKitWebSettings GTK+ API.</desc>
            <filename>0001-WebKitWebSettings-WebKit-GTK-API.patch</filename>
            <type>text/plain</type>
            <size>54005</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSBjN2E0NmY4NTE4MDI5Yjk3NzE4Yzc0NjRkODU4MzE5MzU2MDU2MmZhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogVGh1LCAyOSBTZXAgMjAxMSAxNDo1NzoxOCArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIFdl
YktpdFdlYlNldHRpbmdzIFdlYktpdC1HVEsgQVBJCgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1NCArKwogU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgIDExICstCiAuLi4vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwICAgICAgICB8ICA4ODYgKysrKysrKysr
KysrKysrKysrKysKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRp
bmdzLmggIHwgIDE0OCArKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNl
dHRpbmdzLmMgICAgICB8ICAxMDIgKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmggICAgICAgICB8ICAgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCAxMjAyIGluc2Vy
dGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3Mu
aAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL3Rlc3R3ZWJzZXR0aW5ncy5jCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDU2MDYyZTcuLjJjNDY3ZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxMS0wOS0yOSAgTmF5YW4gS3VtYXIgSyAgPG5h
eWFua2tAbW90b3JvbGEuY29tPgorCisgICAgICAgIFtHVEtdW1dFQktJVDJdIEFkZCBXZWJLaXRX
ZWJTZXR0aW5ncyBHVEsrIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjgzNzEKKworICAgICAgICBXZWJLaXRXZWJTZXR0aW5ncyBHVEsrIG9iamVj
dCBpcyBjcmVhdGVkIGFuZCBmaXJzdCBzZXQgb2YKKyAgICAgICAgQVBJJ3MgYXJlIHdyaXR0ZW4g
dG8gZ2V0IG9yIHNldCB0aGUgcHJvcGVydGllcyBvZiBXZWJLaXRXZWJTZXR0aW5ncy4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRpbmdzLmNwcDog
QWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlOjpfV2ViS2l0V2ViU2V0
dGluZ3NQcml2YXRlKTogUHJpdmF0ZSBtZW1iZXIgb2YgV2ViS2l0V2ViU2V0dGluZ3MuCisgICAg
ICAgICh3ZWJraXRXZWJTZXR0aW5nc1NldFByb3BlcnR5KTogU2V0IHByb3BlcnR5IGZ1bmN0aW9u
LgorICAgICAgICAod2Via2l0V2ViU2V0dGluZ3NHZXRQcm9wZXJ0eSk6IEdldCBwcm9wZXJ0eSBm
dW5jdGlvbi4KKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdCk6IENsYXNz
IGluaXQgZnVuY3Rpb24uCisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2luaXQpOiBJbnN0
YW5jZSBpbml0IGZ1bmN0aW9uLgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19uZXcpOiBD
cmVhdGVzIFdlYktpdFdlYlNldHRpbmdzIEdPYmplY3QuCisgICAgICAgICh3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdCk6IEZ1bmN0aW9uIHRvIGdldCAnZW5hYmxlLWph
dmFzY3JpcHQnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5h
YmxlX2phdmFzY3JpcHQpOiBGdW5jdGlvbiB0byBzZXQgJ2VuYWJsZS1qYXZhc2NyaXB5JyBwcm9w
ZXJ0eS4KKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMp
OiBHZXQgJ2F1dG8tbG9hZC1pbWFnZXMnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyk6IFNldCAnYXV0by1sb2FkLWltYWdlcycgcHJv
cGVydHkuCisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25v
cmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UpOiBGdW5jdGlvbiB0byBnZXQKKyAgICAgICAgJ2xv
YWRzLWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZScgcHJvcGVydHkuCisgICAg
ICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9s
b2FkX3ByZWZlcmVuY2UpOiBGdW5jdGlvbiB0byBzZXQKKyAgICAgICAgJ2xvYWRzLWljb25zLWln
bm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZScgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUpOiBH
ZXQgdGhlIHZhbHVlIG9mIAorICAgICAgICBwcm9wZXJ0eSAnZW5hYmxlLW9mZmxpbmUtd2ViLWFw
cGxpY2F0aW9uLWNhY2hlJy4KKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZSk6IFNldCB0aGUgdmFsdWUgb2YKKyAgICAg
ICAgcHJvcGVydHkgJ2VuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZScuCisgICAg
ICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSk6
IEdldCBwcm9wZXJ0eSAnZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UnLgorICAgICAgICAod2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UpOiBTZXQgcHJv
cGVydHkgJ2VuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlJy4KKyAgICAgICAgKHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZSk6IEdldCBwcm9wZXJ0eSAnZW5hYmxl
LWh0bWw1LWRhdGFiYXNlJy4KKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9odG1sNV9kYXRhYmFzZSk6IFNldCBwcm9wZXJ0eSAnZW5hYmxlLWh0bWw1LWRhdGFiYXNlJy4K
KyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcik6IEdl
dCBwcm9wZXJ0eSAnZW5hYmxlLXhzcy1lZGl0b3InLgorICAgICAgICAod2Via2l0X3dlYl9zZXR0
aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKTogU2V0IHByb3BlcnR5ICdlbmFibGUteHNzLWVk
aXRvcicuCisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxh
dHRlbmluZyk6IEdldCBwcm9wZXJ0eSAnZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmcnLgorICAgICAg
ICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcpOiBTZXQg
cHJvcGVydHkgJ2VuYWJsZS1mcmFtZS1mbGF0dGVuaW5nJy4KKyAgICAgICAgKHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKTogR2V0IHByb3BlcnR5ICdlbmFibGUtcGx1Z2lu
cycuCisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyk6IFNl
dCBwcm9wZXJ0eSAnZW5hYmxlLXBsdWdpbnMnLgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZW5hYmxlX2phdmEpOiBGdW5jdGlvbiB0byBnZXQgJ2VuYWJsZS1qYXZhJyBwcm9wZXJ0
eS4KKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKTogRnVuY3Rp
b24gdG8gc2V0ICdlbmFibGUtamF2YScgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSk6IEdl
dCB0aGUgcHJvcGVydHkgCisgICAgICAgICdqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0
b21hdGljYWxseScuCisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhc2NyaXB0
X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSk6IFNldCB0aGUgcHJvcGVydHkKKyAgICAg
ICAgJ2phdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5Jy4KKyAgICAgICAg
KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcpOiBHZXQg
J2VuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmcnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3dl
Yl9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyk6IFNldCAnZW5hYmxlLWh5
cGVybGluay1hdWRpdGluZycgcHJvcGVydHkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvdGVzdHdlYnNldHRpbmdzLmM6IEFkZGVkLgorICAgICAgICAodGVzdFdlYktpdFdlYlNl
dHRpbmdzKTogVW5pdHRlc3RzIHRvIHRlc3QgJ1dlYktpdFdlYlNldHRpbmdzJy4KKyAgICAgICAg
KG1haW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDoKKwogMjAxMS0w
OS0yOCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAg
Rml4IHRoZSBXZWJHTCBidWlsZCBvbiBXZWJLaXQyIEdUSysuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IGUzYjhmZTQuLjljYTcwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC03Miw2ICs3Miw3
IEBAIHdlYmtpdDJndGtfaGVhZGVycyA9IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEVycm9yLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Q29udGV4dC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRl
ckNsaWVudC5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlNldHRp
bmdzLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwK
IAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmggXAogCSQo
V2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC00NzIsNiArNDczLDggQEAg
bGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQ
SV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcCBcCisJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViU2V0dGluZ3MuY3BwIFwKKwlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJTZXR0aW5ncy5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwKQEAgLTEwNzcsNyArMTA4MCw4IEBA
IERJU1RDTEVBTkZJTEVTICs9IFwKIFRFU1RfUFJPR1MgKz0gXAogCVByb2dyYW1zL3VuaXR0ZXN0
cy93ZWJraXQyL3Rlc3R3ZWJjb250ZXh0IFwKIAlQcm9ncmFtcy91bml0dGVzdHMvd2Via2l0Mi90
ZXN0d2VidmlldyBcCi0JUHJvZ3JhbXMvdW5pdHRlc3RzL3dlYmtpdDIvdGVzdGxvYWRpbmcKKwlQ
cm9ncmFtcy91bml0dGVzdHMvd2Via2l0Mi90ZXN0bG9hZGluZyBcCisJUHJvZ3JhbXMvdW5pdHRl
c3RzL3dlYmtpdDIvdGVzdHdlYnNldHRpbmdzCiAKIG5vaW5zdF9QUk9HUkFNUyArPSAkKFRFU1Rf
UFJPR1MpCiB3ZWJraXQyX3Rlc3RzX2NmbGFncyA9IFwKQEAgLTExMjAsNiArMTEyNCwxMSBAQCBQ
cm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0bG9hZGluZ19DRkxBR1MgPSAkKHdlYmtpdDJf
dGVzdHNfY2ZsYWdzKQogUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdGxvYWRpbmdfTERB
REQgPSAkKHdlYmtpdDJfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90
ZXN0bG9hZGluZ19MREZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1z
X3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJzZXR0aW5nc19TT1VSQ0VTID0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMKK1Byb2dyYW1zX3Vu
aXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJzZXR0aW5nc19DRkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNf
Y2ZsYWdzKQorUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYnNldHRpbmdzX0xEQURE
ID0gJCh3ZWJraXQyX3Rlc3RzX2xkYWRkKQorUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVz
dHdlYnNldHRpbmdzX0xERkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfbGRmbGFncykKKwogIyBXZWJL
aXRXZWJQcm9jZXNzCiBsaWJleGVjX1BST0dSQU1TICs9IFwKIAlQcm9ncmFtcy9XZWJLaXRXZWJQ
cm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJTZXR0aW5ncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU4
Y2VhNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlNldHRpbmdzLmNwcApAQCAtMCwwICsxLDg4NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENv
cHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxh
Ym9yYSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRo
ZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWljaGFlbCBBbG9uem8KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBNb3ZpYWwgQ3JlYXRpdmUgVGVjaG5vbG9naWVzIEluYy4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBJZ2FsaWEgUy5MLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1v
dG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViU2V0dGluZ3MuaCIKKworI2luY2x1ZGUgIldlYktp
dFByaXZhdGUuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLVHlwZS5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisKK3N0cnVj
dCBfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzOworCisgICAgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSgpCisgICAg
eworICAgICAgICBwcmVmZXJlbmNlcyA9IFdLUHJlZmVyZW5jZXNDcmVhdGUoKTsKKyAgICB9Cit9
OworCisvKioKKyAqIFNFQ1RJT046d2Via2l0d2Vic2V0dGluZ3MKKyAqIEBzaG9ydF9kZXNjcmlw
dGlvbjogQ29udHJvbCB0aGUgYmVoYXZpb3VyIG9mIGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiAj
V2ViS2l0V2ViU2V0dGluZ3MgY2FuIGJlIGFwcGxpZWQgdG8gYSAjV2ViS2l0V2ViVmlldyB0byBj
b250cm9sIHRleHQgZW5jb2RpbmcsIAorICogY29sb3IsIGZvbnQgc2l6ZXMsIHByaW50aW5nIG1v
ZGUsIHNjcmlwdCBzdXBwb3J0LCBsb2FkaW5nIG9mIGltYWdlcyBhbmQgdmFyaW91cyBvdGhlciB0
aGluZ3MuIAorICogQWZ0ZXIgY3JlYXRpb24sIGEgI1dlYktpdFdlYlNldHRpbmdzIG9iamVjdCBj
b250YWlucyBkZWZhdWx0IHNldHRpbmdzLiAKKyAqCisgKiA8aW5mb3JtYWxleGFtcGxlPjxwcm9n
cmFtbGlzdGluZz4KKyAqIC88IS0tIC0tPiogQ3JlYXRlIGEgbmV3IHdlYnNldHRpbmdzIGFuZCBk
aXNhYmxlIGphdmEgc2NyaXB0ICo8IS0tIC0tPi8KKyAqIFdlYktpdFdlYlNldHRpbmdzICpzZXR0
aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3ICgpOworICogZ19vYmplY3Rfc2V0IChHX09C
SkVDVChzZXR0aW5ncyksICJlbmFibGUtc2NyaXB0cyIsIEZBTFNFLCBOVUxMKTsKKyAqCisgKiAv
PCEtLSAtLT4qIEFwcGx5IHRoZSByZXN1bHQgKjwhLS0gLS0+LworICogd2Via2l0X3dlYl92aWV3
X3NldF9zZXR0aW5ncyAoV0VCS0lUX1dFQl9WSUVXKG15X3dlYnZpZXcpLCBzZXR0aW5ncyk7Cisg
KiA8L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxleGFtcGxlPgorICovCisKKworR19ERUZJTkVf
VFlQRShXZWJLaXRXZWJTZXR0aW5ncywgd2Via2l0X3dlYl9zZXR0aW5ncywgR19UWVBFX09CSkVD
VCkKKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9FTkFCTEVfSkFWQVNDUklQVCwK
KyAgICBQUk9QX0FVVE9fTE9BRF9JTUFHRVMsCisgICAgUFJPUF9MT0FEU19JQ09OU19JR05PUklO
R19JTUFHRV9MT0FEX1BSRUZFUkVOQ0UsCisgICAgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05fQ0FDSEUsCisgICAgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFHRSwKKyAg
ICBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRSwKKyAgICBQUk9QX0VOQUJMRV9YU1NfQVVESVRP
UiwKKyAgICBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HLAorICAgIFBST1BfRU5BQkxFX1BM
VUdJTlMsCisgICAgUFJPUF9FTkFCTEVfSkFWQSwKKyAgICBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09Q
RU5fV0lORE9XU19BVVRPTUFUSUNBTExZLAorICAgIFBST1BfRU5BQkxFX0hZUEVSTElOS19BVURJ
VElORywKK307CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlNldHRpbmdzU2V0UHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNw
ZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyA9IFdFQktJVF9X
RUJfU0VUVElOR1Mob2JqZWN0KTsKKyAKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2Ug
UFJPUF9FTkFCTEVfSkFWQVNDUklQVDoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
ZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0FVVE9fTE9BRF9JTUFHRVM6CisgICAgICAg
IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MsIGdfdmFs
dWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0xP
QURTX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRToKKyAgICAgICAgd2Via2l0
X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJl
bmNlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05fQ0FDSEU6Cisg
ICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNh
dGlvbl9jYWNoZShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0U6CisgICAg
ICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNl
dHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0U6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9v
bGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1hTU19B
VURJVE9SOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfeHNzX2F1ZGl0
b3Ioc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HOgorICAgICAgICB3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncywgZ192YWx1
ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5B
QkxFX1BMVUdJTlM6CisgICAgICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVn
aW5zKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQToKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9X
U19BVVRPTUFUSUNBTExZOgorICAgICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhc2Ny
aXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncywgZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hZ
UEVSTElOS19BVURJVElORzoKKyAgICAgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxl
X2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lO
VkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJTZXR0aW5nc0dldFByb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBw
c3BlYykKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSBXRUJLSVRfV0VCX1NF
VFRJTkdTKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9F
TkFCTEVfSkFWQVNDUklQVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0FVVE9fTE9BRF9JTUFHRVM6CisgICAgICAgIGdfdmFs
dWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9p
bWFnZXMoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0xPQURTX0lD
T05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRToKKyAgICAgICAgZ192YWx1ZV9zZXRf
Ym9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3Jp
bmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05fQ0FDSEU6CisgICAgICAg
IGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0U6CisgICAgICAgIGdf
dmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9o
dG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0U6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4o
dmFsdWUsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0
aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1hTU19BVURJVE9S
OgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdz
X2dldF9lbmFibGVfeHNzX2F1ZGl0b3Ioc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HOgorICAgICAgICBnX3ZhbHVlX3NldF9i
b29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRl
bmluZyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1BM
VUdJTlM6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FTkFCTEVfSkFWQToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1
ZSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9XU19BVVRP
TUFUSUNBTExZOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShz
ZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hZUEVSTElO
S19BVURJVElORzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncykpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURf
UFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0
V2ViU2V0dGluZ3NDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xh
c3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVy
dHkgPSB3ZWJraXRXZWJTZXR0aW5nc1NldFByb3BlcnR5OworICAgIGdPYmplY3RDbGFzcy0+Z2V0
X3Byb3BlcnR5ID0gd2Via2l0V2ViU2V0dGluZ3NHZXRQcm9wZXJ0eTsKKworICAgIEdQYXJhbUZs
YWdzIGZsYWdzID0gc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJ
VEUgfCBHX1BBUkFNX0NPTlNUUlVDVCk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRp
bmdzOmVuYWJsZS1qYXZhc2NyaXB0CisgICAgKgorICAgICogVGhpcyBwcm9wZXJ0eSBuZWVkcyB0
byBiZSBzZXQgdG8gZW5hYmxlIHRoZSBleGVjdXRpb24gb2YgCisgICAgKiBKYXZhc2NyaXB0IHdp
dGhpbiBhIHBhZ2UuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX0VOQUJMRV9KQVZBU0NSSVBULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1qYXZhc2NyaXB0IiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJs
ZSBKYXZhU2NyaXB0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSmF2YVNjcmlwdCBsYW5ndWFnZXMuIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxhZ3MpKTsKKyAgICAKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmF1dG8t
bG9hZC1pbWFnZXMKKyAgICAqCisgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW1hZ2VzIHNob3Vs
ZCBiZSBhdXRvbWF0aWNhbGx5IGxvYWRlZCBvciBub3QuCisgICAgKiBPbiBkZXZpY2VzLCB3aGVy
ZSBuZXR3b3JrIGJhbmR3aWR0aCBpcyBvZiBjb25jZXJuLCBpdCBtaWdodCBiZQorICAgICogdXNl
ZnVsIHRvIHR1cm4gdGhpcyBwcm9wZXJ0eSBvZmYuCisgICAgKgorICAgICovCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQUk9QX0FVVE9fTE9BRF9JTUFHRVMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiYXV0by1sb2FkLWlt
YWdlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfKCJBdXRvIExvYWQgSW1hZ2VzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJMb2FkIGltYWdlcyBhdXRvbWF0aWNh
bGx5LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdzKSk7CisgICAgCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJT
ZXR0aW5nczpsb2Fkcy1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWZlcmVuY2UKKyAgICAq
CisgICAgKiBCeSBlbmFibGluZyB0aGlzIHByb3BlcnR5LCBzaXRlIGljb25zIChlLmcsIGZhdmlj
b24pIHdpbGwgYmUgbG9hZGVkCisgICAgKiBpcnJlc3BlY3RpdmUgb2YgdGhlIHZhbHVlIG9mICNP
YmplY3Q6YXV0by1sb2FkLWltYWdlcy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBST1BfTE9BRFNfSUNPTlNfSUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGRVJF
TkNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jv
b2xlYW4oImxvYWRzLWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJM
b2FkcyBTaXRlIEljb25zIGlnbm9yaW5nIGltYWdlIGxvYWQgcHJlZmVyZW5jZSIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hl
dGhlciB0byBsb2FkIHNpdGUgaWNvbiBpZ25vcmluZyBpbWFnZSBsb2FkIHByZWZlcmVuY2UuIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVu
YWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZQorICAgICoKKyAgICAqIFdoZXRoZXIg
dG8gZW5hYmxlIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIHN1cHBvcnQuIE9m
ZmxpbmUKKyAgICAqIFdlYiBBcHBsaWNhdGlvbiBDYWNoZSBlbnN1cmVzIHdlYiBhcHBsaWNhdGlv
bnMgYXJlIGF2YWlsYWJsZSBldmVuIHdoZW4KKyAgICAqIHRoZSB1c2VyIGlzIG5vdCBjb25uZWN0
ZWQgdG8gdGhlIG5ldHdvcmsuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFi
bGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIG9mZmxpbmUgd2Vi
IGFwcGxpY2F0aW9uIGNhY2hlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBvZmZsaW5lIHdlYiBh
cHBsaWNhdGlvbiBjYWNoZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdl
YktpdFdlYlNldHRpbmdzOmVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlOgorICAgICoKKyAgICAq
IFdoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IGxvY2FsU3RvcmFnZSBzdXBwb3J0LiBsb2NhbFN0b3Jh
Z2UgcHJvdmlkZXMKKyAgICAqIHNpbXBsZSBzeW5jaHJvbm91cyBzdG9yYWdlIGFjY2Vzcy4KKyAg
ICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RD
bGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0hU
TUw1X0xPQ0FMX1NUT1JBR0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5h
YmxlIEhUTUw1IExvY2FsIFN0b3JhZ2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IExv
Y2FsIFN0b3JhZ2Ugc3VwcG9ydCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAq
IFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1odG1sNS1kYXRhYmFzZToKKyAgICAqCisgICAgKiBX
aGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBjbGllbnQtc2lkZSBTUUwgZGF0YWJhc2Ugc3VwcG9ydC4g
Q2xpZW50LXNpZGUKKyAgICAqIFNRTCBkYXRhYmFzZSBhbGxvd3Mgd2ViIHBhZ2VzIHRvIHN0b3Jl
IHN0cnVjdHVyZWQgZGF0YSBhbmQgYmUgYWJsZSB0bworICAgICogdXNlIFNRTCB0byBtYW5pcHVs
YXRlIHRoYXQgZGF0YSBhc3luY2hyb25vdXNseS4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1o
dG1sNS1kYXRhYmFzZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSFRNTDUgRGF0YWJhc2UiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIg
dG8gZW5hYmxlIEhUTUw1IGRhdGFiYXNlIHN1cHBvcnQiKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisg
ICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUteHNzLWF1ZGl0b3IKKyAgICAq
CisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgWFNTIEF1ZGl0b3IuIFRoaXMgZmVhdHVyZSBm
aWx0ZXJzIHNvbWUga2luZHMgb2YKKyAgICAqIHJlZmxlY3RpdmUgWFNTIGF0dGFja3Mgb24gdnVs
bmVyYWJsZSB3ZWIgc2l0ZXMuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUteHNzLWF1ZGl0b3IiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XygiRW5hYmxlIFhTUyBBdWRpdG9yIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSB0aGUgWFNTIGF1
ZGl0b3IiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncykpOworCisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNl
dHRpbmdzOmVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nCisgICAgKgorICAgICogV2hldGhlciB0byBl
bmFibGUgdGhlIEZyYW1lIEZsYXR0ZW5pbmcuIFdpdGggdGhpcyBzZXR0aW5nIGVhY2ggc3ViZnJh
bWUgaXMgZXhwYW5kZWQKKyAgICAqIHRvIGl0cyBjb250ZW50cywgd2hpY2ggd2lsbCBmbGF0dGVu
IGFsbCB0aGUgZnJhbWVzIHRvIGJlY29tZSBvbmUgc2Nyb2xsYWJsZSBwYWdlLgorICAgICogT24g
dG91Y2ggZGV2aWNlcywgaXQgaXMgZGVzaXJlZCB0byBub3QgaGF2ZSBhbnkgc2Nyb2xsYWJsZSBz
dWIgcGFydHMgb2YgdGhlIHBhZ2UgYXMKKyAgICAqIGl0IHJlc3VsdHMgaW4gYSBjb25mdXNpbmcg
dXNlciBleHBlcmllbmNlLCB3aXRoIHNjcm9sbGluZyBzb21ldGltZXMgc2Nyb2xsaW5nIHN1YiBw
YXJ0cworICAgICogYW5kIGF0IG90aGVyIHRpbWVzIHNjcm9sbGluZyB0aGUgcGFnZSBpdHNlbGYu
IEZvciB0aGlzIHJlYXNvbiBpZnJhbWVzIGFuZCBmcmFtZXNldHMgYXJlCisgICAgKiBiYXJlbHkg
dXNhYmxlIG9uIHRvdWNoIGRldmljZXMuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1mcmFt
ZS1mbGF0dGVuaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBGcmFtZSBGbGF0dGVuaW5nIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVy
IHRvIGVuYWJsZSBGcmFtZSBGbGF0dGVuaW5nIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgIC8q
KgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLXBsdWdpbnM6CisgICAgKgorICAgICog
UGx1Z2lucyBlbWRlZGRlZCB3aXRoaW4gYSBwYWdlIGNhbiBiZSB0dXJuZWQgb2ZmIGJ5IGRpc2Fi
bGluZworICAgICogdGhpcyBwcm9wZXJ0eS4gCisgICAgKgorICAgICovCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9QTFVHSU5TLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1wbHVnaW5zIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF8oIkVuYWJsZSBQbHVnaW5zIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgZW1iZWRkZWQgcGx1Z2luIG9iamVjdHMu
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ3MpKTsKKyAgICAKKyAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGlu
Z3M6ZW5hYmxlLWphdmE6CisgICAgKgorICAgICogRW5hYmxlIG9yIGRpc2FibGUgc3VwcG9ydCBm
b3IgdGhlIEphdmEuIFRoaXMgcHJvcGVydHkgbmVlZHMgdG8gYmUgZW5hYmxlZAorICAgICogZm9y
IGRpc3BsYXlpbmcgamF2YSBjb250ZW50cyB2aWEgICZsdDtvYmplY3QmZ3Q7IG9yICZsdDtlbWJl
ZCZndDsgdGFnLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UFJPUF9FTkFCTEVfSkFWQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtamF2YSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSmF2YSIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
V2hldGhlciBKYXZhIHN1cHBvcnQgc2hvdWxkIGJlIGVuYWJsZWQiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykp
OworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczpqYXZhc2NyaXB0LWNhbi1vcGVu
LXdpbmRvd3MtYXV0b21hdGljYWxseQorICAgICoKKyAgICAqIFdoZXRoZXIgSmF2YVNjcmlwdCBj
YW4gb3BlbiBwb3B1cCB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgd2l0aG91dCB1c2VyCisgICAgKiBp
bnRlcnZlbnRpb24uCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9XU19BVVRPTUFUSUNBTExZLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImphdmFz
Y3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5IiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkphdmFTY3JpcHQgY2Fu
IG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIEphdmFTY3JpcHQgY2Fu
IG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAv
KioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmc6Cisg
ICAgKgorICAgICogRW5hYmxlIG9yIGRpc2FibGUgc3VwcG9ydCBmb3IgJmx0O2EgcGluZyZndDsu
CisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2Jq
ZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJM
RV9IWVBFUkxJTktfQVVESVRJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJF
bmFibGUgSHlwZXJsaW5rIEF1ZGl0aW5nIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIDxhIHBpbmc+IHNob3VsZCBi
ZSBhYmxlIHRvIHNlbmQgcGluZ3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfdHlwZV9j
bGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkp
OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2luaXQoV2ViS2l0V2ViU2V0
dGluZ3MqIHNldHRpbmdzKQoreworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9
IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShzZXR0aW5ncywgV0VCS0lUX1RZUEVfV0VCX1NF
VFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpOworICAgIHNldHRpbmdzLT5wcml2ID0g
cHJpdjsKKyAgICBuZXcgKHByaXYpIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSgpOworfQorCisv
KioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3OgorICoKKyAqIENyZWF0ZXMgYSBuZXcgI1dl
YktpdFdlYlNldHRpbmdzIGluc3RhbmNlIHdpdGggZGVmYXVsdCB2YWx1ZXMuIEl0IG11c3QKKyAq
IGJlIG1hbnVhbGx5IGF0dGFjaGVkIHRvIGEgV2ViVmlldy4KKyAqCisgKiBSZXR1cm5zOiBhIG5l
dyAjV2ViS2l0V2ViU2V0dGluZ3MgaW5zdGFuY2UuCisgKiovCitXZWJLaXRXZWJTZXR0aW5ncyog
d2Via2l0X3dlYl9zZXR0aW5nc19uZXcoKQoreworICAgIHJldHVybiBXRUJLSVRfV0VCX1NFVFRJ
TkdTKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIE5VTEwpKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdDoKKyAqCisg
KiBHZXQgcHJvcGVydHkgI09iamVjdDplbmFibGUtamF2YXNjcmlwdC4KKyAqIEBzZXR0aW5nczog
YSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBKYXZhU2NyaXB0
IGlzIGVuYWJsZWQuCisgKiAgICAgICAgICAlRkFMU0UgT3RoZXJ3aXNlLgorICoKKyAqIEBzZWVf
YWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQoKQorICoqLwor
Z2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoV2ViS2l0
V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0
aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJl
bmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdDoKKyAqIEBzZXR0aW5n
czogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAq
CisgKiBTZXQgcHJvcGVydHkgI09iamVjdDplbmFibGUtamF2YXNjcmlwdC4KKyAqCisgKiBAc2Vl
X2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KCkKKyAqKi8K
K3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQoV2ViS2l0V2Vi
U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2Vi
U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3Vy
cmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHByaXYtPnByZWZl
cmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhU2NyaXB0RW5hYmxlZChwcml2LT5wcmVmZXJl
bmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRp
bmdzKSwgImVuYWJsZS1qYXZhc2NyaXB0Iik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlczoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0
dGluZ3MKKyAqCisgKiBHZXQgcHJvcGVydHkgI09iamVjdDphdXRvLWxvYWQtaW1hZ2VzLgorICoK
KyAqIFJldHVybnM6ICVUUlVFIElmIGF1dG8gbG9hZGluZyBvZiBpbWFnZXMgaXMgZW5hYmxlZC4K
KyAqICAgICAgICAgICVGQUxTRSBPdGhlcndpc2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzKCkKKyAqKi8KK2dib29sZWFuIHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMoV2ViS2l0V2ViU2V0dGluZ3MqIHNl
dHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElO
R1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHBy
aXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldExvYWRzSW1h
Z2VzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlczoKKyAqIEBzZXR0aW5nczogYSAjV2Vi
S2l0V2ViU2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQg
cHJvcGVydHkgI09iamVjdDphdXRvLWxvYWQtaW1hZ2VzLgorICoKKyAqIEBzZWVfYWxzbzogd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcygpCisgKiovCit2b2lkIHdlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoV2ViS2l0V2ViU2V0dGluZ3MqIHNl
dHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2
YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0g
V0tQcmVmZXJlbmNlc0dldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNl
cyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisK
KyAgICBXS1ByZWZlcmVuY2VzU2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZl
cmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0
dGluZ3MpLCAiYXV0by1sb2FkLWltYWdlcyIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZToKKyAq
IEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqCisgKiBHZXQgcHJvcGVydHkgI09i
amVjdDpsb2Fkcy1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWZlcmVuY2UuCisgKgorICog
UmV0dXJuczogJVRSVUUgSWYgc2l0ZS1pY29uIGNhbiBiZSBsb2FkZWQgaXJyZXNwZWN0aXZlIG9m
IGltYWdlIGxvYWRpbmcgcHJlZmVyZW5jZS4KKyAqICAgICAgICAgICVGQUxTRSBPdGhlcndpc2Uu
CisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19p
Z25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNl
KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgV2ViS2l0
V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgcmV0dXJuIFdL
UHJlZmVyZW5jZXNHZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5j
ZShwcml2LT5wcmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19z
ZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlOgorICogQHNldHRp
bmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAor
ICoKKyAqIFNldCBwcm9wZXJ0eSAjT2JqZWN0OmxvYWRzLWljb25zLWlnbm9yaW5nLWltYWdlLWxv
YWQtcHJlZmVyZW5jZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZSgpCisgKiAgICAgICAg
ICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzKCkKKyAqKi8KK3Zv
aWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9h
ZF9wcmVmZXJlbmNlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxl
ZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGlu
Z3MpKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5w
cml2OworICAgIGdib29sZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRMb2Fkc1Np
dGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZShwcml2LT5wcmVmZXJlbmNlcyk7
CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXS1ByZWZlcmVuY2VzU2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZl
cmVuY2UocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChzZXR0aW5ncyksICJsb2Fkcy1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2Fk
LXByZWZlcmVuY2UiKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFi
bGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGU6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktp
dFdlYlNldHRpbmdzCisgKgorICogR2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLW9mZmxpbmUt
d2ViLWFwcGxpY2F0aW9uLWNhY2hlLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEhUTUw1IG9m
ZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIHN1cHBvcnQgaXMgZW5hYmxlZC4KKyAqICAgICAg
ICAgICVGQUxTRSBPdGhlcndpc2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoKQorICoqLworZ2Jv
b2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0
aW9uX2NhY2hlKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisg
ICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAg
cmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQo
cHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0
X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZToKKyAqIEBzZXR0aW5nczogYSAj
V2ViS2l0V2ViU2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBT
ZXQgcHJvcGVydHkgI09iamVjdDplbmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUu
CisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGlu
ZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoKQorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdz
X3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoV2ViS2l0V2ViU2V0dGlu
Z3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGlu
Z3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZh
bHVlID0gV0tQcmVmZXJlbmNlc0dldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChw
cml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9u
Q2FjaGVFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29i
amVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxp
Y2F0aW9uLWNhY2hlIik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5h
YmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2U6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRp
bmdzCisgKgorICogR2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3Jh
Z2UuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgSFRNTDUgbG9jYWwgc3RvcmFnZSBzdXBwb3J0
IGlzIGVuYWJsZWQuCisgKiAgICAgICAgICAlRkFMU0UgT3RoZXJ3aXNlLgorICoKKyAqIEBzZWVf
YWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Uo
KQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xv
Y2FsX3N0b3JhZ2UoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisK
KyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAg
ICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldExvY2FsU3RvcmFnZUVuYWJsZWQocHJpdi0+cHJlZmVy
ZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1s
NV9sb2NhbF9zdG9yYWdlOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICog
QGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAjT2JqZWN0OmVu
YWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UoKQorICoqLwordm9pZCB3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShXZWJLaXRXZWJT
ZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJT
ZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJy
ZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVm
ZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVm
ZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNl
dHRpbmdzKSwgImVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlIik7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlOgorICogQHNldHRpbmdz
OiBhICNXZWJLaXRXZWJTZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJs
ZS1odG1sNS1kYXRhYmFzZS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBIVE1MNSBkYXRhYmFz
ZSBzdXBwb3J0IGlzIGVuYWJsZWQuCisgKiAgICAgICAgICAlRkFMU0UgT3RoZXJ3aXNlLgorICoK
KyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFi
YXNlKCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1s
NV9kYXRhYmFzZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKwor
ICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAg
IHJldHVybiBXS1ByZWZlcmVuY2VzR2V0RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNl
cyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2Rh
dGFiYXNlOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICogQGVuYWJsZWQ6
IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1odG1s
NS1kYXRhYmFzZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9odG1sNV9kYXRhYmFzZSgpCisgKiovCit2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0
X2VuYWJsZV9odG1sNV9kYXRhYmFzZShXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29s
ZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJ
TkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBz
ZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2Vz
R2V0RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRW
YWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0
RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1odG1sNS1kYXRhYmFz
ZSIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVk
aXRvcjoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqCisgKiBHZXQgcHJv
cGVydHkgI09iamVjdDplbmFibGUteHNzLWF1ZGl0b3IuCisgKgorICogUmV0dXJuczogJVRSVUUg
SWYgWFNTIGF1ZGl0aW5nIGlzIGVuYWJsZWQuCisgKiAgICAgICAgICAlRkFMU0UgT3RoZXJ3aXNl
LgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19h
dWRpdG9yKCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94
c3NfYXVkaXRvcihXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKwor
ICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAg
IHJldHVybiBXS1ByZWZlcmVuY2VzR2V0WFNTQXVkaXRvckVuYWJsZWQocHJpdi0+cHJlZmVyZW5j
ZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVk
aXRvcjoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqIEBlbmFibGVkOiBW
YWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgcHJvcGVydHkgI09iamVjdDplbmFibGUteHNzLWF1
ZGl0b3IuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVf
eHNzX2F1ZGl0b3IoKQorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVf
eHNzX2F1ZGl0b3IoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVk
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5n
cykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnBy
aXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFhTU0F1ZGl0
b3JFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVu
YWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRYU1NBdWRpdG9y
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rf
bm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS14c3MtYXVkaXRvciIpOworfQorCisv
KioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nOgor
ICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAj
T2JqZWN0OmVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nLgorICouCisgKiBSZXR1cm5zOiAlVFJVRSBJ
ZiBmcmFtZSBmbGF0dGVuaW5nIGlzIGVuYWJsZWQuCisgKiAgICAgICAgICAlRkFMU0UgT3RoZXJ3
aXNlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2Zy
YW1lX2ZsYXR0ZW5pbmcoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
ZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3Mp
LCBGQUxTRSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5n
cy0+cHJpdjsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEZyYW1lRmxhdHRlbmluZ0VuYWJs
ZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJT
ZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0
eSAjT2JqZWN0OmVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nLgorICoKKyAqIEBzZWVfYWxzbzogd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoKQorICoqLwordm9p
ZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhXZWJLaXRX
ZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRX
ZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBnYm9vbGVhbiBj
dXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcyk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChw
cml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdf
T0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIik7Cit9CisKKy8qKgor
ICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnM6CisgKiBAc2V0dGluZ3M6
IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKgorICogR2V0IHByb3BlcnR5ICNPYmplY3Q6ZW5hYmxl
LXBsdWdpbnMuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgUGx1Z2lucyBhcmUgZW5hYmxlZC4K
KyAqICAgICAgICAgICVGQUxTRSBPdGhlcndpc2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucygpCisgKiovCitnYm9vbGVhbiB3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lucyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGlu
Z3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhz
ZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9
IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0UGx1Z2luc0VuYWJs
ZWQocHJpdi0+cHJlZmVyZW5jZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9wbHVnaW5zOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncwor
ICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAjT2JqZWN0
OmVuYWJsZS1wbHVnaW5zLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfZW5hYmxlX3BsdWdpbnMoKQorICoqLwordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9l
bmFibGVfcGx1Z2lucyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJs
ZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRp
bmdzKSk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+
cHJpdjsKKyAgICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0UGx1Z2lu
c0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5h
YmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldFBsdWdpbnNFbmFi
bGVkKHByaXYtPnByZWZlcmVuY2VzLCAoYm9vbCllbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3Rp
ZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXBsdWdpbnMiKTsKK30KKworLyoqCisgKiB3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YToKKyAqIEBzZXR0aW5nczogYSAjV2Vi
S2l0V2ViU2V0dGluZ3MKKyAqCisgKiBHZXQgcHJvcGVydHkgI09iamVjdDplbmFibGUtamF2YS4K
KyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBKYXZhIGlzIGVuYWJsZWQuCisgKiAgICAgICAgICAl
RkFMU0UgT3RoZXJ3aXNlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3dlYl9zZXR0aW5nc19z
ZXRfZW5hYmxlX2phdmEoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
ZW5hYmxlX2phdmEoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisK
KyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAg
ICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEphdmFFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsK
K30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfamF2YToKKyAqIEBz
ZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBz
ZXQKKyAqCisgKiBTZXQgcHJvcGVydHkgI09iamVjdDplbmFibGUtamF2YS4KKyAqCisgKiBAc2Vl
X2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKCkKKyAqKi8KK3ZvaWQg
d2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEoV2ViS2l0V2ViU2V0dGluZ3MqIHNl
dHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2
YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgZ2Jvb2xlYW4gY3VycmVudFZhbHVlID0g
V0tQcmVmZXJlbmNlc0dldEphdmFFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAo
Y3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVy
ZW5jZXNTZXRKYXZhRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcywgKGJvb2wpZW5hYmxlZCk7Cisg
ICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1qYXZhIik7Cit9
CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93
aW5kb3dzX2F1dG9tYXRpY2FsbHk6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRpbmdz
CisgKgorICogR2V0IHByb3BlcnR5ICNPYmplY3Q6amF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dz
LWF1dG9tYXRpY2FsbHkuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgSmF2YVNjcmlwdCBjYW4g
b3BlbiB3aW5kb3cgYXV0b21hdGljYWxseS4KKyAqICAgICAgICAgICVGQUxTRSBPdGhlcndpc2Uu
CisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nh
bl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSgpCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShX
ZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIFdlYktpdFdl
YlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIHJldHVybiBXS1By
ZWZlcmVuY2VzR2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShwcml2LT5w
cmVmZXJlbmNlcyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfamF2YXNj
cmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHk6CisgKiBAc2V0dGluZ3M6IGEgI1dl
YktpdFdlYlNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0
IHByb3BlcnR5ICNPYmplY3Q6amF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2Fs
bHkuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9qYXZhc2NyaXB0
X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSgpCisgKiovCit2b2lkIHdlYmtpdF93ZWJf
c2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KFdl
YktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdl
YktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGdib29s
ZWFuIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRv
d3NBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVl
ID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZh
U2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzLCAoYm9v
bCllbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiamF2
YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHkiKTsKK30KKworLyoqCisgKiB3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nOgorICogQHNl
dHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAjT2JqZWN0
OmVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmcuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgaHlw
ZXItbGluayBhdWRpdGluZyBpcyBlbmFibGVkLgorICogICAgICAgICAgJUZBTFNFIE90aGVyd2lz
ZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBl
cmxpbmtfYXVkaXRpbmcoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
ZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5n
cyksIEZBTFNFKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRp
bmdzLT5wcml2OworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SHlwZXJsaW5rQXVkaXRpbmdF
bmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nOgorICogQHNldHRpbmdzOiBhICNXZWJL
aXRXZWJTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBw
cm9wZXJ0eSAjT2JqZWN0OmVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmcuCisgKgorICogQHNlZV9h
bHNvOiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKCkK
KyAqKi8KK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRp
dGluZyhXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisK
KyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAg
ICBnYm9vbGVhbiBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0SHlwZXJsaW5rQXVkaXRp
bmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVu
YWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRIeXBlcmxpbmtB
dWRpdGluZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMsIChib29sKWVuYWJsZWQpOworICAgIGdf
b2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtaHlwZXJsaW5rLWF1ZGl0
aW5nIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViU2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDJk
OWJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViU2V0dGluZ3MuaApAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENvcHly
aWdodCAoQykgMjAwOSBKYW4gTWljaGFlbCBBbG9uem8gPGptYWxvbnpvQGdtYWlsLmNvbQorICog
UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFdlYlNldHRpbmdzX2gKKyNkZWZpbmUgV2Vi
S2l0V2ViU2V0dGluZ3NfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRl
IDxnbGliLW9iamVjdC5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVf
V0VCX1NFVFRJTkdTICAgICAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3R5cGUoKSkK
KyNkZWZpbmUgV0VCS0lUX1dFQl9TRVRUSU5HUyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdl
YlNldHRpbmdzKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9TRVRUSU5HU19DTEFTUyhrbGFzcykgICAg
KEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfU0VUVElO
R1MsIFdlYktpdFdlYlNldHRpbmdzQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1NFVFRJ
TkdTKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJ
VF9UWVBFX1dFQl9TRVRUSU5HUykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfU0VUVElOR1NfQ0xB
U1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVf
V0VCX1NFVFRJTkdTKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9TRVRUSU5HU19HRVRfQ0xBU1Mob2Jq
KSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfU0VU
VElOR1MsIFdlYktpdFdlYlNldHRpbmdzQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
V2ViU2V0dGluZ3MgV2ViS2l0V2ViU2V0dGluZ3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vi
U2V0dGluZ3NDbGFzcyBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdFdlYlNldHRpbmdzUHJpdmF0ZSBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU7CisKK3N0cnVj
dCBfV2ViS2l0V2ViU2V0dGluZ3MgeworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworCisg
ICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRX
ZWJTZXR0aW5nc0NsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAg
LyogUGFkZGluZyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLworICAgIHZvaWQgKCpfd2Via2l0X3Jl
c2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOwor
ICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0
X3Jlc2VydmVkNCkgKHZvaWQpOworfTsKKworV0tfRVhQT1JUIEdUeXBlCit3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF90eXBlKHZvaWQpOworCitXS19FWFBPUlQgV2ViS2l0V2ViU2V0dGluZ3MgKgor
d2Via2l0X3dlYl9zZXR0aW5nc19uZXcodm9pZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQgICAgICAgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAor
d2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQgICAgICAgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29s
ZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X2F1dG9fbG9hZF9pbWFnZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKwor
V0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19p
Z25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5n
cyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9sb2Fkc19pY29u
c19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0
aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVh
bgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9u
X2NhY2hlICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQg
dm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0
aW9uX2NhY2hlICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBPUlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlICAgICAgICAgICAgICAgICAoV2Vi
S2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlICAgICAgICAgICAgICAgICAo
V2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVk
KTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVf
aHRtbDVfZGF0YWJhc2UgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzKiBz
ZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFi
bGVfaHRtbDVfZGF0YWJhc2UgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdz
KiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CitXS19FWFBPUlQgZ2Jv
b2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvciAgICAgICAg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0tfRVhQ
T1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvciAgICAg
ICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyAgICAgICAgICAgICAgICAg
ICAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5h
YmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5h
YmxlX3BsdWdpbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
ZW5hYmxlX3BsdWdpbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0
aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXS19FWFBP
UlQgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzKTsKKwor
V0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0tfRVhQT1JUIGdib29sZWFuCit3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGlj
YWxseSAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dLX0VYUE9SVCB2b2lkCit3
ZWJraXRfd2ViX3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21h
dGljYWxseSAgKFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xl
YW4gZW5hYmxlZCk7CisKK1dLX0VYUE9SVCBnYm9vbGVhbgord2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJT
ZXR0aW5ncyogc2V0dGluZ3MpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl9zZXR0aW5n
c19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyAgICAgICAgICAgICAgICAgIChXZWJLaXRX
ZWJTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitH
X0VORF9ERUNMUworCisjZW5kaWYgLyogd2Via2l0d2Vic2V0dGluZ3NfaCAqLwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdz
LmMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Vic2V0dGlu
Z3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWZhMWM4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdl
YnNldHRpbmdzLmMKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
SmFuIE1pY2hhZWwgQWxvbnpvCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3Jv
bGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlIDxnbGliLmg+
CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgorCitz
dGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3Modm9pZCkKK3sKKyAgICBXZWJLaXRXZWJT
ZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworCisgICAgLy8g
U2NyaXB0cyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2Vi
X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncywgRkFMU0UpOworICAgIGdf
YXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5n
cykpOworCisgICAgLy8gQnkgZGVmYXVsdCBhdXRvLWxvYWQtaW1hZ2UgaXMgdHJ1ZS4KKyAgICBn
X2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdz
KSk7CisgICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5n
cywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9hdXRvX2xv
YWRfaW1hZ2VzKHNldHRpbmdzKSk7CisKKyAgICAvLyBsb2FkLWljb24taWdub3JpbmctaW1hZ2Ut
bG9hZC1wcmVmIGlzIGZhbHNlIGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZShz
ZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9y
aW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZShzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQo
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9w
cmVmZXJlbmNlKHNldHRpbmdzKSk7CisgICAgCisgICAgLy8gT2ZmbGluZSBhcHBsaWNhdGlvbiBj
YWNoZSBpcyB0cnVlIGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzKSk7Cisg
ICAgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9u
X2NhY2hlKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOwor
CisgICAgLy8gTG9jYWwgc3RvcmFnZSBpcyBlbmFibGUgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2Vy
dCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0
aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9z
dG9yYWdlKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzKSk7CisKKyAgICAvLyBI
VE1MNSBkYXRhYmFzZSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQod2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzKSk7CisgICAg
d2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzLCBG
QUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1s
NV9kYXRhYmFzZShzZXR0aW5ncykpOworCisgICAgLy8gWFNTIEF1ZGl0b3IgaXMgZW5hYmxlZCBi
eSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJsZV94
c3NfYXVkaXRvcihzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV94c3NfYXVkaXRvcihzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3Ioc2V0dGluZ3MpKTsKKworICAgIC8vIEZy
YW1lIGZsYXR0ZXJpbmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCghd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MpKTsK
KyAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0
aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxl
X2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MpKTsKKworICAgIC8vIFBsdWdpbnMgYXJlIGVuYWJs
ZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9lbmFi
bGVfcGx1Z2lucyhzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9wbHVnaW5zKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKHNldHRpbmdzKSk7CisKKyAgICAvLyBKYXZhIGlzIGVu
YWJsZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9l
bmFibGVfamF2YShzZXR0aW5ncykpOworICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9qYXZhKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9qYXZhKHNldHRpbmdzKSk7CisKKyAgICAvLyBCeSBkZWZhdWx0LCBKYXZh
U2NyaXB0IGNhbiBvcGVuIHdpbmRvd3MgYXV0b21hdGljYWxseSBpcyBkaXNhYmxlZC4KKyAgICBn
X2Fzc2VydCghd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5k
b3dzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncywgVFJV
RSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5f
b3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3MpKTsKKworICAgIC8vIEJ5IGRlZmF1
bHQgaHlwZXIgbGluayBhdWRpdGluZyBpcyBkaXNhYmxlZC4KKyAgICBnX2Fzc2VydCghd2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncykpOwor
ICAgIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0
dGluZ3MsIFRSVUUpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MpKTsKKworICAgIGdfb2JqZWN0X3VucmVmKEdf
T0JKRUNUKHNldHRpbmdzKSk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK
K3sKKyAgICBnX3RocmVhZF9pbml0KE5VTEwpOworICAgIGd0a190ZXN0X2luaXQoJmFyZ2MsICZh
cmd2LCBOVUxMKTsKKworICAgIGdfdGVzdF9idWdfYmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvIik7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJzZXR0aW5ncy90ZXN0d2Vi
c2V0dGluZ3MiLCB0ZXN0V2ViS2l0V2ViU2V0dGluZ3MpOworCisgICAgcmV0dXJuIGdfdGVzdF9y
dW4oKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmlu
ZGV4IGVmOTNhZGMuLmMyNzlmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxp
dHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIz
LDYgKzI0LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEVudW1UeXBlcy5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0RXJyb3IuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkNv
bnRleHQuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlNldHRpbmdzLmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRXZWJWaWV3QmFzZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
V2ViVmlldy5oPgogCi0tIAoxLjcuNC4xCgo=
</data>
<flag name="review"
          id="106303"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110515</attachid>
            <date>2011-10-11 07:52:44 -0700</date>
            <delta_ts>2011-10-11 22:18:08 -0700</delta_ts>
            <desc>Adds WebKitSettings GTK+ API&apos;s.</desc>
            <filename>0001-WebKitSettings-API-s-added.patch</filename>
            <type>text/plain</type>
            <size>54544</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSAxZjg1ZGRjMjVhNmYzNTU2NTk5MjRmMDE5NjY1OWI1MDcxNGRhNTZjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogVHVlLCAxMSBPY3QgMjAxMSAyMDoxMToxOCArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIFdl
YktpdFNldHRpbmdzIEFQSSdzIGFkZGVkCgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1NSArKwogU291cmNlL1dlYktpdDIvR05VbWFr
ZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgIDExICstCiAuLi4vV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAgICB8ICA4ODUgKysrKysrKysrKysrKysr
KysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmgg
IHwgIDE1NiArKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYmtpdHNldHRp
bmdzLmMgICB8ICAxMDcgKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmggICAgICAgICB8ICAgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCAxMjE1IGluc2VydGlvbnMo
KyksIDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJr
aXRzZXR0aW5ncy5jCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGYzYmZmYmMuLjcwODUyOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1OCBAQAorMjAxMS0xMC0xMSAgTmF5YW4gS3VtYXIgSyAgPG5heWFua2tAbW90
b3JvbGEuY29tPgorCisgICAgICAgIFtHVEtdW1dFQktJVDJdIEFkZCBXZWJLaXRTZXR0aW5ncyBH
VEsrIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY4MzcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViS2l0U2V0dGluZ3MgR1RLKyBvYmplY3QgaXMgY3JlYXRlZCBhbmQgZmlyc3Qgc2V0IG9mCisg
ICAgICAgIEFQSSdzIGFyZSB3cml0dGVuIHRvIGdldCBvciBzZXQgdGhlIHByb3BlcnRpZXMgb2Yg
V2ViS2l0U2V0dGluZ3MuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkZWQgbmV3IGZp
bGVzIGZvciBjb21waWxhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRT
ZXR0aW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFNldHRpbmdzUHJpdmF0ZTo6X1dl
YktpdFNldHRpbmdzUHJpdmF0ZSk6IENvbnN0cnVjdG9yLgorICAgICAgICAod2ViS2l0U2V0dGlu
Z3NTZXRQcm9wZXJ0eSk6IFNldCBwcm9wZXJ0eSBmdW5jdGlvbi4KKyAgICAgICAgKHdlYktpdFNl
dHRpbmdzR2V0UHJvcGVydHkpOiBHZXQgcHJvcGVydHkgZnVuY3Rpb24uCisgICAgICAgICh3ZWJL
aXRTZXR0aW5nc0ZpbmFsaXplKTogQ2xhc3MgZmluYWxpemUgZnVuY3Rpb24uCisgICAgICAgICh3
ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdCk6IENsYXNzIGluaXQgZnVuY3Rpb24uCisgICAgICAg
ICh3ZWJraXRfc2V0dGluZ3NfaW5pdCk6IEluc3RhbmNlIGluaXQgZnVuY3Rpb24uCisgICAgICAg
ICh3ZWJraXRfc2V0dGluZ3NfbmV3KTogQ3JlYXRlcyBXZWJLaXRTZXR0aW5ncyBHT2JqZWN0Lgor
ICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdCk6IEZ1bmN0aW9u
IHRvIGdldCAnZW5hYmxlLWphdmFzY3JpcHQnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3Nl
dHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdCk6IEZ1bmN0aW9uIHRvIHNldCAnZW5hYmxlLWph
dmFzY3JpcHQnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9hdXRvX2xv
YWRfaW1hZ2VzKTogR2V0ICdhdXRvLWxvYWQtaW1hZ2VzJyBwcm9wZXJ0eS4KKyAgICAgICAgKHdl
YmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyk6IFNldCAnYXV0by1sb2FkLWltYWdl
cycgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2ln
bm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZSk6IEZ1bmN0aW9uIHRvIGdldAorICAgICAgICAn
bG9hZHMtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmZXJlbmNlJyBwcm9wZXJ0eS4KKyAg
ICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9h
ZF9wcmVmZXJlbmNlKTogRnVuY3Rpb24gdG8gc2V0CisgICAgICAgICdsb2Fkcy1pY29ucy1pZ25v
cmluZy1pbWFnZS1sb2FkLXByZWZlcmVuY2UnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUpOiBGdW5jdGlv
biB0byBnZXQKKyAgICAgICAgJ2VuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZScg
cHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dl
Yl9hcHBsaWNhdGlvbl9jYWNoZSk6IEZ1bmN0aW9uIHRvIHNldAorICAgICAgICAnZW5hYmxlLW9m
ZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlJyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdF9z
ZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UpOiBHZXQgcHJvcGVydHkgJ2Vu
YWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRf
ZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UpOiBTZXQgcHJvcGVydHkgJ2VuYWJsZS1odG1sNS1s
b2NhbC1zdG9yYWdlJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1
X2RhdGFiYXNlKTogR2V0IHByb3BlcnR5ICdlbmFibGUtaHRtbDUtZGF0YWJhc2UnLgorICAgICAg
ICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UpOiBTZXQgcHJvcGVy
dHkgJ2VuYWJsZS1odG1sNS1kYXRhYmFzZScuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV94c3NfYXVkaXRvcik6IEdldCBwcm9wZXJ0eSAnZW5hYmxlLXhzcy1lZGl0b3InLgor
ICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfeHNzX2F1ZGl0b3IpOiBTZXQgcHJv
cGVydHkgJ2VuYWJsZS14c3MtZWRpdG9yJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcpOiBHZXQgcHJvcGVydHkgJ2VuYWJsZS1mcmFtZS1mbGF0
dGVuaW5nJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0
ZW5pbmcpOiBTZXQgcHJvcGVydHkgJ2VuYWJsZS1mcmFtZS1mbGF0dGVuaW5nJy4KKyAgICAgICAg
KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMpOiBHZXQgcHJvcGVydHkgJ2VuYWJs
ZS1wbHVnaW5zJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMp
OiBTZXQgcHJvcGVydHkgJ2VuYWJsZS1wbHVnaW5zJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX2phdmEpOiBGdW5jdGlvbiB0byBnZXQgJ2VuYWJsZS1qYXZhJyBwcm9wZXJ0
eS4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEpOiBGdW5jdGlvbiB0
byBzZXQgJ2VuYWJsZS1qYXZhJyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19n
ZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkpOiBHZXQgdGhlIHBy
b3BlcnR5CisgICAgICAgICdqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxs
eScuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2lu
ZG93c19hdXRvbWF0aWNhbGx5KTogU2V0IHRoZSBwcm9wZXJ0eQorICAgICAgICAnamF2YXNjcmlw
dC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHknLgorICAgICAgICAod2Via2l0X3NldHRp
bmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKTogR2V0ICdlbmFibGUtaHlwZXJsaW5r
LWF1ZGl0aW5nJyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxl
X2h5cGVybGlua19hdWRpdGluZyk6IFNldCAnZW5hYmxlLWh5cGVybGluay1hdWRpdGluZycgcHJv
cGVydHkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaDogUHVi
bGljIEFQSSdzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJraXRz
ZXR0aW5ncy5jOiBVbml0IHRlc3RzIGZvciBuZXdseSBjcmVhdGVkIEFQSSdzLgorICAgICAgICAo
dGVzdFdlYktpdFNldHRpbmdzKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdDIuaDogQWRkIHdlYmtpdHNzZXR0aW5ncyB1bml0IHRlc3QuCisKIDIw
MTEtMTAtMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
c2UgYSBDYWNoZWRJbWFnZUNsaWVudCBpbnN0ZWFkIG9mIENhY2hlZFJlc291cmNlQ2xpZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGUzZjk4NDYuLjg5NzllZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
LmFtCkBAIC03Myw2ICs3Myw3IEBAIHdlYmtpdDJndGtfaGVhZGVycyA9IFwKIAkkKFdlYktpdDIp
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkxvYWRlckNsaWVudC5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFNldHRpbmdzLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC00
NzYsNiArNDc3LDggQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9O
QF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcCBcCisJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwIFwKKwlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwKQEAgLTEwODYsNyAr
MTA4OSw4IEBAIERJU1RDTEVBTkZJTEVTICs9IFwKIFRFU1RfUFJPR1MgKz0gXAogCVByb2dyYW1z
L3VuaXR0ZXN0cy93ZWJraXQyL3Rlc3R3ZWJjb250ZXh0IFwKIAlQcm9ncmFtcy91bml0dGVzdHMv
d2Via2l0Mi90ZXN0d2VidmlldyBcCi0JUHJvZ3JhbXMvdW5pdHRlc3RzL3dlYmtpdDIvdGVzdGxv
YWRpbmcKKwlQcm9ncmFtcy91bml0dGVzdHMvd2Via2l0Mi90ZXN0bG9hZGluZyBcCisJUHJvZ3Jh
bXMvdW5pdHRlc3RzL3dlYmtpdDIvdGVzdHdlYmtpdHNldHRpbmdzCiAKIG5vaW5zdF9QUk9HUkFN
UyArPSAkKFRFU1RfUFJPR1MpCiB3ZWJraXQyX3Rlc3RzX2NmbGFncyA9IFwKQEAgLTExMjksNiAr
MTEzMywxMSBAQCBQcm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0bG9hZGluZ19DRkxBR1Mg
PSAkKHdlYmtpdDJfdGVzdHNfY2ZsYWdzKQogUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVz
dGxvYWRpbmdfTERBREQgPSAkKHdlYmtpdDJfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc191bml0dGVz
dHNfd2Via2l0Ml90ZXN0bG9hZGluZ19MREZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxhZ3Mp
CiAKK1Byb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJraXRzZXR0aW5nc19TT1VSQ0VT
ID0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYmtpdHNldHRp
bmdzLmMKK1Byb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJraXRzZXR0aW5nc19DRkxB
R1MgPSAkKHdlYmtpdDJfdGVzdHNfY2ZsYWdzKQorUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJf
dGVzdHdlYmtpdHNldHRpbmdzX0xEQUREID0gJCh3ZWJraXQyX3Rlc3RzX2xkYWRkKQorUHJvZ3Jh
bXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYmtpdHNldHRpbmdzX0xERkxBR1MgPSAkKHdlYmtp
dDJfdGVzdHNfbGRmbGFncykKKwogIyBXZWJLaXRXZWJQcm9jZXNzCiBsaWJleGVjX1BST0dSQU1T
ICs9IFwKIAlQcm9ncmFtcy9XZWJLaXRXZWJQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZGQzMDFkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcApAQCAtMCwwICsxLDg4NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYktpdFNldHRpbmdzLmgiCisKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5j
bHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2VzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFp
blB0ci5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tUeXBlLmg+CisjaW5jbHVkZSA8Z2xpYi9naTE4
bi1saWIuaD4KKworc3RydWN0IF9XZWJLaXRTZXR0aW5nc1ByaXZhdGUgeworICAgIFdLUmV0YWlu
UHRyPFdLUHJlZmVyZW5jZXNSZWY+IHByZWZlcmVuY2VzOworCisgICAgX1dlYktpdFNldHRpbmdz
UHJpdmF0ZSgpCisgICAgeworICAgICAgICBwcmVmZXJlbmNlcyA9IFdLUHJlZmVyZW5jZXNDcmVh
dGUoKTsKKyAgICB9Cit9OworCisvKioKKyAqIFNFQ1RJT046d2Via2l0d2Vic2V0dGluZ3MKKyAq
IEBzaG9ydF9kZXNjcmlwdGlvbjogQ29udHJvbCB0aGUgYmVoYXZpb3VyIG9mIGEgI1dlYktpdFdl
YlZpZXcKKyAqCisgKiAjV2ViS2l0U2V0dGluZ3MgY2FuIGJlIGFwcGxpZWQgdG8gYSAjV2ViS2l0
V2ViVmlldyB0byBjb250cm9sIHRleHQgZW5jb2RpbmcsIAorICogY29sb3IsIGZvbnQgc2l6ZXMs
IHByaW50aW5nIG1vZGUsIHNjcmlwdCBzdXBwb3J0LCBsb2FkaW5nIG9mIGltYWdlcyBhbmQgdmFy
aW91cyBvdGhlciB0aGluZ3MuIAorICogQWZ0ZXIgY3JlYXRpb24sIGEgI1dlYktpdFNldHRpbmdz
IG9iamVjdCBjb250YWlucyBkZWZhdWx0IHNldHRpbmdzLiAKKyAqCisgKiA8aW5mb3JtYWxleGFt
cGxlPjxwcm9ncmFtbGlzdGluZz4KKyAqIC88IS0tIC0tPiogQ3JlYXRlIGEgbmV3ICNXZWJLaXRT
ZXR0aW5ncyBhbmQgZGlzYWJsZSBKYXZhU2NyaXB0LiAqPCEtLSAtLT4vCisgKiBXZWJLaXRTZXR0
aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfc2V0dGluZ3NfbmV3ICgpOworICogZ19vYmplY3Rfc2V0
IChHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtamF2YS1zY3JpcHQiLCBGQUxTRSwgTlVMTCk7
CisgKgorICogd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyAoV0VCS0lUX1dFQl9WSUVXICht
eV93ZWJ2aWV3KSwgc2V0dGluZ3MpOworICogPC9wcm9ncmFtbGlzdGluZz48L2luZm9ybWFsZXhh
bXBsZT4KKyAqLworCisKK0dfREVGSU5FX1RZUEUoV2ViS2l0U2V0dGluZ3MsIHdlYmtpdF9zZXR0
aW5ncywgR19UWVBFX09CSkVDVCkKKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9F
TkFCTEVfSkFWQVNDUklQVCwKKyAgICBQUk9QX0FVVE9fTE9BRF9JTUFHRVMsCisgICAgUFJPUF9M
T0FEU19JQ09OU19JR05PUklOR19JTUFHRV9MT0FEX1BSRUZFUkVOQ0UsCisgICAgUFJPUF9FTkFC
TEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05fQ0FDSEUsCisgICAgUFJPUF9FTkFCTEVfSFRNTDVf
TE9DQUxfU1RPUkFHRSwKKyAgICBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRSwKKyAgICBQUk9Q
X0VOQUJMRV9YU1NfQVVESVRPUiwKKyAgICBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HLAor
ICAgIFBST1BfRU5BQkxFX1BMVUdJTlMsCisgICAgUFJPUF9FTkFCTEVfSkFWQSwKKyAgICBQUk9Q
X0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9XU19BVVRPTUFUSUNBTExZLAorICAgIFBST1BfRU5B
QkxFX0hZUEVSTElOS19BVURJVElORywKK307CisKK3N0YXRpYyB2b2lkIHdlYktpdFNldHRpbmdz
U2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZSog
dmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKK3sKKyAgICBXZWJLaXRTZXR0aW5ncyogc2V0
dGluZ3MgPSBXRUJLSVRfU0VUVElOR1Mob2JqZWN0KTsKKyAKKyAgICBzd2l0Y2ggKHByb3BJZCkg
eworICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQVNDUklQVDoKKyAgICAgICAgd2Via2l0X3NldHRp
bmdzX3NldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2
YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVVUT19MT0FEX0lNQUdFUzoK
KyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzLCBn
X3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJP
UF9MT0FEU19JQ09OU19JR05PUklOR19JTUFHRV9MT0FEX1BSRUZFUkVOQ0U6CisgICAgICAgIHdl
YmtpdF9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJl
bmNlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05fQ0FDSEU6Cisg
ICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9u
X2NhY2hlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFHRToKKyAgICAgICAg
d2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0aW5ncywg
Z192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBS
T1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNFOgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1hTU19BVURJVE9SOgorICAg
ICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncywgZ192
YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
RU5BQkxFX0ZSQU1FX0ZMQVRURVJJTkc6CisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5h
YmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9QTFVHSU5TOgorICAgICAg
ICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zKHNldHRpbmdzLCBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVf
SkFWQToKKyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YShzZXR0aW5ncywg
Z192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBS
T1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFk6CisgICAgICAgIHdl
YmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2Fs
bHkoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkc6CisgICAgICAgIHdlYmtp
dF9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncywgZ192YWx1
ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBh
cmFtU3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2ViS2l0
U2V0dGluZ3NHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVl
KiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktpdFNldHRpbmdzKiBz
ZXR0aW5ncyA9IFdFQktJVF9TRVRUSU5HUyhvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wSWQp
IHsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0pBVkFTQ1JJUFQ6CisgICAgICAgIGdfdmFsdWVfc2V0
X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0
dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0FVVE9fTE9BRF9JTUFHRVM6
CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRf
YXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBS
T1BfTE9BRFNfSUNPTlNfSUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGRVJFTkNFOgorICAgICAgICBn
X3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25z
X2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZShzZXR0aW5ncykpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hFOgor
ICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0U6CisgICAgICAg
IGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0
bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Uk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2
YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2Uoc2V0dGluZ3Mp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUjoKKyAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfeHNzX2F1ZGl0b3Ioc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZh
bHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRpbmdz
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfUExVR0lOUzoKKyAgICAg
ICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
cGx1Z2lucyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxF
X0pBVkE6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Uk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9XU19BVVRPTUFUSUNBTExZOgorICAgICAgICBn
X3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRf
Y2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HOgorICAgICAgICBnX3Zh
bHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxp
bmtfYXVkaXRpbmcoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBw
YXJhbVNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYktp
dFNldHRpbmdzRmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIFdFQktJVF9TRVRUSU5H
UyhvYmplY3QpLT5wcml2LT5+V2ViS2l0U2V0dGluZ3NQcml2YXRlKCk7CisgICAgR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0X3NldHRpbmdzX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFNldHRpbmdz
Q2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpF
Q1RfQ0xBU1Moa2xhc3MpOworICAgIGdPYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2ViS2l0
U2V0dGluZ3NTZXRQcm9wZXJ0eTsKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdl
YktpdFNldHRpbmdzR2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdl
YktpdFNldHRpbmdzRmluYWxpemU7CisKKyAgICBHUGFyYW1GbGFncyByZWFkV3JpdGVDb25zdHJ1
Y3RQYXJhbUZsYWdzID0gc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFE
V1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVCk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFNldHRp
bmdzOmVuYWJsZS1qYXZhc2NyaXB0CisgICAgKgorICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIG9y
IG5vdCBKYXZhU2NyaXB0IGV4ZWN1dGVzIHdpdGhpbiBhIHBhZ2UuCisgICAgKgorICAgICovCisg
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9KQVZBU0NSSVBULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVu
YWJsZS1qYXZhc2NyaXB0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBqYXZhc2NyaXB0IiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgamF2
YXNjcmlwdC4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisgICAg
CisgICAgLyoqCisgICAgKiBXZWJLaXRTZXR0aW5nczphdXRvLWxvYWQtaW1hZ2VzCisgICAgKgor
ICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGltYWdlcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBs
b2FkZWQgb3Igbm90LgorICAgICogT24gZGV2aWNlcyB3aGVyZSBuZXR3b3JrIGJhbmR3aWR0aCBp
cyBvZiBjb25jZXJuLCBpdCBtaWdodCBiZQorICAgICogdXNlZnVsIHRvIHR1cm4gdGhpcyBwcm9w
ZXJ0eSBvZmYuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
Uk9QX0FVVE9fTE9BRF9JTUFHRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiYXV0by1sb2FkLWltYWdlcyIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJBdXRvIGxvYWQg
aW1hZ2VzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfKCJMb2FkIGltYWdlcyBhdXRvbWF0aWNhbGx5LiIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRX
cml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKyAgICAKKyAgICAvKioKKyAgICAqIFdlYktpdFNl
dHRpbmdzOmxvYWRzLWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZQorICAgICoK
KyAgICAqIERldGVybWluZXMgd2hldGhlciBhIHNpdGUgY2FuIGxvYWQgZmF2aWNvbnMgaXJyZXNw
ZWN0aXZlCisgICAgKiBvZiB0aGUgdmFsdWUgb2YgI1dlYlNldHRpbmdzOmF1dG8tbG9hZC1pbWFn
ZXMuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShn
T2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0xP
QURTX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJsb2Fkcy1pY29ucy1p
Z25vcmluZy1pbWFnZS1sb2FkLXByZWZlcmVuY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiTG9hZHMgc2l0ZSBpY29ucyBpZ25v
cmluZyBpbWFnZSBsb2FkIHByZWZlcmVuY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gbG9hZCBzaXRlIGlj
b24gaWdub3JpbmcgaW1hZ2UgbG9hZCBwcmVmZXJlbmNlLiIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVD
b25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmVu
YWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZQorICAgICoKKyAgICAqIFdoZXRoZXIg
dG8gZW5hYmxlIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIHN1cHBvcnQuIE9m
ZmxpbmUKKyAgICAqIHdlYiBhcHBsaWNhdGlvbiBjYWNoZSBlbnN1cmVzIHdlYiBhcHBsaWNhdGlv
bnMgYXJlIGF2YWlsYWJsZSBldmVuIHdoZW4KKyAgICAqIHRoZSB1c2VyIGlzIG5vdCBjb25uZWN0
ZWQgdG8gdGhlIG5ldHdvcmsuCisgICAgKiAKKyAgICAqIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxp
Y2F0aW9uIHNwZWNpZmljYXRpb24gaXMgYXZhaWxhYmxlIGF0CisgICAgKiBodHRwOi8vZGV2Lncz
Lm9yZy9odG1sNS9zcGVjL29mZmxpbmUuaHRtbC4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OX0NB
Q0hFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jv
b2xlYW4oImVuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUg
b2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIG9m
ZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlLiIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVj
dFBhcmFtRmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWh0
bWw1LWxvY2FsLXN0b3JhZ2U6CisgICAgKgorICAgICogV2hldGhlciB0byBlbmFibGUgSFRNTDUg
bG9jYWwgc3RvcmFnZSBzdXBwb3J0LiBMb2NhbCBzdG9yYWdlIHByb3ZpZGVzCisgICAgKiBzaW1w
bGUgc3luY2hyb25vdXMgc3RvcmFnZSBhY2Nlc3MuCisgICAgKgorICAgICogSFRNTDUgbG9jYWwg
c3RvcmFnZSBzcGVjaWZpY2F0aW9uIGlzIGF2YWlsYWJsZSBhdAorICAgICogaHR0cDovL2Rldi53
My5vcmcvVFIvd2Vic3RvcmFnZS8uCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1odG1s
NS1sb2NhbC1zdG9yYWdlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBIVE1MNSBsb2NhbCBzdG9yYWdlIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJX
aGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBMb2NhbCBTdG9yYWdlIHN1cHBvcnQuIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVhZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRT
ZXR0aW5nczplbmFibGUtaHRtbDUtZGF0YWJhc2U6CisgICAgKgorICAgICogV2hldGhlciB0byBl
bmFibGUgSFRNTDUgY2xpZW50LXNpZGUgU1FMIGRhdGFiYXNlIHN1cHBvcnQuIENsaWVudC1zaWRl
CisgICAgKiBTUUwgZGF0YWJhc2UgYWxsb3dzIHdlYiBwYWdlcyB0byBzdG9yZSBzdHJ1Y3R1cmVk
IGRhdGEgYW5kIGJlIGFibGUgdG8KKyAgICAqIHVzZSBTUUwgdG8gbWFuaXB1bGF0ZSB0aGF0IGRh
dGEgYXN5bmNocm9ub3VzbHkuCisgICAgKgorICAgICogSFRNTDUgZGF0YWJhc2Ugc3BlY2lmaWNh
dGlvbiBpcyBhdmFpbGFibGUgYXQKKyAgICAqIGh0dHA6Ly93d3cudzMub3JnL1RSL3dlYmRhdGFi
YXNlLy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1Bf
RU5BQkxFX0hUTUw1X0RBVEFCQVNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1odG1sNS1kYXRhYmFzZSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFi
bGUgSFRNTDUgZGF0YWJhc2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IGRhdGFiYXNl
IHN1cHBvcnQuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisg
ICAgLyoqCisgICAgKiBXZWJLaXRTZXR0aW5nczplbmFibGUteHNzLWF1ZGl0b3IKKyAgICAqCisg
ICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgWFNTIGF1ZGl0b3IuIFRoaXMgZmVhdHVyZSBmaWx0
ZXJzIHNvbWUga2luZHMgb2YKKyAgICAqIHJlZmxlY3RpdmUgWFNTIGF0dGFja3Mgb24gdnVsbmVy
YWJsZSB3ZWIgc2l0ZXMuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUteHNzLWF1ZGl0b3IiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
RW5hYmxlIFhTUyBhdWRpdG9yIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSB0aGUgWFNTIGF1ZGl0
b3IuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisKKyAgICAv
KioKKyAgICAqIFdlYktpdFNldHRpbmdzOmVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nCisgICAgKgor
ICAgICogV2hldGhlciB0byBlbmFibGUgdGhlIGZyYW1lIGZsYXR0ZW5pbmcuIFdpdGggdGhpcyBz
ZXR0aW5nIGVhY2ggc3ViZnJhbWUgaXMgZXhwYW5kZWQKKyAgICAqIHRvIGl0cyBjb250ZW50cywg
d2hpY2ggd2lsbCBmbGF0dGVuIGFsbCB0aGUgZnJhbWVzIHRvIGJlY29tZSBvbmUgc2Nyb2xsYWJs
ZSBwYWdlLgorICAgICogT24gdG91Y2ggZGV2aWNlcywgc2Nyb2xsYWJsZSBzdWJmcmFtZXMgb24g
YSBwYWdlIGNhbiByZXN1bHQgaW4gYSBjb25mdXNpbmcgdXNlciBleHBlcmllbmNlLgorICAgICoK
KyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfRlJBTUVf
RkxBVFRFUklORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1f
c3BlY19ib29sZWFuKCJlbmFibGUtZnJhbWUtZmxhdHRlbmluZyIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgZnJhbWUg
ZmxhdHRlbmluZyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFibGUgZnJhbWUgZmxhdHRlbmluZy4iKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisgICAvKioKKyAgICAq
IFdlYktpdFNldHRpbmdzOmVuYWJsZS1wbHVnaW5zOgorICAgICoKKyAgICAqIERldGVybWluZXMg
d2hldGhlciBvciBub3QgcGx1Z2lucyBvbiB0aGUgcGFnZSBhcmUgZW5hYmxlZC4KKyAgICAqCisg
ICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX1BMVUdJTlMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVh
bigiZW5hYmxlLXBsdWdpbnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIHBsdWdpbnMiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBlbWJl
ZGRlZCBwbHVnaW4gb2JqZWN0cy4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZs
YWdzKSk7CisgICAgCisgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmVuYWJsZS1qYXZhOgor
ICAgICoKKyAgICAqIERldGVybWluZXMgd2hldGhlciBvciBub3QgamF2YSBpcyBlbmFibGVkIG9u
IHRoZSBwYWdlLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UFJPUF9FTkFCTEVfSkFWQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtamF2YSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgamF2YSIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
V2hldGhlciBqYXZhIHN1cHBvcnQgc2hvdWxkIGJlIGVuYWJsZWQuIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFdy
aXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRTZXR0aW5n
czpqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxseQorICAgICoKKyAgICAq
IFdoZXRoZXIgamF2YXNjcmlwdCBjYW4gb3BlbiBwb3B1cCB3aW5kb3dzIGF1dG9tYXRpY2FsbHkg
d2l0aG91dCB1c2VyCisgICAgKiBpbnRlcnZlbnRpb24uCisgICAgKgorICAgICovCisgICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9XU19B
VVRPTUFUSUNBTExZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJh
bV9zcGVjX2Jvb2xlYW4oImphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF8oIkphdmFTY3JpcHQgY2FuIG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJX
aGV0aGVyIGphdmFzY3JpcHQgY2FuIG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5LiIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFM
U0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdl
YktpdFNldHRpbmdzOmVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmc6CisgICAgKgorICAgICogRGV0
ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBoeXBlcmxpbmsgYXVkaXRpbmcgaXMgZW5hYmxlZC4KKyAg
ICAqCisgICAgKiBIeXBlcmxpbmsgYXVkaXRpbmcgc3BlY2lmaWNhdGlvbiBpcyBhdmFpbGFibGUg
YXQKKyAgICAqIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdv
cmsvbXVsdGlwYWdlL2xpbmtzLmh0bWwjaHlwZXJsaW5rLWF1ZGl0aW5nLgorICAgICoKKyAgICAq
LworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FV
RElUSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVj
X2Jvb2xlYW4oImVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmciLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIGh5cGVybGlu
ayBhdWRpdGluZyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiV2hldGhlciA8YSBwaW5nPiBzaG91bGQgYmUgYWJsZSB0byBzZW5k
IHBpbmdzLiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAg
ICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRTZXR0aW5nc1By
aXZhdGUpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3NldHRpbmdzX2luaXQoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzKQoreworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IEdf
VFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShzZXR0aW5ncywgV0VCS0lUX1RZUEVfV0VCX1NFVFRJ
TkdTLCBXZWJLaXRTZXR0aW5nc1ByaXZhdGUpOworICAgIHNldHRpbmdzLT5wcml2ID0gcHJpdjsK
KyAgICBuZXcgKHByaXYpIFdlYktpdFNldHRpbmdzUHJpdmF0ZSgpOworfQorCisvKioKKyAqIHdl
YmtpdF9zZXR0aW5nc19uZXc6CisgKgorICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0U2V0dGluZ3Mg
aW5zdGFuY2Ugd2l0aCBkZWZhdWx0IHZhbHVlcy4gSXQgbXVzdAorICogYmUgbWFudWFsbHkgYXR0
YWNoZWQgdG8gYSBXZWJWaWV3LgorICoKKyAqIFJldHVybnM6IGEgbmV3ICNXZWJLaXRTZXR0aW5n
cyBpbnN0YW5jZS4KKyAqKi8KK1dlYktpdFNldHRpbmdzKiB3ZWJraXRfc2V0dGluZ3NfbmV3KCkK
K3sKKyAgICByZXR1cm4gV0VCS0lUX1NFVFRJTkdTKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9X
RUJfU0VUVElOR1MsIE5VTEwpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9qYXZhc2NyaXB0OgorICoKKyAqIEdldCBwcm9wZXJ0eSAjV2ViS2l0U2V0dGluZ3M6ZW5h
YmxlLWphdmFzY3JpcHQuCisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICog
UmV0dXJuczogJVRSVUUgSWYgSmF2YVNjcmlwdCBpcyBlbmFibGVkLgorICogICAgICAgICAgJUZB
TFNFIE90aGVyd2lzZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5h
YmxlX2phdmFzY3JpcHQoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfamF2YXNjcmlwdChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKwor
ICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdEVuYWJsZWQoc2V0dGluZ3MtPnBy
aXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0
X2VuYWJsZV9qYXZhc2NyaXB0OgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICog
QGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAjV2ViS2l0U2V0
dGluZ3M6ZW5hYmxlLWphdmFzY3JpcHQuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KCkKKyAqKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3Nl
dF9lbmFibGVfamF2YXNjcmlwdChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVu
YWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNl
dHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+
cHJpdjsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9
PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YVNj
cmlwdEVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIGdfb2Jq
ZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtamF2YXNjcmlwdCIpOworfQor
CisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlczoKKyAqIEBzZXR0
aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgcHJvcGVydHkgI1dlYktpdFNldHRp
bmdzOmF1dG8tbG9hZC1pbWFnZXMuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgYXV0byBsb2Fk
aW5nIG9mIGltYWdlcyBpcyBlbmFibGVkLgorICogICAgICAgICAgJUZBTFNFIE90aGVyd2lzZS4K
KyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcygp
CisgKiovCitnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMoV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gV0tQcmVm
ZXJlbmNlc0dldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShzZXR0aW5ncy0+cHJpdi0+cHJlZmVy
ZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2Fk
X2ltYWdlczoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBW
YWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgcHJvcGVydHkgI1dlYktpdFNldHRpbmdzOmF1dG8t
bG9hZC1pbWFnZXMuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2F1dG9f
bG9hZF9pbWFnZXMoKQorICoqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9p
bWFnZXMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisg
ICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9v
bCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
KHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJs
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRMb2Fkc0ltYWdlc0F1
dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIGdfb2Jq
ZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJhdXRvLWxvYWQtaW1hZ2VzIik7Cit9CisK
Ky8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9s
b2FkX3ByZWZlcmVuY2U6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICog
R2V0IHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczpsb2Fkcy1pY29ucy1pZ25vcmluZy1pbWFnZS1s
b2FkLXByZWZlcmVuY2UuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgc2l0ZSBpY29uIGNhbiBi
ZSBsb2FkZWQgaXJyZXNwZWN0aXZlIG9mIGltYWdlIGxvYWRpbmcgcHJlZmVyZW5jZS4KKyAqICAg
ICAgICAgICVGQUxTRSBPdGhlcndpc2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZSgpCisgKiov
CitnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdl
X2xvYWRfcHJlZmVyZW5jZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsK
KworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdl
TG9hZGluZ1ByZWZlcmVuY2Uoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30K
KworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdl
X2xvYWRfcHJlZmVyZW5jZToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBl
bmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgcHJvcGVydHkgI1dlYktpdFNldHRp
bmdzOmxvYWRzLWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZS4KKyAqCisgKiBA
c2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2Vf
bG9hZF9wcmVmZXJlbmNlKCkKKyAqICAgICAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0
b19sb2FkX2ltYWdlcygpCisgKiovCit2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfbG9hZHNfaWNv
bnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5n
cywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJp
diA9IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNl
c0dldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNlKHByaXYtPnBy
ZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5n
SW1hZ2VMb2FkaW5nUHJlZmVyZW5jZShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7
CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImxvYWRzLWljb25zLWln
bm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZSIpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0
aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlOgorICogQHNldHRp
bmdzOiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAjV2ViS2l0U2V0dGlu
Z3M6ZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlLgorICoKKyAqIFJldHVybnM6
ICVUUlVFIElmIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIHN1cHBvcnQgaXMg
ZW5hYmxlZC4KKyAqICAgICAgICAgICVGQUxTRSBPdGhlcndpc2UuCisgKgorICogQHNlZV9hbHNv
OiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNo
ZSgpCisgKiovCitnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dl
Yl9hcHBsaWNhdGlvbl9jYWNoZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNF
KTsKKworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2Fj
aGVFbmFibGVkKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgor
ICogd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2Fj
aGU6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUg
dG8gYmUgc2V0CisgKgorICogU2V0IHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFibGUtb2Zm
bGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZSgpCisgKiovCit2
b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2Nh
Y2hlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAg
IFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wg
Y3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9
PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0T2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFi
bGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLW9m
ZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlIik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRp
bmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZToKKyAqIEBzZXR0aW5nczogYSAjV2Vi
S2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgcHJvcGVydHkgI1dlYktpdFNldHRpbmdzOmVuYWJsZS1o
dG1sNS1sb2NhbC1zdG9yYWdlLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEhUTUw1IGxvY2Fs
IHN0b3JhZ2Ugc3VwcG9ydCBpcyBlbmFibGVkLgorICogICAgICAgICAgJUZBTFNFIE90aGVyd2lz
ZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xv
Y2FsX3N0b3JhZ2UoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
aHRtbDVfbG9jYWxfc3RvcmFnZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNF
KTsKKworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0TG9jYWxTdG9yYWdlRW5hYmxlZChzZXR0
aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2U6CisgKiBAc2V0dGluZ3M6IGEgI1dl
YktpdFNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHBy
b3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZS4KKyAqCisg
KiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3Jh
Z2UoKQorICoqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9z
dG9yYWdlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKwor
ICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGJv
b2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldExvY2FsU3RvcmFnZUVuYWJsZWQocHJp
di0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldExvY2FsU3RvcmFnZUVuYWJs
ZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlm
eShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZSIpOworfQor
CisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlOgorICog
QHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAjV2ViS2l0
U2V0dGluZ3M6ZW5hYmxlLWh0bWw1LWRhdGFiYXNlLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElm
IEhUTUw1IGRhdGFiYXNlIHN1cHBvcnQgaXMgZW5hYmxlZC4KKyAqICAgICAgICAgICVGQUxTRSBP
dGhlcndpc2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9o
dG1sNV9kYXRhYmFzZSgpCisgKiovCitnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9odG1sNV9kYXRhYmFzZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsK
KworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0RGF0YWJhc2VzRW5hYmxlZChzZXR0aW5ncy0+
cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19z
ZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5n
cworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0eSAjV2Vi
S2l0U2V0dGluZ3M6ZW5hYmxlLWh0bWw1LWRhdGFiYXNlLgorICoKKyAqIEBzZWVfYWxzbzogd2Vi
a2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UoKQorICoqLwordm9pZCB3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShXZWJLaXRTZXR0aW5ncyogc2V0
dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUq
IHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVy
ZW5jZXNHZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBp
ZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJl
ZmVyZW5jZXNTZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFi
bGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWh0
bWw1LWRhdGFiYXNlIik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
eHNzX2F1ZGl0b3I6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0
IHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFibGUteHNzLWF1ZGl0b3IuCisgKgorICogUmV0
dXJuczogJVRSVUUgSWYgeHNzIGF1ZGl0aW5nIGlzIGVuYWJsZWQuCisgKiAgICAgICAgICAlRkFM
U0UgT3RoZXJ3aXNlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3NldHRpbmdzX3NldF9lbmFi
bGVfeHNzX2F1ZGl0b3IoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfeHNzX2F1ZGl0b3IoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisK
KyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldFhTU0F1ZGl0b3JFbmFibGVkKHNldHRpbmdzLT5w
cml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX3Nl
dF9lbmFibGVfeHNzX2F1ZGl0b3I6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisg
KiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHByb3BlcnR5ICNXZWJLaXRT
ZXR0aW5nczplbmFibGUteHNzLWF1ZGl0b3IuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0
dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcigpCisgKiovCit2b2lkIHdlYmtpdF9zZXR0aW5n
c19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xl
YW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElO
R1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRp
bmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFhTU0F1
ZGl0b3JFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZh
bHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRY
U1NBdWRpdG9yRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS14c3MtYXVkaXRvciIp
OworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5p
bmc6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHByb3BlcnR5
ICNXZWJLaXRTZXR0aW5nczplbmFibGUtZnJhbWUtZmxhdHRlbmluZy4KKyAqLgorICogUmV0dXJu
czogJVRSVUUgSWYgZnJhbWUgZmxhdHRlbmluZyBpcyBlbmFibGVkLgorICogICAgICAgICAgJUZB
TFNFIE90aGVyd2lzZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5h
YmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dl
dF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyks
IEZBTFNFKTsKKworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0RnJhbWVGbGF0dGVuaW5nRW5h
YmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmc6CisgKiBAc2V0dGluZ3M6
IGEgI1dlYktpdFNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICog
U2V0IHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFibGUtZnJhbWUtZmxhdHRlbmluZy4KKyAq
CisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5p
bmcoKQorICoqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVu
aW5nKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAg
IFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wg
Y3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJp
di0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldEZyYW1lRmxhdHRlbmluZ0Vu
YWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtZnJhbWUtZmxhdHRlbmluZyIpOworfQor
CisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnM6CisgKiBAc2V0dGlu
Z3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHByb3BlcnR5ICNXZWJLaXRTZXR0aW5n
czplbmFibGUtcGx1Z2lucy4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBwbHVnaW5zIGFyZSBl
bmFibGVkLgorICogICAgICAgICAgJUZBTFNFIE90aGVyd2lzZS4KKyAqCisgKiBAc2VlX2Fsc286
IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMoKQorICoqLworZ2Jvb2xlYW4gd2Vi
a2l0X3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lucyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3Mp
Cit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0
aW5ncyksIEZBTFNFKTsKKworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0UGx1Z2luc0VuYWJs
ZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRT
ZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCBwcm9wZXJ0
eSAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLXBsdWdpbnMuCisgKgorICogQHNlZV9hbHNvOiB3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3NldHRp
bmdzX3NldF9lbmFibGVfcGx1Z2lucyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFu
IGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdT
KHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5n
cy0+cHJpdjsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRQbHVnaW5z
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9
PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0UGx1Z2lu
c0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIGdfb2JqZWN0
X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtcGx1Z2lucyIpOworfQorCisvKioK
KyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmE6CisgKiBAc2V0dGluZ3M6IGEgI1dl
YktpdFNldHRpbmdzCisgKgorICogR2V0IHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFibGUt
amF2YS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBqYXZhIGlzIGVuYWJsZWQuCisgKiAgICAg
ICAgICAlRkFMU0UgT3RoZXJ3aXNlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3NldHRpbmdz
X3NldF9lbmFibGVfamF2YSgpCisgKiovCitnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9qYXZhKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAg
cmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVy
ZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2ph
dmE6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUg
dG8gYmUgc2V0CisgKgorICogU2V0IHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFibGUtamF2
YS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEoKQor
ICoqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKFdlYktpdFNldHRpbmdz
KiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJp
dmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQ
cmVmZXJlbmNlc0dldEphdmFFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBp
ZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJl
ZmVyZW5jZXNTZXRKYXZhRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7
CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1qYXZhIik7
Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dp
bmRvd3NfYXV0b21hdGljYWxseToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAq
CisgKiBHZXQgcHJvcGVydHkgI1dlYktpdFNldHRpbmdzOmphdmFzY3JpcHQtY2FuLW9wZW4td2lu
ZG93cy1hdXRvbWF0aWNhbGx5LgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIGphdmFzY3JpcHQg
Y2FuIG9wZW4gd2luZG93IGF1dG9tYXRpY2FsbHkuCisgKiAgICAgICAgICAlRkFMU0UgT3RoZXJ3
aXNlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nh
bl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSgpCisgKiovCitnYm9vbGVhbiB3ZWJraXRfc2V0
dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KFdlYktp
dFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgcmV0dXJuIFdLUHJlZmVy
ZW5jZXNHZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHNldHRpbmdzLT5w
cml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX3Nl
dF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseToKKyAqIEBzZXR0aW5n
czogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisg
KiBTZXQgcHJvcGVydHkgI1dlYktpdFNldHRpbmdzOmphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93
cy1hdXRvbWF0aWNhbGx5LgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3NldHRpbmdzX2dldF9q
YXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSgpCisgKiovCit2b2lkIHdl
YmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2Fs
bHkoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAg
V2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9vbCBj
dXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0
b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgaWYgKGN1cnJlbnRWYWx1
ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0SmF2
YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcy5nZXQo
KSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImph
dmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5Iik7Cit9CisKKy8qKgorICog
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nOgorICogQHNldHRp
bmdzOiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAqIEdldCBwcm9wZXJ0eSAjV2ViS2l0U2V0dGlu
Z3M6ZW5hYmxlLWh5cGVybGluay1hdWRpdGluZy4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBo
eXBlciBsaW5rIGF1ZGl0aW5nIGlzIGVuYWJsZWQuCisgKiAgICAgICAgICAlRkFMU0UgT3RoZXJ3
aXNlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJs
aW5rX2F1ZGl0aW5nKCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X2h5cGVybGlua19hdWRpdGluZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNF
KTsKKworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVk
KHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgorICogd2Via2l0
X3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nOgorICogQHNldHRpbmdzOiBh
ICNXZWJLaXRTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNl
dCBwcm9wZXJ0eSAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWh5cGVybGluay1hdWRpdGluZy4KKyAq
CisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRp
dGluZygpCisgKiovCit2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19h
dWRpdGluZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisK
KyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBi
b29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJs
ZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5h
YmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldEh5cGVybGlua0F1
ZGl0aW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19v
YmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1oeXBlcmxpbmstYXVkaXRp
bmciKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRT
ZXR0aW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNWIwZjUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRT
ZXR0aW5ncy5oCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDExIE1v
dG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09N
UElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVk
ZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0U2V0dGluZ3NfaAorI2RlZmlu
ZSBXZWJLaXRTZXR0aW5nc19oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VC
S0lUX1RZUEVfV0VCX1NFVFRJTkdTICAgICAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfdHlw
ZSgpKQorI2RlZmluZSBXRUJLSVRfU0VUVElOR1Mob2JqKSAgICAgICAgICAgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2Vi
S2l0U2V0dGluZ3MpKQorI2RlZmluZSBXRUJLSVRfU0VUVElOR1NfQ0xBU1Moa2xhc3MpICAgICAg
ICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9TRVRU
SU5HUywgV2ViS2l0U2V0dGluZ3NDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfU0VUVElO
R1Mob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lU
X1RZUEVfV0VCX1NFVFRJTkdTKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9TRVRUSU5HU19DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9X
RUJfU0VUVElOR1MpKQorI2RlZmluZSBXRUJLSVRfU0VUVElOR1NfR0VUX0NMQVNTKG9iaikgICAg
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9TRVRU
SU5HUywgV2ViS2l0U2V0dGluZ3NDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRTZXR0
aW5ncyBXZWJLaXRTZXR0aW5nczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRTZXR0aW5nc0NsYXNz
IFdlYktpdFNldHRpbmdzQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0U2V0dGluZ3NQcml2
YXRlIFdlYktpdFNldHRpbmdzUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRTZXR0aW5ncyB7Cisg
ICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUg
KnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFNldHRpbmdzQ2xhc3MgeworICAgIEdPYmplY3RD
bGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICAvKiBQYWRkaW5nIGZvciBmdXR1cmUgZXhwYW5zaW9u
ICovCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93
ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAo
dm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9pZCk7Cit9OworCitXRUJL
SVRfQVBJIEdUeXBlCit3ZWJraXRfc2V0dGluZ3NfZ2V0X3R5cGUodm9pZCk7CisKK1dFQktJVF9B
UEkgV2ViS2l0U2V0dGluZ3MgKgord2Via2l0X3NldHRpbmdzX25ldyh2b2lkKTsKKworV0VCS0lU
X0FQSSBnYm9vbGVhbgord2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dFQktJ
VF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdCAgICAgICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9v
bGVhbiBlbmFibGVkKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3NldHRpbmdzX2dl
dF9hdXRvX2xvYWRfaW1hZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRp
bmdzKiBzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9h
dXRvX2xvYWRfaW1hZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdz
KiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0VCS0lUX0FQSSBnYm9v
bGVhbgord2Via2l0X3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2Fk
X3ByZWZlcmVuY2UgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9p
ZAord2Via2l0X3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3By
ZWZlcmVuY2UgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFi
bGVkKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
b2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUgICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0
aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfb2Zm
bGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUgICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5n
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Vi
a2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSAgICAgICAgICAgICAg
ICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0
X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSAgICAgICAgICAgICAgICAg
KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKwor
V0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0
YWJhc2UgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyk7CisK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJh
c2UgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnYm9vbGVhbiBlbmFibGVkKTsKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX3hzc19hdWRpdG9yICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRT
ZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19z
ZXRfZW5hYmxlX3hzc19hdWRpdG9yICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0
aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkg
Z2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcgICAgICAg
ICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4g
ZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX3BsdWdpbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxl
X3BsdWdpbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0
dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4K
K3dlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7
CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9j
YW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3Mp
OworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5f
b3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9z
ZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyAgICAgICAgICAgICAgICAgIChX
ZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyAgICAgICAgICAgICAgICAgIChXZWJL
aXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK0dfRU5E
X0RFQ0xTCisKKyNlbmRpZiAvKiB3ZWJraXR3ZWJzZXR0aW5nc19oICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2Via2l0c2V0dGluZ3Mu
YyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJraXRzZXR0
aW5ncy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMzY0YWFkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVz
dHdlYmtpdHNldHRpbmdzLmMKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUg
PHdlYmtpdDIvd2Via2l0Mi5oPgorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0U2V0dGluZ3Modm9p
ZCkKK3sKKyAgICBXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfc2V0dGluZ3NfbmV3
KCk7CisKKyAgICAvLyBTY3JpcHRzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2Vy
dCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRpbmdzKSk7CisgICAg
d2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncywgRkFMU0UpOwor
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRp
bmdzKSk7CisKKyAgICAvLyBCeSBkZWZhdWx0IGF1dG8tbG9hZC1pbWFnZSBpcyB0cnVlLgorICAg
IGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncykp
OworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncywgRkFM
U0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMo
c2V0dGluZ3MpKTsKKworICAgIC8vIGxvYWQtaWNvbi1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWYg
aXMgZmFsc2UgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9s
b2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2Uoc2V0dGluZ3MpKTsKKyAg
ICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJl
ZmVyZW5jZShzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dl
dF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2Uoc2V0dGluZ3MpKTsK
KyAgICAKKyAgICAvLyBPZmZsaW5lIGFwcGxpY2F0aW9uIGNhY2hlIGlzIHRydWUgYnkgZGVmYXVs
dC4KKyAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9h
cHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5h
YmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzLCBGQUxTRSk7CisgICAg
Z19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0
aW9uX2NhY2hlKHNldHRpbmdzKSk7CisKKyAgICAvLyBMb2NhbCBzdG9yYWdlIGlzIGVuYWJsZSBi
eSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1
X2xvY2FsX3N0b3JhZ2Uoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdl
YmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0dGluZ3MpKTsK
KworICAgIC8vIEhUTUw1IGRhdGFiYXNlIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fz
c2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncykp
OworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdz
LCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1
X2RhdGFiYXNlKHNldHRpbmdzKSk7CisKKyAgICAvLyBYU1MgQXVkaXRvciBpcyBlbmFibGVkIGJ5
IGRlZmF1bHQuCisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfeHNzX2F1
ZGl0b3Ioc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVk
aXRvcihzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncykpOworCisgICAgLy8gRnJhbWUgZmxhdHRlcmlu
ZyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3NldHRp
bmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncywgVFJVRSk7CisgICAgZ19h
c3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5n
cykpOworCisgICAgLy8gUGx1Z2lucyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNz
ZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MpKTsKKyAgICB3
ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zKHNldHRpbmdzLCBGQUxTRSk7CisgICAg
Z19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MpKTsK
KworICAgIC8vIEphdmEgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtp
dF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9qYXZhKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtp
dF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsKKworICAgIC8vIEJ5IGRlZmF1
bHQsIEphdmFTY3JpcHQgY2FuIG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IGlzIGRpc2FibGVk
LgorICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5f
d2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7CisgICAgd2Via2l0X3NldHRpbmdzX3Nl
dF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncywgVFJV
RSk7CisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVu
X3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncykpOworCisgICAgLy8gQnkgZGVmYXVsdCBo
eXBlciBsaW5rIGF1ZGl0aW5nIGlzIGRpc2FibGVkLgorICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MpKTsKKyAgICB3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MsIFRSVUUp
OworICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRp
dGluZyhzZXR0aW5ncykpOworCisgICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1Qoc2V0dGluZ3Mp
KTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIGdfdGhyZWFk
X2luaXQoTlVMTCk7CisgICAgZ3RrX3Rlc3RfaW5pdCgmYXJnYywgJmFyZ3YsIE5VTEwpOworCisg
ICAgZ190ZXN0X2J1Z19iYXNlKCJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKKyAgICBnX3Rl
c3RfYWRkX2Z1bmMoIi93ZWJraXQyL3dlYmtpdHNldHRpbmdzL3Rlc3R3ZWJraXRzZXR0aW5ncyIs
IHRlc3RXZWJLaXRTZXR0aW5ncyk7CisKKyAgICByZXR1cm4gZ190ZXN0X3J1bigpOworfQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKaW5kZXggMzFmMTEwYS4u
NTQwYzZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAq
IFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsNiArMjYsNyBAQAog
I2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0RW51bVR5cGVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRFcnJvci5oPgorI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0U2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdl
YkNvbnRleHQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkxvYWRlckNsaWVudC5oPgog
I2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlld0Jhc2UuaD4KLS0gCjEuNy40LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110637</attachid>
            <date>2011-10-11 22:18:08 -0700</date>
            <delta_ts>2011-10-12 00:03:38 -0700</delta_ts>
            <desc>WebKitSettings patch</desc>
            <filename>0001-WebKitSettings-API-s-added.patch</filename>
            <type>text/plain</type>
            <size>55191</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSA4M2M0ZmJiNDlhNGIxYTA4ZTY1NTQ4ZWY3NTVhMGIwZDRmZjMxZWZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogVHVlLCAxMSBPY3QgMjAxMSAyMDoxMToxOCArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIFdl
YktpdFNldHRpbmdzIEFQSSdzIGFkZGVkCgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1NSArKwogU291cmNlL1dlYktpdDIvR05VbWFr
ZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgIDExICstCiAuLi4vV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAgICB8ICA4NzggKysrKysrKysrKysrKysr
KysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmgg
IHwgIDE2MSArKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYmtpdHNldHRp
bmdzLmMgICB8ICAxMTIgKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmggICAgICAgICB8ICAgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCAxMjE4IGluc2VydGlvbnMo
KyksIDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJr
aXRzZXR0aW5ncy5jCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGYzYmZmYmMuLjcwODUyOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1OCBAQAorMjAxMS0xMC0xMSAgTmF5YW4gS3VtYXIgSyAgPG5heWFua2tAbW90
b3JvbGEuY29tPgorCisgICAgICAgIFtHVEtdW1dFQktJVDJdIEFkZCBXZWJLaXRTZXR0aW5ncyBH
VEsrIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY4MzcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViS2l0U2V0dGluZ3MgR1RLKyBvYmplY3QgaXMgY3JlYXRlZCBhbmQgZmlyc3Qgc2V0IG9mCisg
ICAgICAgIEFQSSdzIGFyZSB3cml0dGVuIHRvIGdldCBvciBzZXQgdGhlIHByb3BlcnRpZXMgb2Yg
V2ViS2l0U2V0dGluZ3MuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkZWQgbmV3IGZp
bGVzIGZvciBjb21waWxhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRT
ZXR0aW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFNldHRpbmdzUHJpdmF0ZTo6X1dl
YktpdFNldHRpbmdzUHJpdmF0ZSk6IENvbnN0cnVjdG9yLgorICAgICAgICAod2ViS2l0U2V0dGlu
Z3NTZXRQcm9wZXJ0eSk6IFNldCBwcm9wZXJ0eSBmdW5jdGlvbi4KKyAgICAgICAgKHdlYktpdFNl
dHRpbmdzR2V0UHJvcGVydHkpOiBHZXQgcHJvcGVydHkgZnVuY3Rpb24uCisgICAgICAgICh3ZWJL
aXRTZXR0aW5nc0ZpbmFsaXplKTogQ2xhc3MgZmluYWxpemUgZnVuY3Rpb24uCisgICAgICAgICh3
ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdCk6IENsYXNzIGluaXQgZnVuY3Rpb24uCisgICAgICAg
ICh3ZWJraXRfc2V0dGluZ3NfaW5pdCk6IEluc3RhbmNlIGluaXQgZnVuY3Rpb24uCisgICAgICAg
ICh3ZWJraXRfc2V0dGluZ3NfbmV3KTogQ3JlYXRlcyBXZWJLaXRTZXR0aW5ncyBHT2JqZWN0Lgor
ICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdCk6IEZ1bmN0aW9u
IHRvIGdldCAnZW5hYmxlLWphdmFzY3JpcHQnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3Nl
dHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdCk6IEZ1bmN0aW9uIHRvIHNldCAnZW5hYmxlLWph
dmFzY3JpcHQnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9hdXRvX2xv
YWRfaW1hZ2VzKTogR2V0ICdhdXRvLWxvYWQtaW1hZ2VzJyBwcm9wZXJ0eS4KKyAgICAgICAgKHdl
YmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyk6IFNldCAnYXV0by1sb2FkLWltYWdl
cycgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2ln
bm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZSk6IEZ1bmN0aW9uIHRvIGdldAorICAgICAgICAn
bG9hZHMtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmZXJlbmNlJyBwcm9wZXJ0eS4KKyAg
ICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9h
ZF9wcmVmZXJlbmNlKTogRnVuY3Rpb24gdG8gc2V0CisgICAgICAgICdsb2Fkcy1pY29ucy1pZ25v
cmluZy1pbWFnZS1sb2FkLXByZWZlcmVuY2UnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUpOiBGdW5jdGlv
biB0byBnZXQKKyAgICAgICAgJ2VuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZScg
cHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dl
Yl9hcHBsaWNhdGlvbl9jYWNoZSk6IEZ1bmN0aW9uIHRvIHNldAorICAgICAgICAnZW5hYmxlLW9m
ZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlJyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdF9z
ZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UpOiBHZXQgcHJvcGVydHkgJ2Vu
YWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRf
ZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UpOiBTZXQgcHJvcGVydHkgJ2VuYWJsZS1odG1sNS1s
b2NhbC1zdG9yYWdlJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1
X2RhdGFiYXNlKTogR2V0IHByb3BlcnR5ICdlbmFibGUtaHRtbDUtZGF0YWJhc2UnLgorICAgICAg
ICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UpOiBTZXQgcHJvcGVy
dHkgJ2VuYWJsZS1odG1sNS1kYXRhYmFzZScuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV94c3NfYXVkaXRvcik6IEdldCBwcm9wZXJ0eSAnZW5hYmxlLXhzcy1lZGl0b3InLgor
ICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfeHNzX2F1ZGl0b3IpOiBTZXQgcHJv
cGVydHkgJ2VuYWJsZS14c3MtZWRpdG9yJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcpOiBHZXQgcHJvcGVydHkgJ2VuYWJsZS1mcmFtZS1mbGF0
dGVuaW5nJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0
ZW5pbmcpOiBTZXQgcHJvcGVydHkgJ2VuYWJsZS1mcmFtZS1mbGF0dGVuaW5nJy4KKyAgICAgICAg
KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMpOiBHZXQgcHJvcGVydHkgJ2VuYWJs
ZS1wbHVnaW5zJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMp
OiBTZXQgcHJvcGVydHkgJ2VuYWJsZS1wbHVnaW5zJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX2phdmEpOiBGdW5jdGlvbiB0byBnZXQgJ2VuYWJsZS1qYXZhJyBwcm9wZXJ0
eS4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEpOiBGdW5jdGlvbiB0
byBzZXQgJ2VuYWJsZS1qYXZhJyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19n
ZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkpOiBHZXQgdGhlIHBy
b3BlcnR5CisgICAgICAgICdqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxs
eScuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2lu
ZG93c19hdXRvbWF0aWNhbGx5KTogU2V0IHRoZSBwcm9wZXJ0eQorICAgICAgICAnamF2YXNjcmlw
dC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHknLgorICAgICAgICAod2Via2l0X3NldHRp
bmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKTogR2V0ICdlbmFibGUtaHlwZXJsaW5r
LWF1ZGl0aW5nJyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxl
X2h5cGVybGlua19hdWRpdGluZyk6IFNldCAnZW5hYmxlLWh5cGVybGluay1hdWRpdGluZycgcHJv
cGVydHkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaDogUHVi
bGljIEFQSSdzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJraXRz
ZXR0aW5ncy5jOiBVbml0IHRlc3RzIGZvciBuZXdseSBjcmVhdGVkIEFQSSdzLgorICAgICAgICAo
dGVzdFdlYktpdFNldHRpbmdzKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdDIuaDogQWRkIHdlYmtpdHNzZXR0aW5ncyB1bml0IHRlc3QuCisKIDIw
MTEtMTAtMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
c2UgYSBDYWNoZWRJbWFnZUNsaWVudCBpbnN0ZWFkIG9mIENhY2hlZFJlc291cmNlQ2xpZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGUzZjk4NDYuLjg5NzllZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
LmFtCkBAIC03Myw2ICs3Myw3IEBAIHdlYmtpdDJndGtfaGVhZGVycyA9IFwKIAkkKFdlYktpdDIp
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkxvYWRlckNsaWVudC5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFNldHRpbmdzLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC00
NzYsNiArNDc3LDggQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9O
QF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcCBcCisJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwIFwKKwlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwKQEAgLTEwODYsNyAr
MTA4OSw4IEBAIERJU1RDTEVBTkZJTEVTICs9IFwKIFRFU1RfUFJPR1MgKz0gXAogCVByb2dyYW1z
L3VuaXR0ZXN0cy93ZWJraXQyL3Rlc3R3ZWJjb250ZXh0IFwKIAlQcm9ncmFtcy91bml0dGVzdHMv
d2Via2l0Mi90ZXN0d2VidmlldyBcCi0JUHJvZ3JhbXMvdW5pdHRlc3RzL3dlYmtpdDIvdGVzdGxv
YWRpbmcKKwlQcm9ncmFtcy91bml0dGVzdHMvd2Via2l0Mi90ZXN0bG9hZGluZyBcCisJUHJvZ3Jh
bXMvdW5pdHRlc3RzL3dlYmtpdDIvdGVzdHdlYmtpdHNldHRpbmdzCiAKIG5vaW5zdF9QUk9HUkFN
UyArPSAkKFRFU1RfUFJPR1MpCiB3ZWJraXQyX3Rlc3RzX2NmbGFncyA9IFwKQEAgLTExMjksNiAr
MTEzMywxMSBAQCBQcm9ncmFtc191bml0dGVzdHNfd2Via2l0Ml90ZXN0bG9hZGluZ19DRkxBR1Mg
PSAkKHdlYmtpdDJfdGVzdHNfY2ZsYWdzKQogUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVz
dGxvYWRpbmdfTERBREQgPSAkKHdlYmtpdDJfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc191bml0dGVz
dHNfd2Via2l0Ml90ZXN0bG9hZGluZ19MREZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxhZ3Mp
CiAKK1Byb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJraXRzZXR0aW5nc19TT1VSQ0VT
ID0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYmtpdHNldHRp
bmdzLmMKK1Byb2dyYW1zX3VuaXR0ZXN0c193ZWJraXQyX3Rlc3R3ZWJraXRzZXR0aW5nc19DRkxB
R1MgPSAkKHdlYmtpdDJfdGVzdHNfY2ZsYWdzKQorUHJvZ3JhbXNfdW5pdHRlc3RzX3dlYmtpdDJf
dGVzdHdlYmtpdHNldHRpbmdzX0xEQUREID0gJCh3ZWJraXQyX3Rlc3RzX2xkYWRkKQorUHJvZ3Jh
bXNfdW5pdHRlc3RzX3dlYmtpdDJfdGVzdHdlYmtpdHNldHRpbmdzX0xERkxBR1MgPSAkKHdlYmtp
dDJfdGVzdHNfbGRmbGFncykKKwogIyBXZWJLaXRXZWJQcm9jZXNzCiBsaWJleGVjX1BST0dSQU1T
ICs9IFwKIAlQcm9ncmFtcy9XZWJLaXRXZWJQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZWEwNjk3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcApAQCAtMCwwICsxLDg3OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCAKKyAqIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1l
dDoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICog
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IgCisgKiBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTW90b3JvbGEg
TW9iaWxpdHksIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSAKKyAq
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgCisgKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUyAKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCAKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIAorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViS2l0U2V0dGluZ3MuaCIKKworI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRl
IDxXZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1R5cGUuaD4KKyNpbmNsdWRlIDxnbGliL2dpMThuLWxp
Yi5oPgorCitzdHJ1Y3QgX1dlYktpdFNldHRpbmdzUHJpdmF0ZSB7CisgICAgV0tSZXRhaW5QdHI8
V0tQcmVmZXJlbmNlc1JlZj4gcHJlZmVyZW5jZXM7CisKKyAgICBfV2ViS2l0U2V0dGluZ3NQcml2
YXRlKCkKKyAgICB7CisgICAgICAgIHByZWZlcmVuY2VzID0gYWRvcHRXSyhXS1ByZWZlcmVuY2Vz
Q3JlYXRlKCkpOworICAgIH0KK307CisKKy8qKgorICogU0VDVElPTjp3ZWJraXR3ZWJzZXR0aW5n
cworICogQHNob3J0X2Rlc2NyaXB0aW9uOiBDb250cm9sIHRoZSBiZWhhdmlvdXIgb2YgYSAjV2Vi
S2l0V2ViVmlldworICoKKyAqICNXZWJLaXRTZXR0aW5ncyBjYW4gYmUgYXBwbGllZCB0byBhICNX
ZWJLaXRXZWJWaWV3IHRvIGNvbnRyb2wgdGV4dCBlbmNvZGluZywgCisgKiBjb2xvciwgZm9udCBz
aXplcywgcHJpbnRpbmcgbW9kZSwgc2NyaXB0IHN1cHBvcnQsIGxvYWRpbmcgb2YgaW1hZ2VzIGFu
ZCB2YXJpb3VzIG90aGVyIHRoaW5ncy4gCisgKiBBZnRlciBjcmVhdGlvbiwgYSAjV2ViS2l0U2V0
dGluZ3Mgb2JqZWN0IGNvbnRhaW5zIGRlZmF1bHQgc2V0dGluZ3MuIAorICoKKyAqIDxpbmZvcm1h
bGV4YW1wbGU+PHByb2dyYW1saXN0aW5nPgorICogLzwhLS0gLS0+KiBDcmVhdGUgYSBuZXcgI1dl
YktpdFNldHRpbmdzIGFuZCBkaXNhYmxlIEphdmFTY3JpcHQuICo8IS0tIC0tPi8KKyAqIFdlYktp
dFNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF9zZXR0aW5nc19uZXcgKCk7CisgKiBnX29iamVj
dF9zZXQgKEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1qYXZhLXNjcmlwdCIsIEZBTFNFLCBO
VUxMKTsKKyAqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzIChXRUJLSVRfV0VCX1ZJ
RVcgKG15X3dlYnZpZXcpLCBzZXR0aW5ncyk7CisgKiA8L3Byb2dyYW1saXN0aW5nPjwvaW5mb3Jt
YWxleGFtcGxlPgorICovCisKKworR19ERUZJTkVfVFlQRShXZWJLaXRTZXR0aW5ncywgd2Via2l0
X3NldHRpbmdzLCBHX1RZUEVfT0JKRUNUKQorCitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQ
Uk9QX0VOQUJMRV9KQVZBU0NSSVBULAorICAgIFBST1BfQVVUT19MT0FEX0lNQUdFUywKKyAgICBQ
Uk9QX0xPQURTX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRSwKKyAgICBQUk9Q
X0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRSwKKyAgICBQUk9QX0VOQUJMRV9I
VE1MNV9MT0NBTF9TVE9SQUdFLAorICAgIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNFLAorICAg
IFBST1BfRU5BQkxFX1hTU19BVURJVE9SLAorICAgIFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRURVJJ
TkcsCisgICAgUFJPUF9FTkFCTEVfUExVR0lOUywKKyAgICBQUk9QX0VOQUJMRV9KQVZBLAorICAg
IFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFksCisgICAgUFJP
UF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HLAorfTsKKworc3RhdGljIHZvaWQgd2ViS2l0U2V0
dGluZ3NTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1Zh
bHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktpdFNldHRpbmdz
KiBzZXR0aW5ncyA9IFdFQktJVF9TRVRUSU5HUyhvYmplY3QpOworIAorICAgIHN3aXRjaCAocHJv
cElkKSB7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZBU0NSSVBUOgorICAgICAgICB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29s
ZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9BVVRPX0xPQURfSU1B
R0VTOgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGlu
Z3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0xPQURTX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRToKKyAgICAg
ICAgd2Via2l0X3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3By
ZWZlcmVuY2Uoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNI
RToKKyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGlj
YXRpb25fY2FjaGUoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFOgorICAg
ICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRp
bmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0U6CisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19z
ZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZh
bHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1I6
CisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdz
LCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRFUklORzoKKyAgICAgICAgd2Via2l0X3NldHRpbmdzX3Nl
dF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2
YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1BMVUdJTlM6Cisg
ICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MsIGdfdmFs
dWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VO
QUJMRV9KQVZBOgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKHNldHRp
bmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9KQVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWToKKyAgICAg
ICAgd2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21h
dGljYWxseShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hZUEVSTElOS19BVURJVElORzoKKyAgICAgICAg
d2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRpbmdzLCBn
X3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJ
ZCwgcGFyYW1TcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3
ZWJLaXRTZXR0aW5nc0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0U2V0dGlu
Z3MqIHNldHRpbmdzID0gV0VCS0lUX1NFVFRJTkdTKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHBy
b3BJZCkgeworICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQVNDUklQVDoKKyAgICAgICAgZ192YWx1
ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlw
dChzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVVUT19MT0FEX0lN
QUdFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdz
X2dldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9MT0FEU19JQ09OU19JR05PUklOR19JTUFHRV9MT0FEX1BSRUZFUkVOQ0U6CisgICAg
ICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfbG9hZHNf
aWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKHNldHRpbmdzKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05fQ0FD
SEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFHRToKKyAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29s
ZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0
aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1hTU19BVURJVE9S
OgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRURVJJTkc6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xl
YW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0
dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9QTFVHSU5TOgor
ICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9wbHVnaW5zKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9F
TkFCTEVfSkFWQToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfamF2YShzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFk6CisgICAg
ICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfamF2YXNj
cmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3MpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkc6CisgICAgICAg
IGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5
cGVybGlua19hdWRpdGluZyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
SWQsIHBhcmFtU3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQg
d2ViS2l0U2V0dGluZ3NGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV0VCS0lUX1NF
VFRJTkdTKG9iamVjdCktPnByaXYtPn5XZWJLaXRTZXR0aW5nc1ByaXZhdGUoKTsKKyAgICBHX09C
SkVDVF9DTEFTUyh3ZWJraXRfc2V0dGluZ3NfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0
KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3NldHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0U2V0
dGluZ3NDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBH
X09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3
ZWJLaXRTZXR0aW5nc1NldFByb3BlcnR5OworICAgIGdPYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5
ID0gd2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eTsKKyAgICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXpl
ID0gd2ViS2l0U2V0dGluZ3NGaW5hbGl6ZTsKKworICAgIEdQYXJhbUZsYWdzIHJlYWRXcml0ZUNv
bnN0cnVjdFBhcmFtRmxhZ3MgPSBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFN
X1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKTsKKworICAgIC8qKgorICAgICogV2ViS2l0
U2V0dGluZ3M6ZW5hYmxlLWphdmFzY3JpcHQKKyAgICAqCisgICAgKiBEZXRlcm1pbmVzIHdoZXRo
ZXIgb3Igbm90IEphdmFTY3JpcHQgZXhlY3V0ZXMgd2l0aGluIGEgcGFnZS4KKyAgICAqCisgICAg
Ki8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0pBVkFTQ1JJUFQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVh
bigiZW5hYmxlLWphdmFzY3JpcHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEphdmFTY3JpcHQiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJs
ZSBKYXZhU2NyaXB0LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsK
KyAgICAKKyAgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmF1dG8tbG9hZC1pbWFnZXMKKyAg
ICAqCisgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW1hZ2VzIHNob3VsZCBiZSBhdXRvbWF0aWNh
bGx5IGxvYWRlZCBvciBub3QuCisgICAgKiBPbiBkZXZpY2VzIHdoZXJlIG5ldHdvcmsgYmFuZHdp
ZHRoIGlzIG9mIGNvbmNlcm4sIGl0IG1pZ2h0IGJlCisgICAgKiB1c2VmdWwgdG8gdHVybiB0aGlz
IHByb3BlcnR5IG9mZi4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBST1BfQVVUT19MT0FEX0lNQUdFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJhdXRvLWxvYWQtaW1hZ2VzIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkF1dG8g
bG9hZCBpbWFnZXMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF8oIkxvYWQgaW1hZ2VzIGF1dG9tYXRpY2FsbHkuIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVhZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworICAgIAorICAgIC8qKgorICAgICogV2Vi
S2l0U2V0dGluZ3M6bG9hZHMtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmZXJlbmNlCisg
ICAgKgorICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgc2l0ZSBjYW4gbG9hZCBmYXZpY29ucyBp
cnJlc3BlY3RpdmUKKyAgICAqIG9mIHRoZSB2YWx1ZSBvZiAjV2ViU2V0dGluZ3M6YXV0by1sb2Fk
LWltYWdlcy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfTE9BRFNfSUNPTlNfSUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGRVJFTkNFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImxvYWRzLWlj
b25zLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJMb2FkcyBzaXRlIGljb25z
IGlnbm9yaW5nIGltYWdlIGxvYWQgcHJlZmVyZW5jZSIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBsb2FkIHNp
dGUgaWNvbiBpZ25vcmluZyBpbWFnZSBsb2FkIHByZWZlcmVuY2UuIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRX
cml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0U2V0dGlu
Z3M6ZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlCisgICAgKgorICAgICogV2hl
dGhlciB0byBlbmFibGUgSFRNTDUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUgc3VwcG9y
dC4gT2ZmbGluZQorICAgICogd2ViIGFwcGxpY2F0aW9uIGNhY2hlIGVuc3VyZXMgd2ViIGFwcGxp
Y2F0aW9ucyBhcmUgYXZhaWxhYmxlIGV2ZW4gd2hlbgorICAgICogdGhlIHVzZXIgaXMgbm90IGNv
bm5lY3RlZCB0byB0aGUgbmV0d29yay4KKyAgICAqIAorICAgICogSFRNTDUgb2ZmbGluZSB3ZWIg
YXBwbGljYXRpb24gc3BlY2lmaWNhdGlvbiBpcyBhdmFpbGFibGUgYXQKKyAgICAqIGh0dHA6Ly9k
ZXYudzMub3JnL2h0bWw1L3NwZWMvb2ZmbGluZS5odG1sLgorICAgICoKKyAgICAqLworICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJ
T05fQ0FDSEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3Nw
ZWNfYm9vbGVhbigiZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVu
YWJsZSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlvbiBjYWNoZSIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFi
bGUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUuIiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFdyaXRlQ29u
c3RydWN0UGFyYW1GbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRTZXR0aW5nczplbmFi
bGUtaHRtbDUtbG9jYWwtc3RvcmFnZToKKyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBI
VE1MNSBsb2NhbCBzdG9yYWdlIHN1cHBvcnQuIExvY2FsIHN0b3JhZ2UgcHJvdmlkZXMKKyAgICAq
IHNpbXBsZSBzeW5jaHJvbm91cyBzdG9yYWdlIGFjY2Vzcy4KKyAgICAqCisgICAgKiBIVE1MNSBs
b2NhbCBzdG9yYWdlIHNwZWNpZmljYXRpb24gaXMgYXZhaWxhYmxlIGF0CisgICAgKiBodHRwOi8v
ZGV2LnczLm9yZy9UUi93ZWJzdG9yYWdlLy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxl
LWh0bWw1LWxvY2FsLXN0b3JhZ2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEhUTUw1IGxvY2FsIHN0b3JhZ2UiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF8oIldoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IExvY2FsIFN0b3JhZ2Ugc3VwcG9ydC4iKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdl
YktpdFNldHRpbmdzOmVuYWJsZS1odG1sNS1kYXRhYmFzZToKKyAgICAqCisgICAgKiBXaGV0aGVy
IHRvIGVuYWJsZSBIVE1MNSBjbGllbnQtc2lkZSBTUUwgZGF0YWJhc2Ugc3VwcG9ydC4gQ2xpZW50
LXNpZGUKKyAgICAqIFNRTCBkYXRhYmFzZSBhbGxvd3Mgd2ViIHBhZ2VzIHRvIHN0b3JlIHN0cnVj
dHVyZWQgZGF0YSBhbmQgYmUgYWJsZSB0bworICAgICogdXNlIFNRTCB0byBtYW5pcHVsYXRlIHRo
YXQgZGF0YSBhc3luY2hyb25vdXNseS4KKyAgICAqCisgICAgKiBIVE1MNSBkYXRhYmFzZSBzcGVj
aWZpY2F0aW9uIGlzIGF2YWlsYWJsZSBhdAorICAgICogaHR0cDovL3d3dy53My5vcmcvVFIvd2Vi
ZGF0YWJhc2UvLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh0bWw1LWRhdGFiYXNlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8o
IkVuYWJsZSBIVE1MNSBkYXRhYmFzZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFibGUgSFRNTDUgZGF0
YWJhc2Ugc3VwcG9ydC4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7
CisKKyAgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmVuYWJsZS14c3MtYXVkaXRvcgorICAg
ICoKKyAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBYU1MgYXVkaXRvci4gVGhpcyBmZWF0dXJl
IGZpbHRlcnMgc29tZSBraW5kcyBvZgorICAgICogcmVmbGVjdGl2ZSBYU1MgYXR0YWNrcyBvbiB2
dWxuZXJhYmxlIHdlYiBzaXRlcy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBST1BfRU5BQkxFX1hTU19BVURJVE9SLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS14c3MtYXVkaXRvciIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfKCJFbmFibGUgWFNTIGF1ZGl0b3IiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIHRoZSBYU1Mg
YXVkaXRvci4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKwor
ICAgIC8qKgorICAgICogV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmcKKyAg
ICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgZnJhbWUgZmxhdHRlbmluZy4gV2l0aCB0
aGlzIHNldHRpbmcgZWFjaCBzdWJmcmFtZSBpcyBleHBhbmRlZAorICAgICogdG8gaXRzIGNvbnRl
bnRzLCB3aGljaCB3aWxsIGZsYXR0ZW4gYWxsIHRoZSBmcmFtZXMgdG8gYmVjb21lIG9uZSBzY3Jv
bGxhYmxlIHBhZ2UuCisgICAgKiBPbiB0b3VjaCBkZXZpY2VzLCBzY3JvbGxhYmxlIHN1YmZyYW1l
cyBvbiBhIHBhZ2UgY2FuIHJlc3VsdCBpbiBhIGNvbmZ1c2luZyB1c2VyIGV4cGVyaWVuY2UuCisg
ICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0
Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9G
UkFNRV9GTEFUVEVSSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19w
YXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBm
cmFtZSBmbGF0dGVuaW5nIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBmcmFtZSBmbGF0dGVuaW5n
LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAgIC8qKgor
ICAgICogV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLXBsdWdpbnM6CisgICAgKgorICAgICogRGV0ZXJt
aW5lcyB3aGV0aGVyIG9yIG5vdCBwbHVnaW5zIG9uIHRoZSBwYWdlIGFyZSBlbmFibGVkLgorICAg
ICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENs
YXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfUExV
R0lOUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19i
b29sZWFuKCJlbmFibGUtcGx1Z2lucyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgcGx1Z2lucyIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxl
IGVtYmVkZGVkIHBsdWdpbiBvYmplY3RzLiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBh
cmFtRmxhZ3MpKTsKKyAgICAKKyAgIC8qKgorICAgICogV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWph
dmE6CisgICAgKgorICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBKYXZhIGlzIGVuYWJs
ZWQgb24gdGhlIHBhZ2UuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUk9QX0VOQUJMRV9KQVZBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1qYXZhIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBKYXZhIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfKCJXaGV0aGVyIEphdmEgc3VwcG9ydCBzaG91bGQgYmUgZW5hYmxlZC4iKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFNl
dHRpbmdzOmphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5CisgICAgKgor
ICAgICogV2hldGhlciBKYXZhU2NyaXB0IGNhbiBvcGVuIHBvcHVwIHdpbmRvd3MgYXV0b21hdGlj
YWxseSB3aXRob3V0IHVzZXIKKyAgICAqIGludGVydmVudGlvbi4KKyAgICAqCisgICAgKi8KKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5E
T1dTX0FVVE9NQVRJQ0FMTFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfYm9vbGVhbigiamF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRp
Y2FsbHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXygiSmF2YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9tYXRpY2FsbHkiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF8oIldoZXRoZXIgSmF2YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9tYXRpY2FsbHkuIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKworICAgIC8qKgorICAg
ICogV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWh5cGVybGluay1hdWRpdGluZzoKKyAgICAqCisgICAg
KiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGh5cGVybGluayBhdWRpdGluZyBpcyBlbmFibGVk
LgorICAgICoKKyAgICAqIEh5cGVybGluayBhdWRpdGluZyBzcGVjaWZpY2F0aW9uIGlzIGF2YWls
YWJsZSBhdAorICAgICogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJl
bnQtd29yay9tdWx0aXBhZ2UvbGlua3MuaHRtbCNoeXBlcmxpbmstYXVkaXRpbmcuCisgICAgKgor
ICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9IWVBFUkxJ
TktfQVVESVRJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFt
X3NwZWNfYm9vbGVhbigiZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgaHlw
ZXJsaW5rIGF1ZGl0aW5nIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIDxhIHBpbmc+IHNob3VsZCBiZSBhYmxlIHRv
IHNlbmQgcGluZ3MuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsK
KworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFNldHRp
bmdzUHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfaW5pdChXZWJL
aXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2
ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHNldHRpbmdzLCBXRUJLSVRfVFlQRV9XRUJf
U0VUVElOR1MsIFdlYktpdFNldHRpbmdzUHJpdmF0ZSk7CisgICAgc2V0dGluZ3MtPnByaXYgPSBw
cml2OworICAgIG5ldyAocHJpdikgV2ViS2l0U2V0dGluZ3NQcml2YXRlKCk7Cit9CisKKy8qKgor
ICogd2Via2l0X3NldHRpbmdzX25ldzoKKyAqCisgKiBDcmVhdGVzIGEgbmV3ICNXZWJLaXRTZXR0
aW5ncyBpbnN0YW5jZSB3aXRoIGRlZmF1bHQgdmFsdWVzLiBJdCBtdXN0CisgKiBiZSBtYW51YWxs
eSBhdHRhY2hlZCB0byBhIFdlYlZpZXcuCisgKgorICogUmV0dXJuczogYSBuZXcgI1dlYktpdFNl
dHRpbmdzIGluc3RhbmNlLgorICoqLworV2ViS2l0U2V0dGluZ3MqIHdlYmtpdF9zZXR0aW5nc19u
ZXcoKQoreworICAgIHJldHVybiBXRUJLSVRfU0VUVElOR1MoZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX1dFQl9TRVRUSU5HUywgTlVMTCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX2phdmFzY3JpcHQ6CisgKgorICogR2V0IHRoZSBwcm9wZXJ0eSAjV2ViS2l0U2V0
dGluZ3M6ZW5hYmxlLWphdmFzY3JpcHQuCisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdz
CisgKgorICogUmV0dXJuczogJVRSVUUgSWYgSmF2YVNjcmlwdCBpcyBlbmFibGVkIG9yICVGQUxT
RSBvdGhlcndpc2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9qYXZhc2NyaXB0KCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X2phdmFzY3JpcHQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAg
ICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHNldHRpbmdzLT5wcml2
LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX3NldF9l
bmFibGVfamF2YXNjcmlwdDoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBl
bmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRT
ZXR0aW5nczplbmFibGUtamF2YXNjcmlwdC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0
aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoKQorICoqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9qYXZhc2NyaXB0KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4g
ZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Mo
c2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdz
LT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEphdmFTY3Jp
cHRFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVl
ID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZh
U2NyaXB0RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19v
YmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1qYXZhc2NyaXB0Iik7Cit9
CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzOgorICogQHNl
dHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAqIEdldCB0aGUgcHJvcGVydHkgI1dlYktp
dFNldHRpbmdzOmF1dG8tbG9hZC1pbWFnZXMuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgYXV0
byBsb2FkaW5nIG9mIGltYWdlcyBpcyBlbmFibGVkIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgor
ICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoKQorICoq
LworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKFdlYktpdFNl
dHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
V0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgcmV0dXJuIFdLUHJlZmVyZW5j
ZXNHZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2Vz
LmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFn
ZXM6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUg
dG8gYmUgc2V0CisgKgorICogU2V0IHRoZSBwcm9wZXJ0eSAjV2ViS2l0U2V0dGluZ3M6YXV0by1s
b2FkLWltYWdlcy4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19nZXRfYXV0b19s
b2FkX2ltYWdlcygpCisgKiovCit2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2lt
YWdlcyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAg
ICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBib29s
IGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHko
cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldExvYWRzSW1hZ2VzQXV0
b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19vYmpl
Y3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImF1dG8tbG9hZC1pbWFnZXMiKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xv
YWRfcHJlZmVyZW5jZToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBH
ZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczpsb2Fkcy1pY29ucy1pZ25vcmluZy1pbWFn
ZS1sb2FkLXByZWZlcmVuY2UuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgc2l0ZSBpY29uIGNh
biBiZSBsb2FkZWQgaXJyZXNwZWN0aXZlIG9mIGltYWdlIGxvYWRpbmcgcHJlZmVyZW5jZSBvciAl
RkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3NldHRpbmdzX3NldF9s
b2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UoKQorICoqLworZ2Jvb2xl
YW4gd2Via2l0X3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3By
ZWZlcmVuY2UoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBy
ZXR1cm4gV0tQcmVmZXJlbmNlc0dldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQ
cmVmZXJlbmNlKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgor
ICogd2Via2l0X3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3By
ZWZlcmVuY2U6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBAZW5hYmxlZDog
VmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHRoZSBwcm9wZXJ0eSAjV2ViS2l0U2V0dGluZ3M6
bG9hZHMtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmZXJlbmNlLgorICoKKyAqIEBzZWVf
YWxzbzogd2Via2l0X3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2Fk
X3ByZWZlcmVuY2UoKQorICogICAgICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9hdXRvX2xv
YWRfaW1hZ2VzKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19p
Z25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBn
Ym9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9T
RVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0g
c2V0dGluZ3MtPnByaXY7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0
TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2UocHJpdi0+cHJlZmVy
ZW5jZXMuZ2V0KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFn
ZUxvYWRpbmdQcmVmZXJlbmNlKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAg
ICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAibG9hZHMtaWNvbnMtaWdub3Jp
bmctaW1hZ2UtbG9hZC1wcmVmZXJlbmNlIik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGU6CisgKiBAc2V0dGluZ3M6
IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHRoZSBwcm9wZXJ0eSAjV2ViS2l0U2V0dGlu
Z3M6ZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlLgorICoKKyAqIFJldHVybnM6
ICVUUlVFIElmIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIHN1cHBvcnQgaXMg
ZW5hYmxlZCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3Nl
dHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoKQorICoqLwor
Z2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRp
b25fY2FjaGUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBy
ZXR1cm4gV0tQcmVmZXJlbmNlc0dldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChz
ZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlOgorICogQHNl
dHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAor
ICoKKyAqIFNldCB0aGUgcHJvcGVydHkgI1dlYktpdFNldHRpbmdzOmVuYWJsZS1vZmZsaW5lLXdl
Yi1hcHBsaWNhdGlvbi1jYWNoZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKCkKKyAqKi8KK3ZvaWQgd2Vi
a2l0X3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0
U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9vbCBjdXJyZW50
VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVk
KHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJs
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRPZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOwor
ICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtb2ZmbGluZS13
ZWItYXBwbGljYXRpb24tY2FjaGUiKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0
aW5ncworICoKKyAqIEdldCB0aGUgcHJvcGVydHkgI1dlYktpdFNldHRpbmdzOmVuYWJsZS1odG1s
NS1sb2NhbC1zdG9yYWdlLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEhUTUw1IGxvY2FsIHN0
b3JhZ2Ugc3VwcG9ydCBpcyBlbmFibGVkIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICogQHNl
ZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKCkK
KyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0
b3JhZ2UoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1
cm4gV0tQcmVmZXJlbmNlc0dldExvY2FsU3RvcmFnZUVuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnBy
ZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9odG1sNV9sb2NhbF9zdG9yYWdlOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncwor
ICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUgcHJvcGVydHkgI1dl
YktpdFNldHRpbmdzOmVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlLgorICoKKyAqIEBzZWVfYWxz
bzogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSgpCisgKiov
Cit2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UoV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0
U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9vbCBjdXJyZW50
VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJl
bmNlcy5nZXQoKSk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5w
cmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNU
KHNldHRpbmdzKSwgImVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlIik7Cit9CisKKy8qKgorICog
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2U6CisgKiBAc2V0dGluZ3M6
IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHRoZSBwcm9wZXJ0eSAjV2ViS2l0U2V0dGlu
Z3M6ZW5hYmxlLWh0bWw1LWRhdGFiYXNlLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEhUTUw1
IGRhdGFiYXNlIHN1cHBvcnQgaXMgZW5hYmxlZCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAq
IEBzZWVfYWxzbzogd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UoKQor
ICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2Uo
V2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gV0tQ
cmVmZXJlbmNlc0dldERhdGFiYXNlc0VuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2Vz
LmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9k
YXRhYmFzZToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBW
YWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczpl
bmFibGUtaHRtbDUtZGF0YWJhc2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZSgpCisgKiovCit2b2lkIHdlYmtpdF9zZXR0aW5nc19z
ZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xl
YW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElO
R1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRp
bmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldERhdGFi
YXNlc0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGlmIChjdXJyZW50VmFs
dWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldERh
dGFiYXNlc0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIGdf
b2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtaHRtbDUtZGF0YWJhc2Ui
KTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcjoK
KyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhlIHByb3BlcnR5
ICNXZWJLaXRTZXR0aW5nczplbmFibGUteHNzLWF1ZGl0b3IuCisgKgorICogUmV0dXJuczogJVRS
VUUgSWYgeHNzIGF1ZGl0aW5nIGlzIGVuYWJsZWQgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisg
KiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKCkKKyAq
Ki8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yKFdlYktp
dFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgcmV0dXJuIFdLUHJlZmVy
ZW5jZXNHZXRYU1NBdWRpdG9yRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0
KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9y
OgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRv
IGJlIHNldAorICoKKyAqIFNldCB0aGUgcHJvcGVydHkgI1dlYktpdFNldHRpbmdzOmVuYWJsZS14
c3MtYXVkaXRvci4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X3hzc19hdWRpdG9yKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfeHNz
X2F1ZGl0b3IoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQorewor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOwor
CisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAg
Ym9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0WFNTQXVkaXRvckVuYWJsZWQocHJp
di0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldFhTU0F1ZGl0b3JFbmFibGVk
KHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnko
R19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXhzcy1hdWRpdG9yIik7Cit9CisKKy8qKgorICog
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZzoKKyAqIEBzZXR0aW5n
czogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0
aW5nczplbmFibGUtZnJhbWUtZmxhdHRlbmluZy4KKyAqLgorICogUmV0dXJuczogJVRSVUUgSWYg
ZnJhbWUgZmxhdHRlbmluZyBpcyBlbmFibGVkIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICog
QHNlZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKCkK
KyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5p
bmcoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1cm4g
V0tQcmVmZXJlbmNlc0dldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnBy
ZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9mcmFtZV9mbGF0dGVuaW5nOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICog
QGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUgcHJvcGVydHkgI1dlYktp
dFNldHRpbmdzOmVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nLgorICoKKyAqIEBzZWVfYWxzbzogd2Vi
a2l0X3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZygpCisgKiovCit2b2lkIHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoV2ViS2l0U2V0dGluZ3Mq
IHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2
YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1By
ZWZlcmVuY2VzR2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQo
KSk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisK
KyAgICBXS1ByZWZlcmVuY2VzU2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2LT5wcmVmZXJl
bmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRp
bmdzKSwgImVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIik7Cit9CisKKy8qKgorICogd2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfcGx1Z2luczoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGlu
Z3MKKyAqCisgKiBHZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFibGUtcGx1Z2lu
cy4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBwbHVnaW5zIGFyZSBlbmFibGVkIG9yICVGQUxT
RSBvdGhlcndpc2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9wbHVnaW5zKCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3Bs
dWdpbnMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1
cm4gV0tQcmVmZXJlbmNlc0dldFBsdWdpbnNFbmFibGVkKHNldHRpbmdzLT5wcml2LT5wcmVmZXJl
bmNlcy5nZXQoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcGx1
Z2luczoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1
ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFi
bGUtcGx1Z2lucy4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X3BsdWdpbnMoKQorICoqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5z
KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdl
YktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wgY3Vy
cmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFBsdWdpbnNFbmFibGVkKHByaXYtPnByZWZlcmVu
Y2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRQbHVnaW5zRW5hYmxlZChwcml2LT5wcmVmZXJl
bmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRp
bmdzKSwgImVuYWJsZS1wbHVnaW5zIik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX2dl
dF9lbmFibGVfamF2YToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBH
ZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFibGUtamF2YS4KKyAqCisgKiBSZXR1
cm5zOiAlVFJVRSBJZiBKYXZhIGlzIGVuYWJsZWQgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisg
KiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEoKQorICoqLworZ2Jv
b2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YShXZWJLaXRTZXR0aW5ncyogc2V0
dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5H
UyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2YUVu
YWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3
ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRT
ZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUgcHJv
cGVydHkgI1dlYktpdFNldHRpbmdzOmVuYWJsZS1qYXZhLgorICoKKyAqIEBzZWVfYWxzbzogd2Vi
a2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YSgpCisgKiovCit2b2lkIHdlYmtpdF9zZXR0aW5n
c19zZXRfZW5hYmxlX2phdmEoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFi
bGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0
aW5ncykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnBy
aXY7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0SmF2YUVuYWJsZWQo
cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldEphdmFFbmFibGVkKHBy
aXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19P
QkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWphdmEiKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0
dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5OgorICog
QHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAqIEdldCB0aGUgcHJvcGVydHkgI1dl
YktpdFNldHRpbmdzOmphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5Lgor
ICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEphdmFTY3JpcHQgY2FuIG9wZW4gd2luZG93IGF1dG9t
YXRpY2FsbHkgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9z
ZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoKQor
ICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dp
bmRvd3NfYXV0b21hdGljYWxseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNF
KTsKKworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dz
QXV0b21hdGljYWxseShzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisv
KioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1
dG9tYXRpY2FsbHk6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBAZW5hYmxl
ZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHRoZSBwcm9wZXJ0eSAjV2ViS2l0U2V0dGlu
Z3M6amF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHkuCisgKgorICogQHNl
ZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19h
dXRvbWF0aWNhbGx5KCkKKyAqKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0
X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3Ms
IGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VC
X1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYg
PSBzZXR0aW5ncy0+cHJpdjsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNH
ZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2Vz
LmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0
aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9u
b3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiamF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1
dG9tYXRpY2FsbHkiKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9o
eXBlcmxpbmtfYXVkaXRpbmc6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgor
ICogR2V0IHRoZSBwcm9wZXJ0eSAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWh5cGVybGluay1hdWRp
dGluZy4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBoeXBlciBsaW5rIGF1ZGl0aW5nIGlzIGVu
YWJsZWQgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZygpCisgKiovCitnYm9vbGVhbiB3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoV2ViS2l0U2V0dGluZ3Mq
IHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VU
VElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEh5
cGVybGlua0F1ZGl0aW5nRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkp
OworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRp
dGluZzoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1
ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFi
bGUtaHlwZXJsaW5rLWF1ZGl0aW5nLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3NldHRp
bmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKFdlYktpdFNldHRpbmdzKiBzZXR0aW5n
cywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJp
diA9IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNl
c0dldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cisg
ICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBX
S1ByZWZlcmVuY2VzU2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2Vz
LmdldCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3Mp
LCAiZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uY2IxMDUzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmgKQEAgLTAsMCArMSwxNjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgCisgKiBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Cisg
KgorICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlLCAKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCAKKyAqIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIAorICogb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1vdG9yb2xhIE1vYmls
aXR5LCBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgCisgKiBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IAorICogc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCAKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgT1IgCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSAKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIAorICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAm
JiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dl
YmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdl
YktpdFNldHRpbmdzX2gKKyNkZWZpbmUgV2ViS2l0U2V0dGluZ3NfaAorCisjaW5jbHVkZSA8Z2xp
Yi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJ
Tl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUyAgICAgICAgICAgICh3
ZWJraXRfc2V0dGluZ3NfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1NFVFRJTkdTKG9iaikg
ICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRf
VFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFNldHRpbmdzKSkKKyNkZWZpbmUgV0VCS0lUX1NFVFRJ
TkdTX0NMQVNTKGtsYXNzKSAgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyks
ICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFNldHRpbmdzQ2xhc3MpKQorI2RlZmlu
ZSBXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RB
TkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUykpCisjZGVmaW5lIFdFQktJ
VF9JU19XRUJfU0VUVElOR1NfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgo
a2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTKSkKKyNkZWZpbmUgV0VCS0lUX1NFVFRJ
TkdTX0dFVF9DTEFTUyhvYmopICAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiks
ICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFNldHRpbmdzQ2xhc3MpKQorCit0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0U2V0dGluZ3MgV2ViS2l0U2V0dGluZ3M7Cit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0U2V0dGluZ3NDbGFzcyBXZWJLaXRTZXR0aW5nc0NsYXNzOwordHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdFNldHRpbmdzUHJpdmF0ZSBXZWJLaXRTZXR0aW5nc1ByaXZhdGU7CisKK3N0cnVj
dCBfV2ViS2l0U2V0dGluZ3MgeworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworCisgICAg
V2ViS2l0U2V0dGluZ3NQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRTZXR0aW5n
c0NsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgLyogUGFkZGlu
ZyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkg
KHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQg
KCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVk
NCkgKHZvaWQpOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3NldHRpbmdzX2dldF90
eXBlKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFNldHRpbmdzICoKK3dlYmtpdF9zZXR0aW5n
c19uZXcodm9pZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX2phdmFzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5n
cyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZW5h
YmxlX2phdmFzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxl
ZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfbG9hZHNfaWNv
bnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlIChXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNf
aWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtp
dF9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlICAgICAg
IChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlICAgICAgIChX
ZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dF
QktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2Fs
X3N0b3JhZ2UgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitX
RUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0
b3JhZ2UgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRT
ZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19z
ZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0
aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CitXRUJLSVRfQVBJIGdi
b29sZWFuCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvciAgICAgICAgICAg
ICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvciAgICAgICAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVu
YWJsZWQpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9mcmFtZV9mbGF0dGVuaW5nICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNl
dHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9m
cmFtZV9mbGF0dGVuaW5nICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRp
bmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3
ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOwor
CitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKTsK
KworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfc2V0
dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5ICAoV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5ICAoV2ViS2l0
U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXRUJLSVRf
QVBJIGdib29sZWFuCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRp
bmcgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0VCS0lU
X0FQSSB2b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcg
ICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29s
ZWFuIGVuYWJsZWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogd2Via2l0d2Vic2V0dGlu
Z3NfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvdGVzdHdlYmtpdHNldHRpbmdzLmMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy90ZXN0d2Via2l0c2V0dGluZ3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lNmU2NzQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYmtpdHNldHRpbmdzLmMKQEAgLTAsMCArMSwxMTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgCisgKiBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6
CisgKgorICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlLCAKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCAKKyAqIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIAorICogb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1vdG9yb2xhIE1v
YmlsaXR5LCBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgCisgKiBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IAorICogc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMgCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCAKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgT1IgCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSAKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIAorICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxndGsv
Z3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CisKK3N0YXRpYyB2b2lkIHRlc3RX
ZWJLaXRTZXR0aW5ncyh2b2lkKQoreworICAgIFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyA9IHdl
YmtpdF9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIEphdmFTY3JpcHQgaXMgZW5hYmxlZCBieSBk
ZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3Jp
cHQoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0
KHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX2phdmFzY3JpcHQoc2V0dGluZ3MpKTsKKworICAgIC8vIEJ5IGRlZmF1bHQgYXV0by1sb2Fk
LWltYWdlIGlzIHRydWUuCisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9hdXRvX2xv
YWRfaW1hZ2VzKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9hdXRvX2xvYWRf
aW1hZ2VzKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19n
ZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncykpOworCisgICAgLy8gbG9hZC1pY29uLWlnbm9y
aW5nLWltYWdlLWxvYWQtcHJlZiBpcyBmYWxzZSBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KCF3
ZWJraXRfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVy
ZW5jZShzZXR0aW5ncykpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdu
b3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKHNldHRpbmdzLCBUUlVFKTsKKyAgICBnX2Fzc2Vy
dCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJl
ZmVyZW5jZShzZXR0aW5ncykpOworICAgIAorICAgIC8vIE9mZmxpbmUgYXBwbGljYXRpb24gY2Fj
aGUgaXMgdHJ1ZSBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzKSk7CisgICAgd2Vi
a2l0X3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoc2V0
dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
b2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoc2V0dGluZ3MpKTsKKworICAgIC8vIExvY2Fs
IHN0b3JhZ2UgaXMgZW5hYmxlIGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQod2Via2l0X3NldHRp
bmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0aW5ncykpOworICAgIHdlYmtp
dF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0dGluZ3MsIEZBTFNF
KTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxf
c3RvcmFnZShzZXR0aW5ncykpOworCisgICAgLy8gSFRNTDUgZGF0YWJhc2UgaXMgZW5hYmxlZCBi
eSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1
X2RhdGFiYXNlKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRt
bDVfZGF0YWJhc2Uoc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3NldHRp
bmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2Uoc2V0dGluZ3MpKTsKKworICAgIC8vIFhTUyBB
dWRpdG9yIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncykpOworICAgIHdlYmtpdF9zZXR0aW5n
c19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQo
IXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdzKSk7CisKKyAg
ICAvLyBGcmFtZSBmbGF0dGVyaW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisgICAgZ19hc3Nl
cnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3Mp
KTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRp
bmdzLCBUUlVFKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFt
ZV9mbGF0dGVuaW5nKHNldHRpbmdzKSk7CisKKyAgICAvLyBQbHVnaW5zIGFyZSBlbmFibGVkIGJ5
IGRlZmF1bHQuCisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lu
cyhzZXR0aW5ncykpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMoc2V0
dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
cGx1Z2lucyhzZXR0aW5ncykpOworCisgICAgLy8gSmF2YSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQu
CisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YShzZXR0aW5ncykp
OworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MsIEZBTFNFKTsK
KyAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YShzZXR0aW5ncykp
OworCisgICAgLy8gQnkgZGVmYXVsdCwgSmF2YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9t
YXRpY2FsbHkgaXMgZGlzYWJsZWQuCisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRf
amF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3MpKTsKKyAg
ICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0
aWNhbGx5KHNldHRpbmdzLCBUUlVFKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0
X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7CisK
KyAgICAvLyBCeSBkZWZhdWx0IGh5cGVyIGxpbmsgYXVkaXRpbmcgaXMgZGlzYWJsZWQuCisgICAg
Z19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhz
ZXR0aW5ncykpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRp
dGluZyhzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRpbmdzKSk7CisKKyAgICBnX29iamVjdF91bnJl
ZihHX09CSkVDVChzZXR0aW5ncykpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy
Z3YpCit7CisgICAgZ190aHJlYWRfaW5pdChOVUxMKTsKKyAgICBndGtfdGVzdF9pbml0KCZhcmdj
LCAmYXJndiwgTlVMTCk7CisKKyAgICBnX3Rlc3RfYnVnX2Jhc2UoImh0dHBzOi8vYnVncy53ZWJr
aXQub3JnLyIpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdDIvd2Via2l0c2V0dGluZ3Mv
dGVzdHdlYmtpdHNldHRpbmdzIiwgdGVzdFdlYktpdFNldHRpbmdzKTsKKworICAgIHJldHVybiBn
X3Rlc3RfcnVuKCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDIuaAppbmRleCAzMWYxMTBhLi41NDBjNmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvd2Via2l0Mi5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMSBJZ2FsaWEgUy5MLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xh
IE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0yNSw2ICsyNiw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRFbnVtVHlwZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdEVycm9yLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTZXR0aW5ncy5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0V2ViQ29udGV4dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
V2ViTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJWaWV3QmFzZS5o
PgotLSAKMS43LjQuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110646</attachid>
            <date>2011-10-12 00:03:38 -0700</date>
            <delta_ts>2011-10-12 00:09:56 -0700</delta_ts>
            <desc>WebKitSettings patch</desc>
            <filename>0001-Add-WebKitSettings-API.patch</filename>
            <type>text/plain</type>
            <size>55413</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSAwNmY4OTQxOWMyNjdlMDJkYjc4YmIyMGFkOWM2ZWNiMWYwZjNmYTcxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogV2VkLCAxMiBPY3QgMjAxMSAxMjozMDoyOSArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIEFk
ZCBXZWJLaXRTZXR0aW5ncyBBUEkKCi0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDUzICsrCiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogLi4uL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwICAgfCAgODc4ICsrKysrKysrKysrKysrKysrKysr
CiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oICB8ICAx
NjEgKysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvR05VbWFrZWZpbGUu
YW0gfCAgICA4ICstCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFNldHRp
bmdzLmNwcCB8ICAxMTIgKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmggICAgICAgICB8ICAgIDIgKwogNyBmaWxlcyBjaGFuZ2VkLCAxMjE2IGluc2VydGlvbnMo
KyksIDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRTZXR0aW5ncy5jcHAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTkxNjUxYi4uMGY2ZTEyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU2IEBACisyMDExLTEwLTExICBOYXlhbiBLdW1hciBLICA8bmF5YW5ra0Bt
b3Rvcm9sYS5jb20+CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcg
VVJMIChPT1BTISkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRlZCBuZXcgZmlsZXMgZm9yIGNvbXBpbGF0aW9uLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcDogQWRkZWQuCisg
ICAgICAgIChfV2ViS2l0U2V0dGluZ3NQcml2YXRlOjpfV2ViS2l0U2V0dGluZ3NQcml2YXRlKTog
Q29uc3RydWN0b3IuCisgICAgICAgICh3ZWJLaXRTZXR0aW5nc1NldFByb3BlcnR5KTogU2V0IHBy
b3BlcnR5IGZ1bmN0aW9uLgorICAgICAgICAod2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eSk6IEdl
dCBwcm9wZXJ0eSBmdW5jdGlvbi4KKyAgICAgICAgKHdlYktpdFNldHRpbmdzRmluYWxpemUpOiBD
bGFzcyBmaW5hbGl6ZSBmdW5jdGlvbi4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19jbGFzc19p
bml0KTogQ2xhc3MgaW5pdCBmdW5jdGlvbi4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19pbml0
KTogSW5zdGFuY2UgaW5pdCBmdW5jdGlvbi4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19uZXcp
OiBDcmVhdGVzIFdlYktpdFNldHRpbmdzIEdPYmplY3QuCisgICAgICAgICh3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KTogRnVuY3Rpb24gdG8gZ2V0ICdlbmFibGUtamF2YXNj
cmlwdCcgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZh
c2NyaXB0KTogRnVuY3Rpb24gdG8gc2V0ICdlbmFibGUtamF2YXNjcmlwdCcgcHJvcGVydHkuCisg
ICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMpOiBHZXQgdGhlICdh
dXRvLWxvYWQtaW1hZ2VzJyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRf
YXV0b19sb2FkX2ltYWdlcyk6IFNldCB0aGUgJ2F1dG8tbG9hZC1pbWFnZXMnIHByb3BlcnR5Lgor
ICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9s
b2FkX3ByZWZlcmVuY2UpOiBGdW5jdGlvbiB0byBnZXQKKyAgICAgICAgJ2xvYWRzLWljb25zLWln
bm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZScgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRf
c2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZSk6
IEZ1bmN0aW9uIHRvIHNldAorICAgICAgICAnbG9hZHMtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9h
ZC1wcmVmZXJlbmNlJyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKTogRnVuY3Rpb24gdG8gZ2V0CisgICAg
ICAgICdlbmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUnIHByb3BlcnR5LgorICAg
ICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25f
Y2FjaGUpOiBGdW5jdGlvbiB0byBzZXQKKyAgICAgICAgJ2VuYWJsZS1vZmZsaW5lLXdlYi1hcHBs
aWNhdGlvbi1jYWNoZScgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKTogR2V0IHRoZSBwcm9wZXJ0eSAnZW5hYmxlLWh0bWw1
LWxvY2FsLXN0b3JhZ2UnLgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRt
bDVfbG9jYWxfc3RvcmFnZSk6IFNldCB0aGUgcHJvcGVydHkgJ2VuYWJsZS1odG1sNS1sb2NhbC1z
dG9yYWdlJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFi
YXNlKTogR2V0IHRoZSBwcm9wZXJ0eSAnZW5hYmxlLWh0bWw1LWRhdGFiYXNlJy4KKyAgICAgICAg
KHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKTogU2V0IHRoZSBwcm9w
ZXJ0eSAnZW5hYmxlLWh0bWw1LWRhdGFiYXNlJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX3hzc19hdWRpdG9yKTogR2V0IHByb3BlcnR5ICdlbmFibGUteHNzLWVkaXRvcicu
CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvcik6IFNldCBw
cm9wZXJ0eSAnZW5hYmxlLXhzcy1lZGl0b3InLgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dl
dF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyk6IEdldCB0aGUgcHJvcGVydHkgJ2VuYWJsZS1mcmFt
ZS1mbGF0dGVuaW5nJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1l
X2ZsYXR0ZW5pbmcpOiBTZXQgdGhlIHByb3BlcnR5ICdlbmFibGUtZnJhbWUtZmxhdHRlbmluZycu
CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKTogR2V0IHRoZSBw
cm9wZXJ0eSAnZW5hYmxlLXBsdWdpbnMnLgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9l
bmFibGVfcGx1Z2lucyk6IFNldCB0aGUgcHJvcGVydHkgJ2VuYWJsZS1wbHVnaW5zJy4KKyAgICAg
ICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEpOiBGdW5jdGlvbiB0byBnZXQgJ2Vu
YWJsZS1qYXZhJyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxl
X2phdmEpOiBGdW5jdGlvbiB0byBzZXQgJ2VuYWJsZS1qYXZhJyBwcm9wZXJ0eS4KKyAgICAgICAg
KHdlYmtpdF9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRp
Y2FsbHkpOiBHZXQgdGhlIHByb3BlcnR5CisgICAgICAgICdqYXZhc2NyaXB0LWNhbi1vcGVuLXdp
bmRvd3MtYXV0b21hdGljYWxseScuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFz
Y3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KTogU2V0IHRoZSBwcm9wZXJ0eQor
ICAgICAgICAnamF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHknLgorICAg
ICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKTogR2V0
ICdlbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nJyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyk6IFNldCAnZW5hYmxlLWh5cGVy
bGluay1hdWRpdGluZycgcHJvcGVydHkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0U2V0dGluZ3MuaDogQWRkZWQuIFB1YmxpYyBBUEkncy4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbTogQWRkZWQgbmV3IHRlc3QuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFNldHRpbmdzLmNwcDogQWRkZWQuCisg
ICAgICAgICh0ZXN0V2ViS2l0U2V0dGluZ3MpOiBBZGQgV2ViS2l0U2V0dGluZyB1bml0IHRlc3Qu
CisgICAgICAgIChiZWZvcmVBbGwpOiBQcmUtdGVzdCBmdW5jdGlvbi4KKyAgICAgICAgKGFmdGVy
QWxsKTogUG9zdC10ZXN0IGZ1bmN0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dl
YmtpdDIuaDogQWRkIFdlYktpdFNldHRpbmdzLmggdG8gZXhwb3NlZCBBUEkgbGlzdC4KKwogMjAx
MS0xMC0xMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNYWtlIGN1c3RvbSBzY3JvbGxiYXIgdGhlbWUgZm9yIHVzZSBpbiBEUlQsIHRvIHJlZHVjZSBw
aXhlbCBkaWZmcyBiZXR3ZWVuIHBsYXRmb3JtcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCAzNjA0
NzJjLi5jOWU4ZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtNzMsNiArNzMsNyBAQCB3ZWJr
aXQyZ3RrX2hlYWRlcnMgPSBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRF
cnJvci5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQu
aCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQu
aCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oIFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBcCiAJJChXZWJLaXQy
KS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwKIAkkKFdlYktpdDIpL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtNDc2LDYgKzQ3Nyw4IEBAIGxpYndlYmtpdDJn
dGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVS
U0lPTkBfbGFfU09VCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViTG9hZGVyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkxvYWRlckNsaWVudC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0U2V0dGluZ3MuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZWEwNjk3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcApAQCAtMCwwICsxLDg3OCBAQAorLyoKKyAqIENvcHly
aWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCAKKyAqIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3IgCisgKiBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTW90b3JvbGEgTW9iaWxpdHksIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSAKKyAqIGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgCisgKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUyAKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiAKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCAKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIAorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0U2V0dGluZ3Mu
aCIKKworI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLUHJl
ZmVyZW5jZXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
V2ViS2l0Mi9XS1R5cGUuaD4KKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorCitzdHJ1Y3Qg
X1dlYktpdFNldHRpbmdzUHJpdmF0ZSB7CisgICAgV0tSZXRhaW5QdHI8V0tQcmVmZXJlbmNlc1Jl
Zj4gcHJlZmVyZW5jZXM7CisKKyAgICBfV2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKKyAgICB7Cisg
ICAgICAgIHByZWZlcmVuY2VzID0gYWRvcHRXSyhXS1ByZWZlcmVuY2VzQ3JlYXRlKCkpOworICAg
IH0KK307CisKKy8qKgorICogU0VDVElPTjp3ZWJraXR3ZWJzZXR0aW5ncworICogQHNob3J0X2Rl
c2NyaXB0aW9uOiBDb250cm9sIHRoZSBiZWhhdmlvdXIgb2YgYSAjV2ViS2l0V2ViVmlldworICoK
KyAqICNXZWJLaXRTZXR0aW5ncyBjYW4gYmUgYXBwbGllZCB0byBhICNXZWJLaXRXZWJWaWV3IHRv
IGNvbnRyb2wgdGV4dCBlbmNvZGluZywgCisgKiBjb2xvciwgZm9udCBzaXplcywgcHJpbnRpbmcg
bW9kZSwgc2NyaXB0IHN1cHBvcnQsIGxvYWRpbmcgb2YgaW1hZ2VzIGFuZCB2YXJpb3VzIG90aGVy
IHRoaW5ncy4gCisgKiBBZnRlciBjcmVhdGlvbiwgYSAjV2ViS2l0U2V0dGluZ3Mgb2JqZWN0IGNv
bnRhaW5zIGRlZmF1bHQgc2V0dGluZ3MuIAorICoKKyAqIDxpbmZvcm1hbGV4YW1wbGU+PHByb2dy
YW1saXN0aW5nPgorICogLzwhLS0gLS0+KiBDcmVhdGUgYSBuZXcgI1dlYktpdFNldHRpbmdzIGFu
ZCBkaXNhYmxlIEphdmFTY3JpcHQuICo8IS0tIC0tPi8KKyAqIFdlYktpdFNldHRpbmdzICpzZXR0
aW5ncyA9IHdlYmtpdF9zZXR0aW5nc19uZXcgKCk7CisgKiBnX29iamVjdF9zZXQgKEdfT0JKRUNU
KHNldHRpbmdzKSwgImVuYWJsZS1qYXZhLXNjcmlwdCIsIEZBTFNFLCBOVUxMKTsKKyAqCisgKiB3
ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzIChXRUJLSVRfV0VCX1ZJRVcgKG15X3dlYnZpZXcp
LCBzZXR0aW5ncyk7CisgKiA8L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxleGFtcGxlPgorICov
CisKKworR19ERUZJTkVfVFlQRShXZWJLaXRTZXR0aW5ncywgd2Via2l0X3NldHRpbmdzLCBHX1RZ
UEVfT0JKRUNUKQorCitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9QX0VOQUJMRV9KQVZB
U0NSSVBULAorICAgIFBST1BfQVVUT19MT0FEX0lNQUdFUywKKyAgICBQUk9QX0xPQURTX0lDT05T
X0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRSwKKyAgICBQUk9QX0VOQUJMRV9PRkZMSU5F
X1dFQl9BUFBMSUNBVElPTl9DQUNIRSwKKyAgICBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9S
QUdFLAorICAgIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNFLAorICAgIFBST1BfRU5BQkxFX1hT
U19BVURJVE9SLAorICAgIFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRURVJJTkcsCisgICAgUFJPUF9F
TkFCTEVfUExVR0lOUywKKyAgICBQUk9QX0VOQUJMRV9KQVZBLAorICAgIFBST1BfSkFWQVNDUklQ
VF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFksCisgICAgUFJPUF9FTkFCTEVfSFlQRVJM
SU5LX0FVRElUSU5HLAorfTsKKworc3RhdGljIHZvaWQgd2ViS2l0U2V0dGluZ3NTZXRQcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyA9IFdF
QktJVF9TRVRUSU5HUyhvYmplY3QpOworIAorICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2Fz
ZSBQUk9QX0VOQUJMRV9KQVZBU0NSSVBUOgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV9qYXZhc2NyaXB0KHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9BVVRPX0xPQURfSU1BR0VTOgorICAgICAgICB3
ZWJraXRfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0
X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0xPQURTX0lD
T05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRToKKyAgICAgICAgd2Via2l0X3NldHRp
bmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2Uoc2V0dGlu
Z3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRToKKyAgICAgICAgd2Vi
a2l0X3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoc2V0
dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFOgorICAgICAgICB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzLCBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVf
SFRNTDVfREFUQUJBU0U6CisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1
X2RhdGFiYXNlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1I6CisgICAgICAgIHdlYmtp
dF9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9i
b29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfRlJB
TUVfRkxBVFRFUklORzoKKyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVf
ZmxhdHRlbmluZyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1BMVUdJTlM6CisgICAgICAgIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4o
dmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZBOgorICAg
ICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKHNldHRpbmdzLCBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9KQVZBU0NS
SVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWToKKyAgICAgICAgd2Via2l0X3NldHRp
bmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5n
cywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfRU5BQkxFX0hZUEVSTElOS19BVURJVElORzoKKyAgICAgICAgd2Via2l0X3NldHRpbmdz
X3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29s
ZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JK
RUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc0dl
dFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBH
UGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0g
V0VCS0lUX1NFVFRJTkdTKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNh
c2UgUFJPUF9FTkFCTEVfSkFWQVNDUklQVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2
YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncykpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVVUT19MT0FEX0lNQUdFUzoKKyAgICAgICAg
Z192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9hdXRvX2xvYWRf
aW1hZ2VzKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9MT0FEU19J
Q09OU19JR05PUklOR19JTUFHRV9MT0FEX1BSRUZFUkVOQ0U6CisgICAgICAgIGdfdmFsdWVfc2V0
X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3Jpbmdf
aW1hZ2VfbG9hZF9wcmVmZXJlbmNlKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05fQ0FDSEU6CisgICAgICAgIGdf
dmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxp
bmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFHRToKKyAgICAgICAgZ192YWx1ZV9z
ZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxf
c3RvcmFnZShzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxF
X0hUTUw1X0RBVEFCQVNFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncykpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1hTU19BVURJVE9SOgorICAgICAgICBnX3Zh
bHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVk
aXRvcihzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0ZS
QU1FX0ZMQVRURVJJTkc6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtp
dF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9QTFVHSU5TOgorICAgICAgICBnX3ZhbHVl
X3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKHNl
dHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQToKKyAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfamF2YShzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSkFWQVND
UklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFk6CisgICAgICAgIGdfdmFsdWVfc2V0
X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93
aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkc6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jv
b2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGlu
ZyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09C
SkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2ViS2l0U2V0dGluZ3NG
aW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV0VCS0lUX1NFVFRJTkdTKG9iamVjdCkt
PnByaXYtPn5XZWJLaXRTZXR0aW5nc1ByaXZhdGUoKTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJr
aXRfc2V0dGluZ3NfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGlj
IHZvaWQgd2Via2l0X3NldHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0U2V0dGluZ3NDbGFzcyoga2xh
c3MpCit7CisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhr
bGFzcyk7CisgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJLaXRTZXR0aW5nc1Nl
dFByb3BlcnR5OworICAgIGdPYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2ViS2l0U2V0dGlu
Z3NHZXRQcm9wZXJ0eTsKKyAgICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2ViS2l0U2V0dGlu
Z3NGaW5hbGl6ZTsKKworICAgIEdQYXJhbUZsYWdzIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxh
Z3MgPSBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdf
UEFSQU1fQ09OU1RSVUNUKTsKKworICAgIC8qKgorICAgICogV2ViS2l0U2V0dGluZ3M6ZW5hYmxl
LWphdmFzY3JpcHQKKyAgICAqCisgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IEphdmFT
Y3JpcHQgZXhlY3V0ZXMgd2l0aGluIGEgcGFnZS4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0pBVkFTQ1JJUFQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWphdmFz
Y3JpcHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXygiRW5hYmxlIEphdmFTY3JpcHQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBKYXZhU2NyaXB0LiIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKyAgICAKKyAgICAvKioK
KyAgICAqIFdlYktpdFNldHRpbmdzOmF1dG8tbG9hZC1pbWFnZXMKKyAgICAqCisgICAgKiBEZXRl
cm1pbmVzIHdoZXRoZXIgaW1hZ2VzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGxvYWRlZCBvciBu
b3QuCisgICAgKiBPbiBkZXZpY2VzIHdoZXJlIG5ldHdvcmsgYmFuZHdpZHRoIGlzIG9mIGNvbmNl
cm4sIGl0IG1pZ2h0IGJlCisgICAgKiB1c2VmdWwgdG8gdHVybiB0aGlzIHByb3BlcnR5IG9mZi4K
KyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmpl
Y3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfQVVUT19M
T0FEX0lNQUdFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1f
c3BlY19ib29sZWFuKCJhdXRvLWxvYWQtaW1hZ2VzIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkF1dG8gbG9hZCBpbWFnZXMiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF8oIkxvYWQgaW1hZ2VzIGF1dG9tYXRpY2FsbHkuIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3Ry
dWN0UGFyYW1GbGFncykpOworICAgIAorICAgIC8qKgorICAgICogV2ViS2l0U2V0dGluZ3M6bG9h
ZHMtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmZXJlbmNlCisgICAgKgorICAgICogRGV0
ZXJtaW5lcyB3aGV0aGVyIGEgc2l0ZSBjYW4gbG9hZCBmYXZpY29ucyBpcnJlc3BlY3RpdmUKKyAg
ICAqIG9mIHRoZSB2YWx1ZSBvZiAjV2ViU2V0dGluZ3M6YXV0by1sb2FkLWltYWdlcy4KKyAgICAq
CisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFz
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfTE9BRFNfSUNPTlNf
SUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGRVJFTkNFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImxvYWRzLWljb25zLWlnbm9yaW5nLWlt
YWdlLWxvYWQtcHJlZmVyZW5jZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfKCJMb2FkcyBzaXRlIGljb25zIGlnbm9yaW5nIGltYWdl
IGxvYWQgcHJlZmVyZW5jZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBsb2FkIHNpdGUgaWNvbiBpZ25vcmlu
ZyBpbWFnZSBsb2FkIHByZWZlcmVuY2UuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBh
cmFtRmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLW9mZmxp
bmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlCisgICAgKgorICAgICogV2hldGhlciB0byBlbmFibGUg
SFRNTDUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUgc3VwcG9ydC4gT2ZmbGluZQorICAg
ICogd2ViIGFwcGxpY2F0aW9uIGNhY2hlIGVuc3VyZXMgd2ViIGFwcGxpY2F0aW9ucyBhcmUgYXZh
aWxhYmxlIGV2ZW4gd2hlbgorICAgICogdGhlIHVzZXIgaXMgbm90IGNvbm5lY3RlZCB0byB0aGUg
bmV0d29yay4KKyAgICAqIAorICAgICogSFRNTDUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gc3Bl
Y2lmaWNhdGlvbiBpcyBhdmFpbGFibGUgYXQKKyAgICAqIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1
L3NwZWMvb2ZmbGluZS5odG1sLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05fQ0FDSEUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5h
YmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBvZmZsaW5lIHdl
YiBhcHBsaWNhdGlvbiBjYWNoZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFibGUgb2ZmbGluZSB3ZWIg
YXBwbGljYXRpb24gY2FjaGUuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFn
cykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRTZXR0aW5nczplbmFibGUtaHRtbDUtbG9jYWwt
c3RvcmFnZToKKyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBsb2NhbCBzdG9y
YWdlIHN1cHBvcnQuIExvY2FsIHN0b3JhZ2UgcHJvdmlkZXMKKyAgICAqIHNpbXBsZSBzeW5jaHJv
bm91cyBzdG9yYWdlIGFjY2Vzcy4KKyAgICAqCisgICAgKiBIVE1MNSBsb2NhbCBzdG9yYWdlIHNw
ZWNpZmljYXRpb24gaXMgYXZhaWxhYmxlIGF0CisgICAgKiBodHRwOi8vZGV2LnczLm9yZy9UUi93
ZWJzdG9yYWdlLy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh0bWw1LWxvY2FsLXN0
b3JhZ2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXygiRW5hYmxlIEhUTUw1IGxvY2FsIHN0b3JhZ2UiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8g
ZW5hYmxlIEhUTUw1IExvY2FsIFN0b3JhZ2Ugc3VwcG9ydC4iKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVD
b25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmVu
YWJsZS1odG1sNS1kYXRhYmFzZToKKyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBIVE1M
NSBjbGllbnQtc2lkZSBTUUwgZGF0YWJhc2Ugc3VwcG9ydC4gQ2xpZW50LXNpZGUKKyAgICAqIFNR
TCBkYXRhYmFzZSBhbGxvd3Mgd2ViIHBhZ2VzIHRvIHN0b3JlIHN0cnVjdHVyZWQgZGF0YSBhbmQg
YmUgYWJsZSB0bworICAgICogdXNlIFNRTCB0byBtYW5pcHVsYXRlIHRoYXQgZGF0YSBhc3luY2hy
b25vdXNseS4KKyAgICAqCisgICAgKiBIVE1MNSBkYXRhYmFzZSBzcGVjaWZpY2F0aW9uIGlzIGF2
YWlsYWJsZSBhdAorICAgICogaHR0cDovL3d3dy53My5vcmcvVFIvd2ViZGF0YWJhc2UvLgorICAg
ICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENs
YXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfSFRN
TDVfREFUQUJBU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFt
X3NwZWNfYm9vbGVhbigiZW5hYmxlLWh0bWw1LWRhdGFiYXNlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBIVE1MNSBk
YXRhYmFzZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFibGUgSFRNTDUgZGF0YWJhc2Ugc3VwcG9ydC4i
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAgICAvKioKKyAg
ICAqIFdlYktpdFNldHRpbmdzOmVuYWJsZS14c3MtYXVkaXRvcgorICAgICoKKyAgICAqIFdoZXRo
ZXIgdG8gZW5hYmxlIHRoZSBYU1MgYXVkaXRvci4gVGhpcyBmZWF0dXJlIGZpbHRlcnMgc29tZSBr
aW5kcyBvZgorICAgICogcmVmbGVjdGl2ZSBYU1MgYXR0YWNrcyBvbiB2dWxuZXJhYmxlIHdlYiBz
aXRlcy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1Bf
RU5BQkxFX1hTU19BVURJVE9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS14c3MtYXVkaXRvciIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgWFNT
IGF1ZGl0b3IiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIHRoZSBYU1MgYXVkaXRvci4iKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKworICAgIC8qKgorICAgICog
V2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmcKKyAgICAqCisgICAgKiBXaGV0
aGVyIHRvIGVuYWJsZSB0aGUgZnJhbWUgZmxhdHRlbmluZy4gV2l0aCB0aGlzIHNldHRpbmcgZWFj
aCBzdWJmcmFtZSBpcyBleHBhbmRlZAorICAgICogdG8gaXRzIGNvbnRlbnRzLCB3aGljaCB3aWxs
IGZsYXR0ZW4gYWxsIHRoZSBmcmFtZXMgdG8gYmVjb21lIG9uZSBzY3JvbGxhYmxlIHBhZ2UuCisg
ICAgKiBPbiB0b3VjaCBkZXZpY2VzLCBzY3JvbGxhYmxlIHN1YmZyYW1lcyBvbiBhIHBhZ2UgY2Fu
IHJlc3VsdCBpbiBhIGNvbmZ1c2luZyB1c2VyIGV4cGVyaWVuY2UuCisgICAgKgorICAgICovCisg
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5H
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xl
YW4oImVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBmcmFtZSBmbGF0dGVuaW5n
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBmcmFtZSBmbGF0dGVuaW5nLiIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAgIC8qKgorICAgICogV2ViS2l0U2V0
dGluZ3M6ZW5hYmxlLXBsdWdpbnM6CisgICAgKgorICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIG9y
IG5vdCBwbHVnaW5zIG9uIHRoZSBwYWdlIGFyZSBlbmFibGVkLgorICAgICoKKyAgICAqLworICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfUExVR0lOUywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUt
cGx1Z2lucyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfKCJFbmFibGUgcGx1Z2lucyIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIGVtYmVkZGVkIHBsdWdp
biBvYmplY3RzLiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKyAg
ICAKKyAgIC8qKgorICAgICogV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWphdmE6CisgICAgKgorICAg
ICogRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBKYXZhIGlzIGVuYWJsZWQgb24gdGhlIHBhZ2Uu
CisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2Jq
ZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJM
RV9KQVZBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVj
X2Jvb2xlYW4oImVuYWJsZS1qYXZhIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBKYXZhIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIEph
dmEgc3VwcG9ydCBzaG91bGQgYmUgZW5hYmxlZC4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1
Y3RQYXJhbUZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmphdmFzY3Jp
cHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5CisgICAgKgorICAgICogV2hldGhlciBK
YXZhU2NyaXB0IGNhbiBvcGVuIHBvcHVwIHdpbmRvd3MgYXV0b21hdGljYWxseSB3aXRob3V0IHVz
ZXIKKyAgICAqIGludGVydmVudGlvbi4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FM
TFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9v
bGVhbigiamF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHkiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiSmF2
YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9tYXRpY2FsbHkiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgSmF2
YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9tYXRpY2FsbHkuIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRX
cml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0U2V0dGlu
Z3M6ZW5hYmxlLWh5cGVybGluay1hdWRpdGluZzoKKyAgICAqCisgICAgKiBEZXRlcm1pbmVzIHdo
ZXRoZXIgb3Igbm90IGh5cGVybGluayBhdWRpdGluZyBpcyBlbmFibGVkLgorICAgICoKKyAgICAq
IEh5cGVybGluayBhdWRpdGluZyBzcGVjaWZpY2F0aW9uIGlzIGF2YWlsYWJsZSBhdAorICAgICog
aHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBh
Z2UvbGlua3MuaHRtbCNoeXBlcmxpbmstYXVkaXRpbmcuCisgICAgKgorICAgICovCisgICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigi
ZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgaHlwZXJsaW5rIGF1ZGl0aW5n
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfKCJXaGV0aGVyIDxhIHBpbmc+IHNob3VsZCBiZSBhYmxlIHRvIHNlbmQgcGluZ3MuIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKworICAgIGdfdHlwZV9j
bGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFNldHRpbmdzUHJpdmF0ZSkpOwor
fQorCitzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfaW5pdChXZWJLaXRTZXR0aW5ncyogc2V0
dGluZ3MpCit7CisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RB
TkNFX0dFVF9QUklWQVRFKHNldHRpbmdzLCBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktp
dFNldHRpbmdzUHJpdmF0ZSk7CisgICAgc2V0dGluZ3MtPnByaXYgPSBwcml2OworICAgIG5ldyAo
cHJpdikgV2ViS2l0U2V0dGluZ3NQcml2YXRlKCk7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRp
bmdzX25ldzoKKyAqCisgKiBDcmVhdGVzIGEgbmV3ICNXZWJLaXRTZXR0aW5ncyBpbnN0YW5jZSB3
aXRoIGRlZmF1bHQgdmFsdWVzLiBJdCBtdXN0CisgKiBiZSBtYW51YWxseSBhdHRhY2hlZCB0byBh
IFdlYlZpZXcuCisgKgorICogUmV0dXJuczogYSBuZXcgI1dlYktpdFNldHRpbmdzIGluc3RhbmNl
LgorICoqLworV2ViS2l0U2V0dGluZ3MqIHdlYmtpdF9zZXR0aW5nc19uZXcoKQoreworICAgIHJl
dHVybiBXRUJLSVRfU0VUVElOR1MoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9TRVRUSU5H
UywgTlVMTCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFz
Y3JpcHQ6CisgKgorICogR2V0IHRoZSBwcm9wZXJ0eSAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWph
dmFzY3JpcHQuCisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogUmV0dXJu
czogJVRSVUUgSWYgSmF2YVNjcmlwdCBpcyBlbmFibGVkIG9yICVGQUxTRSBvdGhlcndpc2UuCisg
KgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0KCkK
KyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gV0tQcmVm
ZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5n
ZXQoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlw
dDoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0
byBiZSBzZXQKKyAqCisgKiBTZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFibGUt
amF2YXNjcmlwdC4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X2phdmFzY3JpcHQoKQorICoqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZh
c2NyaXB0KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKwor
ICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGJv
b2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHByaXYt
PnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhU2NyaXB0RW5hYmxlZChw
cml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdf
T0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1qYXZhc2NyaXB0Iik7Cit9CisKKy8qKgorICogd2Vi
a2l0X3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzOgorICogQHNldHRpbmdzOiBhICNXZWJL
aXRTZXR0aW5ncworICoKKyAqIEdldCB0aGUgcHJvcGVydHkgI1dlYktpdFNldHRpbmdzOmF1dG8t
bG9hZC1pbWFnZXMuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgYXV0byBsb2FkaW5nIG9mIGlt
YWdlcyBpcyBlbmFibGVkIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICogQHNlZV9hbHNvOiB3
ZWJraXRfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXMoKQorICoqLworZ2Jvb2xlYW4gd2Vi
a2l0X3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5n
cykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNl
dHRpbmdzKSwgRkFMU0UpOworCisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0ltYWdl
c0F1dG9tYXRpY2FsbHkoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXM6CisgKiBAc2V0dGlu
Z3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgor
ICogU2V0IHRoZSBwcm9wZXJ0eSAjV2ViS2l0U2V0dGluZ3M6YXV0by1sb2FkLWltYWdlcy4KKyAq
CisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcygpCisg
KiovCit2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyhXZWJLaXRTZXR0
aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5n
c1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9
IFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5j
ZXMuZ2V0KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShwcml2
LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JK
RUNUKHNldHRpbmdzKSwgImF1dG8tbG9hZC1pbWFnZXMiKTsKK30KKworLyoqCisgKiB3ZWJraXRf
c2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZToK
KyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhlIHByb3BlcnR5
ICNXZWJLaXRTZXR0aW5nczpsb2Fkcy1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWZlcmVu
Y2UuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgc2l0ZSBpY29uIGNhbiBiZSBsb2FkZWQgaXJy
ZXNwZWN0aXZlIG9mIGltYWdlIGxvYWRpbmcgcHJlZmVyZW5jZSBvciAlRkFMU0Ugb3RoZXJ3aXNl
LgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25v
cmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRp
bmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UoV2ViS2l0
U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gV0tQcmVmZXJl
bmNlc0dldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNlKHNldHRp
bmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRp
bmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2U6CisgKiBA
c2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0
CisgKgorICogU2V0IHRoZSBwcm9wZXJ0eSAjV2ViS2l0U2V0dGluZ3M6bG9hZHMtaWNvbnMtaWdu
b3JpbmctaW1hZ2UtbG9hZC1wcmVmZXJlbmNlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3Nl
dHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UoKQor
ICogICAgICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzKCkKKyAq
Ki8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9s
b2FkX3ByZWZlcmVuY2UoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVk
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5n
cykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7
CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TG9hZHNTaXRlSWNvbnNJ
Z25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2UocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOwor
ICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
V0tQcmVmZXJlbmNlc1NldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJl
bmNlKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3Rp
ZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAibG9hZHMtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1w
cmVmZXJlbmNlIik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfb2Zm
bGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGU6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRp
bmdzCisgKgorICogR2V0IHRoZSBwcm9wZXJ0eSAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLW9mZmxp
bmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEhUTUw1
IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIHN1cHBvcnQgaXMgZW5hYmxlZCBvciAlRkFM
U0Ugb3RoZXJ3aXNlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3NldHRpbmdzX3NldF9lbmFi
bGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoV2ViS2l0
U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gV0tQcmVmZXJl
bmNlc0dldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+
cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5h
YmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlOgorICogQHNldHRpbmdzOiBhICNXZWJL
aXRTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUg
cHJvcGVydHkgI1dlYktpdFNldHRpbmdzOmVuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1j
YWNoZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxp
bmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3Nl
dF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoV2ViS2l0U2V0dGluZ3MqIHNl
dHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRl
KiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZl
cmVuY2VzR2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHByaXYtPnByZWZlcmVu
Y2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVu
YWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24t
Y2FjaGUiKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9s
b2NhbF9zdG9yYWdlOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAqIEdl
dCB0aGUgcHJvcGVydHkgI1dlYktpdFNldHRpbmdzOmVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdl
LgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEhUTUw1IGxvY2FsIHN0b3JhZ2Ugc3VwcG9ydCBp
cyBlbmFibGVkIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKCkKKyAqKi8KK2dib29sZWFu
IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19X
RUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNl
c0dldExvY2FsU3RvcmFnZUVuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgp
KTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9z
dG9yYWdlOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICogQGVuYWJsZWQ6IFZh
bHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUgcHJvcGVydHkgI1dlYktpdFNldHRpbmdzOmVu
YWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3NldHRp
bmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSgpCisgKiovCit2b2lkIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UoV2ViS2l0U2V0dGluZ3MqIHNl
dHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRl
KiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZl
cmVuY2VzR2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cisg
ICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBX
S1ByZWZlcmVuY2VzU2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQo
KSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVu
YWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlIik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2U6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRp
bmdzCisgKgorICogR2V0IHRoZSBwcm9wZXJ0eSAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWh0bWw1
LWRhdGFiYXNlLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEhUTUw1IGRhdGFiYXNlIHN1cHBv
cnQgaXMgZW5hYmxlZCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqIEBzZWVfYWxzbzogd2Vi
a2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UoKQorICoqLworZ2Jvb2xlYW4g
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UoV2ViS2l0U2V0dGluZ3Mq
IHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VU
VElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldERh
dGFiYXNlc0VuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZToKKyAqIEBz
ZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQK
KyAqCisgKiBTZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFibGUtaHRtbDUtZGF0
YWJhc2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1s
NV9kYXRhYmFzZSgpCisgKiovCit2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1
X2RhdGFiYXNlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sK
KyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsK
KworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAg
IGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldERhdGFiYXNlc0VuYWJsZWQocHJp
di0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldERhdGFiYXNlc0VuYWJsZWQo
cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShH
X09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtaHRtbDUtZGF0YWJhc2UiKTsKK30KKworLyoqCisg
KiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcjoKKyAqIEBzZXR0aW5nczog
YSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0aW5n
czplbmFibGUteHNzLWF1ZGl0b3IuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgeHNzIGF1ZGl0
aW5nIGlzIGVuYWJsZWQgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiBAc2VlX2Fsc286IHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKCkKKyAqKi8KK2dib29sZWFuIHdl
YmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yKFdlYktpdFNldHRpbmdzKiBzZXR0
aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdT
KHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRp
dG9yRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioK
KyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yOgorICogQHNldHRpbmdz
OiBhICNXZWJLaXRTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAq
IFNldCB0aGUgcHJvcGVydHkgI1dlYktpdFNldHRpbmdzOmVuYWJsZS14c3MtYXVkaXRvci4KKyAq
CisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yKCkK
KyAqKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfeHNzX2F1ZGl0b3IoV2ViS2l0
U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0U2V0
dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9vbCBjdXJyZW50VmFs
dWUgPSBXS1ByZWZlcmVuY2VzR2V0WFNTQXVkaXRvckVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMu
Z2V0KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgV0tQcmVmZXJlbmNlc1NldFhTU0F1ZGl0b3JFbmFibGVkKHByaXYtPnByZWZlcmVu
Y2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGlu
Z3MpLCAiZW5hYmxlLXhzcy1hdWRpdG9yIik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZzoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0
dGluZ3MKKyAqCisgKiBHZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFibGUtZnJh
bWUtZmxhdHRlbmluZy4KKyAqLgorICogUmV0dXJuczogJVRSVUUgSWYgZnJhbWUgZmxhdHRlbmlu
ZyBpcyBlbmFibGVkIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKCkKKyAqKi8KK2dib29sZWFu
IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoV2ViS2l0U2V0dGlu
Z3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
U0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dl
dEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgp
KTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVu
aW5nOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVl
IHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUgcHJvcGVydHkgI1dlYktpdFNldHRpbmdzOmVuYWJs
ZS1mcmFtZS1mbGF0dGVuaW5nLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3NldHRpbmdzX2dl
dF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZygpCisgKiovCit2b2lkIHdlYmtpdF9zZXR0aW5nc19z
ZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9v
bGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRU
SU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0
dGluZ3MtPnByaXY7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0RnJh
bWVGbGF0dGVuaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgaWYgKGN1
cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVu
Y2VzU2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5h
YmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1m
cmFtZS1mbGF0dGVuaW5nIik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfcGx1Z2luczoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQg
dGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFibGUtcGx1Z2lucy4KKyAqCisgKiBSZXR1
cm5zOiAlVFJVRSBJZiBwbHVnaW5zIGFyZSBlbmFibGVkIG9yICVGQUxTRSBvdGhlcndpc2UuCisg
KgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zKCkKKyAq
Ki8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19X
RUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNl
c0dldFBsdWdpbnNFbmFibGVkKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9
CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2luczoKKyAqIEBzZXR0
aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAq
CisgKiBTZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFibGUtcGx1Z2lucy4KKyAq
CisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMoKQorICoq
Lwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zKFdlYktpdFNldHRpbmdz
KiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJp
dmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQ
cmVmZXJlbmNlc0dldFBsdWdpbnNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAg
ICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdL
UHJlZmVyZW5jZXNTZXRQbHVnaW5zRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5h
YmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1w
bHVnaW5zIik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YToK
KyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhlIHByb3BlcnR5
ICNXZWJLaXRTZXR0aW5nczplbmFibGUtamF2YS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBK
YXZhIGlzIGVuYWJsZWQgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiBAc2VlX2Fsc286IHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfamF2YShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZB
TFNFKTsKKworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2YUVuYWJsZWQoc2V0dGluZ3Mt
PnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9qYXZhOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICogQGVu
YWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUgcHJvcGVydHkgI1dlYktpdFNl
dHRpbmdzOmVuYWJsZS1qYXZhLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3NldHRpbmdzX2dl
dF9lbmFibGVfamF2YSgpCisgKiovCit2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2ph
dmEoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAg
V2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9vbCBj
dXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0SmF2YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5j
ZXMuZ2V0KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldEphdmFFbmFibGVkKHByaXYtPnByZWZlcmVuY2Vz
LmdldCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3Mp
LCAiZW5hYmxlLWphdmEiKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFz
Y3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5OgorICogQHNldHRpbmdzOiBhICNX
ZWJLaXRTZXR0aW5ncworICoKKyAqIEdldCB0aGUgcHJvcGVydHkgI1dlYktpdFNldHRpbmdzOmph
dmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5LgorICoKKyAqIFJldHVybnM6
ICVUUlVFIElmIEphdmFTY3JpcHQgY2FuIG9wZW4gd2luZG93IGF1dG9tYXRpY2FsbHkgb3IgJUZB
TFNFIG90aGVyd2lzZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19zZXRfamF2
YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoKQorICoqLworZ2Jvb2xlYW4g
d2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGlj
YWxseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIHJldHVy
biBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShz
ZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9z
ZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHk6Cisg
KiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUg
c2V0CisgKgorICogU2V0IHRoZSBwcm9wZXJ0eSAjV2ViS2l0U2V0dGluZ3M6amF2YXNjcmlwdC1j
YW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHkuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRf
c2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KCkK
KyAqKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRv
d3NfYXV0b21hdGljYWxseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJs
ZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRp
bmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJp
djsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0Q2Fu
T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBp
ZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJl
ZmVyZW5jZXNTZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByaXYtPnBy
ZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qo
c2V0dGluZ3MpLCAiamF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHkiKTsK
K30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRp
bmc6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHRoZSBwcm9w
ZXJ0eSAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWh5cGVybGluay1hdWRpdGluZy4KKyAqCisgKiBS
ZXR1cm5zOiAlVFJVRSBJZiBoeXBlciBsaW5rIGF1ZGl0aW5nIGlzIGVuYWJsZWQgb3IgJUZBTFNF
IG90aGVyd2lzZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxl
X2h5cGVybGlua19hdWRpdGluZygpCisgKiovCitnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3Mp
LCBGQUxTRSk7CisKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEh5cGVybGlua0F1ZGl0aW5n
RW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAq
IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZzoKKyAqIEBzZXR0
aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAq
CisgKiBTZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFibGUtaHlwZXJsaW5rLWF1
ZGl0aW5nLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHlw
ZXJsaW5rX2F1ZGl0aW5nKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVf
aHlwZXJsaW5rX2F1ZGl0aW5nKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5h
YmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0
dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5w
cml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEh5cGVybGlua0F1
ZGl0aW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgaWYgKGN1cnJlbnRW
YWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0
SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVk
KTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWh5cGVy
bGluay1hdWRpdGluZyIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFNldHRpbmdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
Y2IxMDUzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFNldHRpbmdzLmgKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgCisgKiBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlLCAKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKgorICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCAKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIAorICogb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgCisgKiBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IAor
ICogc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCAKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
T1IgCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIAorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSAKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIAorICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJL
SVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJl
IGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdFNldHRpbmdzX2gK
KyNkZWZpbmUgV2ViS2l0U2V0dGluZ3NfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVm
aW5lIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUyAgICAgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nf
Z2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1NFVFRJTkdTKG9iaikgICAgICAgICAgICAgICAg
KEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU0VUVElO
R1MsIFdlYktpdFNldHRpbmdzKSkKKyNkZWZpbmUgV0VCS0lUX1NFVFRJTkdTX0NMQVNTKGtsYXNz
KSAgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9X
RUJfU0VUVElOR1MsIFdlYktpdFNldHRpbmdzQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VC
X1NFVFRJTkdTKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiks
IFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfU0VUVElO
R1NfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lU
X1RZUEVfV0VCX1NFVFRJTkdTKSkKKyNkZWZpbmUgV0VCS0lUX1NFVFRJTkdTX0dFVF9DTEFTUyhv
YmopICAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9X
RUJfU0VUVElOR1MsIFdlYktpdFNldHRpbmdzQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0U2V0dGluZ3MgV2ViS2l0U2V0dGluZ3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0U2V0dGlu
Z3NDbGFzcyBXZWJLaXRTZXR0aW5nc0NsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFNldHRp
bmdzUHJpdmF0ZSBXZWJLaXRTZXR0aW5nc1ByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0U2V0dGlu
Z3MgeworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworCisgICAgV2ViS2l0U2V0dGluZ3NQ
cml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRTZXR0aW5nc0NsYXNzIHsKKyAgICBH
T2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgLyogUGFkZGluZyBmb3IgZnV0dXJlIGV4
cGFuc2lvbiAqLworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZv
aWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkMykgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkNCkgKHZvaWQpOworfTsK
KworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3NldHRpbmdzX2dldF90eXBlKHZvaWQpOworCitX
RUJLSVRfQVBJIFdlYktpdFNldHRpbmdzICoKK3dlYmtpdF9zZXR0aW5nc19uZXcodm9pZCk7CisK
K1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3Jp
cHQgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOwor
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQg
ICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0
aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJL
aXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5n
c19zZXRfYXV0b19sb2FkX2ltYWdlcyAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRT
ZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9B
UEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1h
Z2VfbG9hZF9wcmVmZXJlbmNlIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2Vf
bG9hZF9wcmVmZXJlbmNlIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xl
YW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlICAgICAgIChXZWJLaXRTZXR0aW5n
cyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZW5h
YmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlICAgICAgIChXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UgICAgICAg
ICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UgICAgICAgICAg
ICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxl
ZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0
bWw1X2RhdGFiYXNlICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1
X2RhdGFiYXNlICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRf
c2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvciAgICAgICAgICAgICAgICAgICAgICAgICAo
V2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfc2V0
dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvciAgICAgICAgICAgICAgICAgICAgICAgICAoV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXRUJL
SVRfQVBJIGdib29sZWFuCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVu
aW5nICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0VC
S0lUX0FQSSB2b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5n
ICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdi
b29sZWFuIGVuYWJsZWQpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9wbHVnaW5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0
X2VuYWJsZV9wbHVnaW5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGlu
Z3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXRUJLSVRfQVBJIGdi
b29sZWFuCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVu
YWJsZWQpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFz
Y3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5ICAoV2ViS2l0U2V0dGluZ3MqIHNl
dHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3Jp
cHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5ICAoV2ViS2l0U2V0dGluZ3MqIHNldHRp
bmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3
ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcgICAgICAgICAgICAg
ICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcgICAgICAgICAgICAgICAg
ICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOwor
CitHX0VORF9ERUNMUworCisjZW5kaWYgLyogd2Via2l0d2Vic2V0dGluZ3NfaCAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvR05VbWFrZWZpbGUu
YW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5h
bQppbmRleCBmZTFhZGM5Li5hYjQxYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbQpAQCAtMSw3ICsxLDggQEAKIFRF
U1RfUFJPR1MgKz0gXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0V2ViS2l0V2ViQ29u
dGV4dCBcCiAJUHJvZ3JhbXMvV2ViS2l0MkFQSVRlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3IFwKLQlQ
cm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdFdlYktpdFdlYkxvYWRlckNsaWVudAorCVByb2dy
YW1zL1dlYktpdDJBUElUZXN0cy9UZXN0V2ViS2l0V2ViTG9hZGVyQ2xpZW50IFwKKwlQcm9ncmFt
cy9XZWJLaXQyQVBJVGVzdHMvVGVzdFdlYktpdFNldHRpbmdzCiAKIG5vaW5zdF9QUk9HUkFNUyAr
PSAkKFRFU1RfUFJPR1MpCiB3ZWJraXQyX3Rlc3RzX2NwcGZsYWdzID0gXApAQCAtNjAsMyArNjEs
OCBAQCBQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdFdlYktpdFdlYkxvYWRlckNsaWVudF9D
UFBGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19jcAogUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rl
c3RXZWJLaXRXZWJMb2FkZXJDbGllbnRfTERBREQgPSAkKHdlYmtpdDJfdGVzdHNfbGRhZGQpCiBQ
cm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdFdlYktpdFdlYkxvYWRlckNsaWVudF9MREZMQUdT
ID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1zX1dlYktpdDJBUElUZXN0c19U
ZXN0V2ViS2l0U2V0dGluZ3NfU09VUkNFUyA9IFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCitQcm9ncmFtc19XZWJLaXQyQVBJ
VGVzdHNfVGVzdFdlYktpdFNldHRpbmdzX0NQUEZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2NwcGZs
YWdzKQorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RXZWJLaXRTZXR0aW5nc19MREFERCA9
ICQod2Via2l0Ml90ZXN0c19sZGFkZCkKK1Byb2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0V2Vi
S2l0U2V0dGluZ3NfTERGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19sZGZsYWdzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFNldHRp
bmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRTZXR0aW5ncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRkNGE5
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgCisgKiBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlLCAKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKgorICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCAKKyAqIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIAorICogb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgCisgKiBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IAorICogc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMgCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCAKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgT1IgCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSAKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIAorICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVGVzdE1haW4uaCIK
KyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CisKK3N0
YXRpYyB2b2lkIHRlc3RXZWJLaXRTZXR0aW5ncyhUZXN0KiwgZ2NvbnN0cG9pbnRlcikKK3sKKyAg
ICBXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfc2V0dGluZ3NfbmV3KCk7CisKKyAg
ICAvLyBKYXZhU2NyaXB0IGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCh3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRpbmdzKSk7CisgICAgd2Via2l0
X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncywgRkFMU0UpOworICAgIGdf
YXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRpbmdzKSk7
CisKKyAgICAvLyBCeSBkZWZhdWx0IGF1dG8tbG9hZC1pbWFnZSBpcyB0cnVlLgorICAgIGdfYXNz
ZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncykpOworICAg
IHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncywgRkFMU0UpOwor
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGlu
Z3MpKTsKKworICAgIC8vIGxvYWQtaWNvbi1pZ25vcmluZy1pbWFnZS1sb2FkLXByZWYgaXMgZmFs
c2UgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9sb2Fkc19p
Y29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2Uoc2V0dGluZ3MpKTsKKyAgICB3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5j
ZShzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9sb2Fk
c19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2Uoc2V0dGluZ3MpKTsKKyAgICAK
KyAgICAvLyBPZmZsaW5lIGFwcGxpY2F0aW9uIGNhY2hlIGlzIHRydWUgYnkgZGVmYXVsdC4KKyAg
ICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNh
dGlvbl9jYWNoZShzZXR0aW5ncykpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX29m
ZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3Nl
cnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2Nh
Y2hlKHNldHRpbmdzKSk7CisKKyAgICAvLyBMb2NhbCBzdG9yYWdlIGlzIGVuYWJsZSBieSBkZWZh
dWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2Fs
X3N0b3JhZ2Uoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1s
NV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9z
ZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0dGluZ3MpKTsKKworICAg
IC8vIEhUTUw1IGRhdGFiYXNlIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCh3
ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncykpOworICAg
IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzLCBGQUxT
RSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFi
YXNlKHNldHRpbmdzKSk7CisKKyAgICAvLyBYU1MgQXVkaXRvciBpcyBlbmFibGVkIGJ5IGRlZmF1
bHQuCisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3Io
c2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvcihz
ZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV94c3NfYXVkaXRvcihzZXR0aW5ncykpOworCisgICAgLy8gRnJhbWUgZmxhdHRlcmluZyBpcyBk
aXNhYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3NldHRpbmdzX3Nl
dF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQo
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncykpOwor
CisgICAgLy8gUGx1Z2lucyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdl
YmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3Nl
cnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MpKTsKKworICAg
IC8vIEphdmEgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0
aW5nc19nZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0
X2VuYWJsZV9qYXZhKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0
aW5nc19nZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsKKworICAgIC8vIEJ5IGRlZmF1bHQsIEph
dmFTY3JpcHQgY2FuIG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IGlzIGRpc2FibGVkLgorICAg
IGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93
c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9qYXZh
c2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncywgVFJVRSk7Cisg
ICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRv
d3NfYXV0b21hdGljYWxseShzZXR0aW5ncykpOworCisgICAgLy8gQnkgZGVmYXVsdCBoeXBlciBs
aW5rIGF1ZGl0aW5nIGlzIGRpc2FibGVkLgorICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MsIFRSVUUpOworICAg
IGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhz
ZXR0aW5ncykpOworCisgICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1Qoc2V0dGluZ3MpKTsKK30K
Kwordm9pZCBiZWZvcmVBbGwoKQoreworICAgIFRlc3Q6OmFkZCgiV2ViS2l0U2V0dGluZ3MiLCAi
d2Via2l0LXNldHRpbmdzIiwgdGVzdFdlYktpdFNldHRpbmdzKTsKK30KKwordm9pZCBhZnRlckFs
bCgpCit7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApp
bmRleCAzMWYxMTBhLi41NDBjNmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvd2Via2l0Mi5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBJ
Z2FsaWEgUy5MLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmls
aXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0y
NSw2ICsyNiw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRFbnVtVHlwZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEVy
cm9yLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0V2ViQ29udGV4dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViTG9h
ZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJWaWV3QmFzZS5oPgotLSAK
MS43LjQuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110648</attachid>
            <date>2011-10-12 00:09:56 -0700</date>
            <delta_ts>2011-10-13 00:04:20 -0700</delta_ts>
            <desc>WebKitSettings patch</desc>
            <filename>0001-Add-WebKitSettings-API.patch</filename>
            <type>text/plain</type>
            <size>55608</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSBjMjlmOTIyNjlhMzhiMjlkNTAwNGQzMGRhNTU2YjI1ZjdhNzJjODNiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogV2VkLCAxMiBPY3QgMjAxMSAxMjozMDoyOSArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIEFk
ZCBXZWJLaXRTZXR0aW5ncyBBUEkKCi0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDU3ICsrCiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogLi4uL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwICAgfCAgODc4ICsrKysrKysrKysrKysrKysrKysr
CiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oICB8ICAx
NjEgKysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvR05VbWFrZWZpbGUu
YW0gfCAgICA4ICstCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFNldHRp
bmdzLmNwcCB8ICAxMTIgKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmggICAgICAgICB8ICAgIDIgKwogNyBmaWxlcyBjaGFuZ2VkLCAxMjIwIGluc2VydGlvbnMo
KyksIDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRTZXR0aW5ncy5jcHAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTkxNjUxYi4uZTJhYjMxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDYwIEBACisyMDExLTEwLTExICBOYXlhbiBLdW1hciBLICA8bmF5YW5ra0Bt
b3Rvcm9sYS5jb20+CisKKyAgICAgICAgW0dUS11bV0VCS0lUMl0gQWRkIFdlYktpdFNldHRpbmdz
IEdUSysgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjgzNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWJLaXRTZXR0aW5ncyBHVEsrIG9iamVjdCBpcyBjcmVhdGVkIGFuZCBmaXJzdCBzZXQgb2YK
KyAgICAgICAgQVBJJ3MgYXJlIHdyaXR0ZW4gdG8gZ2V0IG9yIHNldCB0aGUgcHJvcGVydGllcyBv
ZiBXZWJLaXRTZXR0aW5ncy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRlZCBuZXcg
ZmlsZXMgZm9yIGNvbXBpbGF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFNldHRpbmdzLmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0U2V0dGluZ3NQcml2YXRlOjpf
V2ViS2l0U2V0dGluZ3NQcml2YXRlKTogQ29uc3RydWN0b3IuCisgICAgICAgICh3ZWJLaXRTZXR0
aW5nc1NldFByb3BlcnR5KTogU2V0IHByb3BlcnR5IGZ1bmN0aW9uLgorICAgICAgICAod2ViS2l0
U2V0dGluZ3NHZXRQcm9wZXJ0eSk6IEdldCBwcm9wZXJ0eSBmdW5jdGlvbi4KKyAgICAgICAgKHdl
YktpdFNldHRpbmdzRmluYWxpemUpOiBDbGFzcyBmaW5hbGl6ZSBmdW5jdGlvbi4KKyAgICAgICAg
KHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0KTogQ2xhc3MgaW5pdCBmdW5jdGlvbi4KKyAgICAg
ICAgKHdlYmtpdF9zZXR0aW5nc19pbml0KTogSW5zdGFuY2UgaW5pdCBmdW5jdGlvbi4KKyAgICAg
ICAgKHdlYmtpdF9zZXR0aW5nc19uZXcpOiBDcmVhdGVzIFdlYktpdFNldHRpbmdzIEdPYmplY3Qu
CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KTogRnVuY3Rp
b24gdG8gZ2V0ICdlbmFibGUtamF2YXNjcmlwdCcgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0KTogRnVuY3Rpb24gdG8gc2V0ICdlbmFibGUt
amF2YXNjcmlwdCcgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2F1dG9f
bG9hZF9pbWFnZXMpOiBHZXQgdGhlICdhdXRvLWxvYWQtaW1hZ2VzJyBwcm9wZXJ0eS4KKyAgICAg
ICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyk6IFNldCB0aGUgJ2F1dG8t
bG9hZC1pbWFnZXMnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9sb2Fk
c19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UpOiBGdW5jdGlvbiB0byBnZXQK
KyAgICAgICAgJ2xvYWRzLWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZScgcHJv
cGVydHkuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9yaW5n
X2ltYWdlX2xvYWRfcHJlZmVyZW5jZSk6IEZ1bmN0aW9uIHRvIHNldAorICAgICAgICAnbG9hZHMt
aWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmZXJlbmNlJyBwcm9wZXJ0eS4KKyAgICAgICAg
KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hl
KTogRnVuY3Rpb24gdG8gZ2V0CisgICAgICAgICdlbmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRp
b24tY2FjaGUnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVf
b2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUpOiBGdW5jdGlvbiB0byBzZXQKKyAgICAgICAg
J2VuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZScgcHJvcGVydHkuCisgICAgICAg
ICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKTogR2V0IHRo
ZSBwcm9wZXJ0eSAnZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UnLgorICAgICAgICAod2Via2l0
X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSk6IFNldCB0aGUgcHJvcGVy
dHkgJ2VuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKTogR2V0IHRoZSBwcm9wZXJ0eSAnZW5hYmxlLWh0
bWw1LWRhdGFiYXNlJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1
X2RhdGFiYXNlKTogU2V0IHRoZSBwcm9wZXJ0eSAnZW5hYmxlLWh0bWw1LWRhdGFiYXNlJy4KKyAg
ICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yKTogR2V0IHByb3Bl
cnR5ICdlbmFibGUteHNzLWVkaXRvcicuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV94c3NfYXVkaXRvcik6IFNldCBwcm9wZXJ0eSAnZW5hYmxlLXhzcy1lZGl0b3InLgorICAg
ICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyk6IEdldCB0
aGUgcHJvcGVydHkgJ2VuYWJsZS1mcmFtZS1mbGF0dGVuaW5nJy4KKyAgICAgICAgKHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcpOiBTZXQgdGhlIHByb3BlcnR5ICdl
bmFibGUtZnJhbWUtZmxhdHRlbmluZycuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9wbHVnaW5zKTogR2V0IHRoZSBwcm9wZXJ0eSAnZW5hYmxlLXBsdWdpbnMnLgorICAgICAg
ICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyk6IFNldCB0aGUgcHJvcGVydHkg
J2VuYWJsZS1wbHVnaW5zJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ph
dmEpOiBGdW5jdGlvbiB0byBnZXQgJ2VuYWJsZS1qYXZhJyBwcm9wZXJ0eS4KKyAgICAgICAgKHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEpOiBGdW5jdGlvbiB0byBzZXQgJ2VuYWJsZS1q
YXZhJyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9j
YW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkpOiBHZXQgdGhlIHByb3BlcnR5CisgICAgICAg
ICdqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxseScuCisgICAgICAgICh3
ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNh
bGx5KTogU2V0IHRoZSBwcm9wZXJ0eQorICAgICAgICAnamF2YXNjcmlwdC1jYW4tb3Blbi13aW5k
b3dzLWF1dG9tYXRpY2FsbHknLgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
aHlwZXJsaW5rX2F1ZGl0aW5nKTogR2V0ICdlbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nJyBwcm9w
ZXJ0eS4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRp
dGluZyk6IFNldCAnZW5hYmxlLWh5cGVybGluay1hdWRpdGluZycgcHJvcGVydHkuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaDogQWRkZWQuIFB1YmxpYyBBUEkn
cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbTogQWRk
ZWQgbmV3IHRlc3QuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktp
dFNldHRpbmdzLmNwcDogQWRkZWQuCisgICAgICAgICh0ZXN0V2ViS2l0U2V0dGluZ3MpOiBBZGQg
V2ViS2l0U2V0dGluZyB1bml0IHRlc3QuCisgICAgICAgIChiZWZvcmVBbGwpOiBQcmUtdGVzdCBm
dW5jdGlvbi4KKyAgICAgICAgKGFmdGVyQWxsKTogUG9zdC10ZXN0IGZ1bmN0aW9uLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDogQWRkIFdlYktpdFNldHRpbmdzLmggdG8g
ZXhwb3NlZCBBUEkgbGlzdC4KKwogMjAxMS0xMC0xMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIGN1c3RvbSBzY3JvbGxiYXIgdGhlbWUgZm9y
IHVzZSBpbiBEUlQsIHRvIHJlZHVjZSBwaXhlbCBkaWZmcyBiZXR3ZWVuIHBsYXRmb3JtcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQppbmRleCAzNjA0NzJjLi5jOWU4ZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5h
bQpAQCAtNzMsNiArNzMsNyBAQCB3ZWJraXQyZ3RrX2hlYWRlcnMgPSBcCiAJJChXZWJLaXQyKS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRTZXR0aW5ncy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtNDc2
LDYgKzQ3Nyw4IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBf
QFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfU09VCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCBcCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmggXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNsaWVudC5jcHAgXAorCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcCBcCisJU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBcCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWEwNjk3YQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcApAQCAtMCww
ICsxLDg3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9u
LCAKKyAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IgCisgKiBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
TW90b3JvbGEgTW9iaWxpdHksIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3Jz
IG1heSAKKyAqIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgCisgKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCAKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIAorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViS2l0U2V0dGluZ3MuaCIKKworI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIK
KyNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1R5cGUuaD4KKyNpbmNsdWRlIDxnbGli
L2dpMThuLWxpYi5oPgorCitzdHJ1Y3QgX1dlYktpdFNldHRpbmdzUHJpdmF0ZSB7CisgICAgV0tS
ZXRhaW5QdHI8V0tQcmVmZXJlbmNlc1JlZj4gcHJlZmVyZW5jZXM7CisKKyAgICBfV2ViS2l0U2V0
dGluZ3NQcml2YXRlKCkKKyAgICB7CisgICAgICAgIHByZWZlcmVuY2VzID0gYWRvcHRXSyhXS1By
ZWZlcmVuY2VzQ3JlYXRlKCkpOworICAgIH0KK307CisKKy8qKgorICogU0VDVElPTjp3ZWJraXR3
ZWJzZXR0aW5ncworICogQHNob3J0X2Rlc2NyaXB0aW9uOiBDb250cm9sIHRoZSBiZWhhdmlvdXIg
b2YgYSAjV2ViS2l0V2ViVmlldworICoKKyAqICNXZWJLaXRTZXR0aW5ncyBjYW4gYmUgYXBwbGll
ZCB0byBhICNXZWJLaXRXZWJWaWV3IHRvIGNvbnRyb2wgdGV4dCBlbmNvZGluZywgCisgKiBjb2xv
ciwgZm9udCBzaXplcywgcHJpbnRpbmcgbW9kZSwgc2NyaXB0IHN1cHBvcnQsIGxvYWRpbmcgb2Yg
aW1hZ2VzIGFuZCB2YXJpb3VzIG90aGVyIHRoaW5ncy4gCisgKiBBZnRlciBjcmVhdGlvbiwgYSAj
V2ViS2l0U2V0dGluZ3Mgb2JqZWN0IGNvbnRhaW5zIGRlZmF1bHQgc2V0dGluZ3MuIAorICoKKyAq
IDxpbmZvcm1hbGV4YW1wbGU+PHByb2dyYW1saXN0aW5nPgorICogLzwhLS0gLS0+KiBDcmVhdGUg
YSBuZXcgI1dlYktpdFNldHRpbmdzIGFuZCBkaXNhYmxlIEphdmFTY3JpcHQuICo8IS0tIC0tPi8K
KyAqIFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF9zZXR0aW5nc19uZXcgKCk7Cisg
KiBnX29iamVjdF9zZXQgKEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1qYXZhLXNjcmlwdCIs
IEZBTFNFLCBOVUxMKTsKKyAqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzIChXRUJL
SVRfV0VCX1ZJRVcgKG15X3dlYnZpZXcpLCBzZXR0aW5ncyk7CisgKiA8L3Byb2dyYW1saXN0aW5n
PjwvaW5mb3JtYWxleGFtcGxlPgorICovCisKKworR19ERUZJTkVfVFlQRShXZWJLaXRTZXR0aW5n
cywgd2Via2l0X3NldHRpbmdzLCBHX1RZUEVfT0JKRUNUKQorCitlbnVtIHsKKyAgICBQUk9QXzAs
CisKKyAgICBQUk9QX0VOQUJMRV9KQVZBU0NSSVBULAorICAgIFBST1BfQVVUT19MT0FEX0lNQUdF
UywKKyAgICBQUk9QX0xPQURTX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5DRSwK
KyAgICBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRSwKKyAgICBQUk9Q
X0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFLAorICAgIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFC
QVNFLAorICAgIFBST1BfRU5BQkxFX1hTU19BVURJVE9SLAorICAgIFBST1BfRU5BQkxFX0ZSQU1F
X0ZMQVRURVJJTkcsCisgICAgUFJPUF9FTkFCTEVfUExVR0lOUywKKyAgICBQUk9QX0VOQUJMRV9K
QVZBLAorICAgIFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFks
CisgICAgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HLAorfTsKKworc3RhdGljIHZvaWQg
d2ViS2l0U2V0dGluZ3NTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwg
Y29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktp
dFNldHRpbmdzKiBzZXR0aW5ncyA9IFdFQktJVF9TRVRUSU5HUyhvYmplY3QpOworIAorICAgIHN3
aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZBU0NSSVBUOgorICAgICAg
ICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRpbmdzLCBnX3ZhbHVl
X2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9BVVRP
X0xPQURfSU1BR0VTOgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFn
ZXMoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX0xPQURTX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfUFJFRkVSRU5D
RToKKyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFn
ZV9sb2FkX3ByZWZlcmVuY2Uoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNB
VElPTl9DQUNIRToKKyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93
ZWJfYXBwbGljYXRpb25fY2FjaGUoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9S
QUdFOgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9y
YWdlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0U6CisgICAgICAgIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9i
b29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfWFNT
X0FVRElUT1I6CisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9y
KHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRFUklORzoKKyAgICAgICAgd2Via2l0X3Nl
dHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncywgZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1BM
VUdJTlM6CisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGlu
Z3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0VOQUJMRV9KQVZBOgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9q
YXZhKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9KQVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxM
WToKKyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRv
d3NfYXV0b21hdGljYWxseShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hZUEVSTElOS19BVURJVElORzoK
KyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNl
dHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmpl
Y3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0
aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzID0gV0VCS0lUX1NFVFRJTkdTKG9iamVjdCk7CisKKyAgICBz
d2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQVNDUklQVDoKKyAgICAg
ICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
amF2YXNjcmlwdChzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVVU
T19MT0FEX0lNQUdFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0
X3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9MT0FEU19JQ09OU19JR05PUklOR19JTUFHRV9MT0FEX1BSRUZFUkVO
Q0U6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19n
ZXRfbG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlKHNldHRpbmdzKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05fQ0FDSEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9z
ZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdz
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RP
UkFHRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0aW5ncykpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNFOgorICAgICAgICBnX3ZhbHVl
X3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRh
YmFzZShzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1hT
U19BVURJVE9SOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0
dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncykpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRURVJJTkc6CisgICAgICAgIGdfdmFsdWVf
c2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0
ZW5pbmcoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9Q
TFVHSU5TOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9wbHVnaW5zKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9FTkFCTEVfSkFWQToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwg
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YShzZXR0aW5ncykpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FM
TFk6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19n
ZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3MpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkc6
CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2Jq
ZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3Rh
dGljIHZvaWQgd2ViS2l0U2V0dGluZ3NGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAg
V0VCS0lUX1NFVFRJTkdTKG9iamVjdCktPnByaXYtPn5XZWJLaXRTZXR0aW5nc1ByaXZhdGUoKTsK
KyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfc2V0dGluZ3NfcGFyZW50X2NsYXNzKS0+ZmluYWxp
emUob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3NldHRpbmdzX2NsYXNzX2luaXQo
V2ViS2l0U2V0dGluZ3NDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0
Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgZ09iamVjdENsYXNzLT5zZXRfcHJv
cGVydHkgPSB3ZWJLaXRTZXR0aW5nc1NldFByb3BlcnR5OworICAgIGdPYmplY3RDbGFzcy0+Z2V0
X3Byb3BlcnR5ID0gd2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eTsKKyAgICBnT2JqZWN0Q2xhc3Mt
PmZpbmFsaXplID0gd2ViS2l0U2V0dGluZ3NGaW5hbGl6ZTsKKworICAgIEdQYXJhbUZsYWdzIHJl
YWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MgPSBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VC
S0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKTsKKworICAgIC8qKgorICAg
ICogV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWphdmFzY3JpcHQKKyAgICAqCisgICAgKiBEZXRlcm1p
bmVzIHdoZXRoZXIgb3Igbm90IEphdmFTY3JpcHQgZXhlY3V0ZXMgd2l0aGluIGEgcGFnZS4KKyAg
ICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RD
bGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0pB
VkFTQ1JJUFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3Nw
ZWNfYm9vbGVhbigiZW5hYmxlLWphdmFzY3JpcHQiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEphdmFTY3JpcHQiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF8oIkVuYWJsZSBKYXZhU2NyaXB0LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFt
RmxhZ3MpKTsKKyAgICAKKyAgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmF1dG8tbG9hZC1p
bWFnZXMKKyAgICAqCisgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW1hZ2VzIHNob3VsZCBiZSBh
dXRvbWF0aWNhbGx5IGxvYWRlZCBvciBub3QuCisgICAgKiBPbiBkZXZpY2VzIHdoZXJlIG5ldHdv
cmsgYmFuZHdpZHRoIGlzIG9mIGNvbmNlcm4sIGl0IG1pZ2h0IGJlCisgICAgKiB1c2VmdWwgdG8g
dHVybiB0aGlzIHByb3BlcnR5IG9mZi4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBST1BfQVVUT19MT0FEX0lNQUdFUywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJhdXRvLWxvYWQtaW1hZ2VzIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF8oIkF1dG8gbG9hZCBpbWFnZXMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkxvYWQgaW1hZ2VzIGF1dG9tYXRpY2FsbHkuIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworICAgIAorICAgIC8qKgor
ICAgICogV2ViS2l0U2V0dGluZ3M6bG9hZHMtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1wcmVm
ZXJlbmNlCisgICAgKgorICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgc2l0ZSBjYW4gbG9hZCBm
YXZpY29ucyBpcnJlc3BlY3RpdmUKKyAgICAqIG9mIHRoZSB2YWx1ZSBvZiAjV2ViU2V0dGluZ3M6
YXV0by1sb2FkLWltYWdlcy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBST1BfTE9BRFNfSUNPTlNfSUdOT1JJTkdfSU1BR0VfTE9BRF9QUkVGRVJFTkNFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4o
ImxvYWRzLWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZmVyZW5jZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJMb2FkcyBz
aXRlIGljb25zIGlnbm9yaW5nIGltYWdlIGxvYWQgcHJlZmVyZW5jZSIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0
byBsb2FkIHNpdGUgaWNvbiBpZ25vcmluZyBpbWFnZSBsb2FkIHByZWZlcmVuY2UuIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxT
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2Vi
S2l0U2V0dGluZ3M6ZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlCisgICAgKgor
ICAgICogV2hldGhlciB0byBlbmFibGUgSFRNTDUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2Fj
aGUgc3VwcG9ydC4gT2ZmbGluZQorICAgICogd2ViIGFwcGxpY2F0aW9uIGNhY2hlIGVuc3VyZXMg
d2ViIGFwcGxpY2F0aW9ucyBhcmUgYXZhaWxhYmxlIGV2ZW4gd2hlbgorICAgICogdGhlIHVzZXIg
aXMgbm90IGNvbm5lY3RlZCB0byB0aGUgbmV0d29yay4KKyAgICAqIAorICAgICogSFRNTDUgb2Zm
bGluZSB3ZWIgYXBwbGljYXRpb24gc3BlY2lmaWNhdGlvbiBpcyBhdmFpbGFibGUgYXQKKyAgICAq
IGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvb2ZmbGluZS5odG1sLgorICAgICoKKyAgICAq
LworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJf
QVBQTElDQVRJT05fQ0FDSEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF8oIkVuYWJsZSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlvbiBjYWNoZSIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhl
ciB0byBlbmFibGUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUuIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVh
ZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRTZXR0
aW5nczplbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZToKKyAgICAqCisgICAgKiBXaGV0aGVyIHRv
IGVuYWJsZSBIVE1MNSBsb2NhbCBzdG9yYWdlIHN1cHBvcnQuIExvY2FsIHN0b3JhZ2UgcHJvdmlk
ZXMKKyAgICAqIHNpbXBsZSBzeW5jaHJvbm91cyBzdG9yYWdlIGFjY2Vzcy4KKyAgICAqCisgICAg
KiBIVE1MNSBsb2NhbCBzdG9yYWdlIHNwZWNpZmljYXRpb24gaXMgYXZhaWxhYmxlIGF0CisgICAg
KiBodHRwOi8vZGV2LnczLm9yZy9UUi93ZWJzdG9yYWdlLy4KKyAgICAqCisgICAgKi8KKyAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVh
bigiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEhUTUw1IGxvY2FsIHN0
b3JhZ2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IExvY2FsIFN0b3JhZ2Ugc3VwcG9y
dC4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAgICAvKioK
KyAgICAqIFdlYktpdFNldHRpbmdzOmVuYWJsZS1odG1sNS1kYXRhYmFzZToKKyAgICAqCisgICAg
KiBXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBjbGllbnQtc2lkZSBTUUwgZGF0YWJhc2Ugc3VwcG9y
dC4gQ2xpZW50LXNpZGUKKyAgICAqIFNRTCBkYXRhYmFzZSBhbGxvd3Mgd2ViIHBhZ2VzIHRvIHN0
b3JlIHN0cnVjdHVyZWQgZGF0YSBhbmQgYmUgYWJsZSB0bworICAgICogdXNlIFNRTCB0byBtYW5p
cHVsYXRlIHRoYXQgZGF0YSBhc3luY2hyb25vdXNseS4KKyAgICAqCisgICAgKiBIVE1MNSBkYXRh
YmFzZSBzcGVjaWZpY2F0aW9uIGlzIGF2YWlsYWJsZSBhdAorICAgICogaHR0cDovL3d3dy53My5v
cmcvVFIvd2ViZGF0YWJhc2UvLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh0bWw1LWRhdGFi
YXNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF8oIkVuYWJsZSBIVE1MNSBkYXRhYmFzZSIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFibGUg
SFRNTDUgZGF0YWJhc2Ugc3VwcG9ydC4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJh
bUZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmVuYWJsZS14c3MtYXVk
aXRvcgorICAgICoKKyAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBYU1MgYXVkaXRvci4gVGhp
cyBmZWF0dXJlIGZpbHRlcnMgc29tZSBraW5kcyBvZgorICAgICogcmVmbGVjdGl2ZSBYU1MgYXR0
YWNrcyBvbiB2dWxuZXJhYmxlIHdlYiBzaXRlcy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX1hTU19BVURJVE9SLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS14c3Mt
YXVkaXRvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfKCJFbmFibGUgWFNTIGF1ZGl0b3IiKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxl
IHRoZSBYU1MgYXVkaXRvci4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdz
KSk7CisKKworICAgIC8qKgorICAgICogV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWZyYW1lLWZsYXR0
ZW5pbmcKKyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgZnJhbWUgZmxhdHRlbmlu
Zy4gV2l0aCB0aGlzIHNldHRpbmcgZWFjaCBzdWJmcmFtZSBpcyBleHBhbmRlZAorICAgICogdG8g
aXRzIGNvbnRlbnRzLCB3aGljaCB3aWxsIGZsYXR0ZW4gYWxsIHRoZSBmcmFtZXMgdG8gYmVjb21l
IG9uZSBzY3JvbGxhYmxlIHBhZ2UuCisgICAgKiBPbiB0b3VjaCBkZXZpY2VzLCBzY3JvbGxhYmxl
IHN1YmZyYW1lcyBvbiBhIHBhZ2UgY2FuIHJlc3VsdCBpbiBhIGNvbmZ1c2luZyB1c2VyIGV4cGVy
aWVuY2UuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9Q
X0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8o
IkVuYWJsZSBmcmFtZSBmbGF0dGVuaW5nIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHRvIGVuYWJsZSBmcmFtZSBm
bGF0dGVuaW5nLiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisK
KyAgIC8qKgorICAgICogV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLXBsdWdpbnM6CisgICAgKgorICAg
ICogRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBwbHVnaW5zIG9uIHRoZSBwYWdlIGFyZSBlbmFi
bGVkLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Z09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9F
TkFCTEVfUExVR0lOUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19ib29sZWFuKCJlbmFibGUtcGx1Z2lucyIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgcGx1Z2lucyIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XygiRW5hYmxlIGVtYmVkZGVkIHBsdWdpbiBvYmplY3RzLiIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNv
bnN0cnVjdFBhcmFtRmxhZ3MpKTsKKyAgICAKKyAgIC8qKgorICAgICogV2ViS2l0U2V0dGluZ3M6
ZW5hYmxlLWphdmE6CisgICAgKgorICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBKYXZh
IGlzIGVuYWJsZWQgb24gdGhlIHBhZ2UuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9KQVZBLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1qYXZhIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJs
ZSBKYXZhIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfKCJXaGV0aGVyIEphdmEgc3VwcG9ydCBzaG91bGQgYmUgZW5hYmxlZC4iKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAgICAvKioKKyAgICAq
IFdlYktpdFNldHRpbmdzOmphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5
CisgICAgKgorICAgICogV2hldGhlciBKYXZhU2NyaXB0IGNhbiBvcGVuIHBvcHVwIHdpbmRvd3Mg
YXV0b21hdGljYWxseSB3aXRob3V0IHVzZXIKKyAgICAqIGludGVydmVudGlvbi4KKyAgICAqCisg
ICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfSkFWQVNDUklQVF9DQU5f
T1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiamF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dz
LWF1dG9tYXRpY2FsbHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXygiSmF2YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9tYXRp
Y2FsbHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF8oIldoZXRoZXIgSmF2YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3dzIGF1dG9tYXRp
Y2FsbHkuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKworICAg
IC8qKgorICAgICogV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWh5cGVybGluay1hdWRpdGluZzoKKyAg
ICAqCisgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGh5cGVybGluayBhdWRpdGluZyBp
cyBlbmFibGVkLgorICAgICoKKyAgICAqIEh5cGVybGluayBhdWRpdGluZyBzcGVjaWZpY2F0aW9u
IGlzIGF2YWlsYWJsZSBhdAorICAgICogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1h
cHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvbGlua3MuaHRtbCNoeXBlcmxpbmstYXVkaXRpbmcu
CisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2Jq
ZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJM
RV9IWVBFUkxJTktfQVVESVRJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJF
bmFibGUgaHlwZXJsaW5rIGF1ZGl0aW5nIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIDxhIHBpbmc+IHNob3VsZCBi
ZSBhYmxlIHRvIHNlbmQgcGluZ3MuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFt
RmxhZ3MpKTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdl
YktpdFNldHRpbmdzUHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3Nf
aW5pdChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgV2ViS2l0U2V0dGluZ3NQcml2
YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHNldHRpbmdzLCBXRUJLSVRf
VFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFNldHRpbmdzUHJpdmF0ZSk7CisgICAgc2V0dGluZ3Mt
PnByaXYgPSBwcml2OworICAgIG5ldyAocHJpdikgV2ViS2l0U2V0dGluZ3NQcml2YXRlKCk7Cit9
CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX25ldzoKKyAqCisgKiBDcmVhdGVzIGEgbmV3ICNX
ZWJLaXRTZXR0aW5ncyBpbnN0YW5jZSB3aXRoIGRlZmF1bHQgdmFsdWVzLiBJdCBtdXN0CisgKiBi
ZSBtYW51YWxseSBhdHRhY2hlZCB0byBhIFdlYlZpZXcuCisgKgorICogUmV0dXJuczogYSBuZXcg
I1dlYktpdFNldHRpbmdzIGluc3RhbmNlLgorICoqLworV2ViS2l0U2V0dGluZ3MqIHdlYmtpdF9z
ZXR0aW5nc19uZXcoKQoreworICAgIHJldHVybiBXRUJLSVRfU0VUVElOR1MoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgTlVMTCkpOworfQorCisvKioKKyAqIHdlYmtpdF9z
ZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQ6CisgKgorICogR2V0IHRoZSBwcm9wZXJ0eSAj
V2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWphdmFzY3JpcHQuCisgKiBAc2V0dGluZ3M6IGEgI1dlYktp
dFNldHRpbmdzCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgSmF2YVNjcmlwdCBpcyBlbmFibGVk
IG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9qYXZhc2NyaXB0KCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX2phdmFzY3JpcHQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxT
RSk7CisKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHNldHRp
bmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRp
bmdzX3NldF9lbmFibGVfamF2YXNjcmlwdDoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGlu
Z3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgdGhlIHByb3BlcnR5
ICNXZWJLaXRTZXR0aW5nczplbmFibGUtamF2YXNjcmlwdC4KKyAqCisgKiBAc2VlX2Fsc286IHdl
YmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoKQorICoqLwordm9pZCB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywg
Z2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
U0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9
IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dl
dEphdmFTY3JpcHRFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3Vy
cmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5j
ZXNTZXRKYXZhU2NyaXB0RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7
CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1qYXZhc2Ny
aXB0Iik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2Vz
OgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAqIEdldCB0aGUgcHJvcGVy
dHkgI1dlYktpdFNldHRpbmdzOmF1dG8tbG9hZC1pbWFnZXMuCisgKgorICogUmV0dXJuczogJVRS
VUUgSWYgYXV0byBsb2FkaW5nIG9mIGltYWdlcyBpcyBlbmFibGVkIG9yICVGQUxTRSBvdGhlcndp
c2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFn
ZXMoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2Vz
KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgcmV0dXJuIFdL
UHJlZmVyZW5jZXNHZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoc2V0dGluZ3MtPnByaXYtPnBy
ZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2F1dG9f
bG9hZF9pbWFnZXM6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBAZW5hYmxl
ZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHRoZSBwcm9wZXJ0eSAjV2ViS2l0U2V0dGlu
Z3M6YXV0by1sb2FkLWltYWdlcy4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19n
ZXRfYXV0b19sb2FkX2ltYWdlcygpCisgKiovCit2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0
b19sb2FkX2ltYWdlcyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQp
Cit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdz
KSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsK
KyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0ltYWdlc0F1dG9t
YXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUg
PT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldExvYWRz
SW1hZ2VzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7Cisg
ICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImF1dG8tbG9hZC1pbWFnZXMi
KTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2xvYWRzX2ljb25zX2lnbm9yaW5n
X2ltYWdlX2xvYWRfcHJlZmVyZW5jZToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MK
KyAqCisgKiBHZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczpsb2Fkcy1pY29ucy1pZ25v
cmluZy1pbWFnZS1sb2FkLXByZWZlcmVuY2UuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgc2l0
ZSBpY29uIGNhbiBiZSBsb2FkZWQgaXJyZXNwZWN0aXZlIG9mIGltYWdlIGxvYWRpbmcgcHJlZmVy
ZW5jZSBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3NldHRp
bmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UoKQorICoq
LworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFn
ZV9sb2FkX3ByZWZlcmVuY2UoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7
CisKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFn
ZUxvYWRpbmdQcmVmZXJlbmNlKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9
CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX3NldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFn
ZV9sb2FkX3ByZWZlcmVuY2U6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBA
ZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHRoZSBwcm9wZXJ0eSAjV2ViS2l0
U2V0dGluZ3M6bG9hZHMtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmZXJlbmNlLgorICoK
KyAqIEBzZWVfYWxzbzogd2Via2l0X3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmluZ19p
bWFnZV9sb2FkX3ByZWZlcmVuY2UoKQorICogICAgICAgICAgICAgd2Via2l0X3NldHRpbmdzX3Nl
dF9hdXRvX2xvYWRfaW1hZ2VzKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9sb2Fk
c19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVuY2UoV2ViS2l0U2V0dGluZ3MqIHNl
dHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRl
KiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZl
cmVuY2VzR2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2UocHJp
di0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldExvYWRzU2l0ZUljb25zSWdu
b3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNlKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFi
bGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAibG9hZHMtaWNv
bnMtaWdub3JpbmctaW1hZ2UtbG9hZC1wcmVmZXJlbmNlIik7Cit9CisKKy8qKgorICogd2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGU6CisgKiBA
c2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHRoZSBwcm9wZXJ0eSAjV2Vi
S2l0U2V0dGluZ3M6ZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlLgorICoKKyAq
IFJldHVybnM6ICVUUlVFIElmIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIHN1
cHBvcnQgaXMgZW5hYmxlZCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqIEBzZWVfYWxzbzog
d2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUo
KQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJf
YXBwbGljYXRpb25fY2FjaGUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7
CisKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
RW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAq
IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hl
OgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRv
IGJlIHNldAorICoKKyAqIFNldCB0aGUgcHJvcGVydHkgI1dlYktpdFNldHRpbmdzOmVuYWJsZS1v
ZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9z
ZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKCkKKyAqKi8K
K3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25f
Y2FjaGUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisg
ICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9v
bCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2Fj
aGVFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVl
ID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRPZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVu
YWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUt
b2ZmbGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUiKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlOgorICogQHNldHRpbmdzOiBhICNX
ZWJLaXRTZXR0aW5ncworICoKKyAqIEdldCB0aGUgcHJvcGVydHkgI1dlYktpdFNldHRpbmdzOmVu
YWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlLgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEhUTUw1
IGxvY2FsIHN0b3JhZ2Ugc3VwcG9ydCBpcyBlbmFibGVkIG9yICVGQUxTRSBvdGhlcndpc2UuCisg
KgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9z
dG9yYWdlKCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1
X2xvY2FsX3N0b3JhZ2UoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisK
KyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldExvY2FsU3RvcmFnZUVuYWJsZWQoc2V0dGluZ3Mt
PnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRT
ZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUgcHJv
cGVydHkgI1dlYktpdFNldHRpbmdzOmVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlLgorICoKKyAq
IEBzZWVfYWxzbzogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFn
ZSgpCisgKiovCit2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0
b3JhZ2UoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisg
ICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9v
bCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0TG9jYWxTdG9yYWdlRW5hYmxl
ZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5
KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlIik7Cit9CisK
Ky8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2U6CisgKiBA
c2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHRoZSBwcm9wZXJ0eSAjV2Vi
S2l0U2V0dGluZ3M6ZW5hYmxlLWh0bWw1LWRhdGFiYXNlLgorICoKKyAqIFJldHVybnM6ICVUUlVF
IElmIEhUTUw1IGRhdGFiYXNlIHN1cHBvcnQgaXMgZW5hYmxlZCBvciAlRkFMU0Ugb3RoZXJ3aXNl
LgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0
YWJhc2UoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVf
ZGF0YWJhc2UoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICBy
ZXR1cm4gV0tQcmVmZXJlbmNlc0dldERhdGFiYXNlc0VuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnBy
ZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9odG1sNV9kYXRhYmFzZToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBl
bmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRT
ZXR0aW5nczplbmFibGUtaHRtbDUtZGF0YWJhc2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZSgpCisgKiovCit2b2lkIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5n
cywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJp
diA9IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNl
c0dldERhdGFiYXNlc0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGlmIChj
dXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJl
bmNlc1NldERhdGFiYXNlc0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQp
OworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtaHRtbDUt
ZGF0YWJhc2UiKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3Nf
YXVkaXRvcjoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhl
IHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFibGUteHNzLWF1ZGl0b3IuCisgKgorICogUmV0
dXJuczogJVRSVUUgSWYgeHNzIGF1ZGl0aW5nIGlzIGVuYWJsZWQgb3IgJUZBTFNFIG90aGVyd2lz
ZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRp
dG9yKCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRp
dG9yKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgcmV0dXJu
IFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRpdG9yRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVy
ZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3hz
c19hdWRpdG9yOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICogQGVuYWJsZWQ6
IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUgcHJvcGVydHkgI1dlYktpdFNldHRpbmdz
OmVuYWJsZS14c3MtYXVkaXRvci4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX3hzc19hdWRpdG9yKCkKKyAqKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9l
bmFibGVfeHNzX2F1ZGl0b3IoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFi
bGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0
aW5ncykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnBy
aXY7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0WFNTQXVkaXRvckVu
YWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0g
ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldFhTU0F1ZGl0
b3JFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVj
dF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXhzcy1hdWRpdG9yIik7Cit9CisK
Ky8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZzoKKyAq
IEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhlIHByb3BlcnR5ICNX
ZWJLaXRTZXR0aW5nczplbmFibGUtZnJhbWUtZmxhdHRlbmluZy4KKyAqLgorICogUmV0dXJuczog
JVRSVUUgSWYgZnJhbWUgZmxhdHRlbmluZyBpcyBlbmFibGVkIG9yICVGQUxTRSBvdGhlcndpc2Uu
CisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0
dGVuaW5nKCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1l
X2ZsYXR0ZW5pbmcoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAg
ICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoc2V0dGluZ3Mt
PnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0
aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUgcHJvcGVy
dHkgI1dlYktpdFNldHRpbmdzOmVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nLgorICoKKyAqIEBzZWVf
YWxzbzogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZygpCisgKiov
Cit2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoV2ViS2l0
U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0U2V0
dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9vbCBjdXJyZW50VmFs
dWUgPSBXS1ByZWZlcmVuY2VzR2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2LT5wcmVmZXJl
bmNlcy5nZXQoKSk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JK
RUNUKHNldHRpbmdzKSwgImVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIik7Cit9CisKKy8qKgorICog
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2luczoKKyAqIEBzZXR0aW5nczogYSAjV2Vi
S2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFi
bGUtcGx1Z2lucy4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBwbHVnaW5zIGFyZSBlbmFibGVk
IG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9wbHVnaW5zKCkKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX3BsdWdpbnMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisK
KyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldFBsdWdpbnNFbmFibGVkKHNldHRpbmdzLT5wcml2
LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX3NldF9l
bmFibGVfcGx1Z2luczoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFi
bGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0
aW5nczplbmFibGUtcGx1Z2lucy4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX3BsdWdpbnMoKQorICoqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9wbHVnaW5zKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sK
KyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsK
KworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAg
IGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFBsdWdpbnNFbmFibGVkKHByaXYt
PnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRQbHVnaW5zRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JK
RUNUKHNldHRpbmdzKSwgImVuYWJsZS1wbHVnaW5zIik7Cit9CisKKy8qKgorICogd2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfamF2YToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MK
KyAqCisgKiBHZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0aW5nczplbmFibGUtamF2YS4KKyAq
CisgKiBSZXR1cm5zOiAlVFJVRSBJZiBKYXZhIGlzIGVuYWJsZWQgb3IgJUZBTFNFIG90aGVyd2lz
ZS4KKyAqCisgKiBAc2VlX2Fsc286IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEoKQor
ICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YShXZWJLaXRTZXR0
aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAgIHJldHVybiBXS1ByZWZlcmVuY2Vz
R2V0SmF2YUVuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhOgorICogQHNldHRpbmdzOiBh
ICNXZWJLaXRTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNl
dCB0aGUgcHJvcGVydHkgI1dlYktpdFNldHRpbmdzOmVuYWJsZS1qYXZhLgorICoKKyAqIEBzZWVf
YWxzbzogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YSgpCisgKiovCit2b2lkIHdlYmtp
dF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9v
bGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRU
SU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0
dGluZ3MtPnByaXY7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0SmF2
YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUg
PT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldEphdmFF
bmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9u
b3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWphdmEiKTsKK30KKworLyoqCisgKiB3
ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNh
bGx5OgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAqIEdldCB0aGUgcHJv
cGVydHkgI1dlYktpdFNldHRpbmdzOmphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0
aWNhbGx5LgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEphdmFTY3JpcHQgY2FuIG9wZW4gd2lu
ZG93IGF1dG9tYXRpY2FsbHkgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiBAc2VlX2Fsc286
IHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRp
Y2FsbHkoKQorICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nh
bl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5n
cyksIEZBTFNFKTsKKworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdENhbk9w
ZW5XaW5kb3dzQXV0b21hdGljYWxseShzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkp
OworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93
aW5kb3dzX2F1dG9tYXRpY2FsbHk6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisg
KiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHRoZSBwcm9wZXJ0eSAjV2Vi
S2l0U2V0dGluZ3M6amF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHkuCisg
KgorICogQHNlZV9hbHNvOiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5f
d2luZG93c19hdXRvbWF0aWNhbGx5KCkKKyAqKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9q
YXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZh
dGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJl
ZmVyZW5jZXNHZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByaXYtPnBy
ZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRv
d3NBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBn
X29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiamF2YXNjcmlwdC1jYW4tb3Blbi13
aW5kb3dzLWF1dG9tYXRpY2FsbHkiKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmc6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRp
bmdzCisgKgorICogR2V0IHRoZSBwcm9wZXJ0eSAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWh5cGVy
bGluay1hdWRpdGluZy4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBoeXBlciBsaW5rIGF1ZGl0
aW5nIGlzIGVuYWJsZWQgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiBAc2VlX2Fsc286IHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZygpCisgKiovCitnYm9v
bGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoV2ViS2l0
U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gV0tQcmVmZXJl
bmNlc0dldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5j
ZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVy
bGlua19hdWRpdGluZzoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFi
bGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgdGhlIHByb3BlcnR5ICNXZWJLaXRTZXR0
aW5nczplbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nLgorICoKKyAqIEBzZWVfYWxzbzogd2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKCkKKyAqKi8KK3ZvaWQgd2Vi
a2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKFdlYktpdFNldHRpbmdz
KiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJp
dmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQ
cmVmZXJlbmNlc0dldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5n
ZXQoKSk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnBy
ZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qo
c2V0dGluZ3MpLCAiZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyIpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IxMDUzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmgKQEAgLTAsMCArMSwx
NjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgCisg
KiBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZSBtZXQ6CisgKgorICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCAKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCAK
KyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIAorICogb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1vdG9y
b2xhIE1vYmlsaXR5LCBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
CisgKiBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IAorICogc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMgCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCAKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSAKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAor
ICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIAorICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lO
U0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3
ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisj
aWZuZGVmIFdlYktpdFNldHRpbmdzX2gKKyNkZWZpbmUgV2ViS2l0U2V0dGluZ3NfaAorCisjaW5j
bHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4K
KworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUyAgICAg
ICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1NFVFRJ
TkdTKG9iaikgICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmop
LCBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFNldHRpbmdzKSkKKyNkZWZpbmUgV0VC
S0lUX1NFVFRJTkdTX0NMQVNTKGtsYXNzKSAgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNU
KChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFNldHRpbmdzQ2xhc3Mp
KQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKG9iaikgICAgICAgICAoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUykpCisjZGVm
aW5lIFdFQktJVF9JU19XRUJfU0VUVElOR1NfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xB
U1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTKSkKKyNkZWZpbmUgV0VC
S0lUX1NFVFRJTkdTX0dFVF9DTEFTUyhvYmopICAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xB
U1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFNldHRpbmdzQ2xhc3Mp
KQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0U2V0dGluZ3MgV2ViS2l0U2V0dGluZ3M7Cit0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0U2V0dGluZ3NDbGFzcyBXZWJLaXRTZXR0aW5nc0NsYXNzOwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFNldHRpbmdzUHJpdmF0ZSBXZWJLaXRTZXR0aW5nc1ByaXZhdGU7
CisKK3N0cnVjdCBfV2ViS2l0U2V0dGluZ3MgeworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNl
OworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJL
aXRTZXR0aW5nc0NsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAg
LyogUGFkZGluZyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLworICAgIHZvaWQgKCpfd2Via2l0X3Jl
c2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOwor
ICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0
X3Jlc2VydmVkNCkgKHZvaWQpOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3NldHRp
bmdzX2dldF90eXBlKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFNldHRpbmdzICoKK3dlYmtp
dF9zZXR0aW5nc19uZXcodm9pZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0
aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJL
aXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5n
c19zZXRfZW5hYmxlX2phdmFzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRT
ZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9B
UEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xl
YW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRf
bG9hZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlIChXZWJLaXRTZXR0aW5n
cyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfbG9h
ZHNfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9wcmVmZXJlbmNlIChXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2Nh
Y2hlICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hl
ICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxl
ZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0
bWw1X2xvY2FsX3N0b3JhZ2UgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1
X2xvY2FsX3N0b3JhZ2UgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtp
dF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlICAgICAgICAgICAgICAgICAgICAg
IChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CitXRUJL
SVRfQVBJIGdib29sZWFuCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvciAg
ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0VC
S0lUX0FQSSB2b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvciAgICAg
ICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdi
b29sZWFuIGVuYWJsZWQpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0
X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGlu
Z3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXRUJLSVRfQVBJIGdi
b29sZWFuCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVu
YWJsZWQpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9qYXZhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNl
dHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9q
YXZhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRp
bmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3
ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNh
bGx5ICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5
ICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOwor
CitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxp
bmtfYXVkaXRpbmcgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKTsK
KworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtf
YXVkaXRpbmcgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdib29sZWFuIGVuYWJsZWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogd2Via2l0
d2Vic2V0dGluZ3NfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbQppbmRleCBmZTFhZGM5Li5hYjQxYzRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5h
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmls
ZS5hbQpAQCAtMSw3ICsxLDggQEAKIFRFU1RfUFJPR1MgKz0gXAogCVByb2dyYW1zL1dlYktpdDJB
UElUZXN0cy9UZXN0V2ViS2l0V2ViQ29udGV4dCBcCiAJUHJvZ3JhbXMvV2ViS2l0MkFQSVRlc3Rz
L1Rlc3RXZWJLaXRXZWJWaWV3IFwKLQlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdFdlYktp
dFdlYkxvYWRlckNsaWVudAorCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0V2ViS2l0V2Vi
TG9hZGVyQ2xpZW50IFwKKwlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdFdlYktpdFNldHRp
bmdzCiAKIG5vaW5zdF9QUk9HUkFNUyArPSAkKFRFU1RfUFJPR1MpCiB3ZWJraXQyX3Rlc3RzX2Nw
cGZsYWdzID0gXApAQCAtNjAsMyArNjEsOCBAQCBQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVz
dFdlYktpdFdlYkxvYWRlckNsaWVudF9DUFBGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19jcAogUHJv
Z3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RXZWJLaXRXZWJMb2FkZXJDbGllbnRfTERBREQgPSAk
KHdlYmtpdDJfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdFdlYktp
dFdlYkxvYWRlckNsaWVudF9MREZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxhZ3MpCiAKK1By
b2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0V2ViS2l0U2V0dGluZ3NfU09VUkNFUyA9IFwKKwlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0U2V0dGluZ3Mu
Y3BwCitQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdFdlYktpdFNldHRpbmdzX0NQUEZMQUdT
ID0gJCh3ZWJraXQyX3Rlc3RzX2NwcGZsYWdzKQorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rl
c3RXZWJLaXRTZXR0aW5nc19MREFERCA9ICQod2Via2l0Ml90ZXN0c19sZGFkZCkKK1Byb2dyYW1z
X1dlYktpdDJBUElUZXN0c19UZXN0V2ViS2l0U2V0dGluZ3NfTERGTEFHUyA9ICQod2Via2l0Ml90
ZXN0c19sZGZsYWdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvVGVzdFdlYktpdFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNzRkNGE5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTAs
MCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHks
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlv
biwgCisgKiBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSBtZXQ6CisgKgorICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCAKKyAqIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlLCAKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIAorICogb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgCisgKiBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IAorICogc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCAK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSAKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIAorICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIAorICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSAiVGVzdE1haW4uaCIKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8
d2Via2l0Mi93ZWJraXQyLmg+CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRTZXR0aW5ncyhUZXN0
KiwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJr
aXRfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBKYXZhU2NyaXB0IGlzIGVuYWJsZWQgYnkgZGVm
YXVsdC4KKyAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0
KHNldHRpbmdzKSk7CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdChz
ZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9qYXZhc2NyaXB0KHNldHRpbmdzKSk7CisKKyAgICAvLyBCeSBkZWZhdWx0IGF1dG8tbG9hZC1p
bWFnZSBpcyB0cnVlLgorICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfYXV0b19sb2Fk
X2ltYWdlcyhzZXR0aW5ncykpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2lt
YWdlcyhzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0
X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MpKTsKKworICAgIC8vIGxvYWQtaWNvbi1pZ25vcmlu
Zy1pbWFnZS1sb2FkLXByZWYgaXMgZmFsc2UgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCghd2Vi
a2l0X3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZlcmVu
Y2Uoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2xvYWRzX2ljb25zX2lnbm9y
aW5nX2ltYWdlX2xvYWRfcHJlZmVyZW5jZShzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQo
d2Via2l0X3NldHRpbmdzX2dldF9sb2Fkc19pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3ByZWZl
cmVuY2Uoc2V0dGluZ3MpKTsKKyAgICAKKyAgICAvLyBPZmZsaW5lIGFwcGxpY2F0aW9uIGNhY2hl
IGlzIHRydWUgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOworICAgIHdlYmtp
dF9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRp
bmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX29m
ZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzKSk7CisKKyAgICAvLyBMb2NhbCBz
dG9yYWdlIGlzIGVuYWJsZSBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzLCBGQUxTRSk7
CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0
b3JhZ2Uoc2V0dGluZ3MpKTsKKworICAgIC8vIEhUTUw1IGRhdGFiYXNlIGlzIGVuYWJsZWQgYnkg
ZGVmYXVsdC4KKyAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9k
YXRhYmFzZShzZXR0aW5ncykpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1
X2RhdGFiYXNlKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzKSk7CisKKyAgICAvLyBYU1MgQXVk
aXRvciBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfeHNzX2F1ZGl0b3Ioc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3
ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncykpOworCisgICAg
Ly8gRnJhbWUgZmxhdHRlcmluZyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0
KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRpbmdzKSk7
CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5n
cywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVf
ZmxhdHRlbmluZyhzZXR0aW5ncykpOworCisgICAgLy8gUGx1Z2lucyBhcmUgZW5hYmxlZCBieSBk
ZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMo
c2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zKHNldHRp
bmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3Bs
dWdpbnMoc2V0dGluZ3MpKTsKKworICAgIC8vIEphdmEgaXMgZW5hYmxlZCBieSBkZWZhdWx0Lgor
ICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsK
KyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKHNldHRpbmdzLCBGQUxTRSk7Cisg
ICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsK
KworICAgIC8vIEJ5IGRlZmF1bHQsIEphdmFTY3JpcHQgY2FuIG9wZW4gd2luZG93cyBhdXRvbWF0
aWNhbGx5IGlzIGRpc2FibGVkLgorICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2ph
dmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7CisgICAg
d2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGlj
YWxseShzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9q
YXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncykpOworCisg
ICAgLy8gQnkgZGVmYXVsdCBoeXBlciBsaW5rIGF1ZGl0aW5nIGlzIGRpc2FibGVkLgorICAgIGdf
YXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0
dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRp
bmcoc2V0dGluZ3MsIFRSVUUpOworICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncykpOworCisgICAgZ19vYmplY3RfdW5yZWYo
R19PQkpFQ1Qoc2V0dGluZ3MpKTsKK30KKwordm9pZCBiZWZvcmVBbGwoKQoreworICAgIFRlc3Q6
OmFkZCgiV2ViS2l0U2V0dGluZ3MiLCAid2Via2l0LXNldHRpbmdzIiwgdGVzdFdlYktpdFNldHRp
bmdzKTsKK30KKwordm9pZCBhZnRlckFsbCgpCit7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCAzMWYxMTBhLi41NDBjNmU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogUG9ydGlvbnMgQ29weXJpZ2h0
IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNSw2ICsyNiw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRFbnVtVHlwZXMuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdEVycm9yLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRT
ZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViQ29udGV4dC5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0V2ViTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRXZWJWaWV3QmFzZS5oPgotLSAKMS43LjQuMQoK
</data>
<flag name="review"
          id="108211"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110804</attachid>
            <date>2011-10-13 00:04:20 -0700</date>
            <delta_ts>2011-10-13 00:07:24 -0700</delta_ts>
            <desc>WebKitSettings patch</desc>
            <filename>0001-Add-WebKitSettings-API.patch</filename>
            <type>text/plain</type>
            <size>53915</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSBhZWEwNTQwMmVmYWFiZTJkNTU4ZDFhNGIxYTY2NmVlZTZlMjUxYzU1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogV2VkLCAxMiBPY3QgMjAxMSAxMjozMDoyOSArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIEFk
ZCBXZWJLaXRTZXR0aW5ncyBBUEkKCi0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDU3ICsrCiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogLi4uL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwICAgfCAgODUwICsrKysrKysrKysrKysrKysrKysr
CiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oICB8ICAx
NjEgKysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvR05VbWFrZWZpbGUu
YW0gfCAgICA4ICstCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFNldHRp
bmdzLmNwcCB8ICAxMTIgKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmggICAgICAgICB8ICAgIDIgKwogNyBmaWxlcyBjaGFuZ2VkLCAxMTkyIGluc2VydGlvbnMo
KyksIDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRTZXR0aW5ncy5jcHAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTkxNjUxYi4uMmMzY2EyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDYwIEBACisyMDExLTEwLTExICBOYXlhbiBLdW1hciBLICA8bmF5YW5ra0Bt
b3Rvcm9sYS5jb20+CisKKyAgICAgICAgW0dUS11bV0VCS0lUMl0gQWRkIFdlYktpdFNldHRpbmdz
IEdUSysgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjgzNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWJLaXRTZXR0aW5ncyBHVEsrIG9iamVjdCBpcyBjcmVhdGVkIGFuZCBmaXJzdCBzZXQgb2YK
KyAgICAgICAgQVBJJ3MgYXJlIHdyaXR0ZW4gdG8gZ2V0IG9yIHNldCB0aGUgcHJvcGVydGllcyBv
ZiBXZWJLaXRTZXR0aW5ncy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRlZCBuZXcg
ZmlsZXMgZm9yIGNvbXBpbGF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFNldHRpbmdzLmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0U2V0dGluZ3NQcml2YXRlOjpf
V2ViS2l0U2V0dGluZ3NQcml2YXRlKTogQ29uc3RydWN0b3IuCisgICAgICAgICh3ZWJLaXRTZXR0
aW5nc1NldFByb3BlcnR5KTogU2V0IHByb3BlcnR5IGZ1bmN0aW9uLgorICAgICAgICAod2ViS2l0
U2V0dGluZ3NHZXRQcm9wZXJ0eSk6IEdldCBwcm9wZXJ0eSBmdW5jdGlvbi4KKyAgICAgICAgKHdl
YktpdFNldHRpbmdzRmluYWxpemUpOiBDbGFzcyBmaW5hbGl6ZSBmdW5jdGlvbi4KKyAgICAgICAg
KHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0KTogQ2xhc3MgaW5pdCBmdW5jdGlvbi4KKyAgICAg
ICAgKHdlYmtpdF9zZXR0aW5nc19pbml0KTogSW5zdGFuY2UgaW5pdCBmdW5jdGlvbi4KKyAgICAg
ICAgKHdlYmtpdF9zZXR0aW5nc19uZXcpOiBDcmVhdGVzIFdlYktpdFNldHRpbmdzIEdPYmplY3Qu
CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KTogRnVuY3Rp
b24gdG8gZ2V0ICdlbmFibGUtamF2YXNjcmlwdCcgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0KTogRnVuY3Rpb24gdG8gc2V0ICdlbmFibGUt
amF2YXNjcmlwdCcgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2F1dG9f
bG9hZF9pbWFnZXMpOiBHZXQgdGhlICdhdXRvLWxvYWQtaW1hZ2VzJyBwcm9wZXJ0eS4KKyAgICAg
ICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyk6IFNldCB0aGUgJ2F1dG8t
bG9hZC1pbWFnZXMnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9sb2Fk
X2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfc2V0dGluZyk6IEZ1bmN0aW9uIHRvIGdldAorICAg
ICAgICAnbG9hZC1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXNldHRpbmcnIHByb3BlcnR5Lgor
ICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9sb2FkX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xv
YWRfc2V0dGluZyk6IEZ1bmN0aW9uIHRvIHNldAorICAgICAgICAnbG9hZC1pY29ucy1pZ25vcmlu
Zy1pbWFnZS1sb2FkLXNldHRpbmcnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUpOiBGdW5jdGlvbiB0byBn
ZXQKKyAgICAgICAgJ2VuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZScgcHJvcGVy
dHkuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBs
aWNhdGlvbl9jYWNoZSk6IEZ1bmN0aW9uIHRvIHNldAorICAgICAgICAnZW5hYmxlLW9mZmxpbmUt
d2ViLWFwcGxpY2F0aW9uLWNhY2hlJyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UpOiBHZXQgdGhlIHByb3BlcnR5ICdlbmFi
bGUtaHRtbDUtbG9jYWwtc3RvcmFnZScuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKTogU2V0IHRoZSBwcm9wZXJ0eSAnZW5hYmxlLWh0bWw1
LWxvY2FsLXN0b3JhZ2UnLgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRt
bDVfZGF0YWJhc2UpOiBHZXQgdGhlIHByb3BlcnR5ICdlbmFibGUtaHRtbDUtZGF0YWJhc2UnLgor
ICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UpOiBTZXQg
dGhlIHByb3BlcnR5ICdlbmFibGUtaHRtbDUtZGF0YWJhc2UnLgorICAgICAgICAod2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3IpOiBHZXQgcHJvcGVydHkgJ2VuYWJsZS14c3Mt
ZWRpdG9yJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9y
KTogU2V0IHByb3BlcnR5ICdlbmFibGUteHNzLWVkaXRvcicuCisgICAgICAgICh3ZWJraXRfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKTogR2V0IHRoZSBwcm9wZXJ0eSAnZW5h
YmxlLWZyYW1lLWZsYXR0ZW5pbmcnLgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFi
bGVfZnJhbWVfZmxhdHRlbmluZyk6IFNldCB0aGUgcHJvcGVydHkgJ2VuYWJsZS1mcmFtZS1mbGF0
dGVuaW5nJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMpOiBH
ZXQgdGhlIHByb3BlcnR5ICdlbmFibGUtcGx1Z2lucycuCisgICAgICAgICh3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9wbHVnaW5zKTogU2V0IHRoZSBwcm9wZXJ0eSAnZW5hYmxlLXBsdWdpbnMn
LgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YSk6IEZ1bmN0aW9uIHRv
IGdldCAnZW5hYmxlLWphdmEnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3Nl
dF9lbmFibGVfamF2YSk6IEZ1bmN0aW9uIHRvIHNldCAnZW5hYmxlLWphdmEnIHByb3BlcnR5Lgor
ICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3Nf
YXV0b21hdGljYWxseSk6IEdldCB0aGUgcHJvcGVydHkKKyAgICAgICAgJ2phdmFzY3JpcHQtY2Fu
LW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5Jy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19z
ZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkpOiBTZXQgdGhlIHBy
b3BlcnR5CisgICAgICAgICdqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxs
eScuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRp
bmcpOiBHZXQgJ2VuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmcnIHByb3BlcnR5LgorICAgICAgICAo
d2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKTogU2V0ICdlbmFi
bGUtaHlwZXJsaW5rLWF1ZGl0aW5nJyBwcm9wZXJ0eS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRTZXR0aW5ncy5oOiBBZGRlZC4gUHVibGljIEFQSSdzLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtOiBBZGRlZCBuZXcgdGVzdC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKHRlc3RXZWJLaXRTZXR0aW5ncyk6IEFkZCBXZWJLaXRTZXR0aW5nIHVu
aXQgdGVzdC4KKyAgICAgICAgKGJlZm9yZUFsbCk6IFByZS10ZXN0IGZ1bmN0aW9uLgorICAgICAg
ICAoYWZ0ZXJBbGwpOiBQb3N0LXRlc3QgZnVuY3Rpb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvd2Via2l0Mi5oOiBBZGQgV2ViS2l0U2V0dGluZ3MuaCB0byBleHBvc2VkIEFQSSBsaXN0
LgorCiAyMDExLTEwLTExICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIE1ha2UgY3VzdG9tIHNjcm9sbGJhciB0aGVtZSBmb3IgdXNlIGluIERSVCwgdG8g
cmVkdWNlIHBpeGVsIGRpZmZzIGJldHdlZW4gcGxhdGZvcm1zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IDM2MDQ3MmMuLmM5ZThlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC03Myw2ICs3Myw3
IEBAIHdlYmtpdDJndGtfaGVhZGVycyA9IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEVycm9yLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Q29udGV4dC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRl
ckNsaWVudC5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdz
LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmggXAogCSQoV2Vi
S2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC00NzYsNiArNDc3LDggQEAgbGli
d2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9N
SU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45Yjc0YjM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCkBAIC0wLDAgKzEsODUwIEBACisvKgor
ICogQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIAorICogYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoK
KyAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0IG5vdGljZSwgCisgKiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgCisgKiB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciAKKyAqIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogTmVpdGhlciB0aGUgbmFtZSBvZiBNb3Rvcm9sYSBNb2JpbGl0
eSwgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IAorICogYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCAKKyAqIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTIAorICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IAorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SIAorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCAKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiAKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyAKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRT
ZXR0aW5ncy5oIgorCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYktp
dDIvV0tQcmVmZXJlbmNlcy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDxXZWJLaXQyL1dLVHlwZS5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisK
K3N0cnVjdCBfV2ViS2l0U2V0dGluZ3NQcml2YXRlIHsKKyAgICBXS1JldGFpblB0cjxXS1ByZWZl
cmVuY2VzUmVmPiBwcmVmZXJlbmNlczsKK307CisKKy8qKgorICogU0VDVElPTjp3ZWJraXRzZXR0
aW5ncworICogQHNob3J0X2Rlc2NyaXB0aW9uOiBDb250cm9sIHRoZSBiZWhhdmlvdXIgb2YgYSAj
V2ViS2l0V2ViVmlldworICoKKyAqICNXZWJLaXRTZXR0aW5ncyBjYW4gYmUgYXBwbGllZCB0byBh
ICNXZWJLaXRXZWJWaWV3IHRvIGNvbnRyb2wgdGV4dCBlbmNvZGluZywgCisgKiBjb2xvciwgZm9u
dCBzaXplcywgcHJpbnRpbmcgbW9kZSwgc2NyaXB0IHN1cHBvcnQsIGxvYWRpbmcgb2YgaW1hZ2Vz
IGFuZCB2YXJpb3VzIG90aGVyIHRoaW5ncy4gCisgKiBBZnRlciBjcmVhdGlvbiwgYSAjV2ViS2l0
U2V0dGluZ3Mgb2JqZWN0IGNvbnRhaW5zIGRlZmF1bHQgc2V0dGluZ3MuIAorICoKKyAqIDxpbmZv
cm1hbGV4YW1wbGU+PHByb2dyYW1saXN0aW5nPgorICogLzwhLS0gLS0+KiBDcmVhdGUgYSBuZXcg
I1dlYktpdFNldHRpbmdzIGFuZCBkaXNhYmxlIEphdmFTY3JpcHQuICo8IS0tIC0tPi8KKyAqIFdl
YktpdFNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF9zZXR0aW5nc19uZXcgKCk7CisgKiBnX29i
amVjdF9zZXQgKEdfT0JKRUNUIChzZXR0aW5ncyksICJlbmFibGUtamF2YXNjcmlwdCIsIEZBTFNF
LCBOVUxMKTsKKyAqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzIChXRUJLSVRfV0VC
X1ZJRVcgKG15X3dlYnZpZXcpLCBzZXR0aW5ncyk7CisgKiA8L3Byb2dyYW1saXN0aW5nPjwvaW5m
b3JtYWxleGFtcGxlPgorICovCisKKworR19ERUZJTkVfVFlQRShXZWJLaXRTZXR0aW5ncywgd2Vi
a2l0X3NldHRpbmdzLCBHX1RZUEVfT0JKRUNUKQorCitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAg
ICBQUk9QX0VOQUJMRV9KQVZBU0NSSVBULAorICAgIFBST1BfQVVUT19MT0FEX0lNQUdFUywKKyAg
ICBQUk9QX0xPQURfSUNPTlNfSUdOT1JJTkdfSU1BR0VfTE9BRF9TRVRUSU5HLAorICAgIFBST1Bf
RU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hFLAorICAgIFBST1BfRU5BQkxFX0hU
TUw1X0xPQ0FMX1NUT1JBR0UsCisgICAgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0UsCisgICAg
UFJPUF9FTkFCTEVfWFNTX0FVRElUT1IsCisgICAgUFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRFUklO
RywKKyAgICBQUk9QX0VOQUJMRV9QTFVHSU5TLAorICAgIFBST1BfRU5BQkxFX0pBVkEsCisgICAg
UFJPUF9KQVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWSwKKyAgICBQUk9Q
X0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkcsCit9OworCitzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0
aW5nc1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0U2V0dGluZ3Mq
IHNldHRpbmdzID0gV0VCS0lUX1NFVFRJTkdTKG9iamVjdCk7CisgCisgICAgc3dpdGNoIChwcm9w
SWQpIHsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0pBVkFTQ1JJUFQ6CisgICAgICAgIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xl
YW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0FVVE9fTE9BRF9JTUFH
RVM6CisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5n
cywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfTE9BRF9JQ09OU19JR05PUklOR19JTUFHRV9MT0FEX1NFVFRJTkc6CisgICAgICAgIHdl
YmtpdF9zZXR0aW5nc19zZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmco
c2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRToKKyAgICAg
ICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2Fj
aGUoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFOgorICAgICAgICB3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzLCBnX3Zh
bHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9F
TkFCTEVfSFRNTDVfREFUQUJBU0U6CisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxl
X2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1I6CisgICAgICAg
IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdzLCBnX3ZhbHVl
X2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFC
TEVfRlJBTUVfRkxBVFRFUklORzoKKyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVf
ZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1BMVUdJTlM6CisgICAgICAgIHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jv
b2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZB
OgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKHNldHRpbmdzLCBnX3Zh
bHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9K
QVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWToKKyAgICAgICAgd2Via2l0
X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShz
ZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfRU5BQkxFX0hZUEVSTElOS19BVURJVElORzoKKyAgICAgICAgd2Via2l0X3Nl
dHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRpbmdzLCBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1T
cGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0
aW5nc0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZh
bHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0U2V0dGluZ3MqIHNldHRp
bmdzID0gV0VCS0lUX1NFVFRJTkdTKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgewor
ICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQVNDUklQVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9v
bGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5n
cykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVVUT19MT0FEX0lNQUdFUzoKKyAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9hdXRv
X2xvYWRfaW1hZ2VzKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9M
T0FEX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfU0VUVElORzoKKyAgICAgICAgZ192YWx1ZV9z
ZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9sb2FkX2ljb25zX2lnbm9yaW5n
X2ltYWdlX2xvYWRfc2V0dGluZyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hFOgorICAgICAgICBnX3Zh
bHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5l
X3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0U6CisgICAgICAgIGdfdmFsdWVfc2V0
X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0
b3JhZ2Uoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9I
VE1MNV9EQVRBQkFTRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2Uoc2V0dGluZ3MpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUjoKKyAgICAgICAgZ192YWx1
ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0
b3Ioc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9GUkFN
RV9GTEFUVEVSSU5HOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRpbmdzKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfUExVR0lOUzoKKyAgICAgICAgZ192YWx1ZV9z
ZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lucyhzZXR0
aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0pBVkE6CisgICAg
ICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X2phdmEoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0pBVkFTQ1JJ
UFRfQ0FOX09QRU5fV0lORE9XU19BVVRPTUFUSUNBTExZOgorICAgICAgICBnX3ZhbHVlX3NldF9i
b29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2lu
ZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29s
ZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmco
c2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpF
Q1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYktpdFNldHRpbmdzRmlu
YWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIFdFQktJVF9TRVRUSU5HUyhvYmplY3QpLT5w
cml2LT5+V2ViS2l0U2V0dGluZ3NQcml2YXRlKCk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0
X3NldHRpbmdzX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFNldHRpbmdzQ2xhc3MqIGtsYXNz
KQoreworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xh
c3MpOworICAgIGdPYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2ViS2l0U2V0dGluZ3NTZXRQ
cm9wZXJ0eTsKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYktpdFNldHRpbmdz
R2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYktpdFNldHRpbmdz
RmluYWxpemU7CisKKyAgICBHUGFyYW1GbGFncyByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdz
ID0gc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BB
UkFNX0NPTlNUUlVDVCk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmVuYWJsZS1q
YXZhc2NyaXB0CisgICAgKgorICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBKYXZhU2Ny
aXB0IGV4ZWN1dGVzIHdpdGhpbiBhIHBhZ2UuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9KQVZBU0NSSVBULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1qYXZhc2Ny
aXB0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF8oIkVuYWJsZSBKYXZhU2NyaXB0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSmF2YVNjcmlwdC4iKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisgICAgCisgICAgLyoqCisg
ICAgKiBXZWJLaXRTZXR0aW5nczphdXRvLWxvYWQtaW1hZ2VzCisgICAgKgorICAgICogRGV0ZXJt
aW5lcyB3aGV0aGVyIGltYWdlcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBsb2FkZWQgb3Igbm90
LgorICAgICogT24gZGV2aWNlcyB3aGVyZSBuZXR3b3JrIGJhbmR3aWR0aCBpcyBvZiBjb25jZXJu
LCBpdCBtaWdodCBiZQorICAgICogdXNlZnVsIHRvIHR1cm4gdGhpcyBwcm9wZXJ0eSBvZmYuCisg
ICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0
Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0FVVE9fTE9B
RF9JTUFHRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3Nw
ZWNfYm9vbGVhbigiYXV0by1sb2FkLWltYWdlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJBdXRvIGxvYWQgaW1hZ2VzIiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
KCJMb2FkIGltYWdlcyBhdXRvbWF0aWNhbGx5LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVj
dFBhcmFtRmxhZ3MpKTsKKyAgICAKKyAgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmxvYWQt
aWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1zZXR0aW5nCisgICAgKgorICAgICogRGV0ZXJtaW5l
cyB3aGV0aGVyIGEgc2l0ZSBjYW4gbG9hZCBmYXZpY29ucyBpcnJlc3BlY3RpdmUKKyAgICAqIG9m
IHRoZSB2YWx1ZSBvZiAjV2ViU2V0dGluZ3M6YXV0by1sb2FkLWltYWdlcy4KKyAgICAqCisgICAg
Ki8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfTE9BRF9JQ09OU19JR05PUklO
R19JTUFHRV9MT0FEX1NFVFRJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfYm9vbGVhbigibG9hZC1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXNl
dHRpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXygiTG9hZCBpY29ucyBpZ25vcmluZyBpbWFnZSBsb2FkIHNldHRpbmciKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8o
IldoZXRoZXIgdG8gbG9hZCBzaXRlIGljb25zIGlnbm9yaW5nIGltYWdlIGxvYWQgc2V0dGluZy4i
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisgICAgLyoqCisg
ICAgKiBXZWJLaXRTZXR0aW5nczplbmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUK
KyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBvZmZsaW5lIHdlYiBhcHBsaWNh
dGlvbiBjYWNoZSBzdXBwb3J0LiBPZmZsaW5lCisgICAgKiB3ZWIgYXBwbGljYXRpb24gY2FjaGUg
YWxsb3dzIHdlYiBhcHBsaWNhdGlvbnMgdG8gcnVuIGV2ZW4gd2hlbgorICAgICogdGhlIHVzZXIg
aXMgbm90IGNvbm5lY3RlZCB0byB0aGUgbmV0d29yay4KKyAgICAqIAorICAgICogSFRNTDUgb2Zm
bGluZSB3ZWIgYXBwbGljYXRpb24gc3BlY2lmaWNhdGlvbiBpcyBhdmFpbGFibGUgYXQKKyAgICAq
IGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvb2ZmbGluZS5odG1sLgorICAgICoKKyAgICAq
LworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJf
QVBQTElDQVRJT05fQ0FDSEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF8oIkVuYWJsZSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlvbiBjYWNoZSIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhl
ciB0byBlbmFibGUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUuIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVh
ZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRTZXR0
aW5nczplbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZToKKyAgICAqCisgICAgKiBXaGV0aGVyIHRv
IGVuYWJsZSBIVE1MNSBsb2NhbCBzdG9yYWdlIHN1cHBvcnQuIExvY2FsIHN0b3JhZ2UgcHJvdmlk
ZXMKKyAgICAqIHNpbXBsZSBzeW5jaHJvbm91cyBzdG9yYWdlIGFjY2Vzcy4KKyAgICAqCisgICAg
KiBIVE1MNSBsb2NhbCBzdG9yYWdlIHNwZWNpZmljYXRpb24gaXMgYXZhaWxhYmxlIGF0CisgICAg
KiBodHRwOi8vZGV2LnczLm9yZy9odG1sNS93ZWJzdG9yYWdlLy4KKyAgICAqCisgICAgKi8KKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JB
R0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9v
bGVhbigiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEhUTUw1IGxvY2Fs
IHN0b3JhZ2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IExvY2FsIFN0b3JhZ2Ugc3Vw
cG9ydC4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAgICAv
KioKKyAgICAqIFdlYktpdFNldHRpbmdzOmVuYWJsZS1odG1sNS1kYXRhYmFzZToKKyAgICAqCisg
ICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBjbGllbnQtc2lkZSBTUUwgZGF0YWJhc2Ugc3Vw
cG9ydC4gQ2xpZW50LXNpZGUKKyAgICAqIFNRTCBkYXRhYmFzZSBhbGxvd3Mgd2ViIHBhZ2VzIHRv
IHN0b3JlIHN0cnVjdHVyZWQgZGF0YSBhbmQgYmUgYWJsZSB0bworICAgICogdXNlIFNRTCB0byBt
YW5pcHVsYXRlIHRoYXQgZGF0YSBhc3luY2hyb25vdXNseS4KKyAgICAqCisgICAgKiBIVE1MNSBk
YXRhYmFzZSBzcGVjaWZpY2F0aW9uIGlzIGF2YWlsYWJsZSBhdAorICAgICogaHR0cDovL3d3dy53
My5vcmcvVFIvd2ViZGF0YWJhc2UvLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNz
X2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh0bWw1LWRh
dGFiYXNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF8oIkVuYWJsZSBIVE1MNSBkYXRhYmFzZSIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFi
bGUgSFRNTDUgZGF0YWJhc2Ugc3VwcG9ydC4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQ
YXJhbUZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmVuYWJsZS14c3Mt
YXVkaXRvcgorICAgICoKKyAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBYU1MgYXVkaXRvci4g
VGhpcyBmZWF0dXJlIGZpbHRlcnMgc29tZSBraW5kcyBvZgorICAgICogcmVmbGVjdGl2ZSBYU1Mg
YXR0YWNrcyBvbiB2dWxuZXJhYmxlIHdlYiBzaXRlcy4KKyAgICAqCisgICAgKi8KKyAgICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX1hTU19BVURJVE9SLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS14
c3MtYXVkaXRvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfKCJFbmFibGUgWFNTIGF1ZGl0b3IiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5h
YmxlIHRoZSBYU1MgYXVkaXRvci4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZs
YWdzKSk7CisKKworICAgIC8qKgorICAgICogV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWZyYW1lLWZs
YXR0ZW5pbmcKKyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgZnJhbWUgZmxhdHRl
bmluZy4gV2l0aCB0aGlzIHNldHRpbmcgZWFjaCBzdWJmcmFtZSBpcyBleHBhbmRlZAorICAgICog
dG8gaXRzIGNvbnRlbnRzLCB3aGljaCB3aWxsIGZsYXR0ZW4gYWxsIHRoZSBmcmFtZXMgdG8gYmVj
b21lIG9uZSBzY3JvbGxhYmxlIHBhZ2UuCisgICAgKiBPbiB0b3VjaCBkZXZpY2VzIHNjcm9sbGFi
bGUgc3ViZnJhbWVzIG9uIGEgcGFnZSBjYW4gcmVzdWx0IGluIGEgY29uZnVzaW5nIHVzZXIgZXhw
ZXJpZW5jZS4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfRU5BQkxFX0ZSQU1FX0ZMQVRURVJJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmciLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XygiRW5hYmxlIGZyYW1lIGZsYXR0ZW5pbmciKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIGZyYW1l
IGZsYXR0ZW5pbmcuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsK
KworICAgLyoqCisgICAgKiBXZWJLaXRTZXR0aW5nczplbmFibGUtcGx1Z2luczoKKyAgICAqCisg
ICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHBsdWdpbnMgb24gdGhlIHBhZ2UgYXJlIGVu
YWJsZWQuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9Q
X0VOQUJMRV9QTFVHSU5TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19w
YXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1wbHVnaW5zIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBwbHVnaW5zIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfKCJFbmFibGUgZW1iZWRkZWQgcGx1Z2luIG9iamVjdHMuIiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFdyaXRl
Q29uc3RydWN0UGFyYW1GbGFncykpOworICAgIAorICAgLyoqCisgICAgKiBXZWJLaXRTZXR0aW5n
czplbmFibGUtamF2YToKKyAgICAqCisgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IEph
dmEgaXMgZW5hYmxlZCBvbiB0aGUgcGFnZS4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0pBVkEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWphdmEiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5h
YmxlIEphdmEiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF8oIldoZXRoZXIgSmF2YSBzdXBwb3J0IHNob3VsZCBiZSBlbmFibGVkLiIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKworICAgIC8qKgorICAg
ICogV2ViS2l0U2V0dGluZ3M6amF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2Fs
bHkKKyAgICAqCisgICAgKiBXaGV0aGVyIEphdmFTY3JpcHQgY2FuIG9wZW4gcG9wdXAgd2luZG93
cyBhdXRvbWF0aWNhbGx5IHdpdGhvdXQgdXNlcgorICAgICogaW50ZXJ2ZW50aW9uLgorICAgICoK
KyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9KQVZBU0NSSVBUX0NB
Tl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRv
d3MtYXV0b21hdGljYWxseSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfKCJKYXZhU2NyaXB0IGNhbiBvcGVuIHdpbmRvd3MgYXV0b21h
dGljYWxseSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXygiV2hldGhlciBKYXZhU2NyaXB0IGNhbiBvcGVuIHdpbmRvd3MgYXV0b21h
dGljYWxseS4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisg
ICAgLyoqCisgICAgKiBXZWJLaXRTZXR0aW5nczplbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nOgor
ICAgICoKKyAgICAqIERldGVybWluZXMgd2hldGhlciBvciBub3QgaHlwZXJsaW5rIGF1ZGl0aW5n
IGlzIGVuYWJsZWQuCisgICAgKgorICAgICogVGhlIGh5cGVybGluayBhdWRpdGluZyBzcGVjaWZp
Y2F0aW9uIGlzIGF2YWlsYWJsZSBhdAorICAgICogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvbGlua3MuaHRtbCNoeXBlcmxpbmstYXVk
aXRpbmcuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9Q
X0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfKCJFbmFibGUgaHlwZXJsaW5rIGF1ZGl0aW5nIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIDxhIHBpbmc+IHNo
b3VsZCBiZSBhYmxlIHRvIHNlbmQgcGluZ3MuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVj
dFBhcmFtRmxhZ3MpKTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6
ZW9mKFdlYktpdFNldHRpbmdzUHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfc2V0
dGluZ3NfaW5pdChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgV2ViS2l0U2V0dGlu
Z3NQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHNldHRpbmdzLCBX
RUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFNldHRpbmdzUHJpdmF0ZSk7CisgICAgc2V0
dGluZ3MtPnByaXYgPSBwcml2OworICAgIG5ldyAocHJpdikgV2ViS2l0U2V0dGluZ3NQcml2YXRl
KCk7CisKKyAgICBwcml2LT5wcmVmZXJlbmNlcyA9IGFkb3B0V0soV0tQcmVmZXJlbmNlc0NyZWF0
ZSgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfbmV3OgorICoKKyAqIENyZWF0ZXMg
YSBuZXcgI1dlYktpdFNldHRpbmdzIGluc3RhbmNlIHdpdGggZGVmYXVsdCB2YWx1ZXMuIEl0IG11
c3QKKyAqIGJlIG1hbnVhbGx5IGF0dGFjaGVkIHRvIGEgV2ViVmlldy4KKyAqCisgKiBSZXR1cm5z
OiBhIG5ldyAjV2ViS2l0U2V0dGluZ3MgaW5zdGFuY2UuCisgKiovCitXZWJLaXRTZXR0aW5ncyog
d2Via2l0X3NldHRpbmdzX25ldygpCit7CisgICAgcmV0dXJuIFdFQktJVF9TRVRUSU5HUyhnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTLCBOVUxMKSk7Cit9CisKKy8qKgorICog
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdDoKKyAqCisgKiBHZXQgdGhlICNX
ZWJLaXRTZXR0aW5nczplbmFibGUtamF2YXNjcmlwdCBwcm9wZXJ0eS4KKyAqIEBzZXR0aW5nczog
YSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBKYXZhU2NyaXB0IGlz
IGVuYWJsZWQgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiovCitnYm9vbGVhbiB3ZWJraXRf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRp
bmdzKSwgRkFMU0UpOworCisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0RW5h
YmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQ6CisgKiBAc2V0dGluZ3M6IGEgI1dl
YktpdFNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHRo
ZSAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWphdmFzY3JpcHQgcHJvcGVydHkuCisgKgorICoqLwor
dm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0KFdlYktpdFNldHRpbmdz
KiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJp
dmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQ
cmVmZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsK
KyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IFdLUHJlZmVyZW5jZXNTZXRKYXZhU2NyaXB0RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQo
KSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVu
YWJsZS1qYXZhc2NyaXB0Iik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9hdXRv
X2xvYWRfaW1hZ2VzOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAqIEdl
dCB0aGUgI1dlYktpdFNldHRpbmdzOmF1dG8tbG9hZC1pbWFnZXMgcHJvcGVydHkuCisgKgorICog
UmV0dXJuczogJVRSVUUgSWYgYXV0byBsb2FkaW5nIG9mIGltYWdlcyBpcyBlbmFibGVkIG9yICVG
QUxTRSBvdGhlcndpc2UuCisgKgorICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9h
dXRvX2xvYWRfaW1hZ2VzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwor
CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoc2V0
dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXM6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRp
bmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHRoZSAjV2ViS2l0
U2V0dGluZ3M6YXV0by1sb2FkLWltYWdlcyBwcm9wZXJ0eS4KKyAqCisgKiovCit2b2lkIHdlYmtp
dF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3Ms
IGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VC
X1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYg
PSBzZXR0aW5ncy0+cHJpdjsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNH
ZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAg
IGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQ
cmVmZXJlbmNlc1NldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcy5n
ZXQoKSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwg
ImF1dG8tbG9hZC1pbWFnZXMiKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2xv
YWRfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9zZXR0aW5nOgorICogQHNldHRpbmdzOiBhICNX
ZWJLaXRTZXR0aW5ncworICoKKyAqIEdldCB0aGUgI1dlYktpdFNldHRpbmdzOmxvYWQtaWNvbnMt
aWdub3JpbmctaW1hZ2UtbG9hZC1zZXR0aW5nIHByb3BlcnR5LgorICoKKyAqIFJldHVybnM6ICVU
UlVFIElmIHNpdGUgaWNvbiBjYW4gYmUgbG9hZGVkIGlycmVzcGVjdGl2ZSBvZiBpbWFnZSBsb2Fk
aW5nIHByZWZlcmVuY2Ugb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiovCitnYm9vbGVhbiB3
ZWJraXRfc2V0dGluZ3NfZ2V0X2xvYWRfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9zZXR0aW5n
KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgcmV0dXJuIFdL
UHJlZmVyZW5jZXNHZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5j
ZShzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtp
dF9zZXR0aW5nc19zZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmc6Cisg
KiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUg
c2V0CisgKgorICogU2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6bG9hZC1pY29ucy1pZ25vcmluZy1p
bWFnZS1sb2FkLXNldHRpbmcgcHJvcGVydHkuCisgKgorICoqLwordm9pZCB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2xvYWRfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9zZXR0aW5nKFdlYktpdFNldHRp
bmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdz
UHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0g
V0tQcmVmZXJlbmNlc0dldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJl
bmNlKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVu
YWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRMb2Fkc1NpdGVJ
Y29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZShwcml2LT5wcmVmZXJlbmNlcy5nZXQo
KSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImxv
YWQtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1zZXR0aW5nIik7Cit9CisKKy8qKgorICogd2Vi
a2l0X3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGU6Cisg
KiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHRoZSAjV2ViS2l0U2V0
dGluZ3M6ZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlIHByb3BlcnR5LgorICoK
KyAqIFJldHVybnM6ICVUUlVFIElmIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hl
IHN1cHBvcnQgaXMgZW5hYmxlZCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqKi8KK2dib29s
ZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2Nh
Y2hlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgcmV0dXJu
IFdLUHJlZmVyZW5jZXNHZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoc2V0dGlu
Z3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZToKKyAqIEBzZXR0aW5n
czogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisg
KiBTZXQgdGhlICNXZWJLaXRTZXR0aW5nczplbmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24t
Y2FjaGUgcHJvcGVydHkuCisgKgorICoqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3Ms
IGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VC
X1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYg
PSBzZXR0aW5ncy0+cHJpdjsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNH
ZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0
KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgV0tQcmVmZXJlbmNlc1NldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChw
cml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdf
T0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZSIp
OworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0
b3JhZ2U6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHRoZSAj
V2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UgcHJvcGVydHkuCisgKgor
ICogUmV0dXJuczogJVRSVUUgSWYgSFRNTDUgbG9jYWwgc3RvcmFnZSBzdXBwb3J0IGlzIGVuYWJs
ZWQgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiovCitnYm9vbGVhbiB3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5n
cykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNl
dHRpbmdzKSwgRkFMU0UpOworCisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2NhbFN0b3Jh
Z2VFbmFibGVkKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgor
ICogd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZToKKyAqIEBz
ZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQK
KyAqCisgKiBTZXQgdGhlICNXZWJLaXRTZXR0aW5nczplbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFn
ZSBwcm9wZXJ0eS4KKyAqCisgKiovCit2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0
bWw1X2xvY2FsX3N0b3JhZ2UoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFi
bGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0
aW5ncykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnBy
aXY7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TG9jYWxTdG9yYWdl
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9
PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0TG9jYWxT
dG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19v
YmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1odG1sNS1sb2NhbC1zdG9y
YWdlIik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0
YWJhc2U6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHRoZSAj
V2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWh0bWw1LWRhdGFiYXNlIHByb3BlcnR5LgorICoKKyAqIFJl
dHVybnM6ICVUUlVFIElmIEhUTUw1IGRhdGFiYXNlIHN1cHBvcnQgaXMgZW5hYmxlZCBvciAlRkFM
U0Ugb3RoZXJ3aXNlLgorICoKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX2h0bWw1X2RhdGFiYXNlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0Up
OworCisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXREYXRhYmFzZXNFbmFibGVkKHNldHRpbmdz
LT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdz
X3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2U6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRp
bmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHRoZSAjV2ViS2l0
U2V0dGluZ3M6ZW5hYmxlLWh0bWw1LWRhdGFiYXNlIHByb3BlcnR5LgorICoKKyAqKi8KK3ZvaWQg
d2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UoV2ViS2l0U2V0dGluZ3Mq
IHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2
YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1By
ZWZlcmVuY2VzR2V0RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cisg
ICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBX
S1ByZWZlcmVuY2VzU2V0RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwg
ZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJs
ZS1odG1sNS1kYXRhYmFzZSIpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX3hzc19hdWRpdG9yOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAq
IEdldCB0aGUgI1dlYktpdFNldHRpbmdzOmVuYWJsZS14c3MtYXVkaXRvciBwcm9wZXJ0eS4KKyAq
CisgKiBSZXR1cm5zOiAlVFJVRSBJZiB4c3MgYXVkaXRpbmcgaXMgZW5hYmxlZCBvciAlRkFMU0Ug
b3RoZXJ3aXNlLgorICoKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X3hzc19hdWRpdG9yKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisg
ICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRpdG9yRW5hYmxlZChzZXR0aW5ncy0+cHJp
di0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRf
ZW5hYmxlX3hzc19hdWRpdG9yOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICog
QGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdz
OmVuYWJsZS14c3MtYXVkaXRvciBwcm9wZXJ0eS4KKyAqCisgKiovCit2b2lkIHdlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jv
b2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VU
VElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNl
dHRpbmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFhT
U0F1ZGl0b3JFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVu
dFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNT
ZXRYU1NBdWRpdG9yRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7Cisg
ICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS14c3MtYXVkaXRv
ciIpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0
ZW5pbmc6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHRoZSAj
V2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmcgcHJvcGVydHkuCisgKi4KKyAq
IFJldHVybnM6ICVUUlVFIElmIGZyYW1lIGZsYXR0ZW5pbmcgaXMgZW5hYmxlZCBvciAlRkFMU0Ug
b3RoZXJ3aXNlLgorICoKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X2ZyYW1lX2ZsYXR0ZW5pbmcoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7
CisKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoc2V0
dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nOgorICogQHNldHRpbmdzOiBhICNXZWJL
aXRTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUg
I1dlYktpdFNldHRpbmdzOmVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIHByb3BlcnR5LgorICoKKyAq
Ki8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhXZWJL
aXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRT
ZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBib29sIGN1cnJlbnRW
YWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHByaXYtPnByZWZl
cmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHBy
aXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19P
QkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmciKTsKK30KKworLyoqCisg
KiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zOgorICogQHNldHRpbmdzOiBhICNX
ZWJLaXRTZXR0aW5ncworICoKKyAqIEdldCB0aGUgI1dlYktpdFNldHRpbmdzOmVuYWJsZS1wbHVn
aW5zIHByb3BlcnR5LgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIHBsdWdpbnMgYXJlIGVuYWJs
ZWQgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiovCitnYm9vbGVhbiB3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9wbHVnaW5zKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFM
U0UpOworCisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRQbHVnaW5zRW5hYmxlZChzZXR0aW5n
cy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5n
c19zZXRfZW5hYmxlX3BsdWdpbnM6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisg
KiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHRoZSAjV2ViS2l0U2V0dGlu
Z3M6ZW5hYmxlLXBsdWdpbnMgcHJvcGVydHkuCisgKgorICoqLwordm9pZCB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9wbHVnaW5zKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4g
ZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Mo
c2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdz
LT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFBsdWdpbnNF
bmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09
IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRQbHVnaW5z
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rf
bm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1wbHVnaW5zIik7Cit9CisKKy8qKgor
ICogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YToKKyAqIEBzZXR0aW5nczogYSAjV2Vi
S2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhlICNXZWJLaXRTZXR0aW5nczplbmFibGUtamF2YSBw
cm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBKYXZhIGlzIGVuYWJsZWQgb3IgJUZB
TFNFIG90aGVyd2lzZS4KKyAqCisgKiovCitnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9qYXZhKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAg
cmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVy
ZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2ph
dmE6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUg
dG8gYmUgc2V0CisgKgorICogU2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWphdmEgcHJv
cGVydHkuCisgKgorICoqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKFdl
YktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktp
dFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wgY3VycmVu
dFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEphdmFFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdl
dCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQo
KSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVu
YWJsZS1qYXZhIik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0
X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0
U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhlICNXZWJLaXRTZXR0aW5nczpqYXZhc2NyaXB0LWNhbi1v
cGVuLXdpbmRvd3MtYXV0b21hdGljYWxseSBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAlVFJV
RSBJZiBKYXZhU2NyaXB0IGNhbiBvcGVuIHdpbmRvdyBhdXRvbWF0aWNhbGx5IG9yICVGQUxTRSBv
dGhlcndpc2UuCisgKgorICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2Ny
aXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhz
ZXR0aW5ncyksIEZBTFNFKTsKKworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlw
dENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMu
Z2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5f
b3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHk6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRp
bmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHRoZSAjV2ViS2l0
U2V0dGluZ3M6amF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHkgcHJvcGVy
dHkuCisgKgorICoqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29w
ZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xl
YW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElO
R1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRp
bmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkp
OworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgV0tQcmVmZXJlbmNlc1NldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHko
cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShH
X09CSkVDVChzZXR0aW5ncyksICJqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGlj
YWxseSIpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlu
a19hdWRpdGluZzoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQg
dGhlICNXZWJLaXRTZXR0aW5nczplbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nIHByb3BlcnR5Lgor
ICoKKyAqIFJldHVybnM6ICVUUlVFIElmIGh5cGVyIGxpbmsgYXVkaXRpbmcgaXMgZW5hYmxlZCBv
ciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5n
cyksIEZBTFNFKTsKKworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SHlwZXJsaW5rQXVkaXRp
bmdFbmFibGVkKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgor
ICogd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nOgorICogQHNl
dHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAor
ICoKKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmcg
cHJvcGVydHkuCisgKgorICoqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBl
cmxpbmtfYXVkaXRpbmcoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVk
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5n
cykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7
CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0SHlwZXJsaW5rQXVkaXRp
bmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVl
ID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRIeXBl
cmxpbmtBdWRpdGluZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOwor
ICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtaHlwZXJsaW5r
LWF1ZGl0aW5nIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0U2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWVj
N2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0U2V0dGluZ3MuaApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCAKKyAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Us
IAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
CisgKiBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSAKKyAqIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgCisgKiBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiAKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCAKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIAorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJf
Q09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5j
bHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0U2V0dGluZ3NfaAorI2Rl
ZmluZSBXZWJLaXRTZXR0aW5nc19oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUg
V0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTICAgICAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRf
dHlwZSgpKQorI2RlZmluZSBXRUJLSVRfU0VUVElOR1Mob2JqKSAgICAgICAgICAgICAgICAoR19U
WVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywg
V2ViS2l0U2V0dGluZ3MpKQorI2RlZmluZSBXRUJLSVRfU0VUVElOR1NfQ0xBU1Moa2xhc3MpICAg
ICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9T
RVRUSU5HUywgV2ViS2l0U2V0dGluZ3NDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfU0VU
VElOR1Mob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VC
S0lUX1RZUEVfV0VCX1NFVFRJTkdTKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9TRVRUSU5HU19D
TEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQ
RV9XRUJfU0VUVElOR1MpKQorI2RlZmluZSBXRUJLSVRfU0VUVElOR1NfR0VUX0NMQVNTKG9iaikg
ICAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9T
RVRUSU5HUywgV2ViS2l0U2V0dGluZ3NDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRT
ZXR0aW5ncyBXZWJLaXRTZXR0aW5nczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRTZXR0aW5nc0Ns
YXNzIFdlYktpdFNldHRpbmdzQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0U2V0dGluZ3NQ
cml2YXRlIFdlYktpdFNldHRpbmdzUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRTZXR0aW5ncyB7
CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZh
dGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFNldHRpbmdzQ2xhc3MgeworICAgIEdPYmpl
Y3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICAvKiBQYWRkaW5nIGZvciBmdXR1cmUgZXhwYW5z
aW9uICovCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAo
Kl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQz
KSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9pZCk7Cit9OworCitX
RUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfc2V0dGluZ3NfZ2V0X3R5cGUodm9pZCk7CisKK1dFQktJ
VF9BUEkgV2ViS2l0U2V0dGluZ3MgKgord2Via2l0X3NldHRpbmdzX25ldyh2b2lkKTsKKworV0VC
S0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dF
QktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
Ym9vbGVhbiBlbmFibGVkKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3NldHRpbmdz
X2dldF9hdXRvX2xvYWRfaW1hZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNl
dHRpbmdzKiBzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3Nl
dF9hdXRvX2xvYWRfaW1hZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRp
bmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0VCS0lUX0FQSSBn
Ym9vbGVhbgord2Via2l0X3NldHRpbmdzX2dldF9sb2FkX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xv
YWRfc2V0dGluZyAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkg
dm9pZAord2Via2l0X3NldHRpbmdzX3NldF9sb2FkX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRf
c2V0dGluZyAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBl
bmFibGVkKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUgICAgICAgKFdlYktpdFNldHRpbmdzKiBz
ZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVf
b2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUgICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0
aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgor
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSAgICAgICAgICAg
ICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSAgICAgICAgICAgICAg
ICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsK
KworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVf
ZGF0YWJhc2UgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyk7
CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0
YWJhc2UgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnYm9vbGVhbiBlbmFibGVkKTsKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0
aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJL
aXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5n
c19zZXRfZW5hYmxlX3hzc19hdWRpdG9yICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRT
ZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9B
UEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcg
ICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xl
YW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX3BsdWdpbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5n
cyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZW5h
YmxlX3BsdWdpbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxl
ZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfamF2YXNjcmlw
dF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkgIChXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9j
YW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtp
dF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyAgICAgICAgICAgICAgICAg
IChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyAgICAgICAgICAgICAgICAgIChX
ZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK0df
RU5EX0RFQ0xTCisKKyNlbmRpZiAvKiB3ZWJraXR3ZWJzZXR0aW5nc19oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IGZlMWFkYzkuLmFiNDFjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCkBAIC0xLDcgKzEsOCBAQAogVEVTVF9Q
Uk9HUyArPSBcCiAJUHJvZ3JhbXMvV2ViS2l0MkFQSVRlc3RzL1Rlc3RXZWJLaXRXZWJDb250ZXh0
IFwKIAlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdFdlYktpdFdlYlZpZXcgXAotCVByb2dy
YW1zL1dlYktpdDJBUElUZXN0cy9UZXN0V2ViS2l0V2ViTG9hZGVyQ2xpZW50CisJUHJvZ3JhbXMv
V2ViS2l0MkFQSVRlc3RzL1Rlc3RXZWJLaXRXZWJMb2FkZXJDbGllbnQgXAorCVByb2dyYW1zL1dl
YktpdDJBUElUZXN0cy9UZXN0V2ViS2l0U2V0dGluZ3MKIAogbm9pbnN0X1BST0dSQU1TICs9ICQo
VEVTVF9QUk9HUykKIHdlYmtpdDJfdGVzdHNfY3BwZmxhZ3MgPSBcCkBAIC02MCwzICs2MSw4IEBA
IFByb2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0V2ViS2l0V2ViTG9hZGVyQ2xpZW50X0NQUEZM
QUdTID0gJCh3ZWJraXQyX3Rlc3RzX2NwCiBQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdFdl
YktpdFdlYkxvYWRlckNsaWVudF9MREFERCA9ICQod2Via2l0Ml90ZXN0c19sZGFkZCkKIFByb2dy
YW1zX1dlYktpdDJBUElUZXN0c19UZXN0V2ViS2l0V2ViTG9hZGVyQ2xpZW50X0xERkxBR1MgPSAk
KHdlYmtpdDJfdGVzdHNfbGRmbGFncykKIAorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RX
ZWJLaXRTZXR0aW5nc19TT1VSQ0VTID0gXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKK1Byb2dyYW1zX1dlYktpdDJBUElUZXN0
c19UZXN0V2ViS2l0U2V0dGluZ3NfQ1BQRkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfY3BwZmxhZ3Mp
CitQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdFdlYktpdFNldHRpbmdzX0xEQUREID0gJCh3
ZWJraXQyX3Rlc3RzX2xkYWRkKQorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RXZWJLaXRT
ZXR0aW5nc19MREZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxhZ3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0U2V0dGluZ3Mu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFNl
dHRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTIwOTQ5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdFdlYktpdFNldHRpbmdzLmNwcApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCAKKyAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3IgCisgKiBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSAKKyAqIGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
CisgKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UyAKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiAKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCAKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIAorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0TWFpbi5oIgorI2lu
Y2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KKworc3RhdGlj
IHZvaWQgdGVzdFdlYktpdFNldHRpbmdzKFRlc3QqLCBnY29uc3Rwb2ludGVyKQoreworICAgIFdl
YktpdFNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF9zZXR0aW5nc19uZXcoKTsKKworICAgIC8v
IEphdmFTY3JpcHQgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF9z
ZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3Nl
cnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MpKTsKKwor
ICAgIC8vIEJ5IGRlZmF1bHQgYXV0by1sb2FkLWltYWdlIGlzIHRydWUuCisgICAgZ19hc3NlcnQo
d2Via2l0X3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzKSk7CisgICAgd2Vi
a2l0X3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzLCBGQUxTRSk7CisgICAg
Z19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncykp
OworCisgICAgLy8gbG9hZC1pY29uLWlnbm9yaW5nLWltYWdlLWxvYWQtcHJlZiBpcyBmYWxzZSBi
eSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2xvYWRfaWNvbnNf
aWdub3JpbmdfaW1hZ2VfbG9hZF9zZXR0aW5nKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3NldHRp
bmdzX3NldF9sb2FkX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfc2V0dGluZyhzZXR0aW5ncywg
VFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9sb2FkX2ljb25zX2lnbm9y
aW5nX2ltYWdlX2xvYWRfc2V0dGluZyhzZXR0aW5ncykpOworICAgIAorICAgIC8vIE9mZmxpbmUg
YXBwbGljYXRpb24gY2FjaGUgaXMgdHJ1ZSBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtp
dF9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRp
bmdzKSk7CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGlj
YXRpb25fY2FjaGUoc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3NldHRp
bmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoc2V0dGluZ3MpKTsK
KworICAgIC8vIExvY2FsIHN0b3JhZ2UgaXMgZW5hYmxlIGJ5IGRlZmF1bHQuCisgICAgZ19hc3Nl
cnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0aW5n
cykpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Uo
c2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0aW5ncykpOworCisgICAgLy8gSFRNTDUgZGF0YWJh
c2UgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3NldHRpbmdz
X3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2Uoc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2Vy
dCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2Uoc2V0dGluZ3MpKTsK
KworICAgIC8vIFhTUyBBdWRpdG9yIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2Vy
dCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncykpOworICAg
IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdzLCBGQUxTRSk7
CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNl
dHRpbmdzKSk7CisKKyAgICAvLyBGcmFtZSBmbGF0dGVyaW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1
bHQuCisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0
ZW5pbmcoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9m
bGF0dGVuaW5nKHNldHRpbmdzLCBUUlVFKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRpbmdzKSk7CisKKyAgICAvLyBQbHVnaW5z
IGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dl
dF9lbmFibGVfcGx1Z2lucyhzZXR0aW5ncykpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5h
YmxlX3BsdWdpbnMoc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3NldHRp
bmdzX2dldF9lbmFibGVfcGx1Z2lucyhzZXR0aW5ncykpOworCisgICAgLy8gSmF2YSBpcyBlbmFi
bGVkIGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
amF2YShzZXR0aW5ncykpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEoc2V0
dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
amF2YShzZXR0aW5ncykpOworCisgICAgLy8gQnkgZGVmYXVsdCwgSmF2YVNjcmlwdCBjYW4gb3Bl
biB3aW5kb3dzIGF1dG9tYXRpY2FsbHkgaXMgZGlzYWJsZWQuCisgICAgZ19hc3NlcnQoIXdlYmtp
dF9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHko
c2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5f
d2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzLCBUUlVFKTsKKyAgICBnX2Fzc2VydCh3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5
KHNldHRpbmdzKSk7CisKKyAgICAvLyBCeSBkZWZhdWx0IGh5cGVyIGxpbmsgYXVkaXRpbmcgaXMg
ZGlzYWJsZWQuCisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVy
bGlua19hdWRpdGluZyhzZXR0aW5ncykpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxl
X2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRpbmdzKSk7CisKKyAg
ICBnX29iamVjdF91bnJlZihHX09CSkVDVChzZXR0aW5ncykpOworfQorCit2b2lkIGJlZm9yZUFs
bCgpCit7CisgICAgVGVzdDo6YWRkKCJXZWJLaXRTZXR0aW5ncyIsICJ3ZWJraXQtc2V0dGluZ3Mi
LCB0ZXN0V2ViS2l0U2V0dGluZ3MpOworfQorCit2b2lkIGFmdGVyQWxsKCkKK3sKK30KKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4IDMxZjExMGEuLjU0
MGM2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiBQ
b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI1LDYgKzI2LDcgQEAKICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dEVudW1UeXBlcy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RXJyb3IuaD4KKyNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFNldHRpbmdzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJD
b250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXdCYXNlLmg+Ci0tIAoxLjcuNC4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110805</attachid>
            <date>2011-10-13 00:07:24 -0700</date>
            <delta_ts>2011-10-13 19:30:50 -0700</delta_ts>
            <desc>Adds WebKitSettings GTK+ API&apos;s.</desc>
            <filename>0001-Add-WebKitSettings-API.patch</filename>
            <type>text/plain</type>
            <size>53919</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">RnJvbSBhZWU2MDVjZGQxZTg1ZGNkMTEwNzcxOGMyYmExZDRlMzZjM2VkN2Q1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXlhbiBLdW1hciBLIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4K
RGF0ZTogV2VkLCAxMiBPY3QgMjAxMSAxMjozMDoyOSArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIEFk
ZCBXZWJLaXRTZXR0aW5ncyBBUEkKCi0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDU3ICsrCiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogLi4uL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwICAgfCAgODUwICsrKysrKysrKysrKysrKysrKysr
CiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oICB8ICAx
NjEgKysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvR05VbWFrZWZpbGUu
YW0gfCAgICA4ICstCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFNldHRp
bmdzLmNwcCB8ICAxMTIgKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmggICAgICAgICB8ICAgIDIgKwogNyBmaWxlcyBjaGFuZ2VkLCAxMTkyIGluc2VydGlvbnMo
KyksIDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRTZXR0aW5ncy5jcHAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTkxNjUxYi4uMmMzY2EyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDYwIEBACisyMDExLTEwLTExICBOYXlhbiBLdW1hciBLICA8bmF5YW5ra0Bt
b3Rvcm9sYS5jb20+CisKKyAgICAgICAgW0dUS11bV0VCS0lUMl0gQWRkIFdlYktpdFNldHRpbmdz
IEdUSysgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjgzNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWJLaXRTZXR0aW5ncyBHVEsrIG9iamVjdCBpcyBjcmVhdGVkIGFuZCBmaXJzdCBzZXQgb2YK
KyAgICAgICAgQVBJJ3MgYXJlIHdyaXR0ZW4gdG8gZ2V0IG9yIHNldCB0aGUgcHJvcGVydGllcyBv
ZiBXZWJLaXRTZXR0aW5ncy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRlZCBuZXcg
ZmlsZXMgZm9yIGNvbXBpbGF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFNldHRpbmdzLmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0U2V0dGluZ3NQcml2YXRlOjpf
V2ViS2l0U2V0dGluZ3NQcml2YXRlKTogQ29uc3RydWN0b3IuCisgICAgICAgICh3ZWJLaXRTZXR0
aW5nc1NldFByb3BlcnR5KTogU2V0IHByb3BlcnR5IGZ1bmN0aW9uLgorICAgICAgICAod2ViS2l0
U2V0dGluZ3NHZXRQcm9wZXJ0eSk6IEdldCBwcm9wZXJ0eSBmdW5jdGlvbi4KKyAgICAgICAgKHdl
YktpdFNldHRpbmdzRmluYWxpemUpOiBDbGFzcyBmaW5hbGl6ZSBmdW5jdGlvbi4KKyAgICAgICAg
KHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0KTogQ2xhc3MgaW5pdCBmdW5jdGlvbi4KKyAgICAg
ICAgKHdlYmtpdF9zZXR0aW5nc19pbml0KTogSW5zdGFuY2UgaW5pdCBmdW5jdGlvbi4KKyAgICAg
ICAgKHdlYmtpdF9zZXR0aW5nc19uZXcpOiBDcmVhdGVzIFdlYktpdFNldHRpbmdzIEdPYmplY3Qu
CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KTogRnVuY3Rp
b24gdG8gZ2V0ICdlbmFibGUtamF2YXNjcmlwdCcgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0KTogRnVuY3Rpb24gdG8gc2V0ICdlbmFibGUt
amF2YXNjcmlwdCcgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2F1dG9f
bG9hZF9pbWFnZXMpOiBHZXQgdGhlICdhdXRvLWxvYWQtaW1hZ2VzJyBwcm9wZXJ0eS4KKyAgICAg
ICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyk6IFNldCB0aGUgJ2F1dG8t
bG9hZC1pbWFnZXMnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9sb2Fk
X2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfc2V0dGluZyk6IEZ1bmN0aW9uIHRvIGdldAorICAg
ICAgICAnbG9hZC1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXNldHRpbmcnIHByb3BlcnR5Lgor
ICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9sb2FkX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xv
YWRfc2V0dGluZyk6IEZ1bmN0aW9uIHRvIHNldAorICAgICAgICAnbG9hZC1pY29ucy1pZ25vcmlu
Zy1pbWFnZS1sb2FkLXNldHRpbmcnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUpOiBGdW5jdGlvbiB0byBn
ZXQKKyAgICAgICAgJ2VuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZScgcHJvcGVy
dHkuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBs
aWNhdGlvbl9jYWNoZSk6IEZ1bmN0aW9uIHRvIHNldAorICAgICAgICAnZW5hYmxlLW9mZmxpbmUt
d2ViLWFwcGxpY2F0aW9uLWNhY2hlJyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UpOiBHZXQgdGhlIHByb3BlcnR5ICdlbmFi
bGUtaHRtbDUtbG9jYWwtc3RvcmFnZScuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKTogU2V0IHRoZSBwcm9wZXJ0eSAnZW5hYmxlLWh0bWw1
LWxvY2FsLXN0b3JhZ2UnLgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRt
bDVfZGF0YWJhc2UpOiBHZXQgdGhlIHByb3BlcnR5ICdlbmFibGUtaHRtbDUtZGF0YWJhc2UnLgor
ICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UpOiBTZXQg
dGhlIHByb3BlcnR5ICdlbmFibGUtaHRtbDUtZGF0YWJhc2UnLgorICAgICAgICAod2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3IpOiBHZXQgcHJvcGVydHkgJ2VuYWJsZS14c3Mt
ZWRpdG9yJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9y
KTogU2V0IHByb3BlcnR5ICdlbmFibGUteHNzLWVkaXRvcicuCisgICAgICAgICh3ZWJraXRfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKTogR2V0IHRoZSBwcm9wZXJ0eSAnZW5h
YmxlLWZyYW1lLWZsYXR0ZW5pbmcnLgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFi
bGVfZnJhbWVfZmxhdHRlbmluZyk6IFNldCB0aGUgcHJvcGVydHkgJ2VuYWJsZS1mcmFtZS1mbGF0
dGVuaW5nJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMpOiBH
ZXQgdGhlIHByb3BlcnR5ICdlbmFibGUtcGx1Z2lucycuCisgICAgICAgICh3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9wbHVnaW5zKTogU2V0IHRoZSBwcm9wZXJ0eSAnZW5hYmxlLXBsdWdpbnMn
LgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YSk6IEZ1bmN0aW9uIHRv
IGdldCAnZW5hYmxlLWphdmEnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3Nl
dF9lbmFibGVfamF2YSk6IEZ1bmN0aW9uIHRvIHNldCAnZW5hYmxlLWphdmEnIHByb3BlcnR5Lgor
ICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3Nf
YXV0b21hdGljYWxseSk6IEdldCB0aGUgcHJvcGVydHkKKyAgICAgICAgJ2phdmFzY3JpcHQtY2Fu
LW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5Jy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19z
ZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkpOiBTZXQgdGhlIHBy
b3BlcnR5CisgICAgICAgICdqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGljYWxs
eScuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRp
bmcpOiBHZXQgJ2VuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmcnIHByb3BlcnR5LgorICAgICAgICAo
d2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKTogU2V0ICdlbmFi
bGUtaHlwZXJsaW5rLWF1ZGl0aW5nJyBwcm9wZXJ0eS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRTZXR0aW5ncy5oOiBBZGRlZC4gUHVibGljIEFQSSdzLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtOiBBZGRlZCBuZXcgdGVzdC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKHRlc3RXZWJLaXRTZXR0aW5ncyk6IEFkZCBXZWJLaXRTZXR0aW5nIHVu
aXQgdGVzdC4KKyAgICAgICAgKGJlZm9yZUFsbCk6IFByZS10ZXN0IGZ1bmN0aW9uLgorICAgICAg
ICAoYWZ0ZXJBbGwpOiBQb3N0LXRlc3QgZnVuY3Rpb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvd2Via2l0Mi5oOiBBZGQgV2ViS2l0U2V0dGluZ3MuaCB0byBleHBvc2VkIEFQSSBsaXN0
LgorCiAyMDExLTEwLTExICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIE1ha2UgY3VzdG9tIHNjcm9sbGJhciB0aGVtZSBmb3IgdXNlIGluIERSVCwgdG8g
cmVkdWNlIHBpeGVsIGRpZmZzIGJldHdlZW4gcGxhdGZvcm1zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IDM2MDQ3MmMuLmM5ZThlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC03Myw2ICs3Myw3
IEBAIHdlYmtpdDJndGtfaGVhZGVycyA9IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEVycm9yLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Q29udGV4dC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRl
ckNsaWVudC5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdz
LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmggXAogCSQoV2Vi
S2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC00NzYsNiArNDc3LDggQEAgbGli
d2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9N
SU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45Yjc0YjM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCkBAIC0wLDAgKzEsODUwIEBACisvKgor
ICogQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIAorICogYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoK
KyAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0IG5vdGljZSwgCisgKiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgCisgKiB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciAKKyAqIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogTmVpdGhlciB0aGUgbmFtZSBvZiBNb3Rvcm9sYSBNb2JpbGl0
eSwgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IAorICogYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCAKKyAqIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTIAorICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IAorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SIAorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCAKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiAKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyAKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRT
ZXR0aW5ncy5oIgorCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYktp
dDIvV0tQcmVmZXJlbmNlcy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDxXZWJLaXQyL1dLVHlwZS5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisK
K3N0cnVjdCBfV2ViS2l0U2V0dGluZ3NQcml2YXRlIHsKKyAgICBXS1JldGFpblB0cjxXS1ByZWZl
cmVuY2VzUmVmPiBwcmVmZXJlbmNlczsKK307CisKKy8qKgorICogU0VDVElPTjp3ZWJraXRzZXR0
aW5ncworICogQHNob3J0X2Rlc2NyaXB0aW9uOiBDb250cm9sIHRoZSBiZWhhdmlvdXIgb2YgYSAj
V2ViS2l0V2ViVmlldworICoKKyAqICNXZWJLaXRTZXR0aW5ncyBjYW4gYmUgYXBwbGllZCB0byBh
ICNXZWJLaXRXZWJWaWV3IHRvIGNvbnRyb2wgdGV4dCBlbmNvZGluZywgCisgKiBjb2xvciwgZm9u
dCBzaXplcywgcHJpbnRpbmcgbW9kZSwgc2NyaXB0IHN1cHBvcnQsIGxvYWRpbmcgb2YgaW1hZ2Vz
IGFuZCB2YXJpb3VzIG90aGVyIHRoaW5ncy4gCisgKiBBZnRlciBjcmVhdGlvbiwgYSAjV2ViS2l0
U2V0dGluZ3Mgb2JqZWN0IGNvbnRhaW5zIGRlZmF1bHQgc2V0dGluZ3MuIAorICoKKyAqIDxpbmZv
cm1hbGV4YW1wbGU+PHByb2dyYW1saXN0aW5nPgorICogLzwhLS0gLS0+KiBDcmVhdGUgYSBuZXcg
I1dlYktpdFNldHRpbmdzIGFuZCBkaXNhYmxlIEphdmFTY3JpcHQuICo8IS0tIC0tPi8KKyAqIFdl
YktpdFNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF9zZXR0aW5nc19uZXcgKCk7CisgKiBnX29i
amVjdF9zZXQgKEdfT0JKRUNUIChzZXR0aW5ncyksICJlbmFibGUtamF2YXNjcmlwdCIsIEZBTFNF
LCBOVUxMKTsKKyAqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzIChXRUJLSVRfV0VC
X1ZJRVcgKG15X3dlYnZpZXcpLCBzZXR0aW5ncyk7CisgKiA8L3Byb2dyYW1saXN0aW5nPjwvaW5m
b3JtYWxleGFtcGxlPgorICovCisKKworR19ERUZJTkVfVFlQRShXZWJLaXRTZXR0aW5ncywgd2Vi
a2l0X3NldHRpbmdzLCBHX1RZUEVfT0JKRUNUKQorCitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAg
ICBQUk9QX0VOQUJMRV9KQVZBU0NSSVBULAorICAgIFBST1BfQVVUT19MT0FEX0lNQUdFUywKKyAg
ICBQUk9QX0xPQURfSUNPTlNfSUdOT1JJTkdfSU1BR0VfTE9BRF9TRVRUSU5HLAorICAgIFBST1Bf
RU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hFLAorICAgIFBST1BfRU5BQkxFX0hU
TUw1X0xPQ0FMX1NUT1JBR0UsCisgICAgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0UsCisgICAg
UFJPUF9FTkFCTEVfWFNTX0FVRElUT1IsCisgICAgUFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRFUklO
RywKKyAgICBQUk9QX0VOQUJMRV9QTFVHSU5TLAorICAgIFBST1BfRU5BQkxFX0pBVkEsCisgICAg
UFJPUF9KQVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWSwKKyAgICBQUk9Q
X0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkcsCit9OworCitzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0
aW5nc1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0U2V0dGluZ3Mq
IHNldHRpbmdzID0gV0VCS0lUX1NFVFRJTkdTKG9iamVjdCk7CisgCisgICAgc3dpdGNoIChwcm9w
SWQpIHsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0pBVkFTQ1JJUFQ6CisgICAgICAgIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xl
YW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0FVVE9fTE9BRF9JTUFH
RVM6CisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5n
cywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfTE9BRF9JQ09OU19JR05PUklOR19JTUFHRV9MT0FEX1NFVFRJTkc6CisgICAgICAgIHdl
YmtpdF9zZXR0aW5nc19zZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmco
c2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRToKKyAgICAg
ICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2Fj
aGUoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFOgorICAgICAgICB3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzLCBnX3Zh
bHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9F
TkFCTEVfSFRNTDVfREFUQUJBU0U6CisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxl
X2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1I6CisgICAgICAg
IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdzLCBnX3ZhbHVl
X2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFC
TEVfRlJBTUVfRkxBVFRFUklORzoKKyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVf
ZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1BMVUdJTlM6CisgICAgICAgIHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jv
b2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZB
OgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKHNldHRpbmdzLCBnX3Zh
bHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9K
QVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWToKKyAgICAgICAgd2Via2l0
X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShz
ZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfRU5BQkxFX0hZUEVSTElOS19BVURJVElORzoKKyAgICAgICAgd2Via2l0X3Nl
dHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRpbmdzLCBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1T
cGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0
aW5nc0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZh
bHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0U2V0dGluZ3MqIHNldHRp
bmdzID0gV0VCS0lUX1NFVFRJTkdTKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgewor
ICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQVNDUklQVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9v
bGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5n
cykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVVUT19MT0FEX0lNQUdFUzoKKyAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9hdXRv
X2xvYWRfaW1hZ2VzKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9M
T0FEX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfU0VUVElORzoKKyAgICAgICAgZ192YWx1ZV9z
ZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9sb2FkX2ljb25zX2lnbm9yaW5n
X2ltYWdlX2xvYWRfc2V0dGluZyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hFOgorICAgICAgICBnX3Zh
bHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5l
X3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0U6CisgICAgICAgIGdfdmFsdWVfc2V0
X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0
b3JhZ2Uoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9I
VE1MNV9EQVRBQkFTRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2Uoc2V0dGluZ3MpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUjoKKyAgICAgICAgZ192YWx1
ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0
b3Ioc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9GUkFN
RV9GTEFUVEVSSU5HOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRpbmdzKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfUExVR0lOUzoKKyAgICAgICAgZ192YWx1ZV9z
ZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lucyhzZXR0
aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0pBVkE6CisgICAg
ICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X2phdmEoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0pBVkFTQ1JJ
UFRfQ0FOX09QRU5fV0lORE9XU19BVVRPTUFUSUNBTExZOgorICAgICAgICBnX3ZhbHVlX3NldF9i
b29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2lu
ZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29s
ZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmco
c2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpF
Q1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYktpdFNldHRpbmdzRmlu
YWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIFdFQktJVF9TRVRUSU5HUyhvYmplY3QpLT5w
cml2LT5+V2ViS2l0U2V0dGluZ3NQcml2YXRlKCk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0
X3NldHRpbmdzX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFNldHRpbmdzQ2xhc3MqIGtsYXNz
KQoreworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xh
c3MpOworICAgIGdPYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2ViS2l0U2V0dGluZ3NTZXRQ
cm9wZXJ0eTsKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYktpdFNldHRpbmdz
R2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYktpdFNldHRpbmdz
RmluYWxpemU7CisKKyAgICBHUGFyYW1GbGFncyByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdz
ID0gc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BB
UkFNX0NPTlNUUlVDVCk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmVuYWJsZS1q
YXZhc2NyaXB0CisgICAgKgorICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBKYXZhU2Ny
aXB0IGV4ZWN1dGVzIHdpdGhpbiBhIHBhZ2UuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9KQVZBU0NSSVBULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1qYXZhc2Ny
aXB0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF8oIkVuYWJsZSBKYXZhU2NyaXB0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgSmF2YVNjcmlwdC4iKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisgICAgCisgICAgLyoqCisg
ICAgKiBXZWJLaXRTZXR0aW5nczphdXRvLWxvYWQtaW1hZ2VzCisgICAgKgorICAgICogRGV0ZXJt
aW5lcyB3aGV0aGVyIGltYWdlcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBsb2FkZWQgb3Igbm90
LgorICAgICogT24gZGV2aWNlcyB3aGVyZSBuZXR3b3JrIGJhbmR3aWR0aCBpcyBvZiBjb25jZXJu
LCBpdCBtaWdodCBiZQorICAgICogdXNlZnVsIHRvIHR1cm4gdGhpcyBwcm9wZXJ0eSBvZmYuCisg
ICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0
Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0FVVE9fTE9B
RF9JTUFHRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3Nw
ZWNfYm9vbGVhbigiYXV0by1sb2FkLWltYWdlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJBdXRvIGxvYWQgaW1hZ2VzIiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
KCJMb2FkIGltYWdlcyBhdXRvbWF0aWNhbGx5LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVj
dFBhcmFtRmxhZ3MpKTsKKyAgICAKKyAgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmxvYWQt
aWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1zZXR0aW5nCisgICAgKgorICAgICogRGV0ZXJtaW5l
cyB3aGV0aGVyIGEgc2l0ZSBjYW4gbG9hZCBmYXZpY29ucyBpcnJlc3BlY3RpdmUKKyAgICAqIG9m
IHRoZSB2YWx1ZSBvZiAjV2ViU2V0dGluZ3M6YXV0by1sb2FkLWltYWdlcy4KKyAgICAqCisgICAg
Ki8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfTE9BRF9JQ09OU19JR05PUklO
R19JTUFHRV9MT0FEX1NFVFRJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfYm9vbGVhbigibG9hZC1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXNl
dHRpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXygiTG9hZCBpY29ucyBpZ25vcmluZyBpbWFnZSBsb2FkIHNldHRpbmciKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8o
IldoZXRoZXIgdG8gbG9hZCBzaXRlIGljb25zIGlnbm9yaW5nIGltYWdlIGxvYWQgc2V0dGluZy4i
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisgICAgLyoqCisg
ICAgKiBXZWJLaXRTZXR0aW5nczplbmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUK
KyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBvZmZsaW5lIHdlYiBhcHBsaWNh
dGlvbiBjYWNoZSBzdXBwb3J0LiBPZmZsaW5lCisgICAgKiB3ZWIgYXBwbGljYXRpb24gY2FjaGUg
YWxsb3dzIHdlYiBhcHBsaWNhdGlvbnMgdG8gcnVuIGV2ZW4gd2hlbgorICAgICogdGhlIHVzZXIg
aXMgbm90IGNvbm5lY3RlZCB0byB0aGUgbmV0d29yay4KKyAgICAqIAorICAgICogSFRNTDUgb2Zm
bGluZSB3ZWIgYXBwbGljYXRpb24gc3BlY2lmaWNhdGlvbiBpcyBhdmFpbGFibGUgYXQKKyAgICAq
IGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvb2ZmbGluZS5odG1sLgorICAgICoKKyAgICAq
LworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfT0ZGTElORV9XRUJf
QVBQTElDQVRJT05fQ0FDSEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF8oIkVuYWJsZSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlvbiBjYWNoZSIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhl
ciB0byBlbmFibGUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUuIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVh
ZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRTZXR0
aW5nczplbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZToKKyAgICAqCisgICAgKiBXaGV0aGVyIHRv
IGVuYWJsZSBIVE1MNSBsb2NhbCBzdG9yYWdlIHN1cHBvcnQuIExvY2FsIHN0b3JhZ2UgcHJvdmlk
ZXMKKyAgICAqIHNpbXBsZSBzeW5jaHJvbm91cyBzdG9yYWdlIGFjY2Vzcy4KKyAgICAqCisgICAg
KiBIVE1MNSBsb2NhbCBzdG9yYWdlIHNwZWNpZmljYXRpb24gaXMgYXZhaWxhYmxlIGF0CisgICAg
KiBodHRwOi8vZGV2LnczLm9yZy9odG1sNS93ZWJzdG9yYWdlLy4KKyAgICAqCisgICAgKi8KKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JB
R0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9v
bGVhbigiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEhUTUw1IGxvY2Fs
IHN0b3JhZ2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IExvY2FsIFN0b3JhZ2Ugc3Vw
cG9ydC4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAgICAv
KioKKyAgICAqIFdlYktpdFNldHRpbmdzOmVuYWJsZS1odG1sNS1kYXRhYmFzZToKKyAgICAqCisg
ICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBjbGllbnQtc2lkZSBTUUwgZGF0YWJhc2Ugc3Vw
cG9ydC4gQ2xpZW50LXNpZGUKKyAgICAqIFNRTCBkYXRhYmFzZSBhbGxvd3Mgd2ViIHBhZ2VzIHRv
IHN0b3JlIHN0cnVjdHVyZWQgZGF0YSBhbmQgYmUgYWJsZSB0bworICAgICogdXNlIFNRTCB0byBt
YW5pcHVsYXRlIHRoYXQgZGF0YSBhc3luY2hyb25vdXNseS4KKyAgICAqCisgICAgKiBIVE1MNSBk
YXRhYmFzZSBzcGVjaWZpY2F0aW9uIGlzIGF2YWlsYWJsZSBhdAorICAgICogaHR0cDovL3d3dy53
My5vcmcvVFIvd2ViZGF0YWJhc2UvLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNz
X2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh0bWw1LWRh
dGFiYXNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF8oIkVuYWJsZSBIVE1MNSBkYXRhYmFzZSIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFi
bGUgSFRNTDUgZGF0YWJhc2Ugc3VwcG9ydC4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQ
YXJhbUZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmVuYWJsZS14c3Mt
YXVkaXRvcgorICAgICoKKyAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBYU1MgYXVkaXRvci4g
VGhpcyBmZWF0dXJlIGZpbHRlcnMgc29tZSBraW5kcyBvZgorICAgICogcmVmbGVjdGl2ZSBYU1Mg
YXR0YWNrcyBvbiB2dWxuZXJhYmxlIHdlYiBzaXRlcy4KKyAgICAqCisgICAgKi8KKyAgICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX1hTU19BVURJVE9SLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS14
c3MtYXVkaXRvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfKCJFbmFibGUgWFNTIGF1ZGl0b3IiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5h
YmxlIHRoZSBYU1MgYXVkaXRvci4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZs
YWdzKSk7CisKKworICAgIC8qKgorICAgICogV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWZyYW1lLWZs
YXR0ZW5pbmcKKyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgZnJhbWUgZmxhdHRl
bmluZy4gV2l0aCB0aGlzIHNldHRpbmcgZWFjaCBzdWJmcmFtZSBpcyBleHBhbmRlZAorICAgICog
dG8gaXRzIGNvbnRlbnRzLCB3aGljaCB3aWxsIGZsYXR0ZW4gYWxsIHRoZSBmcmFtZXMgdG8gYmVj
b21lIG9uZSBzY3JvbGxhYmxlIHBhZ2UuCisgICAgKiBPbiB0b3VjaCBkZXZpY2VzIHNjcm9sbGFi
bGUgc3ViZnJhbWVzIG9uIGEgcGFnZSBjYW4gcmVzdWx0IGluIGEgY29uZnVzaW5nIHVzZXIgZXhw
ZXJpZW5jZS4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfRU5BQkxFX0ZSQU1FX0ZMQVRURVJJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmciLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XygiRW5hYmxlIGZyYW1lIGZsYXR0ZW5pbmciKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIGZyYW1l
IGZsYXR0ZW5pbmcuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsK
KworICAgLyoqCisgICAgKiBXZWJLaXRTZXR0aW5nczplbmFibGUtcGx1Z2luczoKKyAgICAqCisg
ICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHBsdWdpbnMgb24gdGhlIHBhZ2UgYXJlIGVu
YWJsZWQuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9Q
X0VOQUJMRV9QTFVHSU5TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19w
YXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1wbHVnaW5zIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBwbHVnaW5zIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfKCJFbmFibGUgZW1iZWRkZWQgcGx1Z2luIG9iamVjdHMuIiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFdyaXRl
Q29uc3RydWN0UGFyYW1GbGFncykpOworICAgIAorICAgLyoqCisgICAgKiBXZWJLaXRTZXR0aW5n
czplbmFibGUtamF2YToKKyAgICAqCisgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IEph
dmEgaXMgZW5hYmxlZCBvbiB0aGUgcGFnZS4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0pBVkEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWphdmEiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5h
YmxlIEphdmEiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF8oIldoZXRoZXIgSmF2YSBzdXBwb3J0IHNob3VsZCBiZSBlbmFibGVkLiIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKworICAgIC8qKgorICAg
ICogV2ViS2l0U2V0dGluZ3M6amF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2Fs
bHkKKyAgICAqCisgICAgKiBXaGV0aGVyIEphdmFTY3JpcHQgY2FuIG9wZW4gcG9wdXAgd2luZG93
cyBhdXRvbWF0aWNhbGx5IHdpdGhvdXQgdXNlcgorICAgICogaW50ZXJ2ZW50aW9uLgorICAgICoK
KyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9KQVZBU0NSSVBUX0NB
Tl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRv
d3MtYXV0b21hdGljYWxseSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfKCJKYXZhU2NyaXB0IGNhbiBvcGVuIHdpbmRvd3MgYXV0b21h
dGljYWxseSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXygiV2hldGhlciBKYXZhU2NyaXB0IGNhbiBvcGVuIHdpbmRvd3MgYXV0b21h
dGljYWxseS4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisg
ICAgLyoqCisgICAgKiBXZWJLaXRTZXR0aW5nczplbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nOgor
ICAgICoKKyAgICAqIERldGVybWluZXMgd2hldGhlciBvciBub3QgaHlwZXJsaW5rIGF1ZGl0aW5n
IGlzIGVuYWJsZWQuCisgICAgKgorICAgICogVGhlIGh5cGVybGluayBhdWRpdGluZyBzcGVjaWZp
Y2F0aW9uIGlzIGF2YWlsYWJsZSBhdAorICAgICogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvbGlua3MuaHRtbCNoeXBlcmxpbmstYXVk
aXRpbmcuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9Q
X0VOQUJMRV9IWVBFUkxJTktfQVVESVRJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfKCJFbmFibGUgaHlwZXJsaW5rIGF1ZGl0aW5nIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIDxhIHBpbmc+IHNo
b3VsZCBiZSBhYmxlIHRvIHNlbmQgcGluZ3MuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVj
dFBhcmFtRmxhZ3MpKTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6
ZW9mKFdlYktpdFNldHRpbmdzUHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfc2V0
dGluZ3NfaW5pdChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgV2ViS2l0U2V0dGlu
Z3NQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHNldHRpbmdzLCBX
RUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFNldHRpbmdzUHJpdmF0ZSk7CisgICAgc2V0
dGluZ3MtPnByaXYgPSBwcml2OworICAgIG5ldyAocHJpdikgV2ViS2l0U2V0dGluZ3NQcml2YXRl
KCk7CisKKyAgICBwcml2LT5wcmVmZXJlbmNlcyA9IGFkb3B0V0soV0tQcmVmZXJlbmNlc0NyZWF0
ZSgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfbmV3OgorICoKKyAqIENyZWF0ZXMg
YSBuZXcgI1dlYktpdFNldHRpbmdzIGluc3RhbmNlIHdpdGggZGVmYXVsdCB2YWx1ZXMuIEl0IG11
c3QKKyAqIGJlIG1hbnVhbGx5IGF0dGFjaGVkIHRvIGEgV2ViVmlldy4KKyAqCisgKiBSZXR1cm5z
OiBhIG5ldyAjV2ViS2l0U2V0dGluZ3MgaW5zdGFuY2UuCisgKiovCitXZWJLaXRTZXR0aW5ncyog
d2Via2l0X3NldHRpbmdzX25ldygpCit7CisgICAgcmV0dXJuIFdFQktJVF9TRVRUSU5HUyhnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTLCBOVUxMKSk7Cit9CisKKy8qKgorICog
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdDoKKyAqCisgKiBHZXQgdGhlICNX
ZWJLaXRTZXR0aW5nczplbmFibGUtamF2YXNjcmlwdCBwcm9wZXJ0eS4KKyAqIEBzZXR0aW5nczog
YSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBKYXZhU2NyaXB0IGlz
IGVuYWJsZWQgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiovCitnYm9vbGVhbiB3ZWJraXRf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRp
bmdzKSwgRkFMU0UpOworCisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0RW5h
YmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQ6CisgKiBAc2V0dGluZ3M6IGEgI1dl
YktpdFNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHRo
ZSAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWphdmFzY3JpcHQgcHJvcGVydHkuCisgKgorICoqLwor
dm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0KFdlYktpdFNldHRpbmdz
KiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJp
dmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQ
cmVmZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsK
KyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IFdLUHJlZmVyZW5jZXNTZXRKYXZhU2NyaXB0RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQo
KSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVu
YWJsZS1qYXZhc2NyaXB0Iik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9hdXRv
X2xvYWRfaW1hZ2VzOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAqIEdl
dCB0aGUgI1dlYktpdFNldHRpbmdzOmF1dG8tbG9hZC1pbWFnZXMgcHJvcGVydHkuCisgKgorICog
UmV0dXJuczogJVRSVUUgSWYgYXV0byBsb2FkaW5nIG9mIGltYWdlcyBpcyBlbmFibGVkIG9yICVG
QUxTRSBvdGhlcndpc2UuCisgKgorICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9h
dXRvX2xvYWRfaW1hZ2VzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwor
CisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoc2V0
dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2F1dG9fbG9hZF9pbWFnZXM6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRp
bmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHRoZSAjV2ViS2l0
U2V0dGluZ3M6YXV0by1sb2FkLWltYWdlcyBwcm9wZXJ0eS4KKyAqCisgKiovCit2b2lkIHdlYmtp
dF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3Ms
IGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VC
X1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYg
PSBzZXR0aW5ncy0+cHJpdjsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNH
ZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAg
IGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQ
cmVmZXJlbmNlc1NldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcy5n
ZXQoKSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwg
ImF1dG8tbG9hZC1pbWFnZXMiKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2xv
YWRfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9zZXR0aW5nOgorICogQHNldHRpbmdzOiBhICNX
ZWJLaXRTZXR0aW5ncworICoKKyAqIEdldCB0aGUgI1dlYktpdFNldHRpbmdzOmxvYWQtaWNvbnMt
aWdub3JpbmctaW1hZ2UtbG9hZC1zZXR0aW5nIHByb3BlcnR5LgorICoKKyAqIFJldHVybnM6ICVU
UlVFIElmIHNpdGUgaWNvbiBjYW4gYmUgbG9hZGVkIGlycmVzcGVjdGl2ZSBvZiBpbWFnZSBsb2Fk
aW5nIHByZWZlcmVuY2Ugb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiovCitnYm9vbGVhbiB3
ZWJraXRfc2V0dGluZ3NfZ2V0X2xvYWRfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9zZXR0aW5n
KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgcmV0dXJuIFdL
UHJlZmVyZW5jZXNHZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5j
ZShzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtp
dF9zZXR0aW5nc19zZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmc6Cisg
KiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUg
c2V0CisgKgorICogU2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6bG9hZC1pY29ucy1pZ25vcmluZy1p
bWFnZS1sb2FkLXNldHRpbmcgcHJvcGVydHkuCisgKgorICoqLwordm9pZCB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2xvYWRfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9zZXR0aW5nKFdlYktpdFNldHRp
bmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdz
UHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0g
V0tQcmVmZXJlbmNlc0dldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJl
bmNlKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVu
YWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRMb2Fkc1NpdGVJ
Y29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZShwcml2LT5wcmVmZXJlbmNlcy5nZXQo
KSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImxv
YWQtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1zZXR0aW5nIik7Cit9CisKKy8qKgorICogd2Vi
a2l0X3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGU6Cisg
KiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHRoZSAjV2ViS2l0U2V0
dGluZ3M6ZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlIHByb3BlcnR5LgorICoK
KyAqIFJldHVybnM6ICVUUlVFIElmIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hl
IHN1cHBvcnQgaXMgZW5hYmxlZCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqKi8KK2dib29s
ZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2Nh
Y2hlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAgcmV0dXJu
IFdLUHJlZmVyZW5jZXNHZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoc2V0dGlu
Z3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZToKKyAqIEBzZXR0aW5n
czogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisg
KiBTZXQgdGhlICNXZWJLaXRTZXR0aW5nczplbmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24t
Y2FjaGUgcHJvcGVydHkuCisgKgorICoqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3Ms
IGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VC
X1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYg
PSBzZXR0aW5ncy0+cHJpdjsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNH
ZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0
KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgV0tQcmVmZXJlbmNlc1NldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChw
cml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdf
T0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZSIp
OworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0
b3JhZ2U6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHRoZSAj
V2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UgcHJvcGVydHkuCisgKgor
ICogUmV0dXJuczogJVRSVUUgSWYgSFRNTDUgbG9jYWwgc3RvcmFnZSBzdXBwb3J0IGlzIGVuYWJs
ZWQgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiovCitnYm9vbGVhbiB3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5n
cykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNl
dHRpbmdzKSwgRkFMU0UpOworCisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2NhbFN0b3Jh
Z2VFbmFibGVkKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgor
ICogd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZToKKyAqIEBz
ZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQK
KyAqCisgKiBTZXQgdGhlICNXZWJLaXRTZXR0aW5nczplbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFn
ZSBwcm9wZXJ0eS4KKyAqCisgKiovCit2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0
bWw1X2xvY2FsX3N0b3JhZ2UoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFi
bGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0
aW5ncykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnBy
aXY7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TG9jYWxTdG9yYWdl
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9
PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0TG9jYWxT
dG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19v
YmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1odG1sNS1sb2NhbC1zdG9y
YWdlIik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0
YWJhc2U6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHRoZSAj
V2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWh0bWw1LWRhdGFiYXNlIHByb3BlcnR5LgorICoKKyAqIFJl
dHVybnM6ICVUUlVFIElmIEhUTUw1IGRhdGFiYXNlIHN1cHBvcnQgaXMgZW5hYmxlZCBvciAlRkFM
U0Ugb3RoZXJ3aXNlLgorICoKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX2h0bWw1X2RhdGFiYXNlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0Up
OworCisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXREYXRhYmFzZXNFbmFibGVkKHNldHRpbmdz
LT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdz
X3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2U6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRp
bmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHRoZSAjV2ViS2l0
U2V0dGluZ3M6ZW5hYmxlLWh0bWw1LWRhdGFiYXNlIHByb3BlcnR5LgorICoKKyAqKi8KK3ZvaWQg
d2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UoV2ViS2l0U2V0dGluZ3Mq
IHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2
YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1By
ZWZlcmVuY2VzR2V0RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cisg
ICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBX
S1ByZWZlcmVuY2VzU2V0RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwg
ZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJs
ZS1odG1sNS1kYXRhYmFzZSIpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX3hzc19hdWRpdG9yOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAq
IEdldCB0aGUgI1dlYktpdFNldHRpbmdzOmVuYWJsZS14c3MtYXVkaXRvciBwcm9wZXJ0eS4KKyAq
CisgKiBSZXR1cm5zOiAlVFJVRSBJZiB4c3MgYXVkaXRpbmcgaXMgZW5hYmxlZCBvciAlRkFMU0Ug
b3RoZXJ3aXNlLgorICoKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X3hzc19hdWRpdG9yKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisg
ICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRpdG9yRW5hYmxlZChzZXR0aW5ncy0+cHJp
di0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRf
ZW5hYmxlX3hzc19hdWRpdG9yOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICog
QGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdz
OmVuYWJsZS14c3MtYXVkaXRvciBwcm9wZXJ0eS4KKyAqCisgKiovCit2b2lkIHdlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jv
b2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VU
VElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNl
dHRpbmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFhT
U0F1ZGl0b3JFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVu
dFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNT
ZXRYU1NBdWRpdG9yRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7Cisg
ICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS14c3MtYXVkaXRv
ciIpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0
ZW5pbmc6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHRoZSAj
V2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmcgcHJvcGVydHkuCisgKi4KKyAq
IFJldHVybnM6ICVUUlVFIElmIGZyYW1lIGZsYXR0ZW5pbmcgaXMgZW5hYmxlZCBvciAlRkFMU0Ug
b3RoZXJ3aXNlLgorICoKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X2ZyYW1lX2ZsYXR0ZW5pbmcoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7
CisKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoc2V0
dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nOgorICogQHNldHRpbmdzOiBhICNXZWJL
aXRTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUg
I1dlYktpdFNldHRpbmdzOmVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIHByb3BlcnR5LgorICoKKyAq
Ki8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhXZWJL
aXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRT
ZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBib29sIGN1cnJlbnRW
YWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHByaXYtPnByZWZl
cmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHBy
aXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19P
QkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmciKTsKK30KKworLyoqCisg
KiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zOgorICogQHNldHRpbmdzOiBhICNX
ZWJLaXRTZXR0aW5ncworICoKKyAqIEdldCB0aGUgI1dlYktpdFNldHRpbmdzOmVuYWJsZS1wbHVn
aW5zIHByb3BlcnR5LgorICoKKyAqIFJldHVybnM6ICVUUlVFIElmIHBsdWdpbnMgYXJlIGVuYWJs
ZWQgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiovCitnYm9vbGVhbiB3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9wbHVnaW5zKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFM
U0UpOworCisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRQbHVnaW5zRW5hYmxlZChzZXR0aW5n
cy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5n
c19zZXRfZW5hYmxlX3BsdWdpbnM6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisg
KiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHRoZSAjV2ViS2l0U2V0dGlu
Z3M6ZW5hYmxlLXBsdWdpbnMgcHJvcGVydHkuCisgKgorICoqLwordm9pZCB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9wbHVnaW5zKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4g
ZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Mo
c2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdz
LT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFBsdWdpbnNF
bmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09
IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRQbHVnaW5z
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rf
bm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1wbHVnaW5zIik7Cit9CisKKy8qKgor
ICogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YToKKyAqIEBzZXR0aW5nczogYSAjV2Vi
S2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhlICNXZWJLaXRTZXR0aW5nczplbmFibGUtamF2YSBw
cm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBKYXZhIGlzIGVuYWJsZWQgb3IgJUZB
TFNFIG90aGVyd2lzZS4KKyAqCisgKiovCitnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9qYXZhKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworCisgICAg
cmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVy
ZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2ph
dmE6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBAZW5hYmxlZDogVmFsdWUg
dG8gYmUgc2V0CisgKgorICogU2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWphdmEgcHJv
cGVydHkuCisgKgorICoqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKFdl
YktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktp
dFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wgY3VycmVu
dFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEphdmFFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdl
dCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQo
KSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVu
YWJsZS1qYXZhIik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0
X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0
U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhlICNXZWJLaXRTZXR0aW5nczpqYXZhc2NyaXB0LWNhbi1v
cGVuLXdpbmRvd3MtYXV0b21hdGljYWxseSBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAlVFJV
RSBJZiBKYXZhU2NyaXB0IGNhbiBvcGVuIHdpbmRvdyBhdXRvbWF0aWNhbGx5IG9yICVGQUxTRSBv
dGhlcndpc2UuCisgKgorICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2Ny
aXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhz
ZXR0aW5ncyksIEZBTFNFKTsKKworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlw
dENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMu
Z2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5f
b3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHk6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRp
bmdzCisgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHRoZSAjV2ViS2l0
U2V0dGluZ3M6amF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHkgcHJvcGVy
dHkuCisgKgorICoqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29w
ZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xl
YW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElO
R1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRp
bmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkp
OworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgV0tQcmVmZXJlbmNlc1NldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHko
cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShH
X09CSkVDVChzZXR0aW5ncyksICJqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGlj
YWxseSIpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlu
a19hdWRpdGluZzoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQg
dGhlICNXZWJLaXRTZXR0aW5nczplbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nIHByb3BlcnR5Lgor
ICoKKyAqIFJldHVybnM6ICVUUlVFIElmIGh5cGVyIGxpbmsgYXVkaXRpbmcgaXMgZW5hYmxlZCBv
ciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5n
cyksIEZBTFNFKTsKKworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SHlwZXJsaW5rQXVkaXRp
bmdFbmFibGVkKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgor
ICogd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nOgorICogQHNl
dHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAor
ICoKKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmcg
cHJvcGVydHkuCisgKgorICoqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBl
cmxpbmtfYXVkaXRpbmcoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVk
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5n
cykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7
CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0SHlwZXJsaW5rQXVkaXRp
bmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVl
ID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRIeXBl
cmxpbmtBdWRpdGluZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOwor
ICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtaHlwZXJsaW5r
LWF1ZGl0aW5nIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0U2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWVj
N2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0U2V0dGluZ3MuaApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCAKKyAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Us
IAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
CisgKiBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSAKKyAqIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgCisgKiBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiAKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCAKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIAorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJf
Q09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5j
bHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0U2V0dGluZ3NfaAorI2Rl
ZmluZSBXZWJLaXRTZXR0aW5nc19oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUg
V0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTICAgICAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRf
dHlwZSgpKQorI2RlZmluZSBXRUJLSVRfU0VUVElOR1Mob2JqKSAgICAgICAgICAgICAgICAoR19U
WVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywg
V2ViS2l0U2V0dGluZ3MpKQorI2RlZmluZSBXRUJLSVRfU0VUVElOR1NfQ0xBU1Moa2xhc3MpICAg
ICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9T
RVRUSU5HUywgV2ViS2l0U2V0dGluZ3NDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfU0VU
VElOR1Mob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VC
S0lUX1RZUEVfV0VCX1NFVFRJTkdTKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9TRVRUSU5HU19D
TEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQ
RV9XRUJfU0VUVElOR1MpKQorI2RlZmluZSBXRUJLSVRfU0VUVElOR1NfR0VUX0NMQVNTKG9iaikg
ICAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9T
RVRUSU5HUywgV2ViS2l0U2V0dGluZ3NDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRT
ZXR0aW5ncyBXZWJLaXRTZXR0aW5nczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRTZXR0aW5nc0Ns
YXNzIFdlYktpdFNldHRpbmdzQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0U2V0dGluZ3NQ
cml2YXRlIFdlYktpdFNldHRpbmdzUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRTZXR0aW5ncyB7
CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZh
dGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFNldHRpbmdzQ2xhc3MgeworICAgIEdPYmpl
Y3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICAvKiBQYWRkaW5nIGZvciBmdXR1cmUgZXhwYW5z
aW9uICovCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAo
Kl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQz
KSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9pZCk7Cit9OworCitX
RUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfc2V0dGluZ3NfZ2V0X3R5cGUodm9pZCk7CisKK1dFQktJ
VF9BUEkgV2ViS2l0U2V0dGluZ3MgKgord2Via2l0X3NldHRpbmdzX25ldyh2b2lkKTsKKworV0VC
S0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dF
QktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
Ym9vbGVhbiBlbmFibGVkKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3NldHRpbmdz
X2dldF9hdXRvX2xvYWRfaW1hZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNl
dHRpbmdzKiBzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3Nl
dF9hdXRvX2xvYWRfaW1hZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRp
bmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0VCS0lUX0FQSSBn
Ym9vbGVhbgord2Via2l0X3NldHRpbmdzX2dldF9sb2FkX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xv
YWRfc2V0dGluZyAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkg
dm9pZAord2Via2l0X3NldHRpbmdzX3NldF9sb2FkX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRf
c2V0dGluZyAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBl
bmFibGVkKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUgICAgICAgKFdlYktpdFNldHRpbmdzKiBz
ZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVf
b2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUgICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0
aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgor
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSAgICAgICAgICAg
ICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSAgICAgICAgICAgICAg
ICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsK
KworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVf
ZGF0YWJhc2UgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyk7
CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0
YWJhc2UgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnYm9vbGVhbiBlbmFibGVkKTsKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0
aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJL
aXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5n
c19zZXRfZW5hYmxlX3hzc19hdWRpdG9yICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRT
ZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9B
UEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcg
ICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xl
YW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX3BsdWdpbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5n
cyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZW5h
YmxlX3BsdWdpbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxl
ZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfamF2YXNjcmlw
dF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkgIChXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9j
YW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtp
dF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyAgICAgICAgICAgICAgICAg
IChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyAgICAgICAgICAgICAgICAgIChX
ZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK0df
RU5EX0RFQ0xTCisKKyNlbmRpZiAvKiB3ZWJraXR3ZWJzZXR0aW5nc19oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IGZlMWFkYzkuLmFiNDFjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCkBAIC0xLDcgKzEsOCBAQAogVEVTVF9Q
Uk9HUyArPSBcCiAJUHJvZ3JhbXMvV2ViS2l0MkFQSVRlc3RzL1Rlc3RXZWJLaXRXZWJDb250ZXh0
IFwKIAlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdFdlYktpdFdlYlZpZXcgXAotCVByb2dy
YW1zL1dlYktpdDJBUElUZXN0cy9UZXN0V2ViS2l0V2ViTG9hZGVyQ2xpZW50CisJUHJvZ3JhbXMv
V2ViS2l0MkFQSVRlc3RzL1Rlc3RXZWJLaXRXZWJMb2FkZXJDbGllbnQgXAorCVByb2dyYW1zL1dl
YktpdDJBUElUZXN0cy9UZXN0V2ViS2l0U2V0dGluZ3MKIAogbm9pbnN0X1BST0dSQU1TICs9ICQo
VEVTVF9QUk9HUykKIHdlYmtpdDJfdGVzdHNfY3BwZmxhZ3MgPSBcCkBAIC02MCwzICs2MSw4IEBA
IFByb2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0V2ViS2l0V2ViTG9hZGVyQ2xpZW50X0NQUEZM
QUdTID0gJCh3ZWJraXQyX3Rlc3RzX2NwCiBQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdFdl
YktpdFdlYkxvYWRlckNsaWVudF9MREFERCA9ICQod2Via2l0Ml90ZXN0c19sZGFkZCkKIFByb2dy
YW1zX1dlYktpdDJBUElUZXN0c19UZXN0V2ViS2l0V2ViTG9hZGVyQ2xpZW50X0xERkxBR1MgPSAk
KHdlYmtpdDJfdGVzdHNfbGRmbGFncykKIAorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RX
ZWJLaXRTZXR0aW5nc19TT1VSQ0VTID0gXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKK1Byb2dyYW1zX1dlYktpdDJBUElUZXN0
c19UZXN0V2ViS2l0U2V0dGluZ3NfQ1BQRkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfY3BwZmxhZ3Mp
CitQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdFdlYktpdFNldHRpbmdzX0xEQUREID0gJCh3
ZWJraXQyX3Rlc3RzX2xkYWRkKQorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RXZWJLaXRT
ZXR0aW5nc19MREZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxhZ3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0U2V0dGluZ3Mu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFNl
dHRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTFhNjgwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdFdlYktpdFNldHRpbmdzLmNwcApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCAKKyAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3IgCisgKiBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSAKKyAqIGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
CisgKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UyAKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiAKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCAKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIAorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0TWFpbi5oIgorI2lu
Y2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KKworc3RhdGlj
IHZvaWQgdGVzdFdlYktpdFNldHRpbmdzKFRlc3QqLCBnY29uc3Rwb2ludGVyKQoreworICAgIFdl
YktpdFNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF9zZXR0aW5nc19uZXcoKTsKKworICAgIC8v
IEphdmFTY3JpcHQgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF9z
ZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3Nl
cnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MpKTsKKwor
ICAgIC8vIEJ5IGRlZmF1bHQgYXV0by1sb2FkLWltYWdlIGlzIHRydWUuCisgICAgZ19hc3NlcnQo
d2Via2l0X3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzKSk7CisgICAgd2Vi
a2l0X3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzLCBGQUxTRSk7CisgICAg
Z19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncykp
OworCisgICAgLy8gbG9hZC1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXNldHRpbmcgaXMgZmFs
c2UgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9sb2FkX2lj
b25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfc2V0dGluZyhzZXR0aW5ncykpOworICAgIHdlYmtpdF9z
ZXR0aW5nc19zZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmcoc2V0dGlu
Z3MsIFRSVUUpOworICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfbG9hZF9pY29uc19p
Z25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmcoc2V0dGluZ3MpKTsKKyAgICAKKyAgICAvLyBPZmZs
aW5lIGFwcGxpY2F0aW9uIGNhY2hlIGlzIHRydWUgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCh3
ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShz
ZXR0aW5ncykpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2Fw
cGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9z
ZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdz
KSk7CisKKyAgICAvLyBMb2NhbCBzdG9yYWdlIGlzIGVuYWJsZSBieSBkZWZhdWx0LgorICAgIGdf
YXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0
dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9y
YWdlKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0dGluZ3MpKTsKKworICAgIC8vIEhUTUw1IGRh
dGFiYXNlIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncykpOworICAgIHdlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19h
c3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdz
KSk7CisKKyAgICAvLyBYU1MgQXVkaXRvciBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisgICAgZ19h
c3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3Ioc2V0dGluZ3MpKTsK
KyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncywgRkFM
U0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRv
cihzZXR0aW5ncykpOworCisgICAgLy8gRnJhbWUgZmxhdHRlcmluZyBpcyBkaXNhYmxlZCBieSBk
ZWZhdWx0LgorICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9m
bGF0dGVuaW5nKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfZnJh
bWVfZmxhdHRlbmluZyhzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0X3NldHRp
bmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncykpOworCisgICAgLy8gUGx1
Z2lucyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0
X2VuYWJsZV9wbHVnaW5zKHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9z
ZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MpKTsKKworICAgIC8vIEphdmEgaXMg
ZW5hYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX2phdmEoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZh
KHNldHRpbmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX2phdmEoc2V0dGluZ3MpKTsKKworICAgIC8vIEJ5IGRlZmF1bHQsIEphdmFTY3JpcHQgY2Fu
IG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IGlzIGRpc2FibGVkLgorICAgIGdfYXNzZXJ0KCF3
ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNh
bGx5KHNldHRpbmdzKSk7CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9v
cGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQo
d2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGlj
YWxseShzZXR0aW5ncykpOworCisgICAgLy8gQnkgZGVmYXVsdCBoeXBlciBsaW5rIGF1ZGl0aW5n
IGlzIGRpc2FibGVkLgorICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9o
eXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MsIFRSVUUpOworICAgIGdfYXNzZXJ0KHdl
YmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncykpOwor
CisgICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1Qoc2V0dGluZ3MpKTsKK30KKwordm9pZCBiZWZv
cmVBbGwoKQoreworICAgIFRlc3Q6OmFkZCgiV2ViS2l0U2V0dGluZ3MiLCAid2Via2l0LXNldHRp
bmdzIiwgdGVzdFdlYktpdFNldHRpbmdzKTsKK30KKwordm9pZCBhZnRlckFsbCgpCit7Cit9CisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCAzMWYxMTBh
Li41NDBjNmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93
ZWJraXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5o
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgor
ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNSw2ICsyNiw3IEBA
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRFbnVtVHlwZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEVycm9yLmg+CisjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRTZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
V2ViQ29udGV4dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViTG9hZGVyQ2xpZW50Lmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJWaWV3QmFzZS5oPgotLSAKMS43LjQuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110951</attachid>
            <date>2011-10-13 19:30:58 -0700</date>
            <delta_ts>2011-10-13 20:12:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68371-20111013193057.patch</filename>
            <type>text/plain</type>
            <size>53430</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc0MzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjZjE4OWJmZmQzODNhZTRl
OTA3Y2RhMWZhYjM2ZGM4MTVkMmU5ZWYxLi45OTJkY2I2MWQ4Yzk1MjA1YjkyNWU3YzdjYjYxY2U4
YTQ5M2Y5OTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTEtMTAtMTMgIE5heWFu
IEt1bWFyIEsgIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbR1RLXVtXRUJLSVQy
XSBBZGQgV2ViS2l0U2V0dGluZ3MgR1RLKyBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODM3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcnRp
biBSb2JpbnNvbi4KKworICAgICAgICBXZWJLaXRTZXR0aW5ncyBHVEsrIG9iamVjdCBpcyBjcmVh
dGVkIGFuZCBmaXJzdCBzZXQgb2YKKyAgICAgICAgQVBJJ3MgYXJlIHdyaXR0ZW4gdG8gZ2V0IG9y
IHNldCB0aGUgcHJvcGVydGllcyBvZiBXZWJLaXRTZXR0aW5ncy4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOiBBZGRlZCBuZXcgZmlsZXMgZm9yIGNvbXBpbGF0aW9uLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcDogQWRkZWQuCisgICAgICAgIChfV2Vi
S2l0U2V0dGluZ3NQcml2YXRlOjpfV2ViS2l0U2V0dGluZ3NQcml2YXRlKTogQ29uc3RydWN0b3Iu
CisgICAgICAgICh3ZWJLaXRTZXR0aW5nc1NldFByb3BlcnR5KTogU2V0IHByb3BlcnR5IGZ1bmN0
aW9uLgorICAgICAgICAod2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eSk6IEdldCBwcm9wZXJ0eSBm
dW5jdGlvbi4KKyAgICAgICAgKHdlYktpdFNldHRpbmdzRmluYWxpemUpOiBDbGFzcyBmaW5hbGl6
ZSBmdW5jdGlvbi4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0KTogQ2xhc3Mg
aW5pdCBmdW5jdGlvbi4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19pbml0KTogSW5zdGFuY2Ug
aW5pdCBmdW5jdGlvbi4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19uZXcpOiBDcmVhdGVzIFdl
YktpdFNldHRpbmdzIEdPYmplY3QuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9qYXZhc2NyaXB0KTogRnVuY3Rpb24gdG8gZ2V0ICdlbmFibGUtamF2YXNjcmlwdCcgcHJvcGVy
dHkuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0KTogRnVu
Y3Rpb24gdG8gc2V0ICdlbmFibGUtamF2YXNjcmlwdCcgcHJvcGVydHkuCisgICAgICAgICh3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMpOiBHZXQgdGhlICdhdXRvLWxvYWQtaW1h
Z2VzJyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2lt
YWdlcyk6IFNldCB0aGUgJ2F1dG8tbG9hZC1pbWFnZXMnIHByb3BlcnR5LgorICAgICAgICAod2Vi
a2l0X3NldHRpbmdzX2dldF9sb2FkX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfc2V0dGluZyk6
IEZ1bmN0aW9uIHRvIGdldAorICAgICAgICAnbG9hZC1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2Fk
LXNldHRpbmcnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9sb2FkX2lj
b25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfc2V0dGluZyk6IEZ1bmN0aW9uIHRvIHNldAorICAgICAg
ICAnbG9hZC1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXNldHRpbmcnIHByb3BlcnR5LgorICAg
ICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25f
Y2FjaGUpOiBGdW5jdGlvbiB0byBnZXQKKyAgICAgICAgJ2VuYWJsZS1vZmZsaW5lLXdlYi1hcHBs
aWNhdGlvbi1jYWNoZScgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZSk6IEZ1bmN0aW9uIHRvIHNldAorICAg
ICAgICAnZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlJyBwcm9wZXJ0eS4KKyAg
ICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UpOiBH
ZXQgdGhlIHByb3BlcnR5ICdlbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZScuCisgICAgICAgICh3
ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKTogU2V0IHRoZSBw
cm9wZXJ0eSAnZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UnLgorICAgICAgICAod2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UpOiBHZXQgdGhlIHByb3BlcnR5ICdlbmFi
bGUtaHRtbDUtZGF0YWJhc2UnLgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVf
aHRtbDVfZGF0YWJhc2UpOiBTZXQgdGhlIHByb3BlcnR5ICdlbmFibGUtaHRtbDUtZGF0YWJhc2Un
LgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3IpOiBHZXQg
cHJvcGVydHkgJ2VuYWJsZS14c3MtZWRpdG9yJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19z
ZXRfZW5hYmxlX3hzc19hdWRpdG9yKTogU2V0IHByb3BlcnR5ICdlbmFibGUteHNzLWVkaXRvcicu
CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKTog
R2V0IHRoZSBwcm9wZXJ0eSAnZW5hYmxlLWZyYW1lLWZsYXR0ZW5pbmcnLgorICAgICAgICAod2Vi
a2l0X3NldHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyk6IFNldCB0aGUgcHJvcGVy
dHkgJ2VuYWJsZS1mcmFtZS1mbGF0dGVuaW5nJy4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX3BsdWdpbnMpOiBHZXQgdGhlIHByb3BlcnR5ICdlbmFibGUtcGx1Z2lucycuCisg
ICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zKTogU2V0IHRoZSBwcm9w
ZXJ0eSAnZW5hYmxlLXBsdWdpbnMnLgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfamF2YSk6IEZ1bmN0aW9uIHRvIGdldCAnZW5hYmxlLWphdmEnIHByb3BlcnR5LgorICAgICAg
ICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YSk6IEZ1bmN0aW9uIHRvIHNldCAnZW5h
YmxlLWphdmEnIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2Ny
aXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSk6IEdldCB0aGUgcHJvcGVydHkKKyAg
ICAgICAgJ2phdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5Jy4KKyAgICAg
ICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9t
YXRpY2FsbHkpOiBTZXQgdGhlIHByb3BlcnR5CisgICAgICAgICdqYXZhc2NyaXB0LWNhbi1vcGVu
LXdpbmRvd3MtYXV0b21hdGljYWxseScuCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcpOiBHZXQgJ2VuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmcn
IHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5r
X2F1ZGl0aW5nKTogU2V0ICdlbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nJyBwcm9wZXJ0eS4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oOiBBZGRlZC4gUHVibGlj
IEFQSSdzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFt
OiBBZGRlZCBuZXcgdGVzdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0
V2ViS2l0U2V0dGluZ3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRlc3RXZWJLaXRTZXR0aW5ncyk6
IEFkZCBXZWJLaXRTZXR0aW5nIHVuaXQgdGVzdC4KKyAgICAgICAgKGJlZm9yZUFsbCk6IFByZS10
ZXN0IGZ1bmN0aW9uLgorICAgICAgICAoYWZ0ZXJBbGwpOiBQb3N0LXRlc3QgZnVuY3Rpb24uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oOiBBZGQgV2ViS2l0U2V0dGluZ3Mu
aCB0byBleHBvc2VkIEFQSSBsaXN0LgorCiAyMDExLTEwLTEzICBNYXJrIEhhaG5lbmJlcmcgIDxt
aGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIHZpcnR1YWwgZ2V0Q29uc3Ry
dWN0RGF0YSB0byBnZXRDb25zdHJ1Y3REYXRhVmlydHVhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRl
eCBjYTY1OGM1YWU5ZWM5ZDI3YjBiMDYxM2U3MTNiNGI1ZGY3OGQ5NjU4Li43M2VjZjA2MjljMWRk
YzQyMGZhZTdjNzFiNWI0ZDNmOTI0MGY5YzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtNzUs
NiArNzUsNyBAQCB3ZWJraXQyZ3RrX2hlYWRlcnMgPSBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRFcnJvci5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkNvbnRleHQuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJMb2FkZXJDbGllbnQuaCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRT
ZXR0aW5ncy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
aCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwK
IAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtNDgyLDYgKzQ4Myw4
IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdU
S19BUElfTUlOT1JfVkVSU0lPTkBfbGFfU09VCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNsaWVudC5jcHAgXAorCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcCBcCisJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaCBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJkY2Qz
YTg5OGJhZmU5Njg4Y2I0NTEwYjA1ZWViZWE1MWEwNzYzYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcApAQCAtMCww
ICsxLDg1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9u
LCAKKyAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IgCisgKiBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
TW90b3JvbGEgTW9iaWxpdHksIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3Jz
IG1heSAKKyAqIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgCisgKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCAKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIAorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViS2l0U2V0dGluZ3MuaCIKKworI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIK
KyNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1R5cGUuaD4KKyNpbmNsdWRlIDxnbGli
L2dpMThuLWxpYi5oPgorCitzdHJ1Y3QgX1dlYktpdFNldHRpbmdzUHJpdmF0ZSB7CisgICAgV0tS
ZXRhaW5QdHI8V0tQcmVmZXJlbmNlc1JlZj4gcHJlZmVyZW5jZXM7Cit9OworCisvKioKKyAqIFNF
Q1RJT046d2Via2l0c2V0dGluZ3MKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogQ29udHJvbCB0aGUg
YmVoYXZpb3VyIG9mIGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiAjV2ViS2l0U2V0dGluZ3MgY2Fu
IGJlIGFwcGxpZWQgdG8gYSAjV2ViS2l0V2ViVmlldyB0byBjb250cm9sIHRleHQgZW5jb2Rpbmcs
IAorICogY29sb3IsIGZvbnQgc2l6ZXMsIHByaW50aW5nIG1vZGUsIHNjcmlwdCBzdXBwb3J0LCBs
b2FkaW5nIG9mIGltYWdlcyBhbmQgdmFyaW91cyBvdGhlciB0aGluZ3MuIAorICogQWZ0ZXIgY3Jl
YXRpb24sIGEgI1dlYktpdFNldHRpbmdzIG9iamVjdCBjb250YWlucyBkZWZhdWx0IHNldHRpbmdz
LiAKKyAqCisgKiA8aW5mb3JtYWxleGFtcGxlPjxwcm9ncmFtbGlzdGluZz4KKyAqIC88IS0tIC0t
PiogQ3JlYXRlIGEgbmV3ICNXZWJLaXRTZXR0aW5ncyBhbmQgZGlzYWJsZSBKYXZhU2NyaXB0LiAq
PCEtLSAtLT4vCisgKiBXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfc2V0dGluZ3Nf
bmV3ICgpOworICogZ19vYmplY3Rfc2V0IChHX09CSkVDVCAoc2V0dGluZ3MpLCAiZW5hYmxlLWph
dmFzY3JpcHQiLCBGQUxTRSwgTlVMTCk7CisgKgorICogd2Via2l0X3dlYl92aWV3X3NldF9zZXR0
aW5ncyAoV0VCS0lUX1dFQl9WSUVXIChteV93ZWJ2aWV3KSwgc2V0dGluZ3MpOworICogPC9wcm9n
cmFtbGlzdGluZz48L2luZm9ybWFsZXhhbXBsZT4KKyAqLworCisKK0dfREVGSU5FX1RZUEUoV2Vi
S2l0U2V0dGluZ3MsIHdlYmtpdF9zZXR0aW5ncywgR19UWVBFX09CSkVDVCkKKworZW51bSB7Cisg
ICAgUFJPUF8wLAorCisgICAgUFJPUF9FTkFCTEVfSkFWQVNDUklQVCwKKyAgICBQUk9QX0FVVE9f
TE9BRF9JTUFHRVMsCisgICAgUFJPUF9MT0FEX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfU0VU
VElORywKKyAgICBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTl9DQUNIRSwKKyAg
ICBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdFLAorICAgIFBST1BfRU5BQkxFX0hUTUw1
X0RBVEFCQVNFLAorICAgIFBST1BfRU5BQkxFX1hTU19BVURJVE9SLAorICAgIFBST1BfRU5BQkxF
X0ZSQU1FX0ZMQVRURVJJTkcsCisgICAgUFJPUF9FTkFCTEVfUExVR0lOUywKKyAgICBQUk9QX0VO
QUJMRV9KQVZBLAorICAgIFBST1BfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJ
Q0FMTFksCisgICAgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HLAorfTsKKworc3RhdGlj
IHZvaWQgd2ViS2l0U2V0dGluZ3NTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQoreworICAg
IFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyA9IFdFQktJVF9TRVRUSU5HUyhvYmplY3QpOworCisg
ICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0pBVkFTQ1JJUFQ6Cisg
ICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MsIGdf
dmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X0FVVE9fTE9BRF9JTUFHRVM6CisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2Fk
X2ltYWdlcyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfTE9BRF9JQ09OU19JR05PUklOR19JTUFHRV9MT0FEX1NFVFRJ
Tkc6CisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFn
ZV9sb2FkX3NldHRpbmcoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElP
Tl9DQUNIRToKKyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJf
YXBwbGljYXRpb25fY2FjaGUoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9IVE1MNV9MT0NBTF9TVE9SQUdF
OgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdl
KHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0U6CisgICAgICAgIHdlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29s
ZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfWFNTX0FV
RElUT1I6CisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNl
dHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FTkFCTEVfRlJBTUVfRkxBVFRFUklORzoKKyAgICAgICAgd2Via2l0X3NldHRp
bmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9v
bGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1BMVUdJ
TlM6CisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3Ms
IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Uk9QX0VOQUJMRV9KQVZBOgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZh
KHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9KQVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWToK
KyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3Nf
YXV0b21hdGljYWxseShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hZUEVSTElOS19BVURJVElORzoKKyAg
ICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRp
bmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BJZCwgcGFyYW1TcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMg
dm9pZCB3ZWJLaXRTZXR0aW5nc0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0
U2V0dGluZ3MqIHNldHRpbmdzID0gV0VCS0lUX1NFVFRJTkdTKG9iamVjdCk7CisKKyAgICBzd2l0
Y2ggKHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQVNDUklQVDoKKyAgICAgICAg
Z192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2
YXNjcmlwdChzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVVUT19M
T0FEX0lNQUdFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3Nl
dHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9MT0FEX0lDT05TX0lHTk9SSU5HX0lNQUdFX0xPQURfU0VUVElORzoKKyAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9sb2Fk
X2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfc2V0dGluZyhzZXR0aW5ncykpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OX0NBQ0hF
OgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0U6CisgICAg
ICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X2h0bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2Uoc2V0dGlu
Z3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUjoK
KyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfeHNzX2F1ZGl0b3Ioc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Uk9QX0VOQUJMRV9GUkFNRV9GTEFUVEVSSU5HOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFu
KHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRp
bmdzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfUExVR0lOUzoKKyAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfcGx1Z2lucyhzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5B
QkxFX0pBVkE6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0
aW5nc19nZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9XU19BVVRPTUFUSUNBTExZOgorICAgICAg
ICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3Jp
cHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HOgorICAgICAgICBn
X3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBl
cmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElk
LCBwYXJhbVNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdl
YktpdFNldHRpbmdzRmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIFdFQktJVF9TRVRU
SU5HUyhvYmplY3QpLT5wcml2LT5+V2ViS2l0U2V0dGluZ3NQcml2YXRlKCk7CisgICAgR19PQkpF
Q1RfQ0xBU1Mod2Via2l0X3NldHRpbmdzX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFNldHRp
bmdzQ2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19P
QkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIGdPYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Vi
S2l0U2V0dGluZ3NTZXRQcm9wZXJ0eTsKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9
IHdlYktpdFNldHRpbmdzR2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNzLT5maW5hbGl6ZSA9
IHdlYktpdFNldHRpbmdzRmluYWxpemU7CisKKyAgICBHUGFyYW1GbGFncyByZWFkV3JpdGVDb25z
dHJ1Y3RQYXJhbUZsYWdzID0gc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9S
RUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVCk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFNl
dHRpbmdzOmVuYWJsZS1qYXZhc2NyaXB0CisgICAgKgorICAgICogRGV0ZXJtaW5lcyB3aGV0aGVy
IG9yIG5vdCBKYXZhU2NyaXB0IGV4ZWN1dGVzIHdpdGhpbiBhIHBhZ2UuCisgICAgKgorICAgICov
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9KQVZBU0NSSVBULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4o
ImVuYWJsZS1qYXZhc2NyaXB0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBKYXZhU2NyaXB0IiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUg
SmF2YVNjcmlwdC4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisK
KyAgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmF1dG8tbG9hZC1pbWFnZXMKKyAgICAqCisg
ICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW1hZ2VzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGxv
YWRlZCBvciBub3QuCisgICAgKiBPbiBkZXZpY2VzIHdoZXJlIG5ldHdvcmsgYmFuZHdpZHRoIGlz
IG9mIGNvbmNlcm4sIGl0IG1pZ2h0IGJlCisgICAgKiB1c2VmdWwgdG8gdHVybiB0aGlzIHByb3Bl
cnR5IG9mZi4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfQVVUT19MT0FEX0lNQUdFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdfcGFyYW1fc3BlY19ib29sZWFuKCJhdXRvLWxvYWQtaW1hZ2VzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkF1dG8gbG9hZCBp
bWFnZXMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF8oIkxvYWQgaW1hZ2VzIGF1dG9tYXRpY2FsbHkuIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFdy
aXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRTZXR0aW5n
czpsb2FkLWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtc2V0dGluZworICAgICoKKyAgICAqIERl
dGVybWluZXMgd2hldGhlciBhIHNpdGUgY2FuIGxvYWQgZmF2aWNvbnMgaXJyZXNwZWN0aXZlCisg
ICAgKiBvZiB0aGUgdmFsdWUgb2YgI1dlYlNldHRpbmdzOmF1dG8tbG9hZC1pbWFnZXMuCisgICAg
KgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xh
c3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0xPQURfSUNPTlNf
SUdOT1JJTkdfSU1BR0VfTE9BRF9TRVRUSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImxvYWQtaWNvbnMtaWdub3JpbmctaW1hZ2Ut
bG9hZC1zZXR0aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF8oIkxvYWQgaWNvbnMgaWdub3JpbmcgaW1hZ2UgbG9hZCBzZXR0aW5n
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfKCJXaGV0aGVyIHRvIGxvYWQgc2l0ZSBpY29ucyBpZ25vcmluZyBpbWFnZSBsb2FkIHNl
dHRpbmcuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKworICAg
IC8qKgorICAgICogV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9u
LWNhY2hlCisgICAgKgorICAgICogV2hldGhlciB0byBlbmFibGUgSFRNTDUgb2ZmbGluZSB3ZWIg
YXBwbGljYXRpb24gY2FjaGUgc3VwcG9ydC4gT2ZmbGluZQorICAgICogd2ViIGFwcGxpY2F0aW9u
IGNhY2hlIGFsbG93cyB3ZWIgYXBwbGljYXRpb25zIHRvIHJ1biBldmVuIHdoZW4KKyAgICAqIHRo
ZSB1c2VyIGlzIG5vdCBjb25uZWN0ZWQgdG8gdGhlIG5ldHdvcmsuCisgICAgKgorICAgICogSFRN
TDUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gc3BlY2lmaWNhdGlvbiBpcyBhdmFpbGFibGUgYXQK
KyAgICAqIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvb2ZmbGluZS5odG1sLgorICAgICoK
KyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfT0ZGTElO
RV9XRUJfQVBQTElDQVRJT05fQ0FDSEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9u
LWNhY2hlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF8oIkVuYWJsZSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlvbiBjYWNoZSIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
V2hldGhlciB0byBlbmFibGUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUuIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVhZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJL
aXRTZXR0aW5nczplbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZToKKyAgICAqCisgICAgKiBXaGV0
aGVyIHRvIGVuYWJsZSBIVE1MNSBsb2NhbCBzdG9yYWdlIHN1cHBvcnQuIExvY2FsIHN0b3JhZ2Ug
cHJvdmlkZXMKKyAgICAqIHNpbXBsZSBzeW5jaHJvbm91cyBzdG9yYWdlIGFjY2Vzcy4KKyAgICAq
CisgICAgKiBIVE1MNSBsb2NhbCBzdG9yYWdlIHNwZWNpZmljYXRpb24gaXMgYXZhaWxhYmxlIGF0
CisgICAgKiBodHRwOi8vZGV2LnczLm9yZy9odG1sNS93ZWJzdG9yYWdlLy4KKyAgICAqCisgICAg
Ki8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FM
X1NUT1JBR0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3Nw
ZWNfYm9vbGVhbigiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIEhUTUw1
IGxvY2FsIHN0b3JhZ2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIEhUTUw1IExvY2FsIFN0b3Jh
Z2Ugc3VwcG9ydC4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisK
KyAgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmVuYWJsZS1odG1sNS1kYXRhYmFzZToKKyAg
ICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBjbGllbnQtc2lkZSBTUUwgZGF0YWJh
c2Ugc3VwcG9ydC4gQ2xpZW50LXNpZGUKKyAgICAqIFNRTCBkYXRhYmFzZSBhbGxvd3Mgd2ViIHBh
Z2VzIHRvIHN0b3JlIHN0cnVjdHVyZWQgZGF0YSBhbmQgYmUgYWJsZSB0bworICAgICogdXNlIFNR
TCB0byBtYW5pcHVsYXRlIHRoYXQgZGF0YSBhc3luY2hyb25vdXNseS4KKyAgICAqCisgICAgKiBI
VE1MNSBkYXRhYmFzZSBzcGVjaWZpY2F0aW9uIGlzIGF2YWlsYWJsZSBhdAorICAgICogaHR0cDov
L3d3dy53My5vcmcvVFIvd2ViZGF0YWJhc2UvLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWh0
bWw1LWRhdGFiYXNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBIVE1MNSBkYXRhYmFzZSIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0
byBlbmFibGUgSFRNTDUgZGF0YWJhc2Ugc3VwcG9ydC4iKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25z
dHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmVuYWJs
ZS14c3MtYXVkaXRvcgorICAgICoKKyAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBYU1MgYXVk
aXRvci4gVGhpcyBmZWF0dXJlIGZpbHRlcnMgc29tZSBraW5kcyBvZgorICAgICogcmVmbGVjdGl2
ZSBYU1MgYXR0YWNrcyBvbiB2dWxuZXJhYmxlIHdlYiBzaXRlcy4KKyAgICAqCisgICAgKi8KKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX1hTU19BVURJVE9SLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVu
YWJsZS14c3MtYXVkaXRvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgWFNTIGF1ZGl0b3IiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIg
dG8gZW5hYmxlIHRoZSBYU1MgYXVkaXRvci4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQ
YXJhbUZsYWdzKSk7CisKKworICAgIC8qKgorICAgICogV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWZy
YW1lLWZsYXR0ZW5pbmcKKyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgZnJhbWUg
ZmxhdHRlbmluZy4gV2l0aCB0aGlzIHNldHRpbmcgZWFjaCBzdWJmcmFtZSBpcyBleHBhbmRlZAor
ICAgICogdG8gaXRzIGNvbnRlbnRzLCB3aGljaCB3aWxsIGZsYXR0ZW4gYWxsIHRoZSBmcmFtZXMg
dG8gYmVjb21lIG9uZSBzY3JvbGxhYmxlIHBhZ2UuCisgICAgKiBPbiB0b3VjaCBkZXZpY2VzIHNj
cm9sbGFibGUgc3ViZnJhbWVzIG9uIGEgcGFnZSBjYW4gcmVzdWx0IGluIGEgY29uZnVzaW5nIHVz
ZXIgZXhwZXJpZW5jZS4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBST1BfRU5BQkxFX0ZSQU1FX0ZMQVRURVJJTkcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWZyYW1lLWZsYXR0ZW5p
bmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXygiRW5hYmxlIGZyYW1lIGZsYXR0ZW5pbmciKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxl
IGZyYW1lIGZsYXR0ZW5pbmcuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxh
Z3MpKTsKKworICAgLyoqCisgICAgKiBXZWJLaXRTZXR0aW5nczplbmFibGUtcGx1Z2luczoKKyAg
ICAqCisgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHBsdWdpbnMgb24gdGhlIHBhZ2Ug
YXJlIGVuYWJsZWQuCisgICAgKgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX0VOQUJMRV9QTFVHSU5TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1wbHVnaW5zIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBwbHVn
aW5zIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfKCJFbmFibGUgZW1iZWRkZWQgcGx1Z2luIG9iamVjdHMuIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVh
ZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisgICAvKioKKyAgICAqIFdlYktpdFNldHRp
bmdzOmVuYWJsZS1qYXZhOgorICAgICoKKyAgICAqIERldGVybWluZXMgd2hldGhlciBvciBub3Qg
SmF2YSBpcyBlbmFibGVkIG9uIHRoZSBwYWdlLgorICAgICoKKyAgICAqLworICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfSkFWQSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtamF2YSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJF
bmFibGUgSmF2YSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiV2hldGhlciBKYXZhIHN1cHBvcnQgc2hvdWxkIGJlIGVuYWJsZWQu
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisgICAgLyoqCisg
ICAgKiBXZWJLaXRTZXR0aW5nczpqYXZhc2NyaXB0LWNhbi1vcGVuLXdpbmRvd3MtYXV0b21hdGlj
YWxseQorICAgICoKKyAgICAqIFdoZXRoZXIgSmF2YVNjcmlwdCBjYW4gb3BlbiBwb3B1cCB3aW5k
b3dzIGF1dG9tYXRpY2FsbHkgd2l0aG91dCB1c2VyCisgICAgKiBpbnRlcnZlbnRpb24uCisgICAg
KgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xh
c3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0pBVkFTQ1JJUFRf
Q0FOX09QRU5fV0lORE9XU19BVVRPTUFUSUNBTExZLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImphdmFzY3JpcHQtY2FuLW9wZW4td2lu
ZG93cy1hdXRvbWF0aWNhbGx5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF8oIkphdmFTY3JpcHQgY2FuIG9wZW4gd2luZG93cyBhdXRv
bWF0aWNhbGx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfKCJXaGV0aGVyIEphdmFTY3JpcHQgY2FuIG9wZW4gd2luZG93cyBhdXRv
bWF0aWNhbGx5LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisK
KyAgICAvKioKKyAgICAqIFdlYktpdFNldHRpbmdzOmVuYWJsZS1oeXBlcmxpbmstYXVkaXRpbmc6
CisgICAgKgorICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBoeXBlcmxpbmsgYXVkaXRp
bmcgaXMgZW5hYmxlZC4KKyAgICAqCisgICAgKiBUaGUgaHlwZXJsaW5rIGF1ZGl0aW5nIHNwZWNp
ZmljYXRpb24gaXMgYXZhaWxhYmxlIGF0CisgICAgKiBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3Bl
Y3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9saW5rcy5odG1sI2h5cGVybGluay1h
dWRpdGluZy4KKyAgICAqCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KGdPYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfRU5BQkxFX0hZUEVSTElOS19BVURJVElORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5n
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF8oIkVuYWJsZSBoeXBlcmxpbmsgYXVkaXRpbmciKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgPGEgcGluZz4g
c2hvdWxkIGJlIGFibGUgdG8gc2VuZCBwaW5ncy4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3Ry
dWN0UGFyYW1GbGFncykpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBz
aXplb2YoV2ViS2l0U2V0dGluZ3NQcml2YXRlKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9z
ZXR0aW5nc19pbml0KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBXZWJLaXRTZXR0
aW5nc1ByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoc2V0dGluZ3Ms
IFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0U2V0dGluZ3NQcml2YXRlKTsKKyAgICBz
ZXR0aW5ncy0+cHJpdiA9IHByaXY7CisgICAgbmV3IChwcml2KSBXZWJLaXRTZXR0aW5nc1ByaXZh
dGUoKTsKKworICAgIHByaXYtPnByZWZlcmVuY2VzID0gYWRvcHRXSyhXS1ByZWZlcmVuY2VzQ3Jl
YXRlKCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19uZXc6CisgKgorICogQ3JlYXRl
cyBhIG5ldyAjV2ViS2l0U2V0dGluZ3MgaW5zdGFuY2Ugd2l0aCBkZWZhdWx0IHZhbHVlcy4gSXQg
bXVzdAorICogYmUgbWFudWFsbHkgYXR0YWNoZWQgdG8gYSBXZWJWaWV3LgorICoKKyAqIFJldHVy
bnM6IGEgbmV3ICNXZWJLaXRTZXR0aW5ncyBpbnN0YW5jZS4KKyAqKi8KK1dlYktpdFNldHRpbmdz
KiB3ZWJraXRfc2V0dGluZ3NfbmV3KCkKK3sKKyAgICByZXR1cm4gV0VCS0lUX1NFVFRJTkdTKGdf
b2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIE5VTEwpKTsKK30KKworLyoqCisg
KiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0OgorICoKKyAqIEdldCB0aGUg
I1dlYktpdFNldHRpbmdzOmVuYWJsZS1qYXZhc2NyaXB0IHByb3BlcnR5LgorICogQHNldHRpbmdz
OiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAqIFJldHVybnM6ICVUUlVFIElmIEphdmFTY3JpcHQg
aXMgZW5hYmxlZCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqKi8KK2dib29sZWFuIHdlYmtp
dF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdz
KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0
dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRF
bmFibGVkKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgorICog
d2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdDoKKyAqIEBzZXR0aW5nczogYSAj
V2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQg
dGhlICNXZWJLaXRTZXR0aW5nczplbmFibGUtamF2YXNjcmlwdCBwcm9wZXJ0eS4KKyAqCisgKiov
Cit2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQoV2ViS2l0U2V0dGlu
Z3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQ
cml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBX
S1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdEVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkp
OworICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgV0tQcmVmZXJlbmNlc1NldEphdmFTY3JpcHRFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdl
dCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAi
ZW5hYmxlLWphdmFzY3JpcHQiKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2F1
dG9fbG9hZF9pbWFnZXM6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICog
R2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6YXV0by1sb2FkLWltYWdlcyBwcm9wZXJ0eS4KKyAqCisg
KiBSZXR1cm5zOiAlVFJVRSBJZiBhdXRvIGxvYWRpbmcgb2YgaW1hZ2VzIGlzIGVuYWJsZWQgb3Ig
JUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiovCitnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0
X2F1dG9fbG9hZF9pbWFnZXMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7
CisKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShz
ZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9z
ZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlczoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0
dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgdGhlICNXZWJL
aXRTZXR0aW5nczphdXRvLWxvYWQtaW1hZ2VzIHByb3BlcnR5LgorICoKKyAqKi8KK3ZvaWQgd2Vi
a2l0X3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5n
cywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJp
diA9IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNl
c0dldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cisg
ICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBX
S1ByZWZlcmVuY2VzU2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2Vz
LmdldCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3Mp
LCAiYXV0by1sb2FkLWltYWdlcyIpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRf
bG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmc6CisgKiBAc2V0dGluZ3M6IGEg
I1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6bG9hZC1pY29u
cy1pZ25vcmluZy1pbWFnZS1sb2FkLXNldHRpbmcgcHJvcGVydHkuCisgKgorICogUmV0dXJuczog
JVRSVUUgSWYgc2l0ZSBpY29uIGNhbiBiZSBsb2FkZWQgaXJyZXNwZWN0aXZlIG9mIGltYWdlIGxv
YWRpbmcgcHJlZmVyZW5jZSBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqKi8KK2dib29sZWFu
IHdlYmtpdF9zZXR0aW5nc19nZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRp
bmcoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1cm4g
V0tQcmVmZXJlbmNlc0dldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJl
bmNlKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgorICogd2Vi
a2l0X3NldHRpbmdzX3NldF9sb2FkX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfc2V0dGluZzoK
KyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBi
ZSBzZXQKKyAqCisgKiBTZXQgdGhlICNXZWJLaXRTZXR0aW5nczpsb2FkLWljb25zLWlnbm9yaW5n
LWltYWdlLWxvYWQtc2V0dGluZyBwcm9wZXJ0eS4KKyAqCisgKiovCit2b2lkIHdlYmtpdF9zZXR0
aW5nc19zZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmcoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0U2V0dGlu
Z3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9vbCBjdXJyZW50VmFsdWUg
PSBXS1ByZWZlcmVuY2VzR2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZl
cmVuY2UocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGlmIChjdXJyZW50VmFsdWUgPT0g
ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNlc1NldExvYWRzU2l0
ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNlKHByaXYtPnByZWZlcmVuY2VzLmdl
dCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAi
bG9hZC1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2FkLXNldHRpbmciKTsKK30KKworLyoqCisgKiB3
ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZToK
KyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhlICNXZWJLaXRT
ZXR0aW5nczplbmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUgcHJvcGVydHkuCisg
KgorICogUmV0dXJuczogJVRSVUUgSWYgSFRNTDUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2Fj
aGUgc3VwcG9ydCBpcyBlbmFibGVkIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICoqLworZ2Jv
b2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25f
Y2FjaGUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1
cm4gV0tQcmVmZXJlbmNlc0dldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChzZXR0
aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlOgorICogQHNldHRp
bmdzOiBhICNXZWJLaXRTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoK
KyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmVuYWJsZS1vZmZsaW5lLXdlYi1hcHBsaWNhdGlv
bi1jYWNoZSBwcm9wZXJ0eS4KKyAqCisgKiovCit2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5h
YmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5n
cywgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfU0VUVElOR1Moc2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJp
diA9IHNldHRpbmdzLT5wcml2OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNl
c0dldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5n
ZXQoKSk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVk
KHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnko
R19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hl
Iik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxf
c3RvcmFnZToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhl
ICNXZWJLaXRTZXR0aW5nczplbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZSBwcm9wZXJ0eS4KKyAq
CisgKiBSZXR1cm5zOiAlVFJVRSBJZiBIVE1MNSBsb2NhbCBzdG9yYWdlIHN1cHBvcnQgaXMgZW5h
YmxlZCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0
aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UoV2ViS2l0U2V0dGluZ3MqIHNldHRp
bmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Mo
c2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldExvY2FsU3Rv
cmFnZUVuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoq
CisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlOgorICog
QHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNl
dAorICoKKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmVuYWJsZS1odG1sNS1sb2NhbC1zdG9y
YWdlIHByb3BlcnR5LgorICoKKyAqKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVf
aHRtbDVfbG9jYWxfc3RvcmFnZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVu
YWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNl
dHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+
cHJpdjsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRMb2NhbFN0b3Jh
Z2VFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBpZiAoY3VycmVudFZhbHVl
ID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUHJlZmVyZW5jZXNTZXRMb2Nh
bFN0b3JhZ2VFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBn
X29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWh0bWw1LWxvY2FsLXN0
b3JhZ2UiKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9k
YXRhYmFzZToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhl
ICNXZWJLaXRTZXR0aW5nczplbmFibGUtaHRtbDUtZGF0YWJhc2UgcHJvcGVydHkuCisgKgorICog
UmV0dXJuczogJVRSVUUgSWYgSFRNTDUgZGF0YWJhc2Ugc3VwcG9ydCBpcyBlbmFibGVkIG9yICVG
QUxTRSBvdGhlcndpc2UuCisgKgorICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfaHRtbDVfZGF0YWJhc2UoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxT
RSk7CisKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldERhdGFiYXNlc0VuYWJsZWQoc2V0dGlu
Z3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZToKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0
dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgdGhlICNXZWJL
aXRTZXR0aW5nczplbmFibGUtaHRtbDUtZGF0YWJhc2UgcHJvcGVydHkuCisgKgorICoqLwordm9p
ZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShXZWJLaXRTZXR0aW5n
cyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1By
aXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdL
UHJlZmVyZW5jZXNHZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsK
KyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IFdLUHJlZmVyZW5jZXNTZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgp
LCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5h
YmxlLWh0bWw1LWRhdGFiYXNlIik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfeHNzX2F1ZGl0b3I6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgor
ICogR2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLXhzcy1hdWRpdG9yIHByb3BlcnR5Lgor
ICoKKyAqIFJldHVybnM6ICVUUlVFIElmIFhTUyBhdWRpdGluZyBpcyBlbmFibGVkIG9yICVGQUxT
RSBvdGhlcndpc2UuCisgKgorICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfeHNzX2F1ZGl0b3IoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisK
KyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldFhTU0F1ZGl0b3JFbmFibGVkKHNldHRpbmdzLT5w
cml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX3Nl
dF9lbmFibGVfeHNzX2F1ZGl0b3I6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisg
KiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogU2V0IHRoZSAjV2ViS2l0U2V0dGlu
Z3M6ZW5hYmxlLXhzcy1hdWRpdG9yIHByb3BlcnR5LgorICoKKyAqKi8KK3ZvaWQgd2Via2l0X3Nl
dHRpbmdzX3NldF9lbmFibGVfeHNzX2F1ZGl0b3IoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBn
Ym9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9T
RVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0g
c2V0dGluZ3MtPnByaXY7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0
WFNTQXVkaXRvckVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGlmIChjdXJy
ZW50VmFsdWUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQcmVmZXJlbmNl
c1NldFhTU0F1ZGl0b3JFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsK
KyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXhzcy1hdWRp
dG9yIik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxh
dHRlbmluZzoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhl
ICNXZWJLaXRTZXR0aW5nczplbmFibGUtZnJhbWUtZmxhdHRlbmluZyBwcm9wZXJ0eS4KKyAqCisg
KiBSZXR1cm5zOiAlVFJVRSBJZiBmcmFtZSBmbGF0dGVuaW5nIGlzIGVuYWJsZWQgb3IgJUZBTFNF
IG90aGVyd2lzZS4KKyAqCisgKiovCitnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9mcmFtZV9mbGF0dGVuaW5nKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0Up
OworCisgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHNl
dHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3Nl
dHRpbmdzX3NldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZzoKKyAqIEBzZXR0aW5nczogYSAjV2Vi
S2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgdGhl
ICNXZWJLaXRTZXR0aW5nczplbmFibGUtZnJhbWUtZmxhdHRlbmluZyBwcm9wZXJ0eS4KKyAqCisg
KiovCit2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0
U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgYm9vbCBjdXJyZW50
VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2LT5wcmVm
ZXJlbmNlcy5nZXQoKSk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChw
cml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdf
T0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1mcmFtZS1mbGF0dGVuaW5nIik7Cit9CisKKy8qKgor
ICogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2luczoKKyAqIEBzZXR0aW5nczogYSAj
V2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhlICNXZWJLaXRTZXR0aW5nczplbmFibGUtcGx1
Z2lucyBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBwbHVnaW5zIGFyZSBlbmFi
bGVkIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRp
bmdzX2dldF9lbmFibGVfcGx1Z2lucyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZB
TFNFKTsKKworICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0UGx1Z2luc0VuYWJsZWQoc2V0dGlu
Z3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9wbHVnaW5zOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncwor
ICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUgI1dlYktpdFNldHRp
bmdzOmVuYWJsZS1wbHVnaW5zIHByb3BlcnR5LgorICoKKyAqKi8KK3ZvaWQgd2Via2l0X3NldHRp
bmdzX3NldF9lbmFibGVfcGx1Z2lucyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFu
IGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdT
KHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5n
cy0+cHJpdjsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRQbHVnaW5z
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9
PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0UGx1Z2lu
c0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIGdfb2JqZWN0
X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtcGx1Z2lucyIpOworfQorCisvKioK
KyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmE6CisgKiBAc2V0dGluZ3M6IGEgI1dl
YktpdFNldHRpbmdzCisgKgorICogR2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWphdmEg
cHJvcGVydHkuCisgKgorICogUmV0dXJuczogJVRSVUUgSWYgSmF2YSBpcyBlbmFibGVkIG9yICVG
QUxTRSBvdGhlcndpc2UuCisgKgorICoqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfamF2YShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKworICAg
IHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2YUVuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZl
cmVuY2VzLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9q
YXZhOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICogQGVuYWJsZWQ6IFZhbHVl
IHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmVuYWJsZS1qYXZhIHBy
b3BlcnR5LgorICoKKyAqKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YShX
ZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJL
aXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBib29sIGN1cnJl
bnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRKYXZhRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5n
ZXQoKSk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0
KCksIGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJl
bmFibGUtamF2YSIpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfamF2YXNjcmlw
dF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHk6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktp
dFNldHRpbmdzCisgKgorICogR2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6amF2YXNjcmlwdC1jYW4t
b3Blbi13aW5kb3dzLWF1dG9tYXRpY2FsbHkgcHJvcGVydHkuCisgKgorICogUmV0dXJuczogJVRS
VUUgSWYgSmF2YVNjcmlwdCBjYW4gb3BlbiB3aW5kb3cgYXV0b21hdGljYWxseSBvciAlRkFMU0Ug
b3RoZXJ3aXNlLgorICoKKyAqKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfamF2YXNj
cmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoV2ViS2l0U2V0dGluZ3MqIHNldHRp
bmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Mo
c2V0dGluZ3MpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEphdmFTY3Jp
cHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2Vz
LmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2Fu
X29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5OgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0
aW5ncworICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUgI1dlYktp
dFNldHRpbmdzOmphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5IHByb3Bl
cnR5LgorICoKKyAqKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9v
cGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29s
ZWFuIGVuYWJsZWQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJ
TkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0
aW5ncy0+cHJpdjsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRKYXZh
U2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgp
KTsKKyAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5
KHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnko
R19PQkpFQ1Qoc2V0dGluZ3MpLCAiamF2YXNjcmlwdC1jYW4tb3Blbi13aW5kb3dzLWF1dG9tYXRp
Y2FsbHkiKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxp
bmtfYXVkaXRpbmc6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0
IHRoZSAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWh5cGVybGluay1hdWRpdGluZyBwcm9wZXJ0eS4K
KyAqCisgKiBSZXR1cm5zOiAlVFJVRSBJZiBoeXBlciBsaW5rIGF1ZGl0aW5nIGlzIGVuYWJsZWQg
b3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiovCitnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGlu
Z3MpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEh5cGVybGlua0F1ZGl0
aW5nRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworfQorCisvKioK
KyAqIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZzoKKyAqIEBz
ZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQK
KyAqCisgKiBTZXQgdGhlICNXZWJLaXRTZXR0aW5nczplbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5n
IHByb3BlcnR5LgorICoKKyAqKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHlw
ZXJsaW5rX2F1ZGl0aW5nKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxl
ZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Moc2V0dGlu
Z3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2
OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEh5cGVybGlua0F1ZGl0
aW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgaWYgKGN1cnJlbnRWYWx1
ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0SHlw
ZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsK
KyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWh5cGVybGlu
ay1hdWRpdGluZyIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0U2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFNldHRpbmdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTVlYzdhNDc1NWIxNmM2YWYxZjc1YzAxOGUw
N2Q0NzcyODg5ZmJmOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmgKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgCisgKiBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlLCAKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKgorICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCAKKyAqIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIAorICogb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgCisgKiBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IAorICogc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMgCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCAKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgT1IgCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSAKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIAorICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5l
ZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4g
Y2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdFNldHRp
bmdzX2gKKyNkZWZpbmUgV2ViS2l0U2V0dGluZ3NfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3Qu
aD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUwor
CisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUyAgICAgICAgICAgICh3ZWJraXRfc2V0
dGluZ3NfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1NFVFRJTkdTKG9iaikgICAgICAgICAg
ICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJf
U0VUVElOR1MsIFdlYktpdFNldHRpbmdzKSkKKyNkZWZpbmUgV0VCS0lUX1NFVFRJTkdTX0NMQVNT
KGtsYXNzKSAgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRf
VFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFNldHRpbmdzQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRf
SVNfV0VCX1NFVFRJTkdTKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUo
KG9iaiksIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJf
U0VUVElOR1NfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAg
V0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTKSkKKyNkZWZpbmUgV0VCS0lUX1NFVFRJTkdTX0dFVF9D
TEFTUyhvYmopICAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRf
VFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFNldHRpbmdzQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0U2V0dGluZ3MgV2ViS2l0U2V0dGluZ3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
U2V0dGluZ3NDbGFzcyBXZWJLaXRTZXR0aW5nc0NsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFNldHRpbmdzUHJpdmF0ZSBXZWJLaXRTZXR0aW5nc1ByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0
U2V0dGluZ3MgeworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworCisgICAgV2ViS2l0U2V0
dGluZ3NQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRTZXR0aW5nc0NsYXNzIHsK
KyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgLyogUGFkZGluZyBmb3IgZnV0
dXJlIGV4cGFuc2lvbiAqLworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOwor
ICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0
X3Jlc2VydmVkMykgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkNCkgKHZvaWQp
OworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3NldHRpbmdzX2dldF90eXBlKHZvaWQp
OworCitXRUJLSVRfQVBJIFdlYktpdFNldHRpbmdzICoKK3dlYmtpdF9zZXR0aW5nc19uZXcodm9p
ZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ph
dmFzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFz
Y3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtp
dF9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyAgICAgICAgICAgICAgICAgICAgICAgICAg
IChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9z
ZXR0aW5nc19zZXRfYXV0b19sb2FkX2ltYWdlcyAgICAgICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dF
QktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfbG9hZF9pY29uc19pZ25vcmlu
Z19pbWFnZV9sb2FkX3NldHRpbmcgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitX
RUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfbG9hZF9pY29uc19pZ25vcmluZ19p
bWFnZV9sb2FkX3NldHRpbmcgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlICAgICAgIChXZWJLaXRT
ZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19z
ZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlICAgICAgIChXZWJLaXRTZXR0
aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK1dFQktJVF9BUEkg
Z2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Ug
ICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpOworCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UgICAg
ICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4g
ZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX2h0bWw1X2RhdGFiYXNlICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxl
X2h0bWw1X2RhdGFiYXNlICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyogc2V0
dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CitXRUJLSVRfQVBJIGdib29sZWFuCit3
ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvciAgICAgICAgICAgICAgICAgICAg
ICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV94c3NfYXVkaXRvciAgICAgICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOwor
CitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9m
bGF0dGVuaW5nICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKTsK
KworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0
dGVuaW5nICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9wbHVnaW5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXRUJLSVRf
QVBJIGdib29sZWFuCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0VCS0lU
X0FQSSB2b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29s
ZWFuIGVuYWJsZWQpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfc2V0dGluZ3NfZ2V0
X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5ICAoV2ViS2l0U2V0dGlu
Z3MqIHNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2ph
dmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5ICAoV2ViS2l0U2V0dGluZ3Mq
IHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitXRUJLSVRfQVBJIGdib29s
ZWFuCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcgICAgICAg
ICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lk
Cit3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcgICAgICAgICAg
ICAgICAgICAoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJs
ZWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogd2Via2l0d2Vic2V0dGluZ3NfaCAqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvR05VbWFr
ZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtl
ZmlsZS5hbQppbmRleCBkNWUxOGJhODZlYjBhYmYyYzIwZWRiMmQxZTVhNDUwNDQ4ZGNjYzg3Li43
NjhkMGU4NzJjMTY1NmQ4Y2FiNDFjNTg0YjFkZWE1MzFkYzdhZDAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbQpAQCAt
MSw3ICsxLDggQEAKIFRFU1RfUFJPR1MgKz0gXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9U
ZXN0V2ViS2l0V2ViQ29udGV4dCBcCiAJUHJvZ3JhbXMvV2ViS2l0MkFQSVRlc3RzL1Rlc3RXZWJL
aXRXZWJWaWV3IFwKLQlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdFdlYktpdFdlYkxvYWRl
ckNsaWVudAorCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0V2ViS2l0V2ViTG9hZGVyQ2xp
ZW50IFwKKwlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdFdlYktpdFNldHRpbmdzCiAKIG5v
aW5zdF9QUk9HUkFNUyArPSAkKFRFU1RfUFJPR1MpCiB3ZWJraXQyX3Rlc3RzX2NwcGZsYWdzID0g
XApAQCAtNjIsMyArNjMsOCBAQCBQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdFdlYktpdFdl
YkxvYWRlckNsaWVudF9DUFBGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19jcAogUHJvZ3JhbXNfV2Vi
S2l0MkFQSVRlc3RzX1Rlc3RXZWJLaXRXZWJMb2FkZXJDbGllbnRfTERBREQgPSAkKHdlYmtpdDJf
dGVzdHNfbGRhZGQpCiBQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdFdlYktpdFdlYkxvYWRl
ckNsaWVudF9MREZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1zX1dl
YktpdDJBUElUZXN0c19UZXN0V2ViS2l0U2V0dGluZ3NfU09VUkNFUyA9IFwKKwlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCitQcm9n
cmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdFdlYktpdFNldHRpbmdzX0NQUEZMQUdTID0gJCh3ZWJr
aXQyX3Rlc3RzX2NwcGZsYWdzKQorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RXZWJLaXRT
ZXR0aW5nc19MREFERCA9ICQod2Via2l0Ml90ZXN0c19sZGFkZCkKK1Byb2dyYW1zX1dlYktpdDJB
UElUZXN0c19UZXN0V2ViS2l0U2V0dGluZ3NfTERGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19sZGZs
YWdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdFdlYktpdFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGUxYTY4MDY1MzVjNGZh
MGNhY2Q1M2IxZmZmNmFjNTM2ZGVmOWQ4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTAs
MCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHks
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlv
biwgCisgKiBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSBtZXQ6CisgKgorICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCAKKyAqIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlLCAKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIAorICogb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgCisgKiBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IAorICogc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCAK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSAKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIAorICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIAorICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSAiVGVzdE1haW4uaCIKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8
d2Via2l0Mi93ZWJraXQyLmg+CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRTZXR0aW5ncyhUZXN0
KiwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJr
aXRfc2V0dGluZ3NfbmV3KCk7CisKKyAgICAvLyBKYXZhU2NyaXB0IGlzIGVuYWJsZWQgYnkgZGVm
YXVsdC4KKyAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0
KHNldHRpbmdzKSk7CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdChz
ZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9qYXZhc2NyaXB0KHNldHRpbmdzKSk7CisKKyAgICAvLyBCeSBkZWZhdWx0IGF1dG8tbG9hZC1p
bWFnZSBpcyB0cnVlLgorICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfYXV0b19sb2Fk
X2ltYWdlcyhzZXR0aW5ncykpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19sb2FkX2lt
YWdlcyhzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0
X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MpKTsKKworICAgIC8vIGxvYWQtaWNvbnMtaWdub3Jp
bmctaW1hZ2UtbG9hZC1zZXR0aW5nIGlzIGZhbHNlIGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQo
IXdlYmtpdF9zZXR0aW5nc19nZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRp
bmcoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2xvYWRfaWNvbnNfaWdub3Jp
bmdfaW1hZ2VfbG9hZF9zZXR0aW5nKHNldHRpbmdzLCBUUlVFKTsKKyAgICBnX2Fzc2VydCh3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2xvYWRfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9zZXR0aW5nKHNl
dHRpbmdzKSk7CisgICAgCisgICAgLy8gT2ZmbGluZSBhcHBsaWNhdGlvbiBjYWNoZSBpcyB0cnVl
IGJ5IGRlZmF1bHQuCisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfb2Zm
bGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncywgRkFM
U0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dl
Yl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOworCisgICAgLy8gTG9jYWwgc3RvcmFnZSBp
cyBlbmFibGUgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3NldHRpbmdz
X3NldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0aW5ncywgRkFMU0UpOworICAgIGdf
YXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNl
dHRpbmdzKSk7CisKKyAgICAvLyBIVE1MNSBkYXRhYmFzZSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQu
CisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2Uo
c2V0dGluZ3MpKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9kYXRhYmFz
ZShzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncykpOworCisgICAgLy8gWFNTIEF1ZGl0b3IgaXMg
ZW5hYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX3hzc19hdWRpdG9yKHNldHRpbmdzKSk7CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFi
bGVfeHNzX2F1ZGl0b3Ioc2V0dGluZ3MsIEZBTFNFKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3Ioc2V0dGluZ3MpKTsKKworICAgIC8vIEZyYW1l
IGZsYXR0ZXJpbmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fzc2VydCghd2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncykpOworICAgIHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MsIFRSVUUp
OworICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5p
bmcoc2V0dGluZ3MpKTsKKworICAgIC8vIFBsdWdpbnMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4K
KyAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKHNldHRpbmdz
KSk7CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyhzZXR0aW5ncywgRkFM
U0UpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKHNl
dHRpbmdzKSk7CisKKyAgICAvLyBKYXZhIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBnX2Fz
c2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKHNldHRpbmdzKSk7CisgICAgd2Vi
a2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YShzZXR0aW5ncywgRkFMU0UpOworICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKHNldHRpbmdzKSk7CisKKyAgICAv
LyBCeSBkZWZhdWx0LCBKYXZhU2NyaXB0IGNhbiBvcGVuIHdpbmRvd3MgYXV0b21hdGljYWxseSBp
cyBkaXNhYmxlZC4KKyAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0
X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncykpOworICAgIHdlYmtpdF9z
ZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0
dGluZ3MsIFRSVUUpOworICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfamF2YXNjcmlw
dF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3MpKTsKKworICAgIC8vIEJ5
IGRlZmF1bHQgaHlwZXIgbGluayBhdWRpdGluZyBpcyBkaXNhYmxlZC4KKyAgICBnX2Fzc2VydCgh
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRpbmdzKSk7
CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRp
bmdzLCBUUlVFKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBl
cmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MpKTsKKworICAgIGdfb2JqZWN0X3VucmVmKEdfT0JKRUNU
KHNldHRpbmdzKSk7Cit9CisKK3ZvaWQgYmVmb3JlQWxsKCkKK3sKKyAgICBUZXN0OjphZGQoIldl
YktpdFNldHRpbmdzIiwgIndlYmtpdC1zZXR0aW5ncyIsIHRlc3RXZWJLaXRTZXR0aW5ncyk7Cit9
CisKK3ZvaWQgYWZ0ZXJBbGwoKQoreworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay93ZWJraXQyLmgKaW5kZXggMzFmMTEwYWE3Yjk2YmU0NWE1MmNlZGE4NmU3MWViYmQ2N2M5
MDMxYS4uNTQwYzZlNjczMDI4NTcwNGFhZjJkNGY5M2JkZDg4ZTc0MWY0ZjEyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIFBvcnRpb25zIENvcHlyaWdo
dCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsNiArMjYsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0RGVmaW5lcy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RW51bVR5cGVzLmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRFcnJvci5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
U2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkNvbnRleHQuaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdFdlYkxvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0V2ViVmlld0Jhc2UuaD4K
</data>
<flag name="review"
          id="108620"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>